private void setupWriter(SAMFileHeader header) { if ( !NO_PG_TAG ) { final SAMProgramRecord programRecord = createProgramRecord(); List<SAMProgramRecord> oldRecords = header.getProgramRecords(); List<SAMProgramRecord> newRecords = new ArrayList<SAMProgramRecord>(oldRecords.size()+1); for ( SAMProgramRecord record : oldRecords ) { if ( !record.getId().startsWith(PROGRAM_RECORD_NAME) || KEEP_ALL_PG_RECORDS ) newRecords.add(record); } newRecords.add(programRecord); header.setProgramRecords(newRecords); } writer.writeHeader(header); writer.setPresorted(true); }
/** * Creates a program record for the program, adds it to the list of program records (@PG tags) in the bam file and sets * up the writer with the header and presorted status. * * @param originalHeader original header * @param programRecord the program record for this program */ public static SAMFileHeader setupWriter(final SAMFileHeader originalHeader, final SAMProgramRecord programRecord) { final SAMFileHeader header = originalHeader.clone(); final List<SAMProgramRecord> oldRecords = header.getProgramRecords(); final List<SAMProgramRecord> newRecords = new ArrayList<SAMProgramRecord>(oldRecords.size()+1); for ( SAMProgramRecord record : oldRecords ) if ( (programRecord != null && !record.getId().startsWith(programRecord.getId()))) newRecords.add(record); if (programRecord != null) { newRecords.add(programRecord); header.setProgramRecords(newRecords); } return header; }
private SAMFileHeader createOutHeader( final SAMFileHeader inHeader, final SAMFileHeader.SortOrder sortOrder, final boolean removeAlignmentInformation) { final SAMFileHeader outHeader = new SAMFileHeader(); outHeader.setSortOrder(sortOrder); if (!removeAlignmentInformation) { outHeader.setSequenceDictionary(inHeader.getSequenceDictionary()); outHeader.setProgramRecords(inHeader.getProgramRecords()); } return outHeader; }
private SAMFileHeader createOutHeader( final SAMFileHeader inHeader, final SAMFileHeader.SortOrder sortOrder, final boolean removeAlignmentInformation) { final SAMFileHeader outHeader = new SAMFileHeader(); outHeader.setSortOrder(sortOrder); if (!removeAlignmentInformation) { outHeader.setSequenceDictionary(inHeader.getSequenceDictionary()); outHeader.setProgramRecords(inHeader.getProgramRecords()); } return outHeader; }
protected ReadDestination(final SAMFileHeader header, final String readGroupID) { // prepare the bam header if ( header == null ) throw new IllegalArgumentException("header cannot be null"); bamHeader = new SAMFileHeader(); bamHeader.setSequenceDictionary(header.getSequenceDictionary()); bamHeader.setSortOrder(SAMFileHeader.SortOrder.coordinate); bamHeader.setProgramRecords(header.getProgramRecords()); // include the original read groups plus an artificial one for haplotypes final List<SAMReadGroupRecord> readGroups = new ArrayList<>(header.getReadGroups()); SAMReadGroupRecord rg = new SAMReadGroupRecord(readGroupID); rg.setSample("HC"); rg.setSequencingCenter("BI"); readGroups.add(rg); bamHeader.setReadGroups(readGroups); }
init.reader.getFileHeader().setProgramRecords(new ArrayList<SAMProgramRecord>());
public static SAMFileHeader duplicateSAMFileHeader(SAMFileHeader toCopy) { SAMFileHeader copy = new SAMFileHeader(); copy.setSortOrder(toCopy.getSortOrder()); copy.setGroupOrder(toCopy.getGroupOrder()); copy.setProgramRecords(toCopy.getProgramRecords()); copy.setReadGroups(toCopy.getReadGroups()); copy.setSequenceDictionary(toCopy.getSequenceDictionary()); for (Map.Entry<String, String> e : toCopy.getAttributes()) copy.setAttribute(e.getKey(), e.getValue()); return copy; }
@Override List<? extends AbstractSAMHeaderRecord> createGroups(final String[] groupIds) { final List<SamReader> readers = new ArrayList<SamReader>(); for (final String groupId : groupIds) { final SamReader samReader = newFileReader(); final List<SAMProgramRecord> records = new ArrayList<SAMProgramRecord>(); final SAMProgramRecord record = new SAMProgramRecord(groupId); records.add(record); samReader.getFileHeader().setProgramRecords(records); readers.add(samReader); } final List<SAMFileHeader> headers = new ArrayList<SAMFileHeader>(); for (final SamReader reader : readers) { headers.add(reader.getFileHeader()); } CloserUtil.close(readers); final SamFileHeaderMerger fileHeaderMerger = new SamFileHeaderMerger(SAMFileHeader.SortOrder.coordinate, headers, false); return fileHeaderMerger.getMergedHeader().getProgramRecords(); }
@Override public void initialize() { // initialize sample -> read group map final List<SAMReadGroupRecord> sampleRGs = new ArrayList<SAMReadGroupRecord>(); for ( final String sample : SampleUtils.getUniqueSamplesFromRods(getToolkit(), Arrays.asList(variantCollection.variants.getName())) ) { final SAMReadGroupRecord rg = createRG(sample); sampleRGs.add(rg); sample2RG.put(sample, rg); } // initialize BAM headers header = new SAMFileHeader(); header.setSequenceDictionary(getToolkit().getReferenceDataSource().getReference().getSequenceDictionary()); header.setSortOrder(SAMFileHeader.SortOrder.coordinate); header.setReadGroups(sampleRGs); final SAMProgramRecord programRecord = new SAMProgramRecord(PROGRAM_RECORD_NAME); if ( !NO_PG_TAG ) { programRecord.setProgramVersion(CommandLineProgram.getVersionNumber()); programRecord.setCommandLine(getToolkit().createApproximateCommandLineArgumentString(getToolkit(), this)); } header.setProgramRecords(Arrays.asList(programRecord)); readWriter.setPresorted(false); readWriter.writeHeader(header); halfReadLength = readLength / 2; errorRate = QualityUtils.qualToErrorProb((byte)phredErrorRate); readQuals = new byte[readLength]; Arrays.fill(readQuals, (byte)phredErrorRate); if ( samplingMode == ReadSamplingMode.POISSON ) poissonRandom = new Poisson(readDepth, new MersenneTwister((int)RANDOM_SEED)); }
samHeader.setProgramRecords(programs);
samHeader.setProgramRecords(programs);