@@ -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