Data Model version 2.1.2
Acknowledgements
Diagram | Class Map | Attribute Map | Method Map | Help | License
Home | Package | Class | Attribute | Method: { prev | next }

Method: getEmpiricalFormula


    getter for derived attribute empiricalFormula

guid: www.ccpn.ac.uk_Fogh_2006-08-16-18:23:34_00038
OpType: get
OpSubType: None
isQuery: True
isAbstract: False
Scope: instance_level
Code: # get formula dictionary
dd = {}
clazz = ccp.api.molecule.ChemComp.ChemAtom

for mr in self.molResidues:
  for ss in (ca.elementSymbol for ca in mr.getByNavigation('chemComp', ('chemCompVars', (mr.linking, mr.descriptor)), 'chemAtoms') if isinstance(ca, clazz)):
    ii = dd.get(ss)
    if ii is None:
      dd[ss] = 1
    else:
      dd[ss] = ii + 1
if dd:
  # generate formula
  ll = [None] * (len(dd)*2)
  next = 0
  for ss in ('C','H'):
    ii = dd.get(ss)
    if ii is not None:
      ll[next] = ss
      ll[next+1] = str(ii)
      del dd[ss]
      next = next + 2

  items = dd.items()
  items.sort()
  for (ss, ii) in items:
    ll[next] = ss
    ll[next+1] = str(ii)
    next = next + 2
  #
  result = ''.join(ll)
else:
  result = None
  Data Model Version 2.1.2
Go to Top  
  Autogenerated by  PyApiDocGen  revision 1.3   on  Fri Mar 28 11:18:11 2014    from data model package  ccp.api.molecule.Molecule.Molecule   revision ?  
  Work done by the CCPN team.
www.ccpn.ac.uk