Hi list,

  I am wondering what properties are attached to the various levels of a hierarchy and how to retrieve it.
As an example, I would like to know how to get the one-character-code that is attached to a chain. 

I have the feeling, this is not strictly feasible, though it is possible to get it as the last character in the particle name of the chain :

import IMP
import IMP.atom

m=IMP.Model()
struct_file_name                    = "/Users/schwarz/DATA/myPDB/1K8K.pdb"
struct1k8k=IMP.atom.read_pdb(struct_file_name,m)
c0=struct1k8k.get_child(0)
print c0.get_name()

Will result in 'Chain A' being output. Looking at the other properties stored in my c0 chain, I see that everything seems to be integer, including a "chain" attribute that I try to access through

chainKey = c0.get_int_attributes()[2]
c0.get_value(chainKey)

which results in the integer 65 being output...

My questions now :
 1. Is there a way to get directly the one letter code of a chain ?
 2. If not, is there a guaranty that the letter used in the particle name will always reflect the chain ID, or is there a fixed mapping between the value of the chainKey attribute and the chain one letter code ?
 3. Is there a nicer way to get a keyType for instance from its string ? In my example, I retrieved chainKey as the third element of the integer keys list returned by get_int_attributes(), this is not very satisfying, and I thought of resorting to a function such as :

def getChainKey( chain ):
    for k in chain.get_int_attributes() :
        if k.get_string() == 'chain' :
            return k
    return None

Still, I wonder if there is an IMP mechanism I am not aware of, that I should prefer instead.

    --Ben.S