Package net.sf.cram.structure

Examples of net.sf.cram.structure.Container


    return readContainer(samFileHeader, is, 0, Integer.MAX_VALUE);
  }

  public static Container readContainerHeader(InputStream is)
      throws IOException {
    Container c = new Container();
    ContainerHeaderIO chio = new ContainerHeaderIO();
    if (!chio.readContainerHeader(c, is)) return null ;
    return c;
  }
View Full Code Here


  public static Container readContainer(SAMFileHeader samFileHeader,
      InputStream is, int fromSlice, int howManySlices)
      throws IOException {

    long time1 = System.nanoTime();
    Container c = readContainerHeader(is);
    if (c == null) return null ;

    CompressionHeaderBLock chb = new CompressionHeaderBLock(is);
    c.h = chb.getCompressionHeader();
    howManySlices = Math.min(c.landmarks.length, howManySlices);

    if (fromSlice > 0)
      is.skip(c.landmarks[fromSlice]);

    SliceIO sio = new SliceIO();
    List<Slice> slices = new ArrayList<Slice>();
    for (int s = fromSlice; s < howManySlices - fromSlice; s++) {
      Slice slice = new Slice();
      sio.readSliceHeadBlock(slice, is);
      sio.readSliceBlocks(slice, true, is);
      slices.add(slice) ;
    }

    c.slices = (Slice[]) slices.toArray(new Slice[slices.size()]);

    calculateSliceOffsetsAndSizes(c);

    long time2 = System.nanoTime();

    log.debug("READ CONTAINER: " + c.toString());
    c.readTime = time2 - time1;

    return c;
  }
View Full Code Here

    block.method = BlockCompressionMethod.RAW.ordinal();
    block.contentId = 0;
    block.contentType = BlockContentType.FILE_HEADER;
    block.compress();

    Container c = new Container();
    c.blockCount = 1;
    c.blocks = new Block[] { block };
    c.landmarks = new int[0];
    c.slices = new Slice[0];
    c.alignmentSpan = 0;
