Ejemplo n.º 1
0
def read_sam_file(fname):
  formatter = SamFormatter()
  fp = open(fname)
  res = []
  for l in fp:
    l = l.strip()
    if l[0] == "@":  # SAM header line
      continue
    r = formatter.parse(l)
    res.append(r)
  fp.close()
  return res
Ejemplo n.º 2
0
  class SimpleVisitor(object):
    def __init__(self):
      self.sam = SamFormatter()
      self.output = StringIO.StringIO()

    def process(self, pair):
      for hit in pair:
        print >>self.output, self.sam.format(hit)
Ejemplo n.º 3
0
class EmitSamLink(HitProcessorChainLink):
    def __init__(self, context, event_monitor, next_link=None):
        super(type(self), self).__init__(next_link)
        self.ctx = context
        self.output_formatter = SamFormatter(strip_pe_tag=True)
        self.event_monitor = event_monitor

    def process(self, pair):
        for hit in pair:
            if hit:
                k, v = self.output_formatter.format(hit).split("\t", 1)
                self.ctx.emit(str(k), str(v))
                self.event_monitor.count("emitted sam records", 1)

        super(type(self), self).process(pair)  # forward pair to next element in chain
Ejemplo n.º 4
0
class EmitSamLink(HitProcessorChainLink):
	def __init__(self, context, event_monitor, next_link = None):
		super(type(self), self).__init__(next_link)
		self.ctx = context
		self.output_formatter = SamFormatter(strip_pe_tag=True)
		self.event_monitor = event_monitor

	def process(self, pair):
		for hit in pair:
			if hit:
				k, v = self.output_formatter.format(hit).split("\t", 1)
				self.ctx.emit(str(k), str(v))
				self.event_monitor.count("emitted sam records", 1)

		super(type(self), self).process(pair) # forward pair to next element in chain
Ejemplo n.º 5
0
 def setUp(self):
     self.mapping = SimpleMapping()
     self.f = SamFormatter()
Ejemplo n.º 6
0
class TestSamFormatter(unittest.TestCase):

    def setUp(self):
        self.mapping = SimpleMapping()
        self.f = SamFormatter()

    def test_default(self):
        self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "*", 0, 0, "", "" ])), self.__do_format())

    def test_name(self):
        self.mapping.set_name("my name")
        self.assertEqual("\t".join( map(str, ["my name", 0, "*", 0, 0, "*", "*", 0, 0, "", "" ])), self.__do_format())

    def test_flag(self):
        self.mapping.flag = 163
        self.assertEqual("\t".join( map(str, ['', 163, "*", 0, 0, "*", "*", 0, 0, "", "" ])), self.__do_format())

    def test_reference(self):
        self.mapping.tid = "chr21"
        self.assertEqual("\t".join( map(str, ['', 0, "chr21", 0, 0, "*", "*", 0, 0, "", "" ])), self.__do_format())

    def test_mate_reference(self):
        self.mapping.mtid = "chr21"
        self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "chr21", 0, 0, "", "" ])), self.__do_format())
        self.mapping.mtid = "="
        self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "=", 0, 0, "", "" ])), self.__do_format())

    def test_pos(self):
        self.mapping.pos = 1234
        self.assertEqual("\t".join( map(str, ['', 0, "*", 1234, 0, "*", "*", 0, 0, "", "" ])), self.__do_format())

    def test_mate_pos(self):
        self.mapping.mpos = 1234
        self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "*", 1234, 0, "", "" ])), self.__do_format())

    def test_mapq(self):
        self.mapping.qual = 55
        self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 55, "*", "*", 0, 0, "", "" ])), self.__do_format())

    def test_cigar(self):
        self.mapping.set_cigar([ (100, 'M') ])
        self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "100M", "*", 0, 0, "", "" ])), self.__do_format())
        self.mapping.set_cigar([ (80, 'M'), (20, 'S') ])
        self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "80M20S", "*", 0, 0, "", "" ])), self.__do_format())

    def test_isize(self):
        self.mapping.isize = 273
        self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "*", 0, 273, "", "" ])), self.__do_format())
        self.mapping.isize = -273
        self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "*", 0, -273, "", "" ])), self.__do_format())

    def test_seq(self):
        self.mapping.set_seq_5("AGCTNN")
        self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "*", 0, 0, "AGCTNN", "" ])), self.__do_format())

    def test_qual(self):
        bq = array.array('B', [22, 33, 45])
        self.mapping.set_base_qualities(bq)
        self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "*", 0, 0, "", "7BN" ])), self.__do_format())

    def test_tags(self):
        self.mapping.add_tag( ("XC", 'i', 18) )
        self.mapping.add_tag( ("HI", 'Z', "llo") )
        self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "*", 0, 0, "", "", "XC:i:18", "HI:Z:llo" ])), self.__do_format())

    def __do_format(self):
        return self.f.format(self.mapping)
