Rosetta
Version 23 (Anton Vasetenkov, 27.02.2015 19:42) → Version 24/28 (Anton Vasetenkov, 27.02.2015 19:53)
h1. Rosetta-Tips
{{toc}}
h3. Installation
При компиляции в Ubuntu 14.10 c OpenMpi возникает ошибка:
<pre>
src/protocols/wum2/EndPoint.cc:21:42: error: a function call cannot appear in a constant-expression
src/protocols/wum2/EndPoint.cc:21:44: error: template argument 1 is invalid
</pre>
Антон Васетенков предлагает:
<pre>
// -*- mode:c++;tab-width:2;indent-tabs-mode:t;show-trailing-whitespace:t;rm-trailing-spaces:t -*-
// vi: set ts=2 noet:
//
// (c) Copyright Rosetta Commons Member Institutions.
// (c) This file is part of the Rosetta software suite and is made available under license.
// (c) The Rosetta software is developed by the contributing members of the Rosetta Commons.
// (c) For more information, see http://www.rosettacommons.org. Questions about this can be
// (c) addressed to University of Washington UW TechTransfer, email: license@u.washington.edu.
/// @file protocols/wum2/EndPoint.cc
/// @brief Non MPI version of EndPoint
/// @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)
/// @author Ken Jung
//anton added this
#include <boost/cstdint.hpp>
#include <protocols/wum2/EndPoint.hh>
#include <protocols/wum2/WorkUnit.hh>
namespace protocols {
namespace wum2 {
//anton commented this
//EndPoint::EndPoint( boost::function < uint64_t () > role_available_mem ) : role_available_mem_( role_available_mem) {}
//anton added this
EndPoint::EndPoint( boost::function < boost::uint64_t () > role_available_mem ) : role_available_mem_( role_available_mem) {}
} // wum2
} // protocols
</pre>
h3. Fragments
Генерация
<pre>
/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
</pre>
Если последовательность вашего белка идёт не первой цепью, то надо сдвинуть остатки в файле фрагментов:
<pre>
cp ~/progs/rosseta/demos/protocol_capture/2010/FlexPepDock_AbInitio/scripts/frags/shift.sh .
./shift.sh pep-1.200.3mers 276 > pep-1.200.shift.3mers
</pre>
h3. Запуск MPI версии на Lomonosv
Тут используется 48 ядер и module openmpi
<pre>
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
</pre>
h3. Опции запуска
https://www.rosettacommons.org/docs/latest/full-options-list.html
h3. Создание программы на C++ с использованием функций Rosetta
# Скачать rosetta-3.5.
# Попробовать скомпилировать:
Из папки rosetta-3.5/rosetta_source:
<pre>
./scons.py -j8 bin
</pre>
Вариант release:
<pre>
./scons.py -j8 bin mode=release
</pre>
Вариант с MPI:
<pre>
./scons.py -j8 bin extras=mpi
</pre>
# Пишем программу с названием <название программы>, автор <автор>:
Создать файл rosetta-3.5/rosetta_source/src/apps/pilot/<автор>/<название программы>.cc:
<pre>
// -*- mode:c++;tab-width:2;indent-tabs-mode:t;show-trailing-whitespace:t;rm-trailing-spaces:t -*-
// vi: set ts=2 noet:
//
#include <iostream>
#include <devel/init.hh>
#include <basic/Tracer.hh>
int main(int argc, char *argv []) {
devel::init( argc, argv );
std::cout << "Hello World!" << std::endl;
return 0;
}
</pre>
В файле rosetta-3.5/rosetta-source/src/pilot_apps.src.settings.all вместо
<pre>
sources = {
}
</pre>
вписать:
<pre>
sources = {
"pilot/<автор>" : [
"<название программы>",
],
}
</pre>
# Компилируем
Из папки rosetta-3.5/rosetta_source
<pre>
./scons.py <название программы> -j8
</pre>
h3. Некоторые муверы
h4. MonteCarlo
Конструируем:
<pre>
protocols::moves::MonteCarloOP mc = new protocols::moves::MonteCarlo(<поза>, <скоринг-функция>, 1.0);
</pre>
При конструировании в новом Монте-Карло-объекте сохраняется в качестве "текущей" и в качестве "позы с наименьшим скором" КОПИИ КОПИЯ <позы>.
Теперь при вызове
<pre>
mc->boltzmann(<поза>);
</pre>
если <поза> принимается, в "текущую" позу в объекте записывается объект перезаписывается КОПИЯ <позы> (и <позы>, если нужно обновляется "поза с наименьшим скором"), если не принимается --- ничего не происходит.
Чтобы записать в <позу> "позу с наименьшим скором":
<pre>
mc->recover_low(<поза>);
</pre>
Итог:
<pre>
protocols::moves::MonteCarloOP mc = new protocols::moves::MonteCarlo(pose, sfxn, 1.0);
for (...) {
Применяем муверы к pose;
mc->boltzmann(pose);
}
mc->recover_low(pose);
</pre>
{{toc}}
h3. Installation
При компиляции в Ubuntu 14.10 c OpenMpi возникает ошибка:
<pre>
src/protocols/wum2/EndPoint.cc:21:42: error: a function call cannot appear in a constant-expression
src/protocols/wum2/EndPoint.cc:21:44: error: template argument 1 is invalid
</pre>
Антон Васетенков предлагает:
<pre>
// -*- mode:c++;tab-width:2;indent-tabs-mode:t;show-trailing-whitespace:t;rm-trailing-spaces:t -*-
// vi: set ts=2 noet:
//
// (c) Copyright Rosetta Commons Member Institutions.
// (c) This file is part of the Rosetta software suite and is made available under license.
// (c) The Rosetta software is developed by the contributing members of the Rosetta Commons.
// (c) For more information, see http://www.rosettacommons.org. Questions about this can be
// (c) addressed to University of Washington UW TechTransfer, email: license@u.washington.edu.
/// @file protocols/wum2/EndPoint.cc
/// @brief Non MPI version of EndPoint
/// @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)
/// @author Ken Jung
//anton added this
#include <boost/cstdint.hpp>
#include <protocols/wum2/EndPoint.hh>
#include <protocols/wum2/WorkUnit.hh>
namespace protocols {
namespace wum2 {
//anton commented this
//EndPoint::EndPoint( boost::function < uint64_t () > role_available_mem ) : role_available_mem_( role_available_mem) {}
//anton added this
EndPoint::EndPoint( boost::function < boost::uint64_t () > role_available_mem ) : role_available_mem_( role_available_mem) {}
} // wum2
} // protocols
</pre>
h3. Fragments
Генерация
<pre>
/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
</pre>
Если последовательность вашего белка идёт не первой цепью, то надо сдвинуть остатки в файле фрагментов:
<pre>
cp ~/progs/rosseta/demos/protocol_capture/2010/FlexPepDock_AbInitio/scripts/frags/shift.sh .
./shift.sh pep-1.200.3mers 276 > pep-1.200.shift.3mers
</pre>
h3. Запуск MPI версии на Lomonosv
Тут используется 48 ядер и module openmpi
<pre>
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
</pre>
h3. Опции запуска
https://www.rosettacommons.org/docs/latest/full-options-list.html
h3. Создание программы на C++ с использованием функций Rosetta
# Скачать rosetta-3.5.
# Попробовать скомпилировать:
Из папки rosetta-3.5/rosetta_source:
<pre>
./scons.py -j8 bin
</pre>
Вариант release:
<pre>
./scons.py -j8 bin mode=release
</pre>
Вариант с MPI:
<pre>
./scons.py -j8 bin extras=mpi
</pre>
# Пишем программу с названием <название программы>, автор <автор>:
Создать файл rosetta-3.5/rosetta_source/src/apps/pilot/<автор>/<название программы>.cc:
<pre>
// -*- mode:c++;tab-width:2;indent-tabs-mode:t;show-trailing-whitespace:t;rm-trailing-spaces:t -*-
// vi: set ts=2 noet:
//
#include <iostream>
#include <devel/init.hh>
#include <basic/Tracer.hh>
int main(int argc, char *argv []) {
devel::init( argc, argv );
std::cout << "Hello World!" << std::endl;
return 0;
}
</pre>
В файле rosetta-3.5/rosetta-source/src/pilot_apps.src.settings.all вместо
<pre>
sources = {
}
</pre>
вписать:
<pre>
sources = {
"pilot/<автор>" : [
"<название программы>",
],
}
</pre>
# Компилируем
Из папки rosetta-3.5/rosetta_source
<pre>
./scons.py <название программы> -j8
</pre>
h3. Некоторые муверы
h4. MonteCarlo
Конструируем:
<pre>
protocols::moves::MonteCarloOP mc = new protocols::moves::MonteCarlo(<поза>, <скоринг-функция>, 1.0);
</pre>
При конструировании в новом Монте-Карло-объекте сохраняется в качестве "текущей" и в качестве "позы с наименьшим скором" КОПИИ КОПИЯ <позы>.
Теперь при вызове
<pre>
mc->boltzmann(<поза>);
</pre>
если <поза> принимается, в "текущую" позу в объекте записывается объект перезаписывается КОПИЯ <позы> (и <позы>, если нужно обновляется "поза с наименьшим скором"), если не принимается --- ничего не происходит.
Чтобы записать в <позу> "позу с наименьшим скором":
<pre>
mc->recover_low(<поза>);
</pre>
Итог:
<pre>
protocols::moves::MonteCarloOP mc = new protocols::moves::MonteCarlo(pose, sfxn, 1.0);
for (...) {
Применяем муверы к pose;
mc->boltzmann(pose);
}
mc->recover_low(pose);
</pre>