Skip to content
Snippets Groups Projects
Select Git revision
  • 2841fd315eae0ce80ec35cafa0ce37d358854ddb
  • master default protected
  • develop protected
  • cmake_boost_refactor
  • ubuntu_ci
  • mmtf
  • non-orthogonal-maps
  • no_boost_filesystem
  • data_viewer
  • 2.11.1
  • 2.11.0
  • 2.10.0
  • 2.9.3
  • 2.9.2
  • 2.9.1
  • 2.9.0
  • 2.8.0
  • 2.7.0
  • 2.6.1
  • 2.6.0
  • 2.6.0-rc4
  • 2.6.0-rc3
  • 2.6.0-rc2
  • 2.6.0-rc
  • 2.5.0
  • 2.5.0-rc2
  • 2.5.0-rc
  • 2.4.0
  • 2.4.0-rc2
29 results

settings.py

Blame
  • export_sidechain_reconstructor.cc 5.40 KiB
    // Copyright (c) 2013-2018, SIB - Swiss Institute of Bioinformatics and 
    //                          Biozentrum - University of Basel
    // 
    // Licensed under the Apache License, Version 2.0 (the "License");
    // you may not use this file except in compliance with the License.
    // You may obtain a copy of the License at
    // 
    //   http://www.apache.org/licenses/LICENSE-2.0
    // 
    // Unless required by applicable law or agreed to in writing, software
    // distributed under the License is distributed on an "AS IS" BASIS,
    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    // See the License for the specific language governing permissions and
    // limitations under the License.
    
    
    #include <boost/python.hpp>
    #include <promod3/core/export_helper.hh>
    #include <promod3/modelling/sidechain_reconstructor.hh>
    
    using namespace promod3;
    using namespace promod3::modelling;
    using namespace boost::python;
    
    namespace {
    
    boost::python::list
    WrapGetLoopStartIndices(const SidechainReconstructionData& sc_rec_data) {
      boost::python::list return_list;
      core::AppendVectorToList(sc_rec_data.loop_start_indices, return_list);
      return return_list;
    }
    
    boost::python::list
    WrapGetLoopLengths(const SidechainReconstructionData& sc_rec_data) {
      boost::python::list return_list;
      core::AppendVectorToList(sc_rec_data.loop_lengths, return_list);
      return return_list;
    }
    
    boost::python::list
    WrapGetRotamerResIndices(const SidechainReconstructionData& sc_rec_data) {
      boost::python::list return_list;
      core::AppendVectorToList(sc_rec_data.rotamer_res_indices, return_list);
      return return_list;
    }
    
    boost::python::list
    WrapGetDisulfidBridges(const SidechainReconstructionData& sc_rec_data) {
      boost::python::list return_list;
      core::AppendVectorToList(sc_rec_data.disulfid_bridges, return_list);
      return return_list;
    }
    
    boost::python::list
    WrapGetIsNTer(const SidechainReconstructionData& sc_rec_data) {
      boost::python::list return_list;
      core::AppendVectorToList(sc_rec_data.is_n_ter, return_list);
      return return_list;
    }
    
    boost::python::list
    WrapGetIsCTer(const SidechainReconstructionData& sc_rec_data) {
      boost::python::list return_list;
      core::AppendVectorToList(sc_rec_data.is_c_ter, return_list);
      return return_list;
    }
    
    SidechainReconstructionDataPtr
    WrapReconstruct(SidechainReconstructor& sc_rec, uint start_resnum,
                    uint num_residues, uint chain_idx) {
      return sc_rec.Reconstruct(start_resnum, num_residues, chain_idx);
    }
    
    SidechainReconstructionDataPtr
    WrapReconstructRN(SidechainReconstructor& sc_rec,
                      const ost::mol::ResNum& start_resnum,
                      uint num_residues, uint chain_idx) {
      uint num = start_resnum.GetNum();
      return sc_rec.Reconstruct(num, num_residues, chain_idx);
    }
    
    SidechainReconstructionDataPtr
    WrapReconstructInputList(SidechainReconstructor& sc_rec,
                             const boost::python::list& start_resnums,
                             const boost::python::list& num_residues,
                             const boost::python::list& chain_indices){
    
      std::vector<uint> v_start_resnums;
      std::vector<uint> v_num_residues;
      std::vector<uint> v_chain_indices;
    
      core::ConvertListToVector(start_resnums, v_start_resnums);
      core::ConvertListToVector(num_residues, v_num_residues);
      core::ConvertListToVector(chain_indices, v_chain_indices);
    
      return sc_rec.Reconstruct(v_start_resnums, v_num_residues, v_chain_indices);
    }
    
    template<typename LibType> void
    WrapAttachEnvironment(SidechainReconstructor& sc_rec, loop::AllAtomEnv& env,
                          bool use_frm, LibType lib_param) {
      sc_rec.AttachEnvironment(env, use_frm, lib_param);
    }
    
    } // anon wrapper ns
    
    void export_SidechainReconstructor() {
    
      class_<SidechainReconstructionData, SidechainReconstructionDataPtr>
        ("SidechainReconstructionData", init<>())
        .def_readonly("env_pos", &SidechainReconstructionData::env_pos)
        .add_property("loop_start_indices", &WrapGetLoopStartIndices)
        .add_property("loop_lengths", &WrapGetLoopLengths)
        .add_property("rotamer_res_indices", &WrapGetRotamerResIndices)
        .add_property("disulfid_bridges", &WrapGetDisulfidBridges)
        .add_property("is_n_ter", &WrapGetIsNTer)
        .add_property("is_c_ter", &WrapGetIsCTer)
      ;
    
      class_<SidechainReconstructor, SidechainReconstructorPtr>
        ("SidechainReconstructor", no_init)
        .def(init<bool, bool, bool, Real, Real, uint64_t, Real, Real>(
             (arg("keep_sidechains")=true, 
              arg("build_disulfids")=true,
              arg("optimize_subrotamers")=false,
              arg("remodel_cutoff")=20, 
              arg("rigid_frame_cutoff")=0,
              arg("graph_max_complexity")=100000000,
              arg("graph_intial_epsilon")=0.02,
              arg("disulfid_score_thresh")=45)))
        .def("Reconstruct", WrapReconstruct,
             (arg("start_resnum"), arg("num_residues"), arg("chain_idx")=0))
        .def("Reconstruct", WrapReconstructRN,
             (arg("start_resnum"), arg("num_residues"), arg("chain_idx")=0))
        .def("Reconstruct", WrapReconstructInputList,
             (arg("start_resnum_list"), arg("num_residues_list"), arg("chain_idx_list")))
        .def("AttachEnvironment", WrapAttachEnvironment<bool>,
             (arg("env"), arg("use_frm")=true, arg("use_bbdep_lib")=true))
        .def("AttachEnvironment", WrapAttachEnvironment<sidechain::BBDepRotamerLibPtr>,
             (arg("env"), arg("use_frm"), arg("rotamer_library")))
        .def("AttachEnvironment", WrapAttachEnvironment<sidechain::RotamerLibPtr>,
             (arg("env"), arg("use_frm"), arg("rotamer_library")))
      ;
    }