不能连续对齐 100 个 pdb 文件

问题描述 投票:0回答:1

我正在尝试对齐 100 个 pdb 文件的列表。我在 PYMOL 上运行这个脚本。

import os
from pymol import cmd

referencia_path = 'C:/Users/marcr/Desktop/3.Dockings/1A74/referencia.pdb'
resultados_dir_path = 'C:/Users/marcr/Desktop/3.Dockings/1A74/TOP1/resultados'

for docking_file in os.listdir(resultados_dir_path):
    if docking_file.startswith('project') and docking_file.endswith('.pdb'):
        print(docking_file)
    docking_file_path = os.path.join(resultados_dir_path, docking_file)
    try:
        cmd.load(docking_file_path, 'docking')
        cmd.load(referencia_path, 'referencia')
        cmd.select('docking_sel', 'docking')
        cmd.select('referencia_sel', 'referencia')
        rmsd = cmd.align('referencia_sel', 'docking_sel')
        cmd.delete('docking')
        cmd.delete('referencia')
        print(rmsd, docking_file)
    except Exception as e:
        print(f"Error al calcular el RMSD para el archivo {docking_file}: {str(e)}")

我有这个错误输出:

project2248_1046.pdb
(1.1918482780456543, 2347, 5, 18.874753952026367, 3342, 2264.0, 366) project2248_1046.pdb
project2248_1189.pdb
(1.129143476486206, 2289, 5, 11.897171020507812, 3342, 2264.0, 366) project2248_1189.pdb
project2248_120.pdb
(1.1377745866775513, 2297, 5, 11.46321964263916, 3342, 2264.0, 366) project2248_120.pdb
project2248_1230.pdb
(1.2275712490081787, 2377, 5, 17.573402404785156, 3342, 2264.0, 366) project2248_1230.pdb
project2248_132.pdb
(1.2065815925598145, 2360, 5, 17.822322845458984, 3342, 2264.0, 366) project2248_132.pdb
project2248_1391.pdb
 ExecutiveAlign: mobile selection must derive from one object only.
Error al calcular el RMSD para el archivo project2248_1391.pdb:  Error: 
project2248_1449.pdb
(1.1287293434143066, 2288, 5, 12.679401397705078, 3342, 2264.0, 366) project2248_1449.pdb
project2248_1596.pdb
(1.1307284832000732, 2290, 5, 19.776931762695312, 3342, 2264.0, 366) project2248_1596.pdb
project2248_1792.pdb
(1.1410210132598877, 2301, 5, 18.36610984802246, 3342, 2264.0, 366) project2248_1792.pdb
project2248_203.pdb
(1.181908130645752, 2338, 5, 21.676639556884766, 3342, 2264.0, 366) project2248_203.pdb
project2248_2035.pdb
(1.2199422121047974, 2371, 5, 16.58650016784668, 3342, 2264.0, 366) project2248_2035.pdb
project2248_2409.pdb
 ExecutiveAlign: mobile selection must derive from one object only.
Error al calcular el RMSD para el archivo     project2248_2409.pdb:  Error: 
project2248_2450.pdb
(1.192857265472412, 2348, 5, 13.367650032043457, 3342, 2264.0, 366) project2248_2450.pdb
project2248_251.pdb
(1.184958815574646, 2344, 5, 21.124313354492188, 3342, 2264.0, 366) project2248_251.pdb
project2248_2518.pdb
(1.1524460315704346, 2311, 5, 12.114777565002441, 3342, 2264.0, 366) project2248_2518.pdb
project2248_2585.pdb
(1.212585210800171, 2365, 5, 10.23307991027832, 3342, 2264.0, 366) project2248_2585.pdb
project2248_2611.pdb
(1.2275712490081787, 2377, 5, 17.81340980529785, 3342, 2264.0, 366) project2248_2611.pdb
project2248_2672.pdb
 ExecutiveAlign: mobile selection must derive from one object only.
Error al calcular el RMSD para el archivo project2248_2672.pdb:  Error: 
project2248_2714.pdb
(1.1940852403640747, 2349, 5, 13.228764533996582, 3342, 2264.0, 366) project2248_2714.pdb
project2248_2885.pdb
(1.1221466064453125, 2281, 5, 12.371736526489258, 3342, 2264.0, 366) project2248_2885.pdb
project2248_2946.pdb
(1.1377745866775513, 2297, 5, 10.361648559570312, 3342, 2264.0, 366) project2248_2946.pdb
project2248_3108.pdb
(1.1377745866775513, 2297, 5, 11.402652740478516, 3342, 2264.0, 366) project2248_3108.pdb
project2248_3330.pdb
(1.1287293434143066, 2288, 5, 20.488927841186523, 3342, 2264.0, 366) project2248_3330.pdb
project2248_3538.pdb
 ExecutiveAlign: mobile selection must derive from one object only.
Error al calcular el RMSD para el archivo project2248_3538.pdb:  Error: 

这真的很奇怪,因为每 5 次迭代就会出现错误。

几乎所有的东西,减少列表,创建一个功能......恐怕是软件问题。

python alignment pymol
1个回答
0
投票
import os
from pymol import cmd

referencia_path = 'C:/Users/marcr/Desktop/3.Dockings/1A74/referencia.pdb'
resultados_dir_path = 'C:/Users/marcr/Desktop/3.Dockings/1A74/TOP2/resultados'

for docking_file in os.listdir(resultados_dir_path):
    if docking_file.startswith('project') and docking_file.endswith('.pdb'):
        print(docking_file)
        docking_file_path = os.path.join(resultados_dir_path, docking_file)
        try:
            cmd.load(docking_file_path, 'docking')
            cmd.load(referencia_path, 'referencia')
            cmd.extract('docking_sel', 'docking and chain A') # extraer los átomos de la cadena A
            cmd.extract('referencia_sel', 'referencia and chain A') # extraer los átomos de la cadena A
            rmsd = cmd.align('referencia_sel', 'docking_sel')
            cmd.delete('docking')
            cmd.delete('referencia')
            print(rmsd, docking_file)
        except Exception as e:
            print(f"Error al calcular el RMSD para el archivo {docking_file}: {str(e)}")

select
改成
load
后有效。

© www.soinside.com 2019 - 2024. All rights reserved.