Source code for mmtfPyspark.filters.experimentalMethods
#!/user/bin/env python
'''experimentalMethods.py:
This filter returns ture if any of the specified experimental methods
match a PDB entry
References
----------
- The current list of support experimental method types can be found here: http://mmcif.wwpdb.org/dictionaries/mmcif_pdbx_v40.dic/Items/_exptl.method.html
'''
__author__ = "Mars (Shih-Cheng) Huang"
__maintainer__ = "Mars (Shih-Cheng) Huang"
__email__ = "marshuang80@gmail.com"
__version__ = "0.2.0"
__status__ = "Done"
[docs]class ExperimentalMethods(object):
'''This filter returns True if any of the specified experimental methods
matched a PDB entry.
Attributes
----------
experimental_methods : list
A list of experimental methods to check
'''
# constants to be used as arguments to the Experimental Methods filter
ELECTRON_CRYSTALLOGRAPHY = "ELECTRON CRYSTALLOGRAPHY"
ELECTRON_MICROSCOPY = "ELECTRON MICROSCOPY"
ERP = "EPR"
FIBER_DIFFRACTION = "FIBER DIFFRACTION"
FLUORESCENCE_TRANSFER = "FLUORESCENCE TRANSFER"
INFRARED_SPECTROSCOPY = "INFRARED SPECTROSCOPY"
NEUTRON_DIFFRACTION = "NEUTRON DIFFRACTION"
POWDER_DIFFRACTION = "POWDER DIFFRACTION"
SOLID_STATE_NMR = "SOLID-STATE NMR"
SOLUTION_NMR = "SOLUTION NMR"
SOLUTION_SCATTERING = "SOLUTION SCATTERING"
THEORETICAL_MODEL = "THEORETICAL MODEL"
X_RAY_DIFFRACTION = "X-RAY DIFFRACTION"
def __init__(self, *experimentalMethods):
self.experimental_methods = experimentalMethods
def __call__(self, t):
structure = t[1]
methods = [b.upper() for b in structure.experimental_methods]
return sum([1 for m in self.experimental_methods if m in methods]) > 0