Class CRAMCompressionRecord

java.lang.Object
htsjdk.samtools.cram.structure.CRAMCompressionRecord

public class CRAMCompressionRecord extends Object
A CRAMRecord represents a SAMRecord that has been transformed to CRAM-style representation. This includes representing read bases as reference-relative read features, and representation of quality scores, tags, and BAM and CRAM flags.
  • Field Details

  • Constructor Details

    • CRAMCompressionRecord

      public CRAMCompressionRecord(CRAMVersion cramVersion, CRAMEncodingStrategy encodingStrategy, SAMRecord samRecord, byte[] referenceBases, long sequentialIndex, Map<String,Integer> readGroupMap)
      Create a CRAMRecord from a SAMRecord.
      Parameters:
      cramVersion -
      encodingStrategy -
      samRecord -
      referenceBases -
      sequentialIndex -
      readGroupMap -
    • CRAMCompressionRecord

      public CRAMCompressionRecord(long sequentialIndex, int bamFlags, int cramFlags, String readName, int readLength, int referenceIndex, int alignmentStart, int templateSize, int mappingQuality, byte[] qualityScores, byte[] readBases, List<ReadTag> readTags, List<ReadFeature> readFeaturesList, int readGroupID, int mateFlags, int mateReferenceIndex, int mateAlignmentStart, int recordsToNextFragment)
      Create a CRAMRecord from a set of values retrieved from a serialized Slice's data series streams.
      Parameters:
      sequentialIndex -
      bamFlags -
      cramFlags -
      readName -
      readLength -
      referenceIndex -
      alignmentStart -
      templateSize -
      mappingQuality -
      qualityScores -
      readBases -
      readTags -
      readFeaturesList -
      readGroupID -
      mateFlags -
      mateReferenceIndex -
      mateAlignmentStart -
      recordsToNextFragment -
  • Method Details

    • toSAMRecord

      public SAMRecord toSAMRecord(SAMFileHeader samFileHeader)
      Create a SAMRecord from the CRAMRecord.
      Parameters:
      samFileHeader - SAMFileHeader
      Returns:
      a SAMRecord
    • assignReadName

      public void assignReadName()
    • isNormalized

      public boolean isNormalized()
      When a CRAM record is read from a CRAM stream, it is "raw" in that the record's read bases, quality scores, and mate graph are not stored directly as part of the record. These values must be resolved through the separate process of normalization, which is performed at Slice granularity (all records in a Slice are normalized at the same time). (see Slice.normalizeCRAMRecords(List, CRAMReferenceRegion)).
      Returns:
      true if this record is normalized
    • resolveQualityScores

      public void resolveQualityScores()
      Resolve the quality scores for this CRAM record based on preserved scores, read features and flags.
    • restoreReadBases

      public void restoreReadBases(CRAMReferenceRegion cramReferenceRegion, SubstitutionMatrix substitutionMatrix)
      Restore the actual read bases for this record.
      Parameters:
      cramReferenceRegion - CRAMReferenceRegion spanning the reference bases for this record, if reference bases are required (may be null for records with RR=false in the compression header)
      substitutionMatrix - substitution matrix to use for this record
    • restoreMateInfo

      public void restoreMateInfo()
    • setToDetachedState

      public void setToDetachedState()
    • isPlaced

      public boolean isPlaced()
      Determine is read is "placed". For consistency with the rest of htsjdk, this only consults the alignmentStart (placed reads should also have a valid reference index, and unplaced reads should be unmapped; those two abberant conditions are logged as warnings).

      Returns:
      true if the record is placed
      See Also:
    • getReadName

      public String getReadName()
    • getAlignmentStart

      public int getAlignmentStart()
    • getReadLength

      public int getReadLength()
    • getReadBases

      public byte[] getReadBases()
    • getQualityScores

      public byte[] getQualityScores()
    • getMappingQuality

      public int getMappingQuality()
    • getReferenceIndex

      public int getReferenceIndex()
    • getTemplateSize

      public int getTemplateSize()
    • getTags

      public List<ReadTag> getTags()
    • getRecordsToNextFragment

      public int getRecordsToNextFragment()
    • getReadFeatures

      public List<ReadFeature> getReadFeatures()
    • getReadGroupID

      public int getReadGroupID()
      Returns:
      read group id, or NO_READGROUP_ID if no read group assigned
    • getBAMFlags

      public int getBAMFlags()
    • getMateReferenceIndex

      public int getMateReferenceIndex()
    • getMateAlignmentStart

      public int getMateAlignmentStart()
    • setTagIdsIndex

      public void setTagIdsIndex(MutableInt tagIdsIndex)
    • getTagIdsIndex

      public MutableInt getTagIdsIndex()
    • getMateFlags

      public int getMateFlags()
    • getCRAMFlags

      public int getCRAMFlags()
    • getAlignmentEnd

      public int getAlignmentEnd()
      Returns:
      the initialized alignmentEnd
    • getSequentialIndex

      public long getSequentialIndex()
    • getNextSegment

      public CRAMCompressionRecord getNextSegment()
    • setNextSegment

      public void setNextSegment(CRAMCompressionRecord nextSegment)
    • getPreviousSegment

      public CRAMCompressionRecord getPreviousSegment()
    • setPreviousSegment

      public void setPreviousSegment(CRAMCompressionRecord previousSegment)
    • isSecondaryAlignment

      public boolean isSecondaryAlignment()
    • isHasMateDownStream

      public boolean isHasMateDownStream()
    • isHasMateDownStream

      public static boolean isHasMateDownStream(int cramFlags)
    • isDetached

      public boolean isDetached()
    • isDetached

      public static boolean isDetached(int cramFlags)
    • isForcePreserveQualityScores

      public boolean isForcePreserveQualityScores()
    • isForcePreserveQualityScores

      public static boolean isForcePreserveQualityScores(int cramFlags)
    • isUnknownBases

      public boolean isUnknownBases()
    • isUnknownBases

      public static boolean isUnknownBases(int cramFlags)
    • isReadPaired

      public boolean isReadPaired()
    • isSegmentUnmapped

      public boolean isSegmentUnmapped()
      Does this record have the mapped flag set? This is independent of placement/alignment status. Unmapped records may be stored in the same Slices and Containers as mapped records if they are placed.
      Returns:
      true if the record is unmapped
      See Also:
    • isSegmentUnmapped

      public static boolean isSegmentUnmapped(int bamFlags)
    • isFirstSegment

      public boolean isFirstSegment()
    • isLastSegment

      public boolean isLastSegment()
    • setDetached

      public void setDetached(boolean detached)
    • equals

      public boolean equals(Object o)
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object