Something went wrong on our end
-
Studer Gabriel authoredStuder Gabriel authored
export_molck.cc 5.09 KiB
//------------------------------------------------------------------------------
// This file is part of the OpenStructure project <www.openstructure.org>
//
// Copyright (C) 2008-2020 by the OpenStructure authors
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License as published by the Free
// Software Foundation; either version 3.0 of the License, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful, but WITHOUT
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
// FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
// details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with this library; if not, write to the Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
//------------------------------------------------------------------------------
#include <stdexcept>
#include <boost/python.hpp>
#include <boost/python/raw_function.hpp>
using namespace boost::python;
#include <ost/mol/alg/molck.hh>
using namespace ost::mol::alg;
namespace {
object MolckSettingsInitWrapper(tuple args, dict kwargs){
object self = args[0];
args = tuple(args.slice(1,_));
bool rm_unk_atoms = false;
if(kwargs.contains("rm_unk_atoms")){
rm_unk_atoms = extract<bool>(kwargs["rm_unk_atoms"]);
kwargs["rm_unk_atoms"].del();
}
bool rm_non_std = false;
if(kwargs.contains("rm_non_std")){
rm_non_std = extract<bool>(kwargs["rm_non_std"]);
kwargs["rm_non_std"].del();
}
bool rm_hyd_atoms = true;
if(kwargs.contains("rm_hyd_atoms")){
rm_hyd_atoms = extract<bool>(kwargs["rm_hyd_atoms"]);
kwargs["rm_hyd_atoms"].del();
}
bool rm_oxt_atoms = false;
if(kwargs.contains("rm_oxt_atoms")){
rm_oxt_atoms = extract<bool>(kwargs["rm_oxt_atoms"]);
kwargs["rm_oxt_atoms"].del();
}
bool rm_zero_occ_atoms = false;
if(kwargs.contains("rm_zero_occ_atoms")){
rm_zero_occ_atoms = extract<bool>(kwargs["rm_zero_occ_atoms"]);
kwargs["rm_zero_occ_atoms"].del();
}
bool colored = false;
if(kwargs.contains("colored")){
colored = extract<bool>(kwargs["colored"]);
kwargs["colored"].del();
}
bool map_nonstd_res = true;
if(kwargs.contains("map_nonstd_res")){
map_nonstd_res = extract<bool>(kwargs["map_nonstd_res"]);
kwargs["map_nonstd_res"].del();
}
bool assign_elem = true;
if(kwargs.contains("assign_elem")){
assign_elem = extract<bool>(kwargs["assign_elem"]);
kwargs["assign_elem"].del();
}
if(len(kwargs) > 0){
std::stringstream ss;
ss << "Invalid keywords observed when setting up MolckSettings! ";
ss << "Or did you pass the same keyword twice? ";
ss << "Valid keywords are: rm_unk_atoms, rm_non_std, rm_hyd_atoms, ";
ss << "rm_oxt_atoms, rm_zero_occ_atoms, colored, map_nonstd_res, ";
ss << "assign_elem!";
throw std::invalid_argument(ss.str());
}
return self.attr("__init__")(rm_unk_atoms,
rm_non_std,
rm_hyd_atoms,
rm_oxt_atoms,
rm_zero_occ_atoms,
colored,
map_nonstd_res,
assign_elem);
}}
void export_Molck()
{
class_<MolckSettings>("MolckSettings", no_init)
.def("__init__", raw_function(MolckSettingsInitWrapper))
.def(init<bool , bool, bool, bool, bool, bool, bool, bool>())
.def("ToString", &MolckSettings::ToString)
.def("__repr__", &MolckSettings::ToString)
.def("__str__", &MolckSettings::ToString)
.def_readwrite("rm_unk_atoms", &MolckSettings::rm_unk_atoms)
.def_readwrite("rm_non_std", &MolckSettings::rm_non_std)
.def_readwrite("rm_hyd_atoms", &MolckSettings::rm_hyd_atoms)
.def_readwrite("rm_oxt_atoms", &MolckSettings::rm_oxt_atoms)
.def_readwrite("rm_zero_occ_atoms", &MolckSettings::rm_zero_occ_atoms)
.def_readwrite("colored", &MolckSettings::colored)
.def_readwrite("map_nonstd_res", &MolckSettings::map_nonstd_res)
.def_readwrite("assign_elem", &MolckSettings::assign_elem);
def("MapNonStandardResidues", &MapNonStandardResidues, (arg("ent"),
arg("lib"),
arg("reprocess")=true));
def("RemoveAtoms", &RemoveAtoms, (arg("ent"),
arg("lib"),
arg("rm_unk_atoms")=false,
arg("rm_non_std")=false,
arg("rm_hyd_atoms")=true,
arg("rm_oxt_atoms")=false,
arg("rm_zero_occ_atoms")=false,
arg("colored")=false,
arg("reprocess")=true));
def("CleanUpElementColumn", &CleanUpElementColumn, (arg("ent"), arg("lib")));
def("Molck", &Molck, (arg("ent"), arg("lib"), arg("settings"), arg("prune")=true));
}