Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 28, 2012 13:51:44

own777
Зарегистрирован: 2012-12-28
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Оптимизация кода

Привет!


Имеется код состоящий из Н блоков ( ниже пример для 5 блоков)

# ANM conformer 1
conformer1 = parsePDB('./conf_pr/output0.pdb', model=1, subset='calpha')
anm = ANM('b2ar 1')
anm.buildHessian(conformer1, cutoff=8.0)
anm.calcModes(100)
writeNMD('b2ar_anm1.nmd', anm[:10], conformer1)
# ANM conformer 2
conformer2 = parsePDB('./conf_pr/output1.pdb', model=1, subset='calpha')
anm2 = ANM('b2ar 2')
anm2.buildHessian(conformer2, cutoff=8.0)
anm2.calcModes(100)
writeNMD('b2ar_anm2.nmd', anm2[:10], conformer2)
# ANM conformer 3
conformer3 = parsePDB('./conf_pr/output2.pdb', model=1, subset='calpha')
anm3 = ANM('b2ar 3')
anm3.buildHessian(conformer3, cutoff=8.0)
anm3.calcModes(100)
writeNMD('b2ar_anm3.nmd', anm3[:10], conformer3)
# ANM conformer 4
conformer4 = parsePDB('./conf_pr/output3.pdb', model=1, subset='calpha')
anm4 = ANM('b2ar 4')
anm4.buildHessian(conformer4, cutoff=8.0)
anm4.calcModes(100)
writeNMD('b2ar_anm4.nmd', anm4[:10], conformer4)
# ANM conformer 5
conformer5 = parsePDB('./conf_pr/output4.pdb', model=1, subset='calpha')
anm5 = ANM('b2ar 5')
anm5.buildHessian(conformer5, cutoff=8.0)
anm5.calcModes(100)
writeNMD('b2ar_anm5.nmd', anm5[:10], conformer5)


Как видно, в каждом блоке отличие только цифра перед b2ar conformer и anm ( это число блока, N), а так же в output4.pdb ( тут число N-1 )

требуется сократить этот скрипт до минимума сделать так, чтобы N указывалось только один раз в петле.

Отредактировано Александр Кошелев (Дек. 28, 2012 21:02:02)

Офлайн

#2 Дек. 28, 2012 14:39:03

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Оптимизация кода

Я не понимаю Вашей задачи, но проще всего использовать встроенную инструкцию exec…
Хотя можно реализовать в виде списка или словаря, но это более хлопотно…



Отредактировано 4kpt (Дек. 28, 2012 14:44:17)

Офлайн

#3 Дек. 28, 2012 14:58:57

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Оптимизация кода

Странный код и вопрос. Если conformer и anm дальше не используются:

for i in range(5):
    conformer = parsePDB('./conf_pr/output%s.pdb' % i, model=1, subset='calpha')
    n = i + 1
    anm = ANM('b2ar %s' % n)
    anm.buildHessian(conformer, cutoff=8.0)
    anm.calcModes(100)
    writeNMD('b2ar_anm%s.nmd' % n, anm, conformer)
если используются, то завести список или словарь, или поменять логику. exec - для совсем крайних случаев.

Отредактировано reclosedev (Дек. 28, 2012 14:59:45)

Офлайн

#4 Дек. 28, 2012 15:31:29

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Оптимизация кода

reclosedev
Да я навскидку… Сам не рискую его использовать. Только для вызова функций по именам, которые предварительно передаются как строки.



Отредактировано 4kpt (Дек. 28, 2012 15:32:18)

Офлайн

#5 Дек. 28, 2012 16:07:58

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Оптимизация кода

reclosedev
Кстати. Я считаю, что страшного ничего не случится (при использовании инструкции exec), если код не вынимается извне, а Вы сами его создаете в программе (ну как в данном случае).



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version