Ejemplo n.º 1
0
  @Test
  public void testBamIntegers() throws IOException {
    final List<String> errorMessages = new ArrayList<String>();
    final SamReader bamReader = SamReaderFactory.makeDefault().open(BAM_INPUT);
    final File bamOutput = File.createTempFile("test", ".bam");
    final File samOutput = File.createTempFile("test", ".sam");
    final SAMFileWriter samWriter =
        new SAMFileWriterFactory().makeWriter(bamReader.getFileHeader(), true, samOutput, null);
    final SAMFileWriter bamWriter =
        new SAMFileWriterFactory().makeWriter(bamReader.getFileHeader(), true, bamOutput, null);
    final SAMRecordIterator iterator = bamReader.iterator();
    while (iterator.hasNext()) {
      try {
        final SAMRecord rec = iterator.next();
        samWriter.addAlignment(rec);
        bamWriter.addAlignment(rec);
      } catch (final Throwable e) {
        System.out.println(e.getMessage());
        errorMessages.add(e.getMessage());
      }
    }

    CloserUtil.close(bamReader);
    samWriter.close();
    bamWriter.close();
    Assert.assertEquals(errorMessages.size(), 0);
    bamOutput.deleteOnExit();
    samOutput.deleteOnExit();
  }
Ejemplo n.º 2
0
 private int countRecordsInQueryInterval(final SamReader reader, final QueryInterval query) {
   final SAMRecordIterator iter = reader.queryOverlapping(new QueryInterval[] {query});
   int count = 0;
   while (iter.hasNext()) {
     iter.next();
     count++;
   }
   iter.close();
   return count;
 }
Ejemplo n.º 3
0
 private int countRecords(final SamReader reader) {
   int count = 0;
   try (final SAMRecordIterator iter = reader.iterator()) {
     while (iter.hasNext()) {
       iter.next();
       count++;
     }
   }
   return count;
 }
Ejemplo n.º 4
0
  private int countAlignmentsInWindow(
      int reference, int window, SAMFileReader reader, int expectedCount) {
    final int SIXTEEN_K = 1 << 14; // 1 << LinearIndex.BAM_LIDX_SHIFT
    final int start = window >> 14; // window * SIXTEEN_K;
    final int stop = ((window + 1) >> 14) - 1; // (window + 1 * SIXTEEN_K) - 1;

    final String chr = reader.getFileHeader().getSequence(reference).getSequenceName();

    // get records for the entire linear index window
    SAMRecordIterator iter = reader.queryOverlapping(chr, start, stop);
    SAMRecord rec;
    int count = 0;
    while (iter.hasNext()) {
      rec = iter.next();
      count++;
      if (expectedCount == -1) System.err.println(rec.getReadName());
    }
    iter.close();
    return count;
  }
Ejemplo n.º 5
0
  @Test(dataProvider = "composeAllPermutationsOfSamInputResource")
  public void queryInputResourcePermutation(final SamInputResource resource) throws IOException {
    final SamReader reader = SamReaderFactory.makeDefault().open(resource);
    LOG.info(String.format("Query from %s ...", resource));
    if (reader.hasIndex()) {
      final StopWatch stopWatch = new StopWatch();
      stopWatch.start();
      final SAMRecordIterator q1 = reader.query("chr1", 500000, 100000000, true);
      observedRecordOrdering1.add(Iterables.slurp(q1));
      q1.close();
      final SAMRecordIterator q20 = reader.query("chr20", 1, 1000000, true);
      observedRecordOrdering20.add(Iterables.slurp(q20));
      q20.close();
      final SAMRecordIterator q3 = reader.query("chr3", 1, 10000000, true);
      observedRecordOrdering3.add(Iterables.slurp(q3));
      q3.close();
      stopWatch.stop();
      LOG.info(String.format("Finished queries in %sms", stopWatch.getElapsedTime()));

      Assert.assertEquals(
          observedRecordOrdering1.size(), 1, "read different records for chromosome 1");
      Assert.assertEquals(
          observedRecordOrdering20.size(), 1, "read different records for chromosome 20");
      Assert.assertEquals(
          observedRecordOrdering3.size(), 1, "read different records for chromosome 3");
    } else if (resource.indexMaybe() != null) {
      LOG.warn("Resource has an index source, but is not indexed: " + resource);
    } else {
      LOG.info("Skipping query operation: no index.");
    }
    reader.close();
  }