attach annotations property to seq_span
authorDiane Trout <diane@caltech.edu>
Thu, 6 Sep 2007 23:29:13 +0000 (23:29 +0000)
committerDiane Trout <diane@caltech.edu>
Thu, 6 Sep 2007 23:29:13 +0000 (23:29 +0000)
py/annotations.cpp
py/seq_span.cpp
py/test/TestAnnotations.py
py/test/TestSeqSpan.py

index 453406dce8105d27e0e1daf55d0160574468fd1a..14180899c6e8ad1a2d6f29534843c425db021f2a 100644 (file)
@@ -33,7 +33,7 @@ void export_annotations()
 {
   to_python_converter<pair_string, pair_string_to_tuple>();
 
-  class_<Annotations>("annotations", init<std::string>())
+  class_<Annotations>("Annotations", init<std::string>())
     .add_property("name", &Annotations::name, &Annotations::setName)
     .def("__contains__", &map_item<Annotations>::in)
     .def("__delitem__", &map_item<Annotations>::del)
@@ -45,8 +45,7 @@ void export_annotations()
     .def("keys", &map_item<Annotations>::keys)
     .def("values", &map_item<Annotations>::values)
     .def("items", &map_item<Annotations>::items)
+  ;
 
-    ;
-
-  //register_ptr_to_python< AnnotationsRef >();
+  register_ptr_to_python< AnnotationsRef >();
 }
index d3e0b5b9bcb1563ebb162f08912e910447dfaabd..74e6244b874ca5035355c6359ffef054cd996489 100644 (file)
@@ -52,6 +52,8 @@ void export_seq_span()
     //.add_property("alphabet", 
     //              make_getter(&SeqSpan::get_alphabet,
     //                          return_value_policy<copy_const_reference>()))
+    .add_property("annotations", &SeqSpan::annotations, 
+                                 &SeqSpan::setAnnotations)
     .add_property("start", &SeqSpan::start, &SeqSpan::setStart,
                   "start position relative to root sequence")
     .add_property("stop", &SeqSpan::stop, &SeqSpan::setStop,
index 6c432bd98a4a5e1aad25c6fa691abc8d45b0585c..ec254ec94882ea1d7fdb98933b8114273e97b998 100644 (file)
@@ -10,7 +10,7 @@ import mussa
 class TestAnnotations(unittest.TestCase):
   def testSimple(self):
     name_value = 'name_value'
-    a = mussa.annotations(name_value)
+    a = mussa.Annotations(name_value)
     self.failUnlessEqual( a['name'], name_value)
     self.failUnlessEqual( len(a), 1)
     self.failUnlessEqual( a.keys(), ['name'])
@@ -18,7 +18,7 @@ class TestAnnotations(unittest.TestCase):
 
   def testIter(self):
     name_value = 'name_value'
-    a = mussa.annotations(name_value)
+    a = mussa.Annotations(name_value)
     l = [ x for x in a ]
     self.failUnlessEqual(len(l), 1)
     self.failUnlessEqual(l[0], ('name', 'name_value'))
index de1082402fe655f8624337ce4ae16926f6b67fe4..3a56d9264d57d84c942d5186f4ebcbea758f5854 100644 (file)
@@ -42,6 +42,18 @@ class TestSeqSpan(unittest.TestCase):
   #  self.failUnless(sparent is s1.parent())
   #  self.failUnlessEqual(sparent == s1.parent())
 
+  def testAnnotations(self):
+    seq_text = "AAAAAG"
+    name = "As"
+    s = mussa.SeqSpan(seq_text)
+    s.annotations = mussa.Annotations(name)
+    self.failUnlessEqual(s.annotations.name, name)
+    self.failUnlessEqual(s.annotations['name'], name)
+
+    term_key = 'GO term'
+    term = "term"
+    s.annotations[term_key] = term
+    self.failUnlessEqual(s.annotations[term_key], term)
 
 def suite():
   return unittest.makeSuite(TestSeqSpan, 'test')