1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
// $Id: Conformer.cpp 1528 2010-09-26 17:04:37Z glandrum $
//
// Copyright (C) 2004-2008 Rational Discovery LLC
//
// @@ All Rights Reserved @@
// This file is part of the RDKit.
// The contents are covered by the terms of the BSD license
// which is included in the file license.txt, found at the root
// of the RDKit source tree.
//
#define NO_IMPORT_ARRAY
#include <boost/python.hpp>
#include <string>
#include "rdchem.h"
#include <GraphMol/RDKitBase.h>
#include <RDGeneral/types.h>
#include <Geometry/point.h>
#include <GraphMol/Conformer.h>
#include <RDBoost/PySequenceHolder.h>
//#include "seqs.hpp"
namespace python = boost::python;
namespace RDKit{
RDGeom::Point3D GetAtomPos(const Conformer *conf, unsigned int aid) {
RDGeom::Point3D res=conf->getAtomPos(aid);
return res;
}
void SetAtomPos(Conformer *conf, unsigned int aid, python::object loc) {
//const std::vector<double> &loc) {
int dim = python::extract<int>(loc.attr("__len__")());
CHECK_INVARIANT(dim == 3, "");
PySequenceHolder<double> pdata(loc);
RDGeom::Point3D pt(pdata[0], pdata[1], pdata[2]);
conf->setAtomPos(aid, pt);
}
std::string confClassDoc="The class to store 2D or 3D conformation of a molecule\n";
struct conformer_wrapper {
static void wrap() {
python::class_<Conformer, CONFORMER_SPTR>("Conformer",confClassDoc.c_str(),python::init<>())
.def(python::init<unsigned int>("Constructor with the number of atoms specified"))
.def("GetNumAtoms", &Conformer::getNumAtoms,
"Get the number of atoms in the conformer\n")
.def("GetOwningMol", &Conformer::getOwningMol,
"Get the owning molecule\n",
python::return_value_policy<python::reference_existing_object>())
.def("GetId", &Conformer::getId,
"Get the ID of the conformer")
.def("SetId", &Conformer::setId,
"Set the ID of the conformer\n")
.def("GetAtomPosition", GetAtomPos,
"Get the posistion of an atom\n")
.def("SetAtomPosition", SetAtomPos,
"Set the position of the specified atom\n")
.def("SetAtomPosition", &Conformer::setAtomPos,
"Set the position of the specified atom\n")
.def("Set3D", &Conformer::set3D,
"Set the 3D flag of the conformer\n")
.def("Is3D", &Conformer::is3D,
"returns the 3D flag of the conformer\n")
;
};
};
}
void wrap_conformer() {
RDKit::conformer_wrapper::wrap();
}
|