# Interface CRAMReferenceSource

All Known Implementing Classes:
  `CRAMLazyReferenceSource, ReferenceSource`

public interface CRAMReferenceSource
Interface used to supply a reference source when reading CRAM files.

## Method Summary

Modifier and Type
Method
Description
`byte[]`
`getReferenceBases(SAMSequenceRecord sequenceRecord, boolean tryNameVariants)`
Get the reference bases for an entire reference contig.
`byte[]`
`getReferenceBasesByRegion(SAMSequenceRecord sequenceRecord, int zeroBasedStart, int requestedRegionLength)`
Get the reference bases for a region of a reference contig.

## Method Details

### getReferenceBases

byte[] getReferenceBases(SAMSequenceRecord sequenceRecord, boolean tryNameVariants)
Get the reference bases for an entire reference contig.

Parameters:
  `sequenceRecord` - the SAMSequenceRecord identifying the reference being requested
  `tryNameVariants` - if true, attempt to match the requested sequence name against the reference by using common name variations, such as adding or removing a leading "chr" prefix from the requested name. if false, use exact match
Returns:
  the upper-cased, normalized (see `Utils.normalizeBase(byte)`) bases representing the requested sequence, or null if the sequence cannot be found

### getReferenceBasesByRegion

byte[] getReferenceBasesByRegion(SAMSequenceRecord sequenceRecord, int zeroBasedStart, int requestedRegionLength)
Get the reference bases for a region of a reference contig. If the sequence can be retrieved, but is not long enough to satisfy the requested length, it is permissible to return fewer bases than the `requestedRegionLength`. It is the caller's responsibility to detect and handle this case.

Parameters:
  `sequenceRecord` - the SAMSequenceRecord for the reference contig being requested
  `zeroBasedStart` - the zero based offset of the starting reference base, must be >= 0
  `requestedRegionLength` - the length of the requested reference region
Returns:
  the bases for the reference region, or null if the sequence cannot be found.