import os
os.environ['PATH']=os.environ['PATH']+'/home/preps/golovin/progs/bin'
os.environ['MOPAC_LICENSE']='/home/preps/golovin/progs/bin'
%%bash
obgen 1.smi > 1.mol
##Рассмотрим порфирин
%%bash
babel -ipdb 1_removed.pdb -omop 1_opt.mop -xk "PM6"
%%bash
/home/preps/golovin/progs/bin/MOPAC2009.exe 1_opt.mop
##оптимизируем структуру с помощью MOPAC (удалив сначала лишние водороды)
%%bash
babel -imopout 1_opt.out -opdb 1_opt.pdb
%%bash
/home/preps/golovin/progs/bin/MOPAC2009.exe 1_opt_spectr.mop
from xmlrpclib import ServerProxy
from IPython.display import Image
import os, sys
import __main__
__main__.pymol_argv = [ 'pymol', '-cp' ]
import pymol
pymol.finish_launching()
from pymol import cmd
from IPython.display import Image
cmd.delete('all')
cmd.load('1.pdb')
cmd.do('''
rotate x, 90
ray
png por1.png
''')
Image(filename='por1.png')
##до MOPAC
cmd.delete('all')
cmd.load('1_opt.pdb')
cmd.do('''
rotate x, 90
ray
png por1.png
''')
Image(filename='por1.png')
##после MOPAC, структура явно оптимизировалась и стала полностью плоской, как и должно быть
%%bash
for i in 'SINGLET' 'DOUBLET' 'TRIPLET'
do
grep ${i} '1_opt_spectr.out' ##>> electron_states.txt
done
##достали из out-файла информацию об энергии перехода между состояниями
file = open('electron_states.txt', 'r')
energies = open('energies', 'w')
a=[]
for line in file:
a.append(line.split()[1])
print(a)
outfile = open('energies', 'w')
outfile.write("\n".join(a))
planck_constant = 4.135667*(10**(-15))
light_speed = 299.792458*(10**6)
lambdas=[]
file = open('energies', 'r')
for line in file:
lambdas.append(planck_constant*light_speed*(10**9)/float(line))
print lambdas
##outfile = open('wavelenghts', 'w')
##outfile.write("\n".join(str(lambdas)))
##получили длины волн, которые способен поглащать порфирин, в нанометрах
%%bash
echo 'O=C1C=CC(=O)C=C1' >> new_mol.smi
%%bash
obgen new_mol.smi > new_mol.mol
cmd.delete('all')
cmd.load('new_mol.mol')
cmd.do('''
zoom visible
set valence, 2
ray
png new1.png
''')
Image(filename='new1.png')
cmd.do('''
rotate x, 90
ray
png new2.png
''')
Image(filename='new2.png')
cmd.save('quinone.pdb')
##obgen выдал плоскую молекулу
%%bash
babel -ipdb quinone.pdb -omop quinone_opt.mop -xk "PM6"
%%bash
export PATH=${PATH}:/home/preps/golovin/progs/bin
export MOPAC_LICENSE=/home/preps/golovin/progs/bin
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/home/preps/golovin/progs/lib
MOPAC2009.exe quinone_opt.mop
MOPAC2009.exe quinone_charged_opt.mop
%%bash
babel -imopout quinone_opt.out -opdb quinone_opt.pdb
babel -imopout quinone_charged_opt.out -opdb quinone_charged_opt.pdb
cmd.delete('all')
cmd.load('quinone_opt.pdb')
cmd.do('''
refresh
zoom visible
set valence, 2
ray
png new3.png
''')
##MOPAC тоже выдал плоскую геометрию, но распознал ароматичнсоть в цикле
Image(filename='new3.png')
cmd.delete('all')
cmd.load('quinone_opt.pdb')
cmd.do('''
refresh
zoom visible
rotate x, -90
rotate y, 90
show sticks
set stick_ball, on
set stick_ball_ratio, 2
set stick_radius, 0.12
set valence, 2
set ray_trace_mode, 3
ray
png new3.png
''')
Image(filename='new3.png')
cmd.delete('all')
cmd.load('quinone_charged_opt.pdb')
cmd.do('''
zoom visible
rotate x, -90
rotate y, 90
show sticks
set stick_ball, on
set stick_ball_ratio, 2
set stick_radius, 0.12
set valence, 2
set ray_trace_mode, 3
ray
png new4.png
''')
##для дианиона ничего не изменилось
Image(filename='new4.png')
cmd.delete('all')
cmd.load('quinone_charged_opt.pdb')
cmd.do('''
refresh
zoom visible
set valence, 2
ray
png new5.png
''')
Image(filename='new5.png')