我正在尝试对齐 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 次迭代就会出现错误。
几乎所有的东西,减少列表,创建一个功能......恐怕是软件问题。
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
后有效。