def get_raw_reads(bamfile, regionstr=""): ''' :param str bamfile: path to input file :param str regionstr: the seq id to select, followed by the region to look up, seperated by colon. i.e.: <refid>:1-1000 :return a list of sequences from the output of `samtools view` ''' return list(subsamplebam.samview(bamfile, regionstr))
def test_samtools_returns_non0_raises_valueerror(self, mpopen, msys): mock_popen = mock.MagicMock() mock_popen.poll.return_value = 1 mock_popen.stdout.readline.return_value = '' mock_popen.stdout.__iter__.return_value = [] mpopen.return_value = mock_popen r = subsamplebam.samview('foo.bam', 'chr1:1-100') self.assertRaises(ValueError, next, r)
def test_0_line_samtools_view_no_error(self, mpopen, msys): mock_popen = mock.MagicMock() mock_popen.poll.return_value = 0 mock_popen.stdout.readline.return_value = '' mock_popen.stdout.__iter__.return_value = [] mpopen.return_value = mock_popen r = subsamplebam.samview('foo.bam', 'chr1:1-100') lines = list(r) self.assertEqual([''], lines)
def test_returns_samtools_view_output_as_subprocess_stdout(self, mpopen, msys): samlines = ['line1', 'line2', 'line3'] mock_popen = mock.MagicMock() mock_popen.poll.return_value = None mock_popen.stdout.readline.return_value = samlines[0] mock_popen.stdout.__iter__.return_value = samlines[1:] mpopen.return_value = mock_popen r = subsamplebam.samview('foo.bam', 'chr1:1-100') cmd = 'samtools view foo.bam chr1:1-100' for eline, rline in zip(samlines, r): self.assertEqual(eline, rline) mpopen.assert_called_once_with(cmd.split(), stdout=-1) msys.stderr.write.assert_called_with(cmd + '\n')
def test_returns_samtools_view_output_as_subprocess_stdout( self, mpopen, msys): samlines = ['line1', 'line2', 'line3'] mock_popen = mock.MagicMock() mock_popen.poll.return_value = None mock_popen.stdout.readline.return_value = samlines[0] mock_popen.stdout.__iter__.return_value = samlines[1:] mpopen.return_value = mock_popen r = subsamplebam.samview('foo.bam', 'chr1:1-100') cmd = 'samtools view foo.bam chr1:1-100' for eline, rline in zip(samlines, r): self.assertEqual(eline, rline) mpopen.assert_called_once_with(cmd.split(), stdout=-1) msys.stderr.write.assert_called_with(cmd + '\n')