Пимол - проблема о создании объекта и выборе конкретных остатков для скользящего окна - PullRequest
0 голосов
/ 22 февраля 2019

Цель: я хочу сравнить вычисление RMSD для того же остатка, например, 131Thr, из файлов 2 pdb для той же цели.Используя pymol, я вычисляю скользящее окно из 5 остатков для локального выравнивания, а затем выбираю остаток и вычисляю среднеквадратичное значение между двумя остатками, вдохновленное этим сообщением здесь: https://pymolwiki.org/index.php/RmsdByResidue. Единственная разница: я определяю скользящее окно из 5остатки для моего местного выравнивания заранее.

Фрагмент кода (интерфейс Python / Pymol):

  referenceProteinChain = cmd.fetch(pbdstructure1)
  targetProteinChain = cmd.fetch(pdbstructure2)
  sel = referenceProteinChain
  list_atoms = [[133, 133]] # example list, I want to calculate the rmsd between residue 133 and residue 133 of two pdb structures

for j in list_atoms:
   # I formulate my sliding window of 5 residues, my residue of interest is in the middle
    ref_begin = int(j[0])-2
    ref_end = int(j[0])+2
    target_begin = int(j[1])-2
    target_end = int(j[1])+2

    # I create a selection for the reference protein and the target protein 
    cmd.create("ref_gzt", referenceProteinChain+" and polymer and not alt B and not Alt C and not alt D  and resi %s-%s" 
    cmd.alter("ref_gzt", "chain='A'")
    cmd.alter("ref_gzt", "segi=''")
    cmd.create("target_gzt", targetProteinChain+" and polymer and  not alt B and not Alt C and not alt D  and resi %s-%s" %(target_begin,target_end) )
    cmd.alter("target_gzt", "chain='A'")
    cmd.alter("target_gzt", "segi=''")

    # I align my selected 5 residues for a local alignment window
    cmd.align("target_gzt","ref_gzt",object="align", cycles =5) 


   # select alpha carbon of in reference structure to loop over
    calpha=cmd.get_model(sel+" and name CA and not alt B and not Alt C and not alt D  and resi %s-%s" %(ref_begin,ref_end) )

   ## here I loop over all residues in the sliding window and calculte the rmsd for my residues of interest.
    for g in calpha.atom : I loop over the slinding window
        if g.resi == str(j[0]): ## we select only our residue of interest within the sliding window
            if cmd.count_atoms("ref_gzt and polymer and resi "+g.resi)==cmd.count_atoms("target_gzt and polymer and resi "+g.resi):

                ## calculte the pairwise RMSD between the residues I specified in list_atoms 
                rmsdRes=cmd.rms_cur("ref_gzt and polymer and resi "+g.resi,"target_gzt and polymer and resi "+g.resi)

Моя проблема: Я получаю различное количество атомов для выбранных остатков и, следовательно, не могурассчитать мой RMSD

  • Мне нужна функция Pymol, с которой я могу видеть, какие остатки я сравниваю, например, сравниваю ли я на самом деле 131Thr в обоих файлах pdb.Есть ли такие функции?
  • Есть ли лучший способ создания двух выделений для скользящего окна?
  • cmd.alter - я использую это, чтобы убедиться, что остатки от двух структурmatch.But есть ли способ сохранить мои оригинальные аннотации?

Примечание. Я проверил, совпадают ли остатки в исходных файлах pdb.Они делают.Кажется, это проблема Пимола с тем, как я выбираю остатки.

Как новичок в Пимоле - если бы кто-нибудь мог дать мне предложение, это было бы очень ценно!Я проверил списки рассылки pymol и опробовал другие функции, например, используя cmd.select, но дальше ничего не получалось.

...