XtalOptimizer: Accept std::vector<std::vector<SpotToSave>> for spots input, to distinguish spots between different images
This commit is contained in:
+20
-15
@@ -39,7 +39,7 @@ TEST_CASE("XtalOptimizer") {
|
||||
xtal_opt.crystal_system = gemmi::CrystalSystem::Triclinic;
|
||||
|
||||
auto start = std::chrono::high_resolution_clock::now();
|
||||
REQUIRE(XtalOptimizer(xtal_opt, spots));
|
||||
REQUIRE(XtalOptimizer(xtal_opt, {spots}));
|
||||
auto end = std::chrono::high_resolution_clock::now();
|
||||
std::cout << "XtalOptimizer took " << std::chrono::duration_cast<std::chrono::microseconds>(end - start).count()
|
||||
<< " microseconds" << std::endl;
|
||||
@@ -94,7 +94,7 @@ TEST_CASE("XtalOptimizer_NoBeamCenter") {
|
||||
xtal_opt.max_time = 30.0;
|
||||
|
||||
auto start = std::chrono::high_resolution_clock::now();
|
||||
REQUIRE(XtalOptimizer(xtal_opt, spots));
|
||||
REQUIRE(XtalOptimizer(xtal_opt, {spots}));
|
||||
auto end = std::chrono::high_resolution_clock::now();
|
||||
std::cout << "XtalOptimizer took " << std::chrono::duration_cast<std::chrono::microseconds>(end - start).count()
|
||||
<< " microseconds" << std::endl;
|
||||
@@ -145,7 +145,7 @@ TEST_CASE("XtalOptimizer_orthorombic") {
|
||||
xtal_opt.max_time = 30.0;
|
||||
xtal_opt.crystal_system = gemmi::CrystalSystem::Orthorhombic;
|
||||
auto start = std::chrono::high_resolution_clock::now();
|
||||
REQUIRE(XtalOptimizer(xtal_opt, spots));
|
||||
REQUIRE(XtalOptimizer(xtal_opt, {spots}));
|
||||
auto end = std::chrono::high_resolution_clock::now();
|
||||
std::cout << "XtalOptimizer took " << std::chrono::duration_cast<std::chrono::microseconds>(end - start).count()
|
||||
<< " microseconds" << std::endl;
|
||||
@@ -197,7 +197,7 @@ TEST_CASE("XtalOptimizer_triclinic") {
|
||||
xtal_opt.crystal_system = gemmi::CrystalSystem::Triclinic;
|
||||
xtal_opt.max_time = 36.0;
|
||||
auto start = std::chrono::high_resolution_clock::now();
|
||||
REQUIRE(XtalOptimizer(xtal_opt, spots));
|
||||
REQUIRE(XtalOptimizer(xtal_opt, {spots}));
|
||||
auto end = std::chrono::high_resolution_clock::now();
|
||||
std::cout << "XtalOptimizer took " << std::chrono::duration_cast<std::chrono::microseconds>(end - start).count()
|
||||
<< " microseconds" << std::endl;
|
||||
@@ -250,7 +250,7 @@ TEST_CASE("XtalOptimizer_tetragonal") {
|
||||
xtal_opt.crystal_system = gemmi::CrystalSystem::Tetragonal;
|
||||
xtal_opt.max_time = 30.0;
|
||||
auto start = std::chrono::high_resolution_clock::now();
|
||||
REQUIRE(XtalOptimizer(xtal_opt, spots));
|
||||
REQUIRE(XtalOptimizer(xtal_opt, {spots}));
|
||||
auto end = std::chrono::high_resolution_clock::now();
|
||||
std::cout << "XtalOptimizer took " << std::chrono::duration_cast<std::chrono::microseconds>(end - start).count()
|
||||
<< " microseconds" << std::endl;
|
||||
@@ -302,7 +302,7 @@ TEST_CASE("XtalOptimizer_hexagonal") {
|
||||
xtal_opt.crystal_system = gemmi::CrystalSystem::Hexagonal;
|
||||
xtal_opt.max_time = 60.0;
|
||||
auto start = std::chrono::high_resolution_clock::now();
|
||||
bool ret = XtalOptimizer(xtal_opt, spots);
|
||||
bool ret = XtalOptimizer(xtal_opt, {spots});
|
||||
auto end = std::chrono::high_resolution_clock::now();
|
||||
std::cout << "XtalOptimizer took " << std::chrono::duration_cast<std::chrono::microseconds>(end - start).count()
|
||||
<< " microseconds" << std::endl;
|
||||
@@ -356,7 +356,7 @@ TEST_CASE("XtalOptimizer_hexagonal_unconstrained") {
|
||||
xtal_opt.crystal_system = gemmi::CrystalSystem::Triclinic;
|
||||
xtal_opt.max_time = 30.0;
|
||||
auto start = std::chrono::high_resolution_clock::now();
|
||||
REQUIRE(XtalOptimizer(xtal_opt, spots));
|
||||
REQUIRE(XtalOptimizer(xtal_opt, {spots}));
|
||||
auto end = std::chrono::high_resolution_clock::now();
|
||||
std::cout << "XtalOptimizer took " << std::chrono::duration_cast<std::chrono::microseconds>(end - start).count()
|
||||
<< " microseconds" << std::endl;
|
||||
@@ -415,7 +415,7 @@ TEST_CASE("XtalOptimizer_cubic") {
|
||||
xtal_opt.crystal_system = gemmi::CrystalSystem::Cubic;
|
||||
xtal_opt.max_time = 30.0;
|
||||
auto start = std::chrono::high_resolution_clock::now();
|
||||
REQUIRE(XtalOptimizer(xtal_opt, spots));
|
||||
REQUIRE(XtalOptimizer(xtal_opt, {spots}));
|
||||
auto end = std::chrono::high_resolution_clock::now();
|
||||
std::cout << "XtalOptimizer took " << std::chrono::duration_cast<std::chrono::microseconds>(end - start).count()
|
||||
<< " microseconds" << std::endl;
|
||||
@@ -469,7 +469,7 @@ TEST_CASE("XtalOptimizer_monoclinic") {
|
||||
xtal_opt.crystal_system = gemmi::CrystalSystem::Monoclinic;
|
||||
xtal_opt.max_time = 30.0;
|
||||
auto start = std::chrono::high_resolution_clock::now();
|
||||
REQUIRE(XtalOptimizer(xtal_opt, spots));
|
||||
REQUIRE(XtalOptimizer(xtal_opt, {spots}));
|
||||
auto end = std::chrono::high_resolution_clock::now();
|
||||
std::cout << "XtalOptimizer took " << std::chrono::duration_cast<std::chrono::microseconds>(end - start).count()
|
||||
<< " microseconds" << std::endl;
|
||||
@@ -578,11 +578,13 @@ TEST_CASE("XtalOptimizer_rotation") {
|
||||
.ewald_dist_cutoff = 0.002
|
||||
};
|
||||
|
||||
std::vector<SpotToSave> spots;
|
||||
size_t nimages = 10;
|
||||
|
||||
std::vector<std::vector<SpotToSave>> spots(nimages);
|
||||
BraggPrediction prediction;
|
||||
|
||||
// Predict reflections for images at 0-30 deg.
|
||||
for (int img = 0; img < 10; ++img) {
|
||||
for (int img = 0; img < nimages; ++img) {
|
||||
// For a rotated image, per-image lattice is obtained as Multiply(rot.transpose())
|
||||
const float angle_deg = axis.GetAngle_deg(img) + axis.GetWedge_deg() / 2.0f;
|
||||
const RotMatrix rot = axis.GetTransformationAngle(angle_deg);
|
||||
@@ -599,7 +601,7 @@ TEST_CASE("XtalOptimizer_rotation") {
|
||||
s.intensity = 1.0f; // minimal positive value
|
||||
s.ice_ring = false;
|
||||
s.indexed = true;
|
||||
spots.push_back(s);
|
||||
spots[img].push_back(s);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -663,11 +665,14 @@ TEST_CASE("XtalOptimizer_refine_rotation_axis") {
|
||||
.ewald_dist_cutoff = 0.002
|
||||
};
|
||||
|
||||
std::vector<SpotToSave> spots;
|
||||
|
||||
BraggPrediction prediction;
|
||||
|
||||
const size_t nimages = 10;
|
||||
std::vector<std::vector<SpotToSave>> spots(nimages);
|
||||
|
||||
// Predict reflections for images at 0-30 deg.
|
||||
for (int img = 0; img < 10; ++img) {
|
||||
for (int img = 0; img < nimages; ++img) {
|
||||
// For a rotated image, per-image lattice is obtained as Multiply(rot.transpose())
|
||||
const float angle_deg = axis.GetAngle_deg(img) + axis.GetWedge_deg() / 2.0f;
|
||||
const RotMatrix rot = axis.GetTransformationAngle(angle_deg);
|
||||
@@ -684,7 +689,7 @@ TEST_CASE("XtalOptimizer_refine_rotation_axis") {
|
||||
s.phi = angle_deg;
|
||||
s.ice_ring = false;
|
||||
s.indexed = true;
|
||||
spots.push_back(s);
|
||||
spots.at(img).push_back(s);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user