Esempio n. 1
1
 public static String prettyPrintSequenceRecords(SAMSequenceDictionary sequenceDictionary) {
   String[] sequenceRecordNames = new String[sequenceDictionary.size()];
   int sequenceRecordIndex = 0;
   for (SAMSequenceRecord sequenceRecord : sequenceDictionary.getSequences())
     sequenceRecordNames[sequenceRecordIndex++] = sequenceRecord.getSequenceName();
   return Arrays.deepToString(sequenceRecordNames);
 }
Esempio n. 2
0
 /**
  * Check to ensure that the alignment makes sense based on the contents of the header.
  *
  * @param header The SAM file header.
  * @param read The read to verify.
  * @return true if alignment agrees with header, false otherwise.
  */
 public static boolean alignmentAgreesWithHeader(final SAMFileHeader header, final GATKRead read) {
   final int referenceIndex = getReferenceIndex(read, header);
   // Read is aligned to nonexistent contig
   if (!read.isUnmapped() && referenceIndex == SAMRecord.NO_ALIGNMENT_REFERENCE_INDEX) {
     return false;
   }
   final SAMSequenceRecord contigHeader = header.getSequence(referenceIndex);
   // Read is aligned to a point after the end of the contig
   return read.isUnmapped() || read.getStart() <= contigHeader.getSequenceLength();
 }
Esempio n. 3
0
  private List<String> getReferenceNames(final URL bamFile) throws IOException {

    final SamReader reader =
        SamReaderFactory.makeDefault().open(SamInputResource.of(bamFile.openStream()));

    final List<String> result = new ArrayList<String>();
    final List<SAMSequenceRecord> seqRecords =
        reader.getFileHeader().getSequenceDictionary().getSequences();
    for (final SAMSequenceRecord seqRecord : seqRecords) {
      if (seqRecord.getSequenceName() != null) {
        result.add(seqRecord.getSequenceName());
      }
    }
    reader.close();
    return result;
  }
Esempio n. 4
0
 public List<String> getSequenceNames() {
   if (sequenceNames == null) {
     SAMFileHeader header = getFileHeader();
     if (header == null) {
       return null;
     }
     sequenceNames = new ArrayList();
     List<SAMSequenceRecord> records = header.getSequenceDictionary().getSequences();
     if (records.size() > 0) {
       for (SAMSequenceRecord rec : header.getSequenceDictionary().getSequences()) {
         String chr = rec.getSequenceName();
         sequenceNames.add(chr);
       }
     }
   }
   return sequenceNames;
 }
 @Test
 public void testSequenceDictionaryMerge() {
   final String sd1 = sq1 + sq2 + sq5;
   final String sd2 = sq2 + sq3 + sq4;
   SAMFileReader reader1 =
       new SAMFileReader(new ByteArrayInputStream(StringUtil.stringToBytes(sd1)));
   SAMFileReader reader2 =
       new SAMFileReader(new ByteArrayInputStream(StringUtil.stringToBytes(sd2)));
   final List<SAMFileHeader> inputHeaders =
       Arrays.asList(reader1.getFileHeader(), reader2.getFileHeader());
   SamFileHeaderMerger merger =
       new SamFileHeaderMerger(SAMFileHeader.SortOrder.coordinate, inputHeaders, true);
   final SAMFileHeader mergedHeader = merger.getMergedHeader();
   for (final SAMFileHeader inputHeader : inputHeaders) {
     int prevTargetIndex = -1;
     for (final SAMSequenceRecord sequenceRecord :
         inputHeader.getSequenceDictionary().getSequences()) {
       final int targetIndex = mergedHeader.getSequenceIndex(sequenceRecord.getSequenceName());
       Assert.assertNotSame(targetIndex, -1);
       Assert.assertTrue(prevTargetIndex < targetIndex);
       prevTargetIndex = targetIndex;
     }
   }
 }