#include <boost/python.hpp>
+#include <boost/iterator.hpp>
+#include <boost/python/return_internal_reference.hpp>
+#include <boost/python/return_by_value.hpp>
+#include <boost/python/return_value_policy.hpp>
+#include <boost/python/register_ptr_to_python.hpp>
using namespace boost::python;
+#include <boost/filesystem/path.hpp>
+namespace fs = boost::filesystem;
+
+#include <boost/shared_ptr.hpp>
+
#include <string>
#include "alg/glsequence.hpp"
void export_sequence()
{
+ void (Sequence::*load_fasta_piii)(const fs::path, int, int, int) = &Sequence::load_fasta;
+ void (Sequence::*add_annotation_ssii)(
+ std::string,
+ std::string,
+ Sequence::size_type,
+ Sequence::size_type
+ ) = &Sequence::add_annotation;
+
class_<Sequence>("Sequence")
.def(init<std::string>())
- //.add_property("seq", &Sequence::get_seq, &Sequence::set_seq)
- .def("size", &Sequence::size)
- .def("__len__", &Sequence::size)
- //.add_property("header", &Sequence::get_header)
+ .def("__getitem__", &Sequence::at, "return base pair at specified location",
+ return_value_policy<return_by_value>())
+ .def("__len__", &Sequence::size, "return the length of the sequence")
+ .def("__repr__", &Sequence::get_sequence, "display as string")
+ .def("__str__", &Sequence::get_sequence, "cast to string")
+ .def("add_annotation", add_annotation_ssii,
+ "create an annotation from name, type, start, stop")
+ //.def("annotations", &Sequence::annotations, "return list of annotations")
+ .def("add_motif", &Sequence::add_motif, "add a motif sequenence")
+ .def("clear", &Sequence::clear, "clear the sequence and its annotations")
+ .def("empty", &Sequence::empty, "Is the sequence empty")
+ .def("load_fasta", load_fasta_piii, "Load fasta")
+ .add_property("header", &Sequence::get_fasta_header, &Sequence::set_fasta_header, "the fasta header")
+ .def("rcseq", &Sequence::rev_comp, return_value_policy<return_by_value>())
+ .def("size", &Sequence::size, "return the length of the sequence")
+ .add_property("species", &Sequence::get_species, &Sequence::set_species)
+ .def("subseq", &Sequence::subseq, "return a subsequence")
;
+
+ register_ptr_to_python< boost::shared_ptr<Sequence> >();
}