Class CRAMCompressionRecord
java.lang.Object
htsjdk.samtools.cram.structure.CRAMCompressionRecord
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 Summary
FieldsModifier and TypeFieldDescriptionstatic final intstatic final intstatic final intstatic final intstatic final intstatic final intstatic final bytestatic final int -
Constructor Summary
ConstructorsConstructorDescriptionCRAMCompressionRecord(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.CRAMCompressionRecord(CRAMVersion cramVersion, CRAMEncodingStrategy encodingStrategy, SAMRecord samRecord, byte[] referenceBases, long sequentialIndex, Map<String, Integer> readGroupMap) Create a CRAMRecord from a SAMRecord. -
Method Summary
Modifier and TypeMethodDescriptionvoidAssign a synthetic read name based on the sequential index if no name was decoded.booleanintintintintintintintintbyte[]byte[]intintintintlonggetTags()intinthashCode()booleanReturn true if this record stores mate information explicitly (detached state).static booleanisDetached(int cramFlags) Test the detached bit in the given CRAM flags value.booleanReturn true if this record is the first segment in the template.booleanReturn true if quality scores are preserved as a full array for this record.static booleanisForcePreserveQualityScores(int cramFlags) Test the quality-scores-preserved-as-array bit in the given CRAM flags value.booleanReturn true if this record's CRAM flags indicate a downstream mate in the same slice.static booleanisHasMateDownStream(int cramFlags) Test the has-mate-downstream bit in the given CRAM flags value.booleanReturn true if this record is the last segment in the template.booleanWhen 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.booleanisPlaced()Determine is read is "placed".booleanReturn true if this record has the read-paired BAM flag set.booleanReturn true if this record has the secondary alignment BAM flag set.booleanDoes this record have the mapped flag set? This is independent of placement/alignment status.static booleanisSegmentUnmapped(int bamFlags) Test the segment-unmapped bit in the given BAM flags value.booleanReturn true if the original sequence was unknown (SEQ="*").static booleanisUnknownBases(int cramFlags) Test the unknown-bases bit in the given CRAM flags value.voidResolve the quality scores for this CRAM record based on preserved scores, read features and flags.voidRestore mate information by walking the linked list of segments starting from this record, setting mate fields on each segment pair, and computing template length.voidrestoreReadBases(CRAMReferenceRegion cramReferenceRegion, SubstitutionMatrix substitutionMatrix) Restore the actual read bases for this record.voidsetDetached(boolean detached) Set or clear the detached CRAM flag (mate info stored explicitly).voidsetNextSegment(CRAMCompressionRecord nextSegment) voidsetPreviousSegment(CRAMCompressionRecord previousSegment) voidsetTagIdsIndex(MutableInt tagIdsIndex) voidMark this record as detached — mate info stored explicitly via MF, NS, NP, TS data series.toSAMRecord(SAMFileHeader samFileHeader) Create a SAMRecord from the CRAMRecord.
-
Field Details
-
CF_QS_PRESERVED_AS_ARRAY
public static final int CF_QS_PRESERVED_AS_ARRAY- See Also:
-
CF_DETACHED
public static final int CF_DETACHED- See Also:
-
CF_HAS_MATE_DOWNSTREAM
public static final int CF_HAS_MATE_DOWNSTREAM- See Also:
-
CF_UNKNOWN_BASES
public static final int CF_UNKNOWN_BASES- See Also:
-
NO_READGROUP_ID
public static final int NO_READGROUP_ID- See Also:
-
MISSING_QUALITY_SCORE
public static final byte MISSING_QUALITY_SCORE- See Also:
-
MF_MATE_NEG_STRAND
public static final int MF_MATE_NEG_STRAND- See Also:
-
MF_MATE_UNMAPPED
public static final int MF_MATE_UNMAPPED- See Also:
-
-
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
Create a SAMRecord from the CRAMRecord.- Parameters:
samFileHeader- SAMFileHeader- Returns:
- a SAMRecord
-
assignReadName
public void assignReadName()Assign a synthetic read name based on the sequential index if no name was decoded. Propagates the name to linked next/previous segments.Note: supplementary and secondary reads are always DETACHED (never mate-linked), so they have no nextSegment/previousSegment and name propagation won’t help them. This is only safe because htsjdk always sets preserveReadNames=true when encoding (see
CompressionHeaderFactory.createCompressionHeader(List, boolean)). If lossy read name mode were ever implemented, supplementary/secondary reads in different slices from their primaries would receive synthetic names that don’t match. htslib avoids this by forcing name preservation whenever SA tags are present and when not all template reads are in the same slice. -
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). (seeSlice.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()Restore mate information by walking the linked list of segments starting from this record, setting mate fields on each segment pair, and computing template length. -
setToDetachedState
public void setToDetachedState()Mark this record as detached — mate info stored explicitly via MF, NS, NP, TS data series. -
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
-
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
-
getRecordsToNextFragment
public int getRecordsToNextFragment() -
getReadFeatures
-
getReadGroupID
public int getReadGroupID()- Returns:
- read group id, or
NO_READGROUP_IDif no read group assigned
-
getBAMFlags
public int getBAMFlags() -
getMateReferenceIndex
public int getMateReferenceIndex() -
getMateAlignmentStart
public int getMateAlignmentStart() -
setTagIdsIndex
-
getTagIdsIndex
-
getMateFlags
public int getMateFlags() -
getCRAMFlags
public int getCRAMFlags() -
getAlignmentEnd
public int getAlignmentEnd()- Returns:
- the initialized alignmentEnd
-
getSequentialIndex
public long getSequentialIndex() -
getNextSegment
-
setNextSegment
-
getPreviousSegment
-
setPreviousSegment
-
isSecondaryAlignment
public boolean isSecondaryAlignment()Return true if this record has the secondary alignment BAM flag set. -
isHasMateDownStream
public boolean isHasMateDownStream()Return true if this record's CRAM flags indicate a downstream mate in the same slice. -
isHasMateDownStream
public static boolean isHasMateDownStream(int cramFlags) Test the has-mate-downstream bit in the given CRAM flags value. -
isDetached
public boolean isDetached()Return true if this record stores mate information explicitly (detached state). -
isDetached
public static boolean isDetached(int cramFlags) Test the detached bit in the given CRAM flags value. -
isForcePreserveQualityScores
public boolean isForcePreserveQualityScores()Return true if quality scores are preserved as a full array for this record. -
isForcePreserveQualityScores
public static boolean isForcePreserveQualityScores(int cramFlags) Test the quality-scores-preserved-as-array bit in the given CRAM flags value. -
isUnknownBases
public boolean isUnknownBases()Return true if the original sequence was unknown (SEQ="*"). -
isUnknownBases
public static boolean isUnknownBases(int cramFlags) Test the unknown-bases bit in the given CRAM flags value. -
isReadPaired
public boolean isReadPaired()Return true if this record has the read-paired BAM flag set. -
isSegmentUnmapped
-
isSegmentUnmapped
public static boolean isSegmentUnmapped(int bamFlags) Test the segment-unmapped bit in the given BAM flags value. -
isFirstSegment
public boolean isFirstSegment()Return true if this record is the first segment in the template. -
isLastSegment
public boolean isLastSegment()Return true if this record is the last segment in the template. -
setDetached
public void setDetached(boolean detached) Set or clear the detached CRAM flag (mate info stored explicitly). -
equals
-
hashCode
-