def test_writeToFile(self):
     """FlowgramCollection.writeToFile should write in correct format"""
     a = [
         Flowgram('0.5 1.0 4.0 0.0 1.5 0.0 0.0 2.0',
                  Name='a',
                  header_info={
                      'Bases': 'TACCCCTTGG',
                      'Name Length': '14'
                  }),
         Flowgram('1.5 1.0 0.0 0.0 2.5 1.0 2.0 1.0',
                  Name='b',
                  header_info={
                      'Bases': 'TTATTTACCG',
                      'Name Length': '14'
                  })
     ]
     f = FlowgramCollection(a, header_info={'Flow Chars': 'TACG'})
     fn = mktemp(suffix='.sff')
     f.writeToFile(fn)
     result = open(fn, 'U').read()
     self.assertEqual(
         result,
         """Common Header:\n  Flow Chars:\tTACG\n\n>a\n  Name Length:\t14\nBases:\tTACCCCTTGG\nFlowgram:\t0.5\t1.0\t4.0\t0.0\t1.5\t0.0\t0.0\t2.0\n\n>b\n  Name Length:\t14\nBases:\tTTATTTACCG\nFlowgram:\t1.5\t1.0\t0.0\t0.0\t2.5\t1.0\t2.0\t1.0\n"""
     )
     remove(fn)
 def test_getFlow(self):
     """FlowgramCollection.getFlow should return specified flow"""
     a = [('a','0.5 1.0 4.0 0.0 1.5 0.0 0.0 2.0'),
          ('b','1.5 1.0 0.0 0.0 2.5 1.0 2.0 1.0'),
          ('c','2.5 0.0 4.0 0.0 0.5 1.0 0.0 1.0')]
     f = FlowgramCollection(a)
     self.assertEqual(f.getFlow('a'), '0.5 1.0 4.0 0.0 1.5 0.0 0.0 2.0')
     self.assertRaises(KeyError, f.getFlow, 'd')
Example #3
0
 def test_getFlow(self):
     """FlowgramCollection.getFlow should return specified flow"""
     a = [('a','0.5 1.0 4.0 0.0 1.5 0.0 0.0 2.0'),
          ('b','1.5 1.0 0.0 0.0 2.5 1.0 2.0 1.0'),
          ('c','2.5 0.0 4.0 0.0 0.5 1.0 0.0 1.0')]
     f = FlowgramCollection(a)
     self.assertEqual(f.getFlow('a'), '0.5 1.0 4.0 0.0 1.5 0.0 0.0 2.0')
     self.assertRaises(KeyError, f.getFlow, 'd')
    def test_createCommonHeader(self):
        """create_commor_header should return lines for sff common header"""
        a = [Flowgram('0.5 1.0 4.0 0.0 1.5 0.0 0.0 2.0', Name='a',
                      header_info = {'Bases':'TACCCCTTGG','Name Length':'14'}),
             Flowgram('1.5 1.0 0.0 0.0 2.5 1.0 2.0 1.0', Name = 'b',
              header_info = {'Bases':'TTATTTACCG','Name Length':'14'})]
        f = FlowgramCollection(a, header_info = {'Flow Chars':'TACG'})

        self.assertEqual('\n'.join(f.createCommonHeader()),
                         """Common Header:\n  Flow Chars:\tTACG""")
Example #5
0
    def test_createCommonHeader(self):
        """create_commor_header should return lines for sff common header"""
        a = [Flowgram('0.5 1.0 4.0 0.0 1.5 0.0 0.0 2.0', Name='a',
                      header_info = {'Bases':'TACCCCTTGG','Name Length':'14'}),
             Flowgram('1.5 1.0 0.0 0.0 2.5 1.0 2.0 1.0', Name = 'b',
              header_info = {'Bases':'TTATTTACCG','Name Length':'14'})]
        f = FlowgramCollection(a, header_info = {'Flow Chars':'TACG'})

        self.assertEqual('\n'.join(f.createCommonHeader()),
                         """Common Header:\n  Flow Chars:\tTACG""")
 def test_getFlow(self):
     """FlowgramCollection.getFlow should return specified flow"""
     a = [
         ("a", "0.5 1.0 4.0 0.0 1.5 0.0 0.0 2.0"),
         ("b", "1.5 1.0 0.0 0.0 2.5 1.0 2.0 1.0"),
         ("c", "2.5 0.0 4.0 0.0 0.5 1.0 0.0 1.0"),
     ]
     f = FlowgramCollection(a)
     self.assertEqual(f.getFlow("a"), "0.5 1.0 4.0 0.0 1.5 0.0 0.0 2.0")
     self.assertRaises(KeyError, f.getFlow, "d")
 def test_writeToFile(self):
     """FlowgramCollection.writeToFile should write in correct format"""
     a = [Flowgram('0.5 1.0 4.0 0.0 1.5 0.0 0.0 2.0', Name='a',
                   header_info = {'Bases':'TACCCCTTGG','Name Length':'14'}),
          Flowgram('1.5 1.0 0.0 0.0 2.5 1.0 2.0 1.0', Name = 'b',
           header_info = {'Bases':'TTATTTACCG','Name Length':'14'})]
     f = FlowgramCollection(a, header_info = {'Flow Chars':'TACG'})
     fn = mktemp(suffix='.sff')
     f.writeToFile(fn)
     result = open(fn, 'U').read()
     self.assertEqual(result, """Common Header:\n  Flow Chars:\tTACG\n\n>a\n  Name Length:\t14\nBases:\tTACCCCTTGG\nFlowgram:\t0.5\t1.0\t4.0\t0.0\t1.5\t0.0\t0.0\t2.0\n\n>b\n  Name Length:\t14\nBases:\tTTATTTACCG\nFlowgram:\t1.5\t1.0\t0.0\t0.0\t2.5\t1.0\t2.0\t1.0\n""")
     remove(fn)
