Java Code Examples for htsjdk.samtools.reference.ReferenceSequenceFileWalker#get()
The following examples show how to use
htsjdk.samtools.reference.ReferenceSequenceFileWalker#get() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: GatherGeneGCLength.java From Drop-seq with MIT License | 4 votes |
@Override protected int doWork() { IOUtil.assertFileIsReadable(ANNOTATIONS_FILE); IOUtil.assertFileIsWritable(this.OUTPUT); PrintStream out = new ErrorCheckingPrintStream(IOUtil.openFileForWriting(OUTPUT)); writeHeader(out); PrintStream outTranscript = null; if (this.OUTPUT_TRANSCRIPT_LEVEL!=null) { outTranscript = new ErrorCheckingPrintStream(IOUtil.openFileForWriting(OUTPUT_TRANSCRIPT_LEVEL)); writeHeaderTranscript(outTranscript); } FastaSequenceFileWriter outSequence = null; if (this.OUTPUT_TRANSCRIPT_SEQUENCES!=null) { IOUtil.assertFileIsWritable(this.OUTPUT_TRANSCRIPT_SEQUENCES); outSequence = new FastaSequenceFileWriter (this.OUTPUT_TRANSCRIPT_SEQUENCES); } ReferenceSequenceFileWalker refFileWalker = new ReferenceSequenceFileWalker(REFERENCE_SEQUENCE); SAMSequenceDictionary dict= refFileWalker.getSequenceDictionary(); if (dict==null) { CloserUtil.close(refFileWalker); throw new IllegalArgumentException("Reference file" + this.REFERENCE_SEQUENCE.getAbsolutePath()+" is missing a dictionary file [.dict]. Please make one!"); } OverlapDetector<Gene> geneOverlapDetector= GeneAnnotationReader.loadAnnotationsFile(ANNOTATIONS_FILE, dict); List<SAMSequenceRecord> records = dict.getSequences(); for (SAMSequenceRecord record: records) { String seqName = record.getSequenceName(); int seqIndex=dict.getSequenceIndex(seqName); ReferenceSequence fastaRef=refFileWalker.get(seqIndex); // get the genes for this contig. Interval i = new Interval(seqName, 1, record.getSequenceLength()); Collection< Gene> genes = geneOverlapDetector.getOverlaps(i); for (Gene g: genes) { List<GCResult> gcList = calculateGCContentGene(g, fastaRef, dict); if (this.OUTPUT_TRANSCRIPT_LEVEL!=null) writeResultTranscript(gcList, outTranscript); GCIsoformSummary summary = new GCIsoformSummary(g, gcList); if (this.OUTPUT_TRANSCRIPT_SEQUENCES!=null) writeTranscriptSequence(g, fastaRef, dict, outSequence); GCResult gc = calculateGCContentUnionExons(g, fastaRef, dict); writeResult(gc, summary, out); } } CloserUtil.close(refFileWalker); CloserUtil.close(out); if (this.OUTPUT_TRANSCRIPT_LEVEL!=null) CloserUtil.close(outTranscript); if (this.OUTPUT_TRANSCRIPT_SEQUENCES!=null) CloserUtil.close(outSequence); return 0; }
Example 2
Source File: CollectRrbsMetrics.java From picard with MIT License | 4 votes |
@Override protected int doWork() { if (!METRICS_FILE_PREFIX.endsWith(".")) { METRICS_FILE_PREFIX = METRICS_FILE_PREFIX + "."; } final File SUMMARY_OUT = new File(METRICS_FILE_PREFIX + SUMMARY_FILE_EXTENSION); final File DETAILS_OUT = new File(METRICS_FILE_PREFIX + DETAIL_FILE_EXTENSION); final File PLOTS_OUT = new File(METRICS_FILE_PREFIX + PDF_FILE_EXTENSION); assertIoFiles(SUMMARY_OUT, DETAILS_OUT, PLOTS_OUT); final SamReader samReader = SamReaderFactory.makeDefault().open(INPUT); if (!ASSUME_SORTED && samReader.getFileHeader().getSortOrder() != SAMFileHeader.SortOrder.coordinate) { throw new PicardException("The input file " + INPUT.getAbsolutePath() + " does not appear to be coordinate sorted"); } final ReferenceSequenceFileWalker refWalker = new ReferenceSequenceFileWalker(REFERENCE_SEQUENCE); final ProgressLogger progressLogger = new ProgressLogger(log); final RrbsMetricsCollector metricsCollector = new RrbsMetricsCollector(METRIC_ACCUMULATION_LEVEL, samReader.getFileHeader().getReadGroups(), C_QUALITY_THRESHOLD, NEXT_BASE_QUALITY_THRESHOLD, MINIMUM_READ_LENGTH, MAX_MISMATCH_RATE); for (final SAMRecord samRecord : samReader) { progressLogger.record(samRecord); if (!samRecord.getReadUnmappedFlag() && !isSequenceFiltered(samRecord.getReferenceName())) { final ReferenceSequence referenceSequence = refWalker.get(samRecord.getReferenceIndex()); metricsCollector.acceptRecord(samRecord, referenceSequence); } } metricsCollector.finish(); final MetricsFile<RrbsMetrics, Comparable<?>> rrbsMetrics = getMetricsFile(); metricsCollector.addAllLevelsToFile(rrbsMetrics); // Using RrbsMetrics as a way to get both of the metrics objects through the MultiLevelCollector. Once // we get it out split it apart to the two separate MetricsFiles and write them to file final MetricsFile<RrbsSummaryMetrics, ?> summaryFile = getMetricsFile(); final MetricsFile<RrbsCpgDetailMetrics, ?> detailsFile = getMetricsFile(); for (final RrbsMetrics rrbsMetric : rrbsMetrics.getMetrics()) { summaryFile.addMetric(rrbsMetric.getSummaryMetrics()); for (final RrbsCpgDetailMetrics detailMetric : rrbsMetric.getDetailMetrics()) { detailsFile.addMetric(detailMetric); } } summaryFile.write(SUMMARY_OUT); detailsFile.write(DETAILS_OUT); RExecutor.executeFromClasspath(R_SCRIPT, DETAILS_OUT.getAbsolutePath(), SUMMARY_OUT.getAbsolutePath(), PLOTS_OUT.getAbsolutePath()); CloserUtil.close(samReader); return 0; }