@@ -89,7 +89,10 @@ class _ValueFilter(_Filter):
8989 def __init__ (self , args ):
9090 values = [p for p in args .split ()]
9191 #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 ]
9396
9497 def value (self , theobject ):
9598 raise NotImplementedError # override this
@@ -214,6 +217,25 @@ def value(self, entry):
214217register (AllHaveSitesFilter )
215218
216219
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+
217239class DisorderedFilter (_ComparativeFilter ):
218240 def __init__ (self , args ):
219241 super ().__init__ (args )
@@ -445,7 +467,7 @@ def value(self, entry):
445467 chirality = next ((atom .chirality for atom in molecule .atoms if atom .is_chiral ), None )
446468 return chirality
447469 except TypeError :
448- return 0
470+ return None
449471
450472
451473register (ChiralityFilter )
@@ -463,7 +485,7 @@ def evaluate(self, entry):
463485 try :
464486 if not method (entry ):
465487 return False
466- except TypeError :
488+ except ( TypeError , RuntimeError ) :
467489 return False
468490
469491 return True
0 commit comments