Ejemplo n.º 7
0
	def setUp(self):
		self.mapping = SimpleMapping()
		self.f = SamFormatter()
Ejemplo n.º 8
0
class TestSamFormatter(unittest.TestCase):

	def setUp(self):
		self.mapping = SimpleMapping()
		self.f = SamFormatter()

	def test_default(self):
		self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "*", 0, 0, "", "" ])), self.__do_format())

	def test_name(self):
		self.mapping.set_name("my name")
		self.assertEqual("\t".join( map(str, ["my name", 0, "*", 0, 0, "*", "*", 0, 0, "", "" ])), self.__do_format())

	def test_flag(self):
		self.mapping.flag = 163
		self.assertEqual("\t".join( map(str, ['', 163, "*", 0, 0, "*", "*", 0, 0, "", "" ])), self.__do_format())

	def test_reference(self):
		self.mapping.tid = "chr21"
		self.assertEqual("\t".join( map(str, ['', 0, "chr21", 0, 0, "*", "*", 0, 0, "", "" ])), self.__do_format())

	def test_mate_reference(self):
		self.mapping.mtid = "chr21"
		self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "chr21", 0, 0, "", "" ])), self.__do_format())
		self.mapping.mtid = "="
		self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "=", 0, 0, "", "" ])), self.__do_format())

	def test_pos(self):
		self.mapping.pos = 1234
		self.assertEqual("\t".join( map(str, ['', 0, "*", 1234, 0, "*", "*", 0, 0, "", "" ])), self.__do_format())

	def test_mate_pos(self):
		self.mapping.mpos = 1234
		self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "*", 1234, 0, "", "" ])), self.__do_format())

	def test_mapq(self):
		self.mapping.qual = 55
		self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 55, "*", "*", 0, 0, "", "" ])), self.__do_format())

	def test_cigar(self):
		self.mapping.set_cigar([ (100, 'M') ])
		self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "100M", "*", 0, 0, "", "" ])), self.__do_format())
		self.mapping.set_cigar([ (80, 'M'), (20, 'S') ])
		self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "80M20S", "*", 0, 0, "", "" ])), self.__do_format())

	def test_isize(self):
		self.mapping.isize = 273
		self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "*", 0, 273, "", "" ])), self.__do_format())
		self.mapping.isize = -273
		self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "*", 0, -273, "", "" ])), self.__do_format())

	def test_seq(self):
		self.mapping.set_seq_5("AGCTNN")
		self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "*", 0, 0, "AGCTNN", "" ])), self.__do_format())

	def test_qual(self):
		bq = array.array('B', [22, 33, 45])
		self.mapping.set_base_qualities(bq)
		self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "*", 0, 0, "", "7BN" ])), self.__do_format())

	def test_tags(self):
		self.mapping.add_tag( ("XC", 'i', 18) )
		self.mapping.add_tag( ("HI", 'Z', "llo") )
		self.assertEqual("\t".join( map(str, ['', 0, "*", 0, 0, "*", "*", 0, 0, "", "", "XC:i:18", "HI:Z:llo" ])), self.__do_format())

	def __do_format(self):
		return self.f.format(self.mapping)
Ejemplo n.º 9
0
 def __init__(self):
   self.sam = SamFormatter()
   self.output = StringIO.StringIO()
Ejemplo n.º 10
0
 def __init__(self, context, event_monitor, next_link=None):
     super(EmitSamLink, self).__init__(next_link)
     self.ctx = context
     self.output_formatter = SamFormatter(strip_pe_tag=True)
     self.event_monitor = event_monitor
Ejemplo n.º 11
0
 def __init__(self, context, event_monitor, next_link=None):
     super(type(self), self).__init__(next_link)
     self.ctx = context
     self.output_formatter = SamFormatter(strip_pe_tag=True)
     self.event_monitor = event_monitor
Ejemplo n.º 12
0
 def __init__(self):
     self.mappings = []
     self.formatter = SamFormatter()