プログラミングのネタ帳

30代からプログラミングをはじめた。記憶力が悪いのでメモ代わりに。

record_type='3d'と指定し、3次元座標情報をもつcompoundオブジェクトを生成する

前回からの続き

 

myprograming-tips.hatenablog.jp

pcp.Compound.from_cid()メソッドの引数で,record_type='3d'とすると3次元の座標データをもつcompoundオブジェクトを得られます


pcp.
    

 

しかし、注意点として、3dとして入手したcompoundオブジェクトは、大部分のプロパティを使うことが出来ない様子です。(例えば、cmp_obj_3d.iupac_nameとしてもNoneを返す)

そのため、関数としては、record_type='2d', '3d'の両方をオブジェクトを返すようにしたほうが後々便利だと思います。


#関数名 get_cmp_object(str) 関数
#機能
#  引数で受けたcidからcompoundオブジェクトを生成、
#  record_type=3dとして3d情報をもったcmp_objはプロパティを表示しない
#  そのため、3d,2dの両方を返す
#引数(str) 1:cid
#戻り値(compound_object,compound_object) 1:compoundオブジェクト3d ,2d
def get_cmp_object(mycid):
    cmp_3d=pcp.Compound.from_cid(mycid,record_type='3d')    #!!!3dではプロパティを得られない!!!
    cmp_2d=pcp.Compound.from_cid(mycid,record_type='2d')
    
    return [cmp_3d,cmp_2d]

pythonは戻り値をいくつでも簡単に設定できるのでいいですよね

次回から座標データや結合データを用いて.xyz や.mol2ファイルを作りたいと思います。