« Previous -
Version 25/28
(diff) -
Next » -
Current version
Anton Vasetenkov, 27.02.2015 19:53
Rosetta-Tips¶
Installation¶
При компиляции в Ubuntu 14.10 c OpenMpi возникает ошибка:
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
Антон Васетенков предлагает:
// -*- 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
Fragments¶
Генерация
/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
Если последовательность вашего белка идёт не первой цепью, то надо сдвинуть остатки в файле фрагментов:
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
Запуск MPI версии на Lomonosv¶
Тут используется 48 ядер и module openmpi
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
Опции запуска¶
https://www.rosettacommons.org/docs/latest/full-options-list.html
Создание программы на C++ с использованием функций Rosetta¶
- Скачать rosetta-3.5.
- Попробовать скомпилировать:
Из папки rosetta-3.5/rosetta_source:./scons.py -j8 bin
Вариант release:./scons.py -j8 bin mode=release
Вариант с MPI:./scons.py -j8 bin extras=mpi
- Пишем программу с названием <название программы>, автор <автор>:
Создать файл rosetta-3.5/rosetta_source/src/apps/pilot/<автор>/<название программы>.cc:// -*- 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; }
В файле rosetta-3.5/rosetta-source/src/pilot_apps.src.settings.all вместоsources = { }
вписать:sources = { "pilot/<автор>" : [ "<название программы>", ], }
- Компилируем
Из папки rosetta-3.5/rosetta_source./scons.py <название программы> -j8
Некоторые муверы¶
MonteCarlo¶
Конструируем:
protocols::moves::MonteCarloOP mc = new protocols::moves::MonteCarlo(<поза>, <скоринг-функция>, 1.0);
При конструировании в новом Монте-Карло-объекте сохраняются в качестве "текущей" и в качестве "позы с наименьшим скором" КОПИИ <позы>.
Теперь при вызове
mc->boltzmann(<поза>);
если <поза> принимается, в "текущую" позу в объекте записывается КОПИЯ <позы> (и если нужно обновляется "поза с наименьшим скором"), если не принимается --- ничего не происходит.
Чтобы записать в <позу> "позу с наименьшим скором":
mc->recover_low(<поза>);
Итог:
protocols::moves::MonteCarloOP mc = new protocols::moves::MonteCarlo(pose, sfxn, 1.0); for (...) { Применяем муверы к pose; mc->boltzmann(pose); } mc->recover_low(pose);