U ¶Vfb@sddlmZddlmZddlmZddlZddlZddl m Z ddl m Z ddZd d Zd d Zd dZddZddZddZdS))print_function)argv)ChemN)rdMolDescriptors)popenc Csi}t|}|d}||D]`}|dkr4q&|d}i||d<|ddD].}|d\}}t|||d|<qVq&|S)N ,r:)openreadsplitclosefloatrstripupper) ZlistfilelogPfllineZaaaatomZLOGPrszread_mol..rrr)rMolFromMolFile GetNumAtomsGetAtomsr_CalcCrippenContribsrange GetConformerGetAtomPositionappendxyzr r rpop) fileZronelementZcrippenrrposrsrrrread_mols   ( r2c Cs&g}g}t|d}|d}|dW5QRXd}|D]}|dddkr|dd}|td|dt|d d t|d d t|d d g||nV|dd dkr ||dt|d d t|d d t|d d g|||d7}q>|t |||gS)Nrrr rZHETATMKz[-+0-9]&.6ATOM r ) r r rr,striprr(rerrMolFromPDBFile)r-rline_numrr1r.rrrrr read_HETATM*s8    r@c Cst|d}|d}|dW5QRXi}g}|D]}|dddkr:|dd}||krtg||<|||||d|dd t|d d t|d d t|d d gq:|||gS)Nrrr r9r:r;r5r6r7r8)r r rr,r(rrr)r-rr1rresiduerresrrr read_ATOMFs(   rFcCsL|}g}t|D](}||}||j|j|jgqt |}|S)N) r"r%r&r'r(r)r*r+nparray)molr.Zmol_posrr0rrr get_pos_mol[s  rJc Csfg}|dD]}d}|d|D]}tt|D]}tt||dD]~}|d||d|dd|d||d|dd|d||d|dd|dkrH||d}qqH|r0qq0|r q q q ||d<i} |D]} |d| | | <q| |d<g} |dD]@} | dddks:| | n| d d |kr| | q| |d<dS) NrFr r9Tr:rB)r%lenr() ZpdbrIdistrDrEflagcjkrrr1rrr reduce_pdbgs4 h   rTc Csttd}|d}t|d}t|d}|d|}||krtd|d|dd|td t|}ttd}|d}t|d}|d|}qs