Beispiel #1
0
 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)
Beispiel #2
0
 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)
Beispiel #3
0
 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())
Beispiel #4
0
 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)