Rosetta

Version 26 (Anton Vasetenkov, 27.02.2015 19:55)

1 1 Andrey Golovin
h1. Rosetta-Tips
2 1 Andrey Golovin
3 2 Andrey Golovin
{{toc}}
4 2 Andrey Golovin
5 3 Andrey Golovin
h3. Installation
6 3 Andrey Golovin
7 9 Anton Vasetenkov
При компиляции в Ubuntu 14.10 c OpenMpi возникает ошибка:
8 3 Andrey Golovin
<pre>
9 3 Andrey Golovin
src/protocols/wum2/EndPoint.cc:21:42: error: a function call cannot appear in a constant-expression
10 3 Andrey Golovin
src/protocols/wum2/EndPoint.cc:21:44: error: template argument 1 is invalid
11 3 Andrey Golovin
</pre>
12 4 Anton Vasetenkov
Антон Васетенков предлагает:
13 15 Anton Vasetenkov
<pre>
14 5 Anton Vasetenkov
// -*- mode:c++;tab-width:2;indent-tabs-mode:t;show-trailing-whitespace:t;rm-trailing-spaces:t -*-
15 5 Anton Vasetenkov
// vi: set ts=2 noet:
16 5 Anton Vasetenkov
//
17 5 Anton Vasetenkov
// (c) Copyright Rosetta Commons Member Institutions.
18 5 Anton Vasetenkov
// (c) This file is part of the Rosetta software suite and is made available under license.
19 5 Anton Vasetenkov
// (c) The Rosetta software is developed by the contributing members of the Rosetta Commons.
20 5 Anton Vasetenkov
// (c) For more information, see http://www.rosettacommons.org. Questions about this can be
21 5 Anton Vasetenkov
// (c) addressed to University of Washington UW TechTransfer, email: license@u.washington.edu.
22 5 Anton Vasetenkov
23 5 Anton Vasetenkov
/// @file    protocols/wum2/EndPoint.cc
24 5 Anton Vasetenkov
/// @brief   Non MPI version of EndPoint
25 5 Anton Vasetenkov
/// @details This class is required because SingleNode role needs to use an EndPoint that is not MPI dependent (ie just a wrapper for 2 queues)
26 5 Anton Vasetenkov
/// @author  Ken Jung
27 5 Anton Vasetenkov
28 5 Anton Vasetenkov
//anton added this
29 5 Anton Vasetenkov
#include <boost/cstdint.hpp>
30 5 Anton Vasetenkov
31 5 Anton Vasetenkov
#include <protocols/wum2/EndPoint.hh>
32 5 Anton Vasetenkov
#include <protocols/wum2/WorkUnit.hh>
33 5 Anton Vasetenkov
34 5 Anton Vasetenkov
namespace protocols {
35 5 Anton Vasetenkov
namespace wum2 {
36 5 Anton Vasetenkov
37 3 Andrey Golovin
//anton commented this
38 3 Andrey Golovin
//EndPoint::EndPoint( boost::function < uint64_t () > role_available_mem  ) : role_available_mem_( role_available_mem) {}
39 3 Andrey Golovin
40 3 Andrey Golovin
//anton added this
41 1 Andrey Golovin
EndPoint::EndPoint( boost::function < boost::uint64_t () > role_available_mem ) : role_available_mem_( role_available_mem) {}
42 5 Anton Vasetenkov
43 5 Anton Vasetenkov
} // wum2
44 5 Anton Vasetenkov
} // protocols
45 5 Anton Vasetenkov
46 15 Anton Vasetenkov
</pre>
47 3 Andrey Golovin
48 1 Andrey Golovin
49 6 Andrey Golovin
50 6 Andrey Golovin
h3. Fragments
51 6 Andrey Golovin
52 1 Andrey Golovin
Генерация
53 1 Andrey Golovin
54 1 Andrey Golovin
<pre>
55 1 Andrey Golovin
/home/domain/anur/progs/rosseta/main/source/bin/fragment_picker.default.linuxgccrelease -in:file:fasta 1.fasta -in:file:vall /home/domain/anur/progs/rosseta/tools/fragment_tools/vall.apr24.2008.extended.gz -out::file::frag_prefix pep-1 -frags::frag_sizes 9 5 3
56 1 Andrey Golovin
</pre>
57 1 Andrey Golovin
58 1 Andrey Golovin
Если последовательность вашего белка идёт не первой цепью, то надо сдвинуть остатки в файле фрагментов:
59 1 Andrey Golovin
<pre>
60 1 Andrey Golovin
cp ~/progs/rosseta/demos/protocol_capture/2010/FlexPepDock_AbInitio/scripts/frags/shift.sh .
61 1 Andrey Golovin
./shift.sh  pep-1.200.3mers 276 > pep-1.200.shift.3mers
62 1 Andrey Golovin
</pre>
63 6 Andrey Golovin
64 6 Andrey Golovin
h3. Запуск MPI версии на Lomonosv 
65 7 Andrey Golovin
66 7 Andrey Golovin
Тут используется 48 ядер и module openmpi
67 7 Andrey Golovin
<pre>
68 7 Andrey Golovin
sbatch -n 48 -o log.abinitio.n48 -t 3000  ompi /home/users/golovin/progs/rosetta_2013wk40_bundle/main/source/bin/FlexPepDocking.mpi.linuxgccrelease @flags.abinitiore
69 7 Andrey Golovin
</pre>
70 8 Anton Vasetenkov
71 8 Anton Vasetenkov
h3. Опции запуска
72 8 Anton Vasetenkov
73 8 Anton Vasetenkov
https://www.rosettacommons.org/docs/latest/full-options-list.html
74 16 Anton Vasetenkov
75 16 Anton Vasetenkov
76 16 Anton Vasetenkov
77 16 Anton Vasetenkov
78 16 Anton Vasetenkov
h3. Создание программы на C++ с использованием функций Rosetta
79 16 Anton Vasetenkov
80 16 Anton Vasetenkov
# Скачать rosetta-3.5.
81 16 Anton Vasetenkov
# Попробовать скомпилировать:
82 16 Anton Vasetenkov
Из папки rosetta-3.5/rosetta_source:
83 16 Anton Vasetenkov
<pre>
84 16 Anton Vasetenkov
./scons.py -j8 bin
85 16 Anton Vasetenkov
</pre>
86 16 Anton Vasetenkov
Вариант release:
87 16 Anton Vasetenkov
<pre>
88 16 Anton Vasetenkov
./scons.py -j8 bin mode=release
89 16 Anton Vasetenkov
</pre>
90 16 Anton Vasetenkov
Вариант с MPI:
91 16 Anton Vasetenkov
<pre>
92 16 Anton Vasetenkov
./scons.py -j8 bin extras=mpi
93 16 Anton Vasetenkov
</pre>
94 23 Anton Vasetenkov
# Пишем программу с названием <название программы>, автор <автор>:
95 23 Anton Vasetenkov
Создать файл rosetta-3.5/rosetta_source/src/apps/pilot/<автор>/<название программы>.cc:
96 16 Anton Vasetenkov
<pre>
97 16 Anton Vasetenkov
// -*- mode:c++;tab-width:2;indent-tabs-mode:t;show-trailing-whitespace:t;rm-trailing-spaces:t -*-
98 16 Anton Vasetenkov
// vi: set ts=2 noet:
99 16 Anton Vasetenkov
//
100 16 Anton Vasetenkov
101 16 Anton Vasetenkov
#include <iostream>
102 16 Anton Vasetenkov
#include <devel/init.hh>
103 16 Anton Vasetenkov
#include <basic/Tracer.hh>
104 16 Anton Vasetenkov
105 16 Anton Vasetenkov
106 16 Anton Vasetenkov
107 16 Anton Vasetenkov
int main(int argc, char *argv []) {
108 16 Anton Vasetenkov
    devel::init( argc, argv );
109 16 Anton Vasetenkov
    std::cout << "Hello World!" << std::endl;
110 1 Andrey Golovin
    return 0;	
111 17 Anton Vasetenkov
}
112 17 Anton Vasetenkov
</pre>
113 18 Anton Vasetenkov
В файле rosetta-3.5/rosetta-source/src/pilot_apps.src.settings.all вместо
114 18 Anton Vasetenkov
<pre>
115 18 Anton Vasetenkov
sources = {
116 18 Anton Vasetenkov
}
117 18 Anton Vasetenkov
</pre>
118 18 Anton Vasetenkov
вписать:
119 17 Anton Vasetenkov
<pre>
120 17 Anton Vasetenkov
sources = {
121 17 Anton Vasetenkov
    "pilot/<автор>" : [
122 23 Anton Vasetenkov
        "<название программы>",
123 17 Anton Vasetenkov
        ],
124 16 Anton Vasetenkov
}
125 16 Anton Vasetenkov
</pre>
126 19 Anton Vasetenkov
# Компилируем
127 19 Anton Vasetenkov
Из папки rosetta-3.5/rosetta_source
128 19 Anton Vasetenkov
<pre>
129 23 Anton Vasetenkov
./scons.py <название программы> -j8
130 19 Anton Vasetenkov
</pre>
131 21 Anton Vasetenkov
132 21 Anton Vasetenkov
133 21 Anton Vasetenkov
134 21 Anton Vasetenkov
135 21 Anton Vasetenkov
136 21 Anton Vasetenkov
h3. Некоторые муверы
137 21 Anton Vasetenkov
138 21 Anton Vasetenkov
139 22 Anton Vasetenkov
h4. MonteCarlo
140 22 Anton Vasetenkov
141 1 Andrey Golovin
Конструируем:
142 1 Andrey Golovin
<pre>
143 1 Andrey Golovin
protocols::moves::MonteCarloOP mc = new protocols::moves::MonteCarlo(<поза>, <скоринг-функция>, 1.0);
144 1 Andrey Golovin
</pre>
145 22 Anton Vasetenkov
146 23 Anton Vasetenkov
147 26 Anton Vasetenkov
При конструировании в новом Монте-Карло-объекте сохраняются в качестве "текущей" и в качестве "поза с наименьшим скором из скоров всех встретившихся поз" КОПИИ <позы>.
148 23 Anton Vasetenkov
149 23 Anton Vasetenkov
Теперь при вызове
150 23 Anton Vasetenkov
<pre>
151 23 Anton Vasetenkov
mc->boltzmann(<поза>);
152 1 Andrey Golovin
</pre>
153 26 Anton Vasetenkov
если <поза> принимается, в "текущую" позу в объекте записывается КОПИЯ <позы> (и если нужно обновляется "поза с наименьшим скором из скоров всех встретившихся поз"), если не принимается --- ничего не происходит.
154 24 Anton Vasetenkov
155 24 Anton Vasetenkov
Чтобы записать в <позу> "позу с наименьшим скором":
156 24 Anton Vasetenkov
<pre>
157 24 Anton Vasetenkov
mc->recover_low(<поза>);
158 24 Anton Vasetenkov
</pre>
159 24 Anton Vasetenkov
160 24 Anton Vasetenkov
Итог:
161 24 Anton Vasetenkov
<pre>
162 24 Anton Vasetenkov
protocols::moves::MonteCarloOP mc = new protocols::moves::MonteCarlo(pose, sfxn, 1.0);
163 24 Anton Vasetenkov
for (...) {
164 24 Anton Vasetenkov
    Применяем муверы к pose;
165 24 Anton Vasetenkov
    mc->boltzmann(pose);
166 24 Anton Vasetenkov
}
167 24 Anton Vasetenkov
mc->recover_low(pose);
168 24 Anton Vasetenkov
</pre>