@@ -89,7 +89,10 @@ class _ValueFilter(_Filter):
89
89
def __init__ (self , args ):
90
90
values = [p for p in args .split ()]
91
91
#To do: add option for two values?
92
- self .expected_value = values [0 ]
92
+ if values [0 ] == 'None' :
93
+ self .expected_value = None
94
+ else :
95
+ self .expected_value = values [0 ]
93
96
94
97
def value (self , theobject ):
95
98
raise NotImplementedError # override this
@@ -214,6 +217,25 @@ def value(self, entry):
214
217
register (AllHaveSitesFilter )
215
218
216
219
220
+ class Has3DStructure (_ComparativeFilter ):
221
+ def __init__ (self , args ):
222
+ super ().__init__ (args )
223
+
224
+ @staticmethod
225
+ def name ():
226
+ return "has 3D structure"
227
+
228
+ @staticmethod
229
+ def helptext ():
230
+ return "whether 3D coordinates have been determined for the structure"
231
+
232
+ def value (self , entry ):
233
+ return entry .has_3d_structure
234
+
235
+
236
+ register (Has3DStructure )
237
+
238
+
217
239
class DisorderedFilter (_ComparativeFilter ):
218
240
def __init__ (self , args ):
219
241
super ().__init__ (args )
@@ -445,7 +467,7 @@ def value(self, entry):
445
467
chirality = next ((atom .chirality for atom in molecule .atoms if atom .is_chiral ), None )
446
468
return chirality
447
469
except TypeError :
448
- return 0
470
+ return None
449
471
450
472
451
473
register (ChiralityFilter )
@@ -463,7 +485,7 @@ def evaluate(self, entry):
463
485
try :
464
486
if not method (entry ):
465
487
return False
466
- except TypeError :
488
+ except ( TypeError , RuntimeError ) :
467
489
return False
468
490
469
491
return True
0 commit comments