Something went wrong on our end
-
Studer Gabriel authoredStuder Gabriel authored
molck.hh 3.87 KiB
//------------------------------------------------------------------------------
// This file is part of the OpenStructure project <www.openstructure.org>
//
// Copyright (C) 2008-2011 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
//------------------------------------------------------------------------------
#ifndef OST_MOL_ALG_MOLCK_HH
#define OST_MOL_ALG_MOLCK_HH
#include <string>
#include <ost/mol/entity_handle.hh>
#include <ost/conop/compound_lib.hh>
namespace {
inline std::string BoolToString(bool b)
{
return b ? "True" : "False";
}
}
namespace ost { namespace mol{ namespace alg {
struct MolckSettings;
struct MolckSettings{
bool rm_unk_atoms;
bool rm_non_std;
bool rm_hyd_atoms;
bool rm_oxt_atoms;
bool rm_zero_occ_atoms;
bool colored;
bool map_nonstd_res;
bool assign_elem;
MolckSettings(bool init_rm_unk_atoms=false,
bool init_rm_non_std=false,
bool init_rm_hyd_atoms=true,
bool init_rm_oxt_atoms=false,
bool init_rm_zero_occ_atoms=false,
bool init_colored=false,
bool init_map_nonstd_res=true,
bool init_assign_elem=true):
rm_unk_atoms(init_rm_unk_atoms), // Remove unknown and atoms not following the nomenclature
rm_non_std(init_rm_non_std), // Remove all residues not one of the 20 standard amino acids
rm_hyd_atoms(init_rm_hyd_atoms), // Remove hydrogen atoms
rm_oxt_atoms(init_rm_oxt_atoms), // Remove terminal oxygens
rm_zero_occ_atoms(init_rm_zero_occ_atoms), // Remove atoms with zero occupancy
colored(init_colored), // Whether the output should be colored
map_nonstd_res(init_map_nonstd_res), // Map non standard residues back to standard ones (e.g.: MSE->MET,SEP->SER,etc.)
assign_elem(init_assign_elem){} // Clean up element column
public:
std::string ToString(){
std::string rep = "MolckSettings(rm_unk_atoms=" + BoolToString(rm_unk_atoms) +
", rm_unk_atoms=" + BoolToString(rm_unk_atoms) +
", rm_non_std=" + BoolToString(rm_non_std) +
", rm_hyd_atoms=" + BoolToString(rm_hyd_atoms) +
", rm_oxt_atoms=" + BoolToString(rm_oxt_atoms) +
", rm_zero_occ_atoms=" + BoolToString(rm_zero_occ_atoms) +
", colored=" + BoolToString(colored) +
", map_nonstd_res=" + BoolToString(map_nonstd_res) +
", assign_elem=" + BoolToString(assign_elem) +
")";
return rep;
}
};
void MapNonStandardResidues(ost::mol::EntityHandle& ent,
ost::conop::CompoundLibPtr lib,
bool log_diags = true);
void RemoveAtoms(ost::mol::EntityHandle& ent,
ost::conop::CompoundLibPtr lib,
bool rm_unk_atoms,
bool rm_non_std,
bool rm_hyd_atoms,
bool rm_oxt_atoms,
bool rm_zero_occ_atoms,
bool colored=true);
void CleanUpElementColumn(ost::mol::EntityHandle& ent,
ost::conop::CompoundLibPtr lib);
void Molck(ost::mol::EntityHandle& ent,
ost::conop::CompoundLibPtr lib,
const MolckSettings& settings);
}}} // namespace
#endif