def from_dict(cls, obj): from xia2.Schema.XWavelength import XWavelength from xia2.Schema.XSample import XSample assert obj['__id__'] == 'XCrystal' return_obj = cls(name=None, project=None) for k, v in obj.iteritems(): if k == '_scaler' and v is not None: from libtbx.utils import import_python_object cls = import_python_object(import_path=".".join( (v['__module__'], v['__name__'])), error_prefix='', target_must_be='', where_str='').object v = cls.from_dict(v) v._scalr_xcrystal = return_obj elif k == '_wavelengths': v_ = {} for wname, wdict in v.iteritems(): wav = XWavelength.from_dict(wdict) wav._crystal = return_obj v_[wname] = wav v = v_ elif k == '_samples': v_ = {} for sname, sdict in v.iteritems(): sample = XSample.from_dict(sdict) sample._crystal = return_obj v_[sname] = sample v = v_ elif k == '_aa_sequence' and v is not None: v = _aa_sequence.from_dict(v) elif k == '_ha_info' and v is not None: for k_, v_ in v.iteritems(): v[k_] = _ha_info.from_dict(v_) setattr(return_obj, k, v) sweep_dict = {} for sample in return_obj._samples.values(): for i, sname in enumerate(sample._sweeps): found_sweep = False for wav in return_obj._wavelengths.values(): if found_sweep: break for sweep in wav._sweeps: if sweep.get_name() == sname: sample._sweeps[i] = sweep sweep._sample = sample found_sweep = True break for s in sample._sweeps: assert not isinstance(s, basestring) if return_obj._scaler is not None: for intgr in return_obj._get_integraters(): return_obj._scaler._scalr_integraters[intgr.get_integrater_epoch()] \ = intgr if (hasattr(return_obj._scaler, '_sweep_handler') and return_obj._scaler._sweep_handler is not None): if intgr.get_integrater_epoch() in \ return_obj._scaler._sweep_handler._sweep_information: return_obj._scaler._sweep_handler._sweep_information[ intgr.get_integrater_epoch()]._integrater = intgr return return_obj
def from_dict(cls, obj): from xia2.Schema.XWavelength import XWavelength from xia2.Schema.XSample import XSample assert obj['__id__'] == 'XCrystal' return_obj = cls(name=None, project=None) for k, v in obj.iteritems(): if k == '_scaler' and v is not None: from libtbx.utils import import_python_object cls = import_python_object( import_path=".".join((v['__module__'], v['__name__'])), error_prefix='', target_must_be='', where_str='').object v = cls.from_dict(v) v._scalr_xcrystal = return_obj elif k == '_wavelengths': v_ = {} for wname, wdict in v.iteritems(): wav = XWavelength.from_dict(wdict) wav._crystal = return_obj v_[wname] = wav v = v_ elif k == '_samples': v_ = {} for sname, sdict in v.iteritems(): sample = XSample.from_dict(sdict) sample._crystal = return_obj v_[sname] = sample v = v_ elif k == '_aa_sequence' and v is not None: v = _aa_sequence.from_dict(v) elif k == '_ha_info' and v is not None: for k_, v_ in v.iteritems(): v[k_] = _ha_info.from_dict(v_) setattr(return_obj, k, v) sweep_dict = {} for sample in return_obj._samples.values(): for i, sname in enumerate(sample._sweeps): found_sweep = False for wav in return_obj._wavelengths.values(): if found_sweep: break for sweep in wav._sweeps: if sweep.get_name() == sname: sample._sweeps[i] = sweep sweep._sample = sample found_sweep = True break for s in sample._sweeps: assert not isinstance(s, basestring) if return_obj._scaler is not None: for intgr in return_obj._get_integraters(): return_obj._scaler._scalr_integraters[intgr.get_integrater_epoch()] \ = intgr if (hasattr(return_obj._scaler, '_sweep_handler') and return_obj._scaler._sweep_handler is not None): if intgr.get_integrater_epoch() in \ return_obj._scaler._sweep_handler._sweep_information: return_obj._scaler._sweep_handler._sweep_information[ intgr.get_integrater_epoch()]._integrater = intgr return return_obj