Для предсказания структуры была взята тРНК из предыдущего отчета.
%set_env PATH=/srv/conda/miniconda/bin:/srv/conda/miniconda/condabin:/usr/local/bin:/usr/bin:/home/preps/golovin/progs/x3dna-v2.4/bin
env: PATH=/srv/conda/miniconda/bin:/srv/conda/miniconda/condabin:/usr/local/bin:/usr/bin:/home/preps/golovin/progs/x3dna-v2.4/bin
! echo "GGGCUUGUAGCUCAGGUGGUUAGAGCGCACCCCUGAUAAGGGUGAGGUCGGUGGUUCAAGUCCACUCAGGCCCAC" > rna.seq
! einverted -sequence rna.seq -gap 10 -threshold 0 -match 3 -mismatch -3 -outfile tRNA.inv -outseq tRNA.seq
Find inverted repeats in nucleotide sequences
! cat tRNA.inv
: Score 18: 8/10 ( 80%) matches, 0 gaps 23 gagcgcaccc 32 || | ||||| 49 ctggagtggg 40 : Score 15: 6/7 ( 85%) matches, 0 gaps 1 gggcttg 7 || |||| 63 cctgaac 57
import RNA
seq = "GGGCUUGUAGCUCAGGUGGUUAGAGCGCACCCCUGAUAAGGGUGAGGUCGGUGGUUCAAGUCCACUCAGGCCCAC"
# create fold_compound data structure (required for all subsequently applied algorithms)
fc = RNA.fold_compound(seq)
# compute MFE and MFE structure
(mfe_struct, mfe) = fc.mfe()
# rescale Boltzmann factors for partition function computation
fc.exp_params_rescale(mfe)
# compute partition function
(pp, pf) = fc.pf()
# compute MEA structure
(MEA_struct, MEA) = fc.MEA()
# compute free energy of MEA structure
MEA_en = fc.eval_structure(MEA_struct)
# print everything like RNAfold -p --MEA
print("%s\n%s (%6.2f)" % (seq, mfe_struct, mfe))
print("%s [%6.2f]" % (pp, pf))
print("%s {%6.2f MEA=%.2f}" % (MEA_struct, MEA_en, MEA))
print(" frequency of mfe structure in ensemble %g; ensemble diversity %-6.2f" % (fc.pr_structure(mfe_struct), fc.mean_bp_distance()))
GGGCUUGUAGCUCAGGUGGUUAGAGCGCACCCCUGAUAAGGGUGAGGUCGGUGGUUCAAGUCCACUCAGGCCCAC (((((((.......(((((((.((((.(((((((.((....)).)))..)))))))).)).)))))))))))).. (-31.50) (((((((.......((((({{.((((.(((((((.((....)).)))..)))))))).}}.)))))))))))).. [-32.08] (((((((.......(((((((.((((.(((((((.((....)).)))..)))))))).)).)))))))))))).. {-31.50 MEA=69.76} frequency of mfe structure in ensemble 0.391844; ensemble diversity 5.58
RNA.svg_rna_plot(seq, MEA_struct, ssfile='ggg.svg' )
from IPython.display import SVG
SVG('ggg.svg')
Участки по Фаворовой | Позиции в структуре (find_pair) | einverted | Алгоритм Зукера |
---|---|---|---|
Акцепторный стебель | 5' 1-7 3' к 3' 72-66 5', 7 пар | 0 из 7 | 0 из 7 |
D-стебель | 5' 10-13 3' к 3' 25-22 5', 4 пары | 0 из 4 | 0 из 4 |
Антикодоновый стебель | 5' 39-43 3' к 3' 31-27 5', 4 пары | 0 из 4 | 0 из 4 |
T-стебель | 5' 49-53 3' к 3' 65-61 5', 5 пары | 0 из 5 | 0 из 5 |
Общее число канонических пар | 20 пар | 17 пар | 27 пар |
Как-то всё очень грустно и непонятно((
import py3Dmol as p3d
# Множество атомов кислорода 2'-дезоксирибозы
def deoxyribose(pdb_code):
v = p3d.view(query='pdb:'+pdb_code)
select = {'atom': ["O"+str(i)+"'" for i in [3, 4, 5]], 'resn': ['DA', 'DT', 'DG', 'DC']}
v.setStyle(select,{'sphere':{'color':'spectrum'}})
return v.show()
# множество атомов кислорода в остатке фосфорной кислоты
def phosphate(pdb_code):
v = p3d.view(query='pdb:'+pdb_code)
select = {'atom': ["OP"+str(i) for i in [1, 2]], 'resn': ['DA', 'DT', 'DG', 'DC']}
v.setStyle(select,{'sphere':{'color':'spectrum'}})
return v.show()
# Множество атомов азота в азотистых основаниях
def nitrogene(pdb_code):
v = p3d.view(query='pdb:'+pdb_code)
select = {'elem': 'N', 'resn': ['DA', 'DT', 'DG', 'DC']}
v.setStyle(select,{'sphere':{'color':'spectrum'}})
return v.show()
deoxyribose('1r4o')
You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
jupyter labextension install jupyterlab_3dmol
phosphate('1r4o')
You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
jupyter labextension install jupyterlab_3dmol
nitrogene('1r4o')
You appear to be running in JupyterLab (or JavaScript failed to load for some other reason). You need to install the 3dmol extension:
jupyter labextension install jupyterlab_3dmol
Таблица была получена ручным поиском (с использованием within, select и тд) тех или иных контактов в PyMol
Контакты атомов белка | Полярные | Неполярные | Всего |
---|---|---|---|
2'-дезоксирибоза | 1 | 14 | 15 |
фосфат | 8 | 8 | 16 |
большая бороздка | 3 | 7 | 10 |
малая бороздка | 0 | 1 | 1 |
Неполярных контактов больше, чем полярных. А также можно сказать, что большая бороздка больше идет на контакт, нежели малая.
! nucplot # это грустно, попробуем через CMD.(
/bin/bash: nucplot: command not found
Запуск программы nucplot на старой версии 1r4o.pdb
jakewayd@kodomo:~/term3/block1/pr3$ nucplot 1r4o_old.pdb
Coordinates file: [ 1r4o_old.pdb ]
Running hbadd:
/usr/lib/nucplot/hbadd: Command not found.
.................................................................
Running hbplus:
.................................................................
Reading parameter file ...
Input file names:-
PDB file 1r4o_old.pdb
H-bonds file 1r4o_old.hb2
Non-bonded contacts 1r4o_old.nb2
Bonds file 1r4o_old.bond
default numbering...
Number of DNA strands identified: 2
Number of protein chains identified: 4
No bond file supplied:-
Reading external interaction information from PDB CONNECT records
and HBPLUS output files
Opened PostScript file nucplot.ps ...
..................................................................
Конвертация nucplot.ps в nucplot.pdf
jakewayd@kodomo:~/term3/block1/pr3$ ps2pdf nucplot.ps nucplot.pdf
# Выдача программы nucplot в pdf формате
# Действительно, не очень много аминокислот вступает в заимодействие с ДНК
from IPython.display import IFrame
filepath = "nucplot.pdf"
IFrame(filepath, width=700, height=500)
По полученной схеме были выбраны Lys461(A) (рис. 1), так как у него самое большое количество связей (3) среди остальных А.О., там более lys461(A) связывается непосредственно с гуанином, что должно увеличивать специфичность распознавания. Также, непосредсвенно с азотистым основанием связывается Val462(A) (рис. 2) одной связью.