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

  1. Скачать rosetta-3.5.
  2. Попробовать скомпилировать:
    Из папки rosetta-3.5/rosetta_source:
    ./scons.py -j8 bin
    

    Вариант release:
    ./scons.py -j8 bin mode=release
    

    Вариант с MPI:
    ./scons.py -j8 bin extras=mpi
    
  3. Пишем программу с названием <название программы>, автор <автор>:
    Создать файл 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/<автор>" : [
            "<название программы>",
            ],
    }
    
  4. Компилируем
    Из папки rosetta-3.5/rosetta_source
    ./scons.py <название программы> -j8
    
  5. Запуск
    rosetta-3.5/rosetta_source/bin/<название программы>.<default или mpi>.linuxgcc<debug или release>
    

Некоторые муверы

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);