重心間距離で用いたdistanceコマンドを用いると、たんぱく質やペプチドの各アミノ酸残基ペアのC$\alpha$距離の分布を調べることが出来る。例えば、各アミノ酸残基のペア毎のC$\alpha$分布の平均値から構成される行列を計算すれば、大雑把にたんぱく質やペプチドの形状を議論出来る。例として、チュートリアルのmdcrdファイルを用いて計算する。以下のようなPythonスクリプトをcalpha.pyとして使用すれば、calpha距離を全残基ペアで計算するBashスクリプトを作成することが出来る。

nf = 1 # 最初の残基
nl = 7 # 最後の残基

traj = ["""parm test.prmtop
trajin main.mdcrd 1 last 10"""]

for i in range(nf, nl + 1):
        filename = 'calpha%d.sh' %i
        f = open(filename, 'w')
        str = """cpptraj <<EOF
%s\n""" % traj[0]

        for j in range(nf, nl + 1):
                if i <= j:
                    str += """distance :%d@CA :%d@CA out calpha%d.dat\n""" %(i, j, i)

        str += """EOF"""
        f.write(str)
        f.close()

ここではいくつかのスクリプトにタスクを分けている。大きなトラジェクトリーを扱う際に、メモリ容量が超過して書き出されないトラジェクトリーが出てくる場合があるためである。それぞれを例えば以下のように実行する。

for i in {1..7}; do
    sh calpha$i.sh
done

得られたdatファイルを解析することによって、以下のような各アミノ酸残基間のC$\alpha$距離の平均値を行列として可視化出来る。この図で、1残基目と7残基目は他の残基ペアに比べて互いに離れていることが分かる。ただし、ここで見ている値はあくまで平均値であることに注意されたい。例えば、2つのピークを持つような分布の特徴は反映されないだろう。実際、重心間距離では1残基目と7残基目の重心間距離を計算していたが、2つのピークが存在していたことを思い出していただきたい。