def getReadAlignmentId(self, gaAlignment): """ Returns a string ID suitable for use in the specified GA ReadAlignment object in this ReadGroup. """ compoundId = datamodel.ReadAlignmentCompoundId( self.getCompoundId(), gaAlignment.fragmentName) return str(compoundId)
def assertAlignmentsEqual(self, gaAlignment, pysamAlignment, readGroupInfo): if pysamAlignment.query_qualities is None: self.assertEqual(gaAlignment.alignedQuality, []) else: self.assertEqual(gaAlignment.alignedQuality, list(pysamAlignment.query_qualities)) self.assertEqual(gaAlignment.alignedSequence, pysamAlignment.query_sequence) self.assertEqual(gaAlignment.alignment.mappingQuality, pysamAlignment.mapping_quality) self.assertEqual( gaAlignment.alignment.position.referenceName, readGroupInfo.samFile.getrname(pysamAlignment.reference_id)) self.assertEqual(gaAlignment.alignment.position.position, pysamAlignment.reference_start) # TODO test reverseStrand on position and on nextMatePosition once # it has been implemented. self.assertCigarEqual(gaAlignment.alignment.cigar, pysamAlignment.cigar) self.assertFlag(gaAlignment.duplicateFragment, pysamAlignment, reads.SamFlags.DUPLICATE_FRAGMENT) self.assertFlag(gaAlignment.failedVendorQualityChecks, pysamAlignment, reads.SamFlags.FAILED_VENDOR_QUALITY_CHECKS) self.assertEqual(gaAlignment.fragmentLength, pysamAlignment.template_length) self.assertEqual(gaAlignment.fragmentName, pysamAlignment.query_name) compoundId = datamodel.ReadAlignmentCompoundId( readGroupInfo.gaReadGroup.getCompoundId(), pysamAlignment.query_name) self.assertEqual(gaAlignment.id, str(compoundId)) self.assertEqual( gaAlignment.info, {key: [str(value)] for key, value in pysamAlignment.tags}) if pysamAlignment.next_reference_id != -1: self.assertEqual(gaAlignment.nextMatePosition.position, pysamAlignment.next_reference_start) self.assertEqual( gaAlignment.nextMatePosition.referenceName, readGroupInfo.samFile.getrname( pysamAlignment.next_reference_id)) else: self.assertIsNone(gaAlignment.nextMatePosition) self.assertFlag(gaAlignment.properPlacement, pysamAlignment, reads.SamFlags.PROPER_PLACEMENT) self.assertEqual(gaAlignment.readGroupId, readGroupInfo.id) self.assertFlag(gaAlignment.secondaryAlignment, pysamAlignment, reads.SamFlags.SECONDARY_ALIGNMENT) self.assertFlag(gaAlignment.supplementaryAlignment, pysamAlignment, reads.SamFlags.SUPPLEMENTARY_ALIGNMENT)
def testReadAlignment(self): readGroup = self.getReadGroup() readGroupSet = readGroup.getParentContainer() dataset = readGroupSet.getParentContainer() localId = "alignment" cid = datamodel.ReadAlignmentCompoundId(readGroupSet.getCompoundId(), localId) self.assertRaises(ValueError, datamodel.ReadAlignmentCompoundId, dataset.getCompoundId()) self.assertEqual(cid.dataset, dataset.getLocalId()) self.assertEqual(cid.read_group_set, readGroupSet.getLocalId()) self.assertEqual(cid.read_alignment, localId) self.assertEqual(cid.dataset_id, dataset.getId()) self.assertEqual(cid.read_group_set_id, readGroupSet.getId())
def assertAlignmentsEqual(self, gaAlignment, pysamAlignment, readGroupInfo): if pysamAlignment.query_qualities is None: self.assertEqual(gaAlignment.alignedQuality, []) else: self.assertEqual(gaAlignment.alignedQuality, list(pysamAlignment.query_qualities)) self.assertEqual(gaAlignment.alignedSequence, pysamAlignment.query_sequence) if reads.SamFlags.isFlagSet(pysamAlignment.flag, reads.SamFlags.READ_UNMAPPED): self.assertIsNone(gaAlignment.alignment) else: self.assertEqual(gaAlignment.alignment.mappingQuality, pysamAlignment.mapping_quality) self.assertEqual( gaAlignment.alignment.position.referenceName, readGroupInfo.samFile.getrname(pysamAlignment.reference_id)) self.assertEqual(gaAlignment.alignment.position.position, pysamAlignment.reference_start) # TODO test reverseStrand on position and on # nextMatePosition once it has been implemented. self.assertCigarEqual(gaAlignment.alignment.cigar, pysamAlignment.cigar) self.assertFlag(gaAlignment.duplicateFragment, pysamAlignment, reads.SamFlags.DUPLICATE_READ) self.assertFlag(gaAlignment.failedVendorQualityChecks, pysamAlignment, reads.SamFlags.FAILED_QUALITY_CHECK) self.assertEqual(gaAlignment.fragmentLength, pysamAlignment.template_length) self.assertEqual(gaAlignment.fragmentName, pysamAlignment.query_name) compoundId = datamodel.ReadAlignmentCompoundId( readGroupInfo.gaReadGroup.getCompoundId(), pysamAlignment.query_name) self.assertEqual(gaAlignment.id, str(compoundId)) self.assertEqual( gaAlignment.info, {key: [str(value)] for key, value in pysamAlignment.tags}) if reads.SamFlags.isFlagSet(pysamAlignment.flag, reads.SamFlags.MATE_UNMAPPED): self.assertIsNone(gaAlignment.nextMatePosition) else: self.assertEqual(gaAlignment.nextMatePosition.position, pysamAlignment.next_reference_start) if pysamAlignment.next_reference_id != -1: self.assertEqual( gaAlignment.nextMatePosition.referenceName, readGroupInfo.samFile.getrname( pysamAlignment.next_reference_id)) else: self.assertEqual(gaAlignment.nextMatePosition.referenceName, "") if gaAlignment.numberReads == 1: self.assertFlag(False, pysamAlignment, reads.SamFlags.READ_PAIRED) elif gaAlignment.numberReads == 2: self.assertFlag(True, pysamAlignment, reads.SamFlags.READ_PAIRED) else: # we shouldn't be setting numberReads to anything else self.assertTrue(False) if gaAlignment.readNumber is None: self.assertFlag(False, pysamAlignment, reads.SamFlags.FIRST_IN_PAIR) self.assertFlag(False, pysamAlignment, reads.SamFlags.SECOND_IN_PAIR) elif gaAlignment.readNumber == 0: self.assertFlag(True, pysamAlignment, reads.SamFlags.FIRST_IN_PAIR) self.assertFlag(False, pysamAlignment, reads.SamFlags.SECOND_IN_PAIR) elif gaAlignment.readNumber == 1: self.assertFlag(False, pysamAlignment, reads.SamFlags.FIRST_IN_PAIR) self.assertFlag(True, pysamAlignment, reads.SamFlags.SECOND_IN_PAIR) elif gaAlignment.readNumber == 2: self.assertFlag(True, pysamAlignment, reads.SamFlags.FIRST_IN_PAIR) self.assertFlag(True, pysamAlignment, reads.SamFlags.SECOND_IN_PAIR) else: # we shouldn't be setting readNumber to anything else self.assertTrue(False) self.assertFlag(gaAlignment.properPlacement, pysamAlignment, reads.SamFlags.READ_PROPER_PAIR) self.assertEqual(gaAlignment.readGroupId, readGroupInfo.id) self.assertFlag(gaAlignment.secondaryAlignment, pysamAlignment, reads.SamFlags.SECONDARY_ALIGNMENT) self.assertFlag(gaAlignment.supplementaryAlignment, pysamAlignment, reads.SamFlags.SUPPLEMENTARY_ALIGNMENT)