Example #8
0
   def test_average_flowgrams(self):
       """_average_flowgrams computes an averaged flowgram for each cluster."""

       fc = FlowgramCollection({'a':'1.0 0.0 0.0 1.0 1.0 1.2 1.2 0.8',
                                'b':'1.2 1.0 0.0 0.8 1.2 2.4 1.0 0.0'})

       #return the centroid unmodified if sample_mapping = 1 
       actual = list(_average_flowgrams({'a':'b'}, fc, {'a':['a']}))
       self.assertEqual(actual , [(fc.getFlow('a'), 'a')])
       
       actual = list(_average_flowgrams({'a':'b'}, fc, {'a':['a','b']}))
       self.assertEqual(actual , [(Flowgram(['1.1 0.5 0.0 0.9 1.1 1.8 1.1 0.4']), 'a')])
    def test_createCommonHeader(self):
        """create_commor_header should return lines for sff common header"""
        a = [
            Flowgram(
                "0.5 1.0 4.0 0.0 1.5 0.0 0.0 2.0", Name="a", header_info={"Bases": "TACCCCTTGG", "Name Length": "14"}
            ),
            Flowgram(
                "1.5 1.0 0.0 0.0 2.5 1.0 2.0 1.0", Name="b", header_info={"Bases": "TTATTTACCG", "Name Length": "14"}
            ),
        ]
        f = FlowgramCollection(a, header_info={"Flow Chars": "TACG"})

        self.assertEqual("\n".join(f.createCommonHeader()), """Common Header:\n  Flow Chars:\tTACG""")
Example #10
0
    def test_average_flowgrams(self):
        """_average_flowgrams computes an averaged flowgram for each cluster."""

        fc = FlowgramCollection({
            'a': '1.0 0.0 0.0 1.0 1.0 1.2 1.2 0.8',
            'b': '1.2 1.0 0.0 0.8 1.2 2.4 1.0 0.0'
        })

        #return the centroid unmodified if sample_mapping = 1
        actual = list(_average_flowgrams({'a': 'b'}, fc, {'a': ['a']}))
        self.assertEqual(actual, [(fc.getFlow('a'), 'a')])

        actual = list(_average_flowgrams({'a': 'b'}, fc, {'a': ['a', 'b']}))
        self.assertEqual(
            actual, [(Flowgram(['1.1 0.5 0.0 0.9 1.1 1.8 1.1 0.4']), 'a')])
Example #11
0
 def test_len(self):
     """len(FlowgramCollection) returns length of longest sequence"""
     a = [('a','0.5 1.0 4.0 0.0 1.5 0.0 0.0 2.0'),
          ('b','1.5 1.0 0.0 0.0 2.5 1.0 2.0 1.0'),
          ('c','2.5 0.0 4.0 0.0 0.5 1.0 0.0 1.0')]
     f = FlowgramCollection(a)
     self.assertEqual(len(f), 3)
Example #12
0
 def test_flows_from_flowCollection(self):
     """flows_from_flowCollection should init from existing collection"""
     c = FlowgramCollection({'a':'0.0 1.1 3.0 1.0','b':'0.5 1.0 4.0 0.0'})
     obs_a, obs_labels, obs_info = flows_from_flowCollection(c)
     self.assertEqual(map(str,obs_a), ['0.0\t1.1\t3.0\t1.0',
                                       '0.5\t1.0\t4.0\t0.0'])
     self.assertEqual(obs_labels, ['a','b'])
     self.assertEqual(obs_info, [None,None])
