0

目的: PDB ファイルを指定すると、三次タンパク質構造でジスルフィド結合を形成するシステイン残基のすべてのペアを出力します。ライセンス: GNU GPL 作成者: Eric Miller

#!/usr/bin/env python
import math

def getDistance((x1,y1,z1),(x2,y2,z2)):
   d = math.sqrt(pow((x1-x2),2)+pow((y1-y2),2)+pow((z1-z2),2));
   return round(d,3);

def prettyPrint(dsBonds):
   print "Residue 1\tResidue 2\tDistance";
   for (r1,r2,d) in dsBonds:
   print " {0}\t\t {1}\t\t {2}".format(r1,r2,d);

def main():
   pdbFile = open('2v5t.pdb','r');
   maxBondDist = 2.5;

   isCysLine = lambda line: (line[0:4] == "ATOM" and line[13:15] == "SG");
   cysLines = [line for line in pdbFile if isCysLine(line)];
   pdbFile.close();

   getCoords = lambda line:(float(line[31:38]),
      float(line[39:46]),float(line[47:54]));
   cysCoords = map(getCoords, cysLines);
   dsBonds = [];

   for i in range(len(cysCoords)-1):
      for j in range(i+1,len(cysCoords)):
         dist = getDistance(cysCoords[i],cysCoords[j]);
         residue1 = int(cysLines[i][23:27]);
         residue2 = int(cysLines[j][23:27]);
         if (dist < maxBondDist):
            dsBonds.append((residue1,residue2,dist));

   prettyPrint(dsBonds);

if __name__ == "__main__":
   main()

このスクリプトを実行しようとすると、インデントの問題が発生します。作業ディレクトリに 2v5t.pdb (上記のスクリプトを実行するために必要) があります。解決策はありますか?

4

3 に答える 3

0

エラーがどこにあるとフラグが立てられたかは言いませんでしたが:

if __name__ == "__main__":
main()

次のようにする必要があります。

if __name__ == "__main__":
   main()
于 2013-04-03T10:15:44.130 に答える