Добро пожаловать :-) Похоже, вы очень близки.Давайте познакомим вас с использованием функции python и оператора .format ().
У вашего оригинала есть строка комментария # read model file
, которая выглядит так, как будто это может быть функция, поэтому давайте попробуем это.Это может выглядеть примерно так:
from modeller import *
from modeller.scripts import complete_pdb
log.verbose() # request verbose output
# I'm assuming this can be done just once
# and re-used for all your model files...
# (if not, the env stuff should go inside the
# read_model_file() function.
env = environ()
env.libs.topology.read(file='$(LIB)/top_heav.lib') # read topology
env.libs.parameters.read(file='$(LIB)/par.lib') # read parameters
def read_model_file(file_name):
print('--- read_model_file(file_name='+file_name+') ---')
mdl = complete_pdb(env, file_name)
# Assess all atoms with DOPE:
s = selection(mdl)
output_file = file_name+'.profile'
s.assess_dope(
output='ENERGY_PROFILE NO_REPORT',
file=output_file,
normalize_profile=True,
smoothing_window=15)
for i in range(1,1001):
file_name = 'TcP5CDH.B9999{:04d}pdb'.format(i)
read_model_file(file_name)
Используя .format () мы можем получить несколько проверок оператора if для 10?100?1000?В основном .format () заменяет {} фигурные скобки с аргументом (ами).Это может быть довольно сложно, но вам не нужно разбирать все это.
Пример: 'Hello {}!'.format('world')
приводит к Hello world!
.В материале {:04d}
используется форматирование, которое в основном гласит: «Пожалуйста, создайте цифру-подстроку шириной 4 символа и заполните ее нулями, чтобы вы получили '0001', ..., '0999', '1000'
. Просто {:4d}
(без начального нуля) даст вам пробел с отступом»результаты (например, ' 1', ..., ' 999', '1000'
. Вот еще немного о заполнении нулями: Отображение числа с ведущими нулями