Skip to content

Commit 0aaed47

Browse files
committed
refactor and fix tests (NO_JIRA)
1 parent d7ee2dc commit 0aaed47

File tree

2 files changed

+9
-168
lines changed

2 files changed

+9
-168
lines changed

scripts/refcodes_with_properties/entry_property_calculator.py

Lines changed: 7 additions & 166 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,7 @@ def helptext():
101101
def __call__(self, entry):
102102
try:
103103
molecule = entry.crystal.molecule
104-
return len([x for x in molecule.atoms if x.atomic_number in self.allowed_atomic_numbers]) == len(
105-
molecule.atoms)
104+
return len([x for x in molecule.atoms if x.atomic_number in self.allowed_atomic_numbers]) == len(molecule.atoms)
106105
except TypeError:
107106
return False
108107

@@ -126,17 +125,16 @@ def __call__(self, entry):
126125
try:
127126
molecule = entry.crystal.molecule
128127

129-
contains = {}
128+
contains = set()
130129
for x in molecule.atoms:
131-
if not contains.has_key(x.atomic_number):
132-
contains[x.atomic_number] = 0
133-
contains[x.atomic_number] = contains[x.atomic_number] + 1
130+
contains.add(x.atomic_number)
131+
134132
for x in self.must_have_atomic_numbers:
135-
if not contains.has_key(x):
133+
if x not in contains:
136134
return False
137135

138136
return True
139-
except:
137+
except TypeError:
140138
return False
141139

142140

@@ -196,7 +194,7 @@ def helptext():
196194
def value(self, entry):
197195
try:
198196
return entry.crystal.molecule.all_atoms_have_sites
199-
except:
197+
except TypeError:
200198
return False
201199

202200