Example #13
0
 def test_str(self):
     """FlowgramCollection __str__ should return sff format"""
     a = [Flowgram('0.5 1.0 4.0 0.0 1.5 0.0 0.0 2.0', Name='a',
                   header_info = {'Bases':'TACCCCTTGG','Name Length':'14'}),
          Flowgram('1.5 1.0 0.0 0.0 2.5 1.0 2.0 1.0', Name = 'b',
           header_info = {'Bases':'TTATTTACCG','Name Length':'14'})]
     f = FlowgramCollection(a, header_info = {'Flow Chars':'TACG'})
     
     self.assertEqual(str(f), """Common Header:\n  Flow Chars:\tTACG\n\n>a\n  Name Length:\t14\nBases:\tTACCCCTTGG\nFlowgram:\t0.5\t1.0\t4.0\t0.0\t1.5\t0.0\t0.0\t2.0\n\n>b\n  Name Length:\t14\nBases:\tTTATTTACCG\nFlowgram:\t1.5\t1.0\t0.0\t0.0\t2.5\t1.0\t2.0\t1.0\n""")        
 def test_writeToFile(self):
     """FlowgramCollection.writeToFile should write in correct format"""
     a = [
         Flowgram(
             "0.5 1.0 4.0 0.0 1.5 0.0 0.0 2.0", Name="a", header_info={"Bases": "TACCCCTTGG", "Name Length": "14"}
         ),
         Flowgram(
             "1.5 1.0 0.0 0.0 2.5 1.0 2.0 1.0", Name="b", header_info={"Bases": "TTATTTACCG", "Name Length": "14"}
         ),
     ]
     f = FlowgramCollection(a, header_info={"Flow Chars": "TACG"})
     fn = mktemp(suffix=".sff")
     f.writeToFile(fn)
     result = open(fn, "U").read()
     self.assertEqual(
         result,
         """Common Header:\n  Flow Chars:\tTACG\n\n>a\n  Name Length:\t14\nBases:\tTACCCCTTGG\nFlowgram:\t0.5\t1.0\t4.0\t0.0\t1.5\t0.0\t0.0\t2.0\n\n>b\n  Name Length:\t14\nBases:\tTTATTTACCG\nFlowgram:\t1.5\t1.0\t0.0\t0.0\t2.5\t1.0\t2.0\t1.0\n""",
     )
     remove(fn)
Example #15
0
   def test_container(self):
      """FlowgramContainerArray works as expectected"""
      
      fc = FlowgramCollection({'a':'1.0 0.0 0.0 1.0 1.0 1.2 1.2 0.8',
                                'b':'1.2 1.0 0.0 0.8 1.2 2.4 1.0 0.0'})

      f_container = FlowgramContainerArray(header)
      
      for f in fc:
         f_container.add(f)
         
      for f_obs, f_exp in zip(f_container,fc):
         self.assertEqual(str(f_obs), str(f_exp))
Example #16
0
   def test_container(self):
      """FlowgramContainerFile works as expected"""

      fc = FlowgramCollection({'a':'1.0 0.0 0.0 1.0 1.0 1.2 1.2 0.8',
                                'b':'1.2 1.0 0.0 0.8 1.2 2.4 1.0 0.0'})

      f_container = FlowgramContainerFile(header)
      
      for f in fc:
         f_container.add(f)
         
      for f_obs, f_exp in zip(f_container,fc):
         self.assertEqual(str(f_obs), str(f_exp))
         
      # adding after iter started raises errror
      self.assertRaises(ValueError, f_container.add,f_obs)
Example #17
0
    def test_prefix_filter_flowgrams(self):
        """prefix_filter_flowgrams maps all flowgrams which are exact prefixe."""

        fc = FlowgramCollection({
            'a': '1.0 0.0 0.0 1.0 1.0 1.2 1.2 0.8',
            'b': '1.2 1.0 0.0 0.8 1.2 2.4 1.0 0.0',
            'c': '2.0 0.0 0.0 1.0',
            'd': '1.1 0.3 0.0 1.1'
        })

        expected_squeeze_map = {'a': ['c', 'd'], 'b': []}
        expected_map = {'a': ['d'], 'b': [], 'c': []}

        obs = prefix_filter_flowgrams(fc)
        self.assertEqual(obs, (3, 4, expected_map))

        obs = prefix_filter_flowgrams(fc, squeeze=True)
        self.assertEqual(obs, (2, 4, expected_squeeze_map))