Цель: Учитывая PDB файл, выводит все пары остатков цистеина, образующих дисульфидные связи в третичной структуры белка. Лицензия: GNU GPL Сценарий: Эрик Миллер
#!/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 (требуется для запуска этого скрипта) в моем рабочем каталоге. Любое решение?