Найти соответствие между аминокислотным индексом из файлов PDB и последовательностью - PullRequest
0 голосов
/ 10 января 2019

Я новичок в программировании на Python. Я пытаюсь сделать следующее:

У меня есть последовательность аминокислот (включая пробелы) и соответствующий файл PDB. Нумерация аминокислот в файле PDB не соответствует нумерации аминокислот в списке последовательностей. Я хочу найти индекс каждой аминокислотной записи в файле PDB и найти соответствующий индекс в последовательности.

Вот последовательность: -LLPYFDF----DVPRNLTVTVGQT-GFLHCRVERLGDK-----DVSWIRKR----------DLHILTAGGTTYTSDQRFQVLRP---------------------------------------DGSANWTLQIKYPQPRDSGVYECQINTEP-KMSLSYTFNVVE-IVDPKFSSPIVNMTAPVGRDAFLTCVVQDLGPYKVAWLRVDTQTILTIQNHVITKNQRIGIANSEH---KTWTMRIKDIKESDKGWYMCQINTDPMKSQMGYLDVV----

Вот что я пробовал до сих пор:

import pylab as pyl
import numpy as np
import sys
import os
import re
import argparse
import glob

def parseArgs():
 """Parse command line arguments"""

  try:
      parser = argparse.ArgumentParser(
       description = 'Read and extract items from input PDB file')

      parser.add_argument('-i',
                        '--input',
                        action='store',
                        required=True,
                        help='input PDB file in standard format')

   except:
        print ("An exception occurred with argument parsing. Check your provided options.")
        traceback.print_exc()


   return parser.parse_args()

# Reads a PDB file and returns the residue name and coordinates for 
# each C-alpha atom
# (the input argument for this routine is the pdb file name.)

def get_coordinates_PDB(File_In):
    try:
        fl = open(File_In,'r')
    except:
        print('Could not open input file {0}'.format(File_In))
        sys.exit()
    Res = []
    Points = []
    #Getting from a PDB file

    for line in fl:
        if not(line.startswith('ATOM')):
            continue
        elif (line[13:15] != 'CA'):
            continue
        resname = line[17:20]
        xyz = re.findall('[-+]?\d+\.\d+', line)
        tmp = np.zeros(3)
        Res.append(resname)
        tmp[0] = float(xyz[0])
        tmp[1] = float(xyz[1])
        tmp[2] = float(xyz[2])
        Points.append(tmp)
     fl.close()
     return Points, Res


def main():
  """Read and parse a provided PDB file."""


  #Parse arguments
  args = parseArgs()

  File_In = args.input

  print(get_coordinates_PDB(File_In))

if __name__ == '__main__':
   main()

Выводит координаты x, y, z и аминокислоты в файле PDB. Тем не менее, я застрял в этой точке.

Я был бы очень признателен, если бы кто-нибудь мог помочь мне в реализации всего остального.

...