Пример #1
0
 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
Пример #2
0
 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