Class CRAMRecordReadFeatures
java.lang.Object
htsjdk.samtools.cram.structure.CRAMRecordReadFeatures
Class for handling the read features for a
CRAMCompressionRecord.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classResult of the fused single-pass decode: read bases, CIGAR, and optionally MD string + NM count. -
Constructor Summary
ConstructorsConstructorDescriptionCreate a CRAMRecordReadFeatures with no actual read features (i.e.CRAMRecordReadFeatures(SAMRecord samRecord, byte[] bamReadBases, byte[] refBases) Create the read features for a given SAMRecord.CRAMRecordReadFeatures(List<ReadFeature> readFeatures) Create a CRAMRecordReadFeatures from a list of read features consumed from a stream. -
Method Summary
Modifier and TypeMethodDescriptionbooleanintgetAlignmentEnd(int alignmentStart, int readLength) Compute the alignment end position from the read features, alignment start, and read length.getCigarForReadFeatures(int readLength) Build aCigarfrom these read features and the given read length.final List<ReadFeature> Return the list of read features for this record.inthashCode()restoreBasesAndTags(List<ReadFeature> readFeatures, boolean isUnknownBases, int readAlignmentStart, int readLength, CRAMReferenceRegion cramReferenceRegion, SubstitutionMatrix substitutionMatrix, boolean computeMdNm) Fused single-pass decode: restore read bases from the reference + read features, build the CIGAR, and optionally compute the MD string and NM edit distance, all in a single iteration through the features list.static byte[]restoreReadBases(List<ReadFeature> readFeatures, boolean isUnknownBases, int readAlignmentStart, int readLength, CRAMReferenceRegion cramReferenceRegion, SubstitutionMatrix substitutionMatrix) Get the read bases for a CRAMRecord given a set of read feaures and a reference region.
-
Constructor Details
-
CRAMRecordReadFeatures
public CRAMRecordReadFeatures()Create a CRAMRecordReadFeatures with no actual read features (i.e. an unmapped record). -
CRAMRecordReadFeatures
Create a CRAMRecordReadFeatures from a list of read features consumed from a stream.- Parameters:
readFeatures-
-
CRAMRecordReadFeatures
Create the read features for a given SAMRecord.- Parameters:
samRecord- theSAMRecordfor which to create read featuresbamReadBases- a modifiable copy of the readbases from the original SAM/BAM record, with the individual bases mapped to BAM bases (upper case)refBases- the reference bases for the entire reference contig to which this record is mapped
-
-
Method Details
-
getReadFeaturesList
Return the list of read features for this record. -
getAlignmentEnd
public int getAlignmentEnd(int alignmentStart, int readLength) Compute the alignment end position from the read features, alignment start, and read length.- Parameters:
alignmentStart- 1-based alignment start positionreadLength- length of the read in bases- Returns:
- 1-based alignment end position
-
getCigarForReadFeatures
-
restoreReadBases
public static byte[] restoreReadBases(List<ReadFeature> readFeatures, boolean isUnknownBases, int readAlignmentStart, int readLength, CRAMReferenceRegion cramReferenceRegion, SubstitutionMatrix substitutionMatrix) Get the read bases for a CRAMRecord given a set of read feaures and a reference region.- Parameters:
readFeatures- list of ReadFeatures for this record. may be nullisUnknownBases- true if CF_UNKNOWN_BASES CRAM flag is set for this readreadAlignmentStart- 1-based CRAM record alignment startreadLength- read length for this readcramReferenceRegion- CRAMReferenceRegion spanning the reference bases required for this read, if reference-compressed. It is the caller's responsibility to have already fetched the correct bases (that is, the CRAMReferenceRegion's current bases must overlap this read's reference span. It is permissible for the region's span to be less than the entire read span in the case where the read span exceeds beyond the end of the underlying reference sequence.substitutionMatrix- substitution matrix to use for base resolution- Returns:
- byte[] of read bases for this read
-
restoreBasesAndTags
public static CRAMRecordReadFeatures.DecodeResult restoreBasesAndTags(List<ReadFeature> readFeatures, boolean isUnknownBases, int readAlignmentStart, int readLength, CRAMReferenceRegion cramReferenceRegion, SubstitutionMatrix substitutionMatrix, boolean computeMdNm) Fused single-pass decode: restore read bases from the reference + read features, build the CIGAR, and optionally compute the MD string and NM edit distance, all in a single iteration through the features list. This replaces the previous 3-4 pass approach (restoreReadBases + getCigarForReadFeatures + calculateMdAndNm + toBamReadBasesInPlace).Base normalization (upper-casing, replacing invalid bases with N) is done inline as bases are written, eliminating the need for a separate
toBamReadBasesInPlacepass.- Parameters:
readFeatures- list of read features (may be null for pure reference matches)isUnknownBases- true if the CF_UNKNOWN_BASES flag is setreadAlignmentStart- 1-based alignment startreadLength- read lengthcramReferenceRegion- reference region covering this read's spansubstitutionMatrix- substitution matrix for base resolutioncomputeMdNm- whether to compute MD string and NM count- Returns:
- DecodeResult containing bases, CIGAR, and optionally MD/NM
-
equals
-
hashCode
-