View Full Code Here

    return len + baos.size();
  }

  private static SAMFileHeader readSAMFileHeader(String id, InputStream is)
      throws IOException {
    Container readContainerHeader = readContainerHeader(is);
    Block b = new Block(is, true, true);

    is = new ByteArrayInputStream(b.getRawContent());

    ByteBuffer buf = ByteBuffer.allocate(4);
View Full Code Here

    samFileWriterFactory.setUseAsyncIo(true);

    SAMFileWriter writer = createSAMFileWriter(params, cramHeader,
        samFileWriterFactory);

    Container c = null;
    AlignmentSliceQuery location = null;
    if (!params.locations.isEmpty() && params.cramFile != null
        && is instanceof SeekableStream) {
      if (params.locations.size() > 1)
        throw new RuntimeException("Only one location is supported.");
View Full Code Here

  }

  private static Container skipToContainer(File cramFile,
      CramHeader cramHeader, SeekableStream cramFileInputStream,
      AlignmentSliceQuery location) throws IOException {
    Container c = null;

    { // try crai:
      List<CramIndex.Entry> entries = getCraiEntries(cramFile,
          cramHeader, cramFileInputStream, location);
      if (entries != null) {
View Full Code Here

    indexer = new CRAMIndexer(output, samFileHeader);
  }

  private boolean nextContainer() throws IOException {
    long offset = is.getCount();
    Container c = ReadWrite.readContainer(samFileHeader, is);
    if (c == null)
      return false;
    c.offset = offset;

    int i = 0;
    for (Slice slice : c.slices) {
      slice.containerOffset = offset;
      slice.index = i++;
      indexer.processAlignment(slice);
    }

    log.info("INDEXED: " + c.toString());
    return true;
  }
View Full Code Here

  }

  private boolean nextContainer() throws IOException {
    long offset = is.getCount();
    Container c = ReadWrite.readContainer(samFileHeader, is);
    if (c == null)
      return false;
    c.offset = offset;
    index.addContainer(c);
    log.info("INDEXED: " + c.toString());
    return true;
  }
View Full Code Here

              samFileReader.getFileHeader(), ref, preservation,
              params.captureAllTags, params.captureTags,
              params.ignoreTags);
          samRecords.clear();

          Container container = BLOCK_PROTO.buildContainer(records,
              samFileReader.getFileHeader(),
              params.preserveReadNames, globalRecordCounter,
              null, true);
          for (Slice s : container.slices) {
            if (s.alignmentStart < 1) {
              s.refMD5 = new byte[16];
              Arrays.fill(s.refMD5, (byte) 0);
              continue;
            }

            md5_MessageDigest.reset();

            int span = Math.min(s.alignmentSpan, ref.length
                - s.alignmentStart);
            if (s.alignmentStart == 0)
              System.out.println("gotcha");

            md5_MessageDigest.update(ref, s.alignmentStart - 1,
                span);

            String sliceRef = new String(ref, s.alignmentStart - 1,
                Math.min(span, 30));
            s.refMD5 = md5_MessageDigest.digest();
            log.debug("Slice ref starts with: " + sliceRef);
            log.debug("Slice ref md5: "
                + (String.format("%032x", new BigInteger(1,
                    s.refMD5))));
          }
          globalRecordCounter += records.size();
          records.clear();
          long len = ReadWrite.writeContainer(container, os);
          container.offset = offset;
          offset += len;

          log.info(String
              .format("CONTAINER WRITE TIMES: header build time %dms, slices build time %dms, io time %dms.",
                  container.buildHeaderTime / 1000000,
                  container.buildSlicesTime / 1000000,
                  container.writeTime / 1000000));

          for (Slice s : container.slices) {
            coreBytes += s.coreBlock.getCompressedContent().length;
            for (Integer i : s.external.keySet())
              externalBytes[i] += s.external.get(i)
                  .getCompressedContent().length;
          }
        }
      }

      if (prevSeqId != samRecord.getReferenceIndex()) {
        if (samRecord.getReferenceIndex() != SAMRecord.NO_ALIGNMENT_REFERENCE_INDEX) {
          sequence = Utils
              .trySequenceNameVariants(referenceSequenceFile,
                  samRecord.getReferenceName());
          ref = sequence.getBases();
          {
            // hack:
            int newLines = 0;
            for (byte b : ref)
              if (b == 10)
                newLines++;
            byte[] ref2 = new byte[ref.length - newLines];
            int j = 0;
            for (int i = 0; i < ref.length; i++)
              if (ref[i] == 10)
                continue;
              else
                ref2[j++] = ref[i];
            ref = ref2;
          }
        } else
          ref = new byte[] {};
        prevSeqId = samRecord.getReferenceIndex();
      }

      samRecords.add(samRecord);
      bases += samRecord.getReadLength();

      if (params.maxRecords-- < 1)
        break;
    } while (iterator.hasNext());

    { // copied for now, should be a subroutine:
      if (!samRecords.isEmpty()) {
        List<CramRecord> records = convert(samRecords,
            samFileReader.getFileHeader(), ref, preservation,
            params.captureAllTags, params.captureTags,
            params.ignoreTags);
        samRecords.clear();
        Container container = BLOCK_PROTO.buildContainer(records,
            samFileReader.getFileHeader(),
            params.preserveReadNames, globalRecordCounter, null,
            true);
        for (Slice s : container.slices) {
          if (s.alignmentStart < 1) {
View Full Code Here

    h.readNamesIncluded = preserveReadNames;
    h.AP_seriesDelta = true;

    List<Slice> slices = new ArrayList<Slice>();

    Container c = new Container();
    c.h = h;
    c.nofRecords = records.size();
    c.globalRecordCounter = globalRecordCounter;
    c.bases = 0;
    c.blockCount = 0;
View Full Code Here

TOP

Related Classes of net.sf.cram.structure.Container

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.