package htsjdk.samtools.cram; import htsjdk.samtools.SAMFileHeader; import htsjdk.samtools.cram.build.ContainerFactory; import htsjdk.samtools.cram.build.Sam2CramRecordFactory; import htsjdk.samtools.cram.common.CramVersions; import htsjdk.samtools.cram.ref.ReferenceTracks; import java.util.HashMap; import java.util.Map; import net.sf.cram.ref.ReferenceSource; /** * Conversion context: holds all info required for converting SAMRecords to CRAM * container. * * @author vadim * */ public class CramContext { private static final int RECORDS_PER_SLICE = 10000; public SAMFileHeader samFileHeader; public ReferenceSource referenceSource; public Map<Integer, ReferenceTracks> tracks = new HashMap<Integer, ReferenceTracks>(); public CramLossyOptions lossyOptions; public long recordIndex = 0; Sam2CramRecordFactory sam2cramFactory; ContainerFactory containerFactory; public CramContext(SAMFileHeader samFileHeader, ReferenceSource referenceSource, CramLossyOptions lossyOptions) { this.samFileHeader = samFileHeader; this.referenceSource = referenceSource; this.lossyOptions = lossyOptions; sam2cramFactory = new Sam2CramRecordFactory(null, samFileHeader, CramVersions.CRAM_v3); sam2cramFactory.captureAllTags = lossyOptions.isCaptureAllTags(); sam2cramFactory.captureTags.addAll(lossyOptions.getCaptureTags()); sam2cramFactory.ignoreTags.addAll(lossyOptions.getIgnoreTags()); containerFactory = new ContainerFactory(samFileHeader, RECORDS_PER_SLICE); } }