@@ -453,160 +451,3 @@ def parse_control_file(lines):
453451
cls = _filter_classes[parts[0].strip()]
454452
evaluator.add_filter(cls(parts[1]))
455453
return evaluator
456-
457-
458-
import unittest
459-
460-
461-
class TestFiltering(unittest.TestCase):
462-
463-
def setUp(self):
464-
465-
self.reader = ccdc.io.EntryReader('CSD')
466-
self.aabhtz = self.reader.entry("AABHTZ")
467-
self.aacani_ten = self.reader.entry("AACANI10")
468-
self.aadamc = self.reader.entry("AADAMC")
469-
self.aadrib = self.reader.entry("AADRIB")
470-
self.abadis = self.reader.entry("ABADIS")
471-
472-
def test_organic_filter(self):
473-
474-
test_file = """
475-
organic : 1
476-
"""
477-
lines = test_file.split('\n')
478-
evaluator = parse_control_file(lines)
479-
480-
self.assertTrue(evaluator.evaluate(self.aabhtz))
481-
482-
self.assertFalse(evaluator.evaluate(self.aacani_ten))
483-
484-
def test_component_filter(self):
485-
test_file = """
486-
component range : 0 1
487-
"""
488-
lines = test_file.split('\n')
489-
evaluator = parse_control_file(lines)
490-
491-
self.assertTrue(evaluator.evaluate(self.aabhtz))
492-
493-
self.assertFalse(evaluator.evaluate(self.aacani_ten))
494-
495-
def test_donor_count_filter(self):
496-
test_file = """
497-
donor count : 2 2
498-
"""
499-
lines = test_file.split('\n')
500-
evaluator = parse_control_file(lines)
501-
502-
self.assertFalse(evaluator.evaluate(self.aabhtz))
503-
504-
self.assertTrue(evaluator.evaluate(self.aadamc))
505-
506-
test_file = """
507-
donor count : 0 3
508-
"""
509-
lines = test_file.split('\n')
510-
evaluator = parse_control_file(lines)
511-
512-
self.assertTrue(evaluator.evaluate(self.aabhtz))
513-
self.assertTrue(evaluator.evaluate(self.aadamc))
514-
515-
def test_acceptor_count_filter(self):
516-
test_file = """
517-
acceptor count : 7 7
518-
"""
519-
lines = test_file.split('\n')
520-
evaluator = parse_control_file(lines)
521-
522-
# regards Cl as an acceptor ...
523-
self.assertTrue(evaluator.evaluate(self.aabhtz))
524-
525-
self.assertTrue(evaluator.evaluate(self.aacani_ten))
526-
527-
def test_zprime(self):
528-
test_file = """
529-
zprime range : 0.99 1.01
530-
"""
531-
lines = test_file.split('\n')
532-
evaluator = parse_control_file(lines)
533-
self.assertTrue(evaluator.evaluate(self.aabhtz))
534-
self.assertFalse(evaluator.evaluate(self.aadrib))
535-
536-
def test_atomic_numbers(self):
537-
test_file = """
538-
allowed atomic numbers : 1 6 7 8
539-
must have atomic numbers : 1 6 7 8
540-
"""
541-
lines = test_file.split('\n')
542-
evaluator = parse_control_file(lines)
543-
self.assertFalse(evaluator.evaluate(self.aabhtz))
544-
self.assertFalse(evaluator.evaluate(self.aadrib))
545-
546-
test_file = """
547-
must have atomic numbers : 1 6 7 8
548-
"""
549-
lines = test_file.split('\n')
550-
evaluator = parse_control_file(lines)
551-
self.assertTrue(evaluator.evaluate(self.aabhtz))
552-
self.assertFalse(evaluator.evaluate(self.aadrib))
553-
554-
def test_rotatable_bond_count(self):
555-
test_file = """
556-
rotatable bond count : 0 3
557-
"""
558-
lines = test_file.split('\n')
559-
evaluator = parse_control_file(lines)
560-
self.assertTrue(evaluator.evaluate(self.abadis))
561-
562-
def test_multiple(self):
563-
test_file = """
564-
565-
# An example control file
566-
#
567-
#
568-
# only include organic structures as output
569-
organic : 1
570-
# specify a range of donors
571-
donor count : 0 10
572-
# specify a range of acceptors
573-
acceptor count : 5 5
574-
# rotatable bond count range
575-
rotatable bond count : 3 7
576-
# number of atoms to allow through
577-
atom count : 0 100
578-
# only include structures containing Hydrogen, Carbon, Nitrogen or Oxygen and nothing else
579-
allowed atomic numbers : 1 6 7 8
580-
# only include structures containing all of these elements (i.e.) Hydrogen, Carbon, Nitrogen or Oxygen
581-
must have atomic numbers : 1 6 7 8
582-
# Ensure Z-prime is one
583-
zprime range : 0.99 1.01
584-
# Ensure only one component in the structure
585-
component range : 2 2
586-
# Dont include disordered structures
587-
disordered : 0
588-
# Specify an R-factor range
589-
rfactor range : 0.1 5
590-
#
591-
592-
593-
"""
594-
595-
lines = test_file.split('\n')
596-
evaluator = parse_control_file(lines)
597-
598-
counter = 0
599-
hits = []
600-
601-
test_entries = ['AABHTZ', 'ABAQEB', 'ABELEY', 'ADAQOM', 'ADARAA', 'ADARAZ', 'ADUWIG', 'AFEREK']
602-
for id in test_entries:
603-
e = self.reader.entry(id)
604-
605-
if evaluator.evaluate(e):
606-
hits.append(e.identifier)
607-
608-
self.assertEquals(['ABAQEB', 'ABELEY', 'ADAQOM', 'ADUWIG', 'AFEREK'], hits)
609-
610-
611-
if __name__ == "__main__":
612-
unittest.main()

scripts/refcodes_with_properties/test_entry_property_calculator.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ def test_atomic_numbers(self):
9898

9999
def test_rotatable_bond_count(self):
100100
test_file = """
101-
rotatable bond count : 0 3
101+
rotatable bond count : 0 4
102102
"""
103103
lines = test_file.split('\n')
104104
evaluator = parse_control_file(lines)
@@ -150,4 +150,4 @@ def test_multiple(self):
150150
if evaluator.evaluate(e):
151151
hits.append(e.identifier)
152152

153-
self.assertEquals(['ABAQEB', 'ABELEY', 'ADAQOM', 'ADUWIG', 'AFEREK'], hits)
153+
self.assertEqual(['ABAQEB', 'ABELEY', 'ADAQOM', 'ADUWIG', 'AFEREK'], hits)

0 commit comments

Comments
 (0)