def test_alignment_reference(self): rfn = data.getXml(9) rs1 = ReferenceSet(data.getXml(9)) fasta_res = rs1.externalResources[0] fasta_file = urlparse(fasta_res.resourceId).path ds1 = AlignmentSet(data.getXml(8), referenceFastaFname=rs1) aln_ref = None for aln in ds1: aln_ref = aln.reference() break self.assertTrue(aln_ref is not None) self.assertEqual(ds1.externalResources[0].reference, fasta_file) self.assertEqual(ds1.resourceReaders()[0].referenceFasta.filename, fasta_file) ds1 = AlignmentSet(data.getXml(8), referenceFastaFname=fasta_file) aln_ref = None for aln in ds1: aln_ref = aln.reference() break self.assertTrue(aln_ref is not None) self.assertEqual(ds1.externalResources[0].reference, fasta_file) self.assertEqual(ds1.resourceReaders()[0].referenceFasta.filename, fasta_file) ds1 = AlignmentSet(data.getXml(8)) ds1.addReference(fasta_file) aln_ref = None for aln in ds1: aln_ref = aln.reference() break self.assertTrue(aln_ref is not None) self.assertEqual(ds1.externalResources[0].reference, fasta_file) self.assertEqual(ds1.resourceReaders()[0].referenceFasta.filename, fasta_file) fofn_out = tempfile.NamedTemporaryFile(suffix=".fofn").name log.debug(fofn_out) with open(fofn_out, 'w') as f: f.write(data.getXml(8)) f.write('\n') f.write(data.getXml(11)) f.write('\n') ds1 = AlignmentSet(fofn_out, referenceFastaFname=fasta_file) aln_ref = None for aln in ds1: aln_ref = aln.reference() break self.assertTrue(aln_ref is not None) self.assertEqual(ds1.externalResources[0].reference, fasta_file) self.assertEqual(ds1.resourceReaders()[0].referenceFasta.filename, fasta_file)
def test_alignment_reference(self): rfn = data.getXml(9) rs1 = ReferenceSet(data.getXml(9)) fasta_res = rs1.externalResources[0] fasta_file = urlparse(fasta_res.resourceId).path ds1 = AlignmentSet(data.getXml(8), referenceFastaFname=rs1) aln_ref = None for aln in ds1: aln_ref = aln.reference() break self.assertTrue(aln_ref is not None) self.assertEqual(ds1.externalResources[0].reference, fasta_file) self.assertEqual(ds1.resourceReaders()[0].referenceFasta.filename, fasta_file) ds1 = AlignmentSet(data.getXml(8), referenceFastaFname=fasta_file) aln_ref = None for aln in ds1: aln_ref = aln.reference() break self.assertTrue(aln_ref is not None) self.assertEqual(ds1.externalResources[0].reference, fasta_file) self.assertEqual(ds1.resourceReaders()[0].referenceFasta.filename, fasta_file) ds1 = AlignmentSet(data.getXml(8)) ds1.addReference(fasta_file) aln_ref = None for aln in ds1: aln_ref = aln.reference() break self.assertTrue(aln_ref is not None) self.assertEqual(ds1.externalResources[0].reference, fasta_file) self.assertEqual(ds1.resourceReaders()[0].referenceFasta.filename, fasta_file) fofn_out = tempfile.NamedTemporaryFile(suffix=".fofn").name log.debug(fofn_out) with open(fofn_out, 'w') as f: f.write(data.getXml(8)) f.write('\n') f.write(data.getXml(11)) f.write('\n') ds1 = AlignmentSet(fofn_out, referenceFastaFname=fasta_file) aln_ref = None for aln in ds1: aln_ref = aln.reference() break self.assertTrue(aln_ref is not None) self.assertEqual(ds1.externalResources[0].reference, fasta_file) self.assertEqual(ds1.resourceReaders()[0].referenceFasta.filename, fasta_file)
def test_loading_reference(self): log.info('Opening Reference') r = ReferenceSet(data.getRef()).toExternalFiles()[0] log.info('Done Opening Reference') log.info('Opening AlignmentSet') d = AlignmentSet(data.getBam(), referenceFastaFname=r) log.info('Done Opening AlignmentSet') bfile = openIndexedAlignmentFile(data.getBam(), referenceFastaFname=r) self.assertTrue(bfile.isReferenceLoaded) for res in d.resourceReaders(): self.assertTrue(res.isReferenceLoaded) aln = AlignmentSet(data.getBam()) aln.addReference(r) for res in aln.resourceReaders(): self.assertTrue(res.isReferenceLoaded)
def test_readGroupTable(self): aln = AlignmentSet(data.getBam(0), data.getBam(1), data.getBam(2)) readers = aln.resourceReaders() self.assertEqual(len(readers[0].readGroupTable), 1) self.assertEqual(len(readers[1].readGroupTable), 1) self.assertEqual(len(readers[2].readGroupTable), 1) self.assertEqual(len(aln.readGroupTable), 3)
def test_loading_reference(self): log.info('Opening Reference') r = ReferenceSet(data.getRef()).toExternalFiles()[0] log.info('Done Opening Reference') log.info('Opening AlignmentSet') d = AlignmentSet(data.getBam(), referenceFastaFname=r) log.info('Done Opening AlignmentSet') bfile = openIndexedAlignmentFile(data.getBam(), referenceFastaFname=r) self.assertTrue(bfile.isReferenceLoaded) for res in d.resourceReaders(): self.assertTrue(res.isReferenceLoaded) aln = AlignmentSet(data.getBam()) aln.addReference(r) for res in aln.resourceReaders(): self.assertTrue(res.isReferenceLoaded)
def test_readGroupTable(self): aln = AlignmentSet(data.getBam(0), data.getBam(1), data.getBam(2)) readers = aln.resourceReaders() self.assertEqual(len(readers[0].readGroupTable), 1) self.assertEqual(len(readers[1].readGroupTable), 1) self.assertEqual(len(readers[2].readGroupTable), 1) self.assertEqual(len(aln.readGroupTable), 3)
def test_referenceInfo(self): aln = AlignmentSet(data.getBam(0)) readers = aln.resourceReaders() self.assertEqual(len(readers[0].referenceInfoTable), 59) self.assertEqual( str(readers[0].referenceInfo('E.faecalis.1')), "(27, 27, 'E.faecalis.1', 'E.faecalis.1', 1482, " "'a1a59c267ac1341e5a12bce7a7d37bcb', 0L, 0L)")
def test_referenceInfo(self): aln = AlignmentSet(data.getBam(0)) readers = aln.resourceReaders() self.assertEqual(len(readers[0].referenceInfoTable), 59) self.assertEqual( str(readers[0].referenceInfo('E.faecalis.1')), "(27, 27, 'E.faecalis.1', 'E.faecalis.1', 1482, " "'a1a59c267ac1341e5a12bce7a7d37bcb', 0L, 0L)")
def test_referenceInfoTable(self): aln = AlignmentSet(data.getBam(0), data.getBam(1), data.getBam(2)) readers = aln.resourceReaders() self.assertEqual(len(readers[0].referenceInfoTable), 1) self.assertEqual(len(readers[1].referenceInfoTable), 59) self.assertEqual(len(readers[2].referenceInfoTable), 1) self.assertEqual(readers[0].referenceInfoTable.Name, readers[2].referenceInfoTable.Name) self.assertEqual(len(aln.referenceInfoTable), 60)
def test_referenceInfoTable(self): aln = AlignmentSet(data.getBam(0), data.getBam(1), data.getBam(2)) readers = aln.resourceReaders() self.assertEqual(len(readers[0].referenceInfoTable), 1) self.assertEqual(len(readers[1].referenceInfoTable), 59) self.assertEqual(len(readers[2].referenceInfoTable), 1) self.assertEqual(readers[0].referenceInfoTable.Name, readers[2].referenceInfoTable.Name) self.assertEqual(len(aln.referenceInfoTable), 60)
def test_updateCounts(self): log.info("Testing updateCounts without filters") aln = AlignmentSet(data.getBam(0)) readers = aln.resourceReaders() expLen = 0 for reader in readers: for record in reader: expLen += record.readLength self.assertEqual( record.aStart, record.bam.pbi[record.rowNumber]['aStart']) self.assertEqual( record.aEnd, record.bam.pbi[record.rowNumber]['aEnd']) expNum = 0 for reader in readers: expNum += len(reader) accLen = aln.metadata.totalLength accNum = aln.metadata.numRecords self.assertEqual(expLen, accLen) self.assertEqual(expNum, accNum) log.info("Testing whether filters are respected") aln.filters.addRequirement(rname=[('=', 'E.faecalis.1')]) aln.updateCounts() accLen = aln.metadata.totalLength accNum = aln.metadata.numRecords def count(gen): count = 0 for _ in gen: count += 1 return count expLen = 0 for reader in readers: for record in reader: expLen += record.readLength bfile = openIndexedAlignmentFile(data.getBam(0)) rWin = (bfile.referenceInfo('E.faecalis.1').ID, 0, bfile.referenceInfo('E.faecalis.1').Length) reads = bfile.readsInRange(*rWin) expNum = count(reads) expLen = 0 reads = bfile.readsInRange(*rWin) for read in reads: expLen += read.readLength self.assertEqual(expLen, accLen) self.assertEqual(expNum, accNum)
def test_updateCounts(self): log.info("Testing updateCounts without filters") aln = AlignmentSet(data.getBam(0)) readers = aln.resourceReaders() expLen = 0 for reader in readers: for record in reader: expLen += record.readLength self.assertEqual(record.aStart, record.bam.pbi[record.rowNumber]['aStart']) self.assertEqual(record.aEnd, record.bam.pbi[record.rowNumber]['aEnd']) expNum = 0 for reader in readers: expNum += len(reader) accLen = aln.metadata.totalLength accNum = aln.metadata.numRecords self.assertEqual(expLen, accLen) self.assertEqual(expNum, accNum) log.info("Testing whether filters are respected") aln.filters.addRequirement(rname=[('=', 'E.faecalis.1')]) aln.updateCounts() accLen = aln.metadata.totalLength accNum = aln.metadata.numRecords def count(gen): count = 0 for _ in gen: count += 1 return count expLen = 0 for reader in readers: for record in reader: expLen += record.readLength bfile = openIndexedAlignmentFile(data.getBam(0)) rWin = (bfile.referenceInfo('E.faecalis.1').ID, 0, bfile.referenceInfo('E.faecalis.1').Length) reads = bfile.readsInRange(*rWin) expNum = count(reads) expLen = 0 reads = bfile.readsInRange(*rWin) for read in reads: expLen += read.readLength self.assertEqual(expLen, accLen) self.assertEqual(expNum, accNum)
def test_referenceInfoTableMerging(self): log.info("Testing refIds, etc. after merging") ds = DataSet(data.getXml(17)) also_lambda = ds.toExternalFiles()[0] aln = AlignmentSet(data.getBam(0), data.getBam(0), also_lambda) readers = aln.resourceReaders() ids = sorted([i for _, i in aln.refInfo('ID')]) self.assertEqual(range(len(ids)), ids) accNames = aln.refNames expNames = reduce( np.append, [reader.referenceInfoTable['Name'] for reader in readers]) expNames = np.unique(expNames) self.assertEqual(sorted(expNames), sorted(accNames)) accNames = aln.fullRefNames expNames = reduce( np.append, [reader.referenceInfoTable['FullName'] for reader in readers]) expNames = np.unique(expNames) self.assertEqual(sorted(expNames), sorted(accNames))
def test_referenceInfoTableMerging(self): log.info("Testing refIds, etc. after merging") ds = DataSet(data.getXml(17)) also_lambda = ds.toExternalFiles()[0] aln = AlignmentSet(data.getBam(0), data.getBam(0), also_lambda) readers = aln.resourceReaders() ids = sorted([i for _, i in aln.refInfo('ID')]) self.assertEqual(range(len(ids)), ids) accNames = aln.refNames expNames = reduce(np.append, [reader.referenceInfoTable['Name'] for reader in readers]) expNames = np.unique(expNames) self.assertEqual(sorted(expNames), sorted(accNames)) accNames = aln.fullRefNames expNames = reduce(np.append, [reader.referenceInfoTable['FullName'] for reader in readers]) expNames = np.unique(expNames) self.assertEqual(sorted(expNames), sorted(accNames))
def _get_readers(self): ds_reader = AlignmentSet(self.aln_path, strict=True, reference=self.ref_path) return ds_reader, ds_reader.resourceReaders()
def _get_pbi(self): ds = AlignmentSet(get_file("aligned-xml")) return ds.resourceReaders()[0].pbi
def _get_readers(self): ds_reader = AlignmentSet(self.aln_path, strict=True, reference=self.ref_path) return ds_reader, ds_reader.resourceReaders()