Skip to content

Commit 0293f78

Browse files
committed
Tests: economic conformer generation
1 parent bb4f178 commit 0293f78

1 file changed

Lines changed: 42 additions & 0 deletions

File tree

arc/species/conformers_test.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -541,6 +541,48 @@ def test_determine_number_of_conformers_to_generate(self):
541541
self.assertEqual(conformers.determine_number_of_conformers_to_generate(heavy_atoms=30, torsion_num=10,
542542
label='', mol=mol), (7500, 3))
543543

544+
def test_determine_number_of_conformers_to_generate_minimalist(self):
545+
"""Test the minimalist (economic) branch of determine_number_of_conformers_to_generate."""
546+
# Trivial: smallest bucket — minimalist has no room to shrink, so it matches the default.
547+
num_min, _ = conformers.determine_number_of_conformers_to_generate(
548+
heavy_atoms=0, torsion_num=0, label='', minimalist=True)
549+
num_def, _ = conformers.determine_number_of_conformers_to_generate(
550+
heavy_atoms=0, torsion_num=0, label='')
551+
self.assertEqual(num_min, 75)
552+
self.assertEqual(num_min, num_def)
553+
554+
# Normal: minimalist should pick the smaller bucket and stay under the 250 cap,
555+
# while the default picks the larger.
556+
num_min, _ = conformers.determine_number_of_conformers_to_generate(
557+
heavy_atoms=15, torsion_num=3, label='', minimalist=True)
558+
num_def, _ = conformers.determine_number_of_conformers_to_generate(
559+
heavy_atoms=15, torsion_num=3, label='')
560+
self.assertEqual(num_min, 250)
561+
self.assertEqual(num_def, 1000)
562+
self.assertLess(num_min, num_def)
563+
564+
# Wild-type: chiral-center multiplier still scales the minimalist count,
565+
# but the base count remains much smaller than the default path.
566+
mol = Molecule(smiles='CNC(O)(S)C=CO')
567+
num_min, chiral_min = conformers.determine_number_of_conformers_to_generate(
568+
heavy_atoms=30, torsion_num=10, label='', mol=mol, minimalist=True)
569+
num_def, chiral_def = conformers.determine_number_of_conformers_to_generate(
570+
heavy_atoms=30, torsion_num=10, label='', mol=mol)
571+
self.assertEqual(chiral_min, chiral_def)
572+
self.assertGreater(chiral_min, 2)
573+
self.assertEqual(num_min, 250 * chiral_min)
574+
self.assertEqual(num_def, 2500 * chiral_def)
575+
self.assertLess(num_min, num_def)
576+
577+
# Extreme: very large, very flexible species — minimalist is capped at 250,
578+
# default shoots to the top of both bucket tables.
579+
num_min, _ = conformers.determine_number_of_conformers_to_generate(
580+
heavy_atoms=150, torsion_num=50, label='', minimalist=True)
581+
num_def, _ = conformers.determine_number_of_conformers_to_generate(
582+
heavy_atoms=150, torsion_num=50, label='')
583+
self.assertEqual(num_min, 250)
584+
self.assertEqual(num_def, 7500)
585+
544586
def test_openbabel_force_field(self):
545587
"""Test Open Babel force field"""
546588
xyz = """S -0.19093478 0.57933906 0.00000000

0 commit comments

Comments
 (0)