Java Code Examples for htsjdk.samtools.SAMRecord#getMateReferenceName()
The following examples show how to use
htsjdk.samtools.SAMRecord#getMateReferenceName() .
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: ReadRecord.java From hmftools with GNU General Public License v3.0 | 5 votes |
public static ReadRecord from(final SAMRecord record) { ReadRecord read = new ReadRecord( record.getReadName(), record.getReferenceName(), record.getStart(), record.getEnd(), record.getReadString(), record.getCigar(), record.getInferredInsertSize(), record.getFlags(), record.getMateReferenceName(), record.getMateAlignmentStart()); read.setSuppAlignment(record.getStringAttribute(SUPPLEMENTARY_ATTRIBUTE)); return read; }
Example 2
Source File: SamRecordComparision.java From cramtools with Apache License 2.0 | 5 votes |
public static Object getValue(SAMRecord record, FIELD_TYPE field, String tagId) { if (field == null) throw new IllegalArgumentException("Record field is null."); switch (field) { case QNAME: return record.getReadName(); case FLAG: return Integer.toString(record.getFlags()); case RNAME: return record.getReferenceName(); case POS: return Integer.toString(record.getAlignmentStart()); case MAPQ: return Integer.toString(record.getMappingQuality()); case CIGAR: return record.getCigarString(); case RNEXT: return record.getMateReferenceName(); case PNEXT: return Integer.toString(record.getMateAlignmentStart()); case TLEN: return Integer.toString(record.getInferredInsertSize()); case SEQ: return record.getReadString(); case QUAL: return record.getBaseQualityString(); case TAG: if (tagId == null) throw new IllegalArgumentException("Tag mismatch reqiues tag id. "); return record.getAttribute(tagId); default: throw new IllegalArgumentException("Unknown record field: " + field.name()); } }
Example 3
Source File: SAMRecordField.java From cramtools with Apache License 2.0 | 5 votes |
public Object getValue(SAMRecord record) { switch (type) { case QNAME: return record.getReadName(); case FLAG: return Integer.toString(record.getFlags()); case RNAME: return record.getReferenceName(); case POS: return Integer.toString(record.getAlignmentStart()); case MAPQ: return Integer.toString(record.getMappingQuality()); case CIGAR: return record.getCigarString(); case RNEXT: return record.getMateReferenceName(); case PNEXT: return Integer.toString(record.getMateAlignmentStart()); case TLEN: return Integer.toString(record.getInferredInsertSize()); case SEQ: return record.getReadString(); case QUAL: return record.getBaseQualityString(); case TAG: if (tagId == null) throw new IllegalArgumentException("Tag mismatch reqiues tag id. "); return record.getAttribute(tagId); default: throw new IllegalArgumentException("Unknown record field: " + type.name()); } }
Example 4
Source File: FilterBam.java From Drop-seq with MIT License | 4 votes |
@Override protected int doWork() { IOUtil.assertFileIsReadable(INPUT); IOUtil.assertFileIsWritable(OUTPUT); buildPatterns(); SamReader in = SamReaderFactory.makeDefault().open(INPUT); SAMFileHeader fileHeader = editSequenceDictionary(in.getFileHeader().clone()); SamHeaderUtil.addPgRecord(fileHeader, this); SAMFileWriter out = new SAMFileWriterFactory().makeSAMOrBAMWriter(fileHeader, true, OUTPUT); ProgressLogger progLog=new ProgressLogger(log); final boolean sequencesRemoved = fileHeader.getSequenceDictionary().getSequences().size() != in.getFileHeader().getSequenceDictionary().getSequences().size(); FilteredReadsMetric m = new FilteredReadsMetric(); for (final SAMRecord r : in) { progLog.record(r); if (!filterRead(r)) { String sequenceName = stripReferencePrefix(r.getReferenceName()); String mateSequenceName = null; if (r.getMateReferenceIndex() != -1) mateSequenceName = stripReferencePrefix(r.getMateReferenceName()); if (sequencesRemoved || sequenceName != null) { if (sequenceName == null) sequenceName = r.getReferenceName(); // Even if sequence name has not been edited, if sequences have been removed, need to set // reference name again to invalidate reference index cache. r.setReferenceName(sequenceName); } if (r.getMateReferenceIndex() != -1 && (sequencesRemoved || mateSequenceName != null)) { if (mateSequenceName == null) mateSequenceName = r.getMateReferenceName(); // It's possible that the mate was mapped to a reference sequence that has been dropped from // the sequence dictionary. If so, set the mate to be unmapped. if (fileHeader.getSequenceDictionary().getSequence(mateSequenceName) != null) r.setMateReferenceName(mateSequenceName); else { r.setMateUnmappedFlag(true); r.setMateReferenceIndex(SAMRecord.NO_ALIGNMENT_REFERENCE_INDEX); r.setMateAlignmentStart(0); } } out.addAlignment(r); m.READS_ACCEPTED++; } else { m.READS_REJECTED++; } } // write the summary if the summary file is not null. writeSummary(this.SUMMARY, m); CloserUtil.close(in); out.close(); FilterProgramUtils.reportAndCheckFilterResults("reads", m.READS_ACCEPTED, m.READS_REJECTED, PASSING_READ_THRESHOLD, log); return (0); }
Example 5
Source File: BamToDetailsConversion.java From chipster with MIT License | 4 votes |
/** * Find reads in a given range. * * <p> * TODO add cigar to the list of returned values * <p> * TODO add pair information to the list of returned values * * @param request * @return * @throws InterruptedException */ @Override protected void processDataRequest(DataRequest request) throws InterruptedException { // Read the given region CloseableIterator<SAMRecord> iterator = dataSource.query(request.start.chr, request.start.bp.intValue(), request.end.bp.intValue()); // Produce results while (iterator.hasNext()) { List<Feature> responseList = new LinkedList<Feature>(); // Split results into chunks for (int c = 0; c < RESULT_CHUNK_SIZE && iterator.hasNext(); c++) { SAMRecord record = iterator.next(); // Region for this read Region recordRegion = new Region((long) record.getAlignmentStart(), (long) record.getAlignmentEnd(), request.start.chr); // Values for this read LinkedHashMap<DataType, Object> values = new LinkedHashMap<DataType, Object>(); Feature read = new Feature(recordRegion, values); if (request.getRequestedContents().contains(DataType.ID)) { values.put(DataType.ID, record.getReadName()); } if (request.getRequestedContents().contains(DataType.STRAND)) { values.put(DataType.STRAND, BamUtils.getStrand(record, coverageType)); } if (request.getRequestedContents().contains(DataType.QUALITY)) { values.put(DataType.QUALITY, record.getBaseQualityString()); } if (request.getRequestedContents().contains(DataType.CIGAR)) { Cigar cigar = new Cigar(read, record.getCigar()); values.put(DataType.CIGAR, cigar); } // TODO Deal with "=" and "N" in read string if (request.getRequestedContents().contains(DataType.SEQUENCE)) { String seq = record.getReadString(); values.put(DataType.SEQUENCE, seq); } if (request.getRequestedContents().contains(DataType.MATE_POSITION)) { BpCoord mate = new BpCoord((Long)(long)record.getMateAlignmentStart(), new Chromosome(record.getMateReferenceName())); values.put(DataType.MATE_POSITION, mate); } if (request.getRequestedContents().contains(DataType.BAM_TAG_NH)) { Object ng = record.getAttribute("NH"); if (ng != null) { values.put(DataType.BAM_TAG_NH, (Integer)record.getAttribute("NH")); } } /* * NOTE! RegionContents created from the same read area has to be equal in methods equals, hash and compareTo. Primary types * should be ok, but objects (including tables) has to be handled in those methods separately. Otherwise tracks keep adding * the same reads to their read sets again and again. */ responseList.add(read); } // Send result super.createDataResult(new DataResult(request.getStatus(), responseList)); } // We are done iterator.close(); }