Package net.sf.samtools

Examples of net.sf.samtools.SAMFileReader


    }
  };

  public static void main(String[] args) {
    File bamFile = new File(args[0]);
    SAMFileReader reader = new SAMFileReader(bamFile);

    ReferenceSequenceFile ref = ReferenceSequenceFileFactory.getReferenceSequenceFile(new File(args[1]));
    SAMRecordIterator iterator = reader.iterator();
    String refName = iterator.next().getReferenceName();
    iterator.close();
    ReferenceSequence sequence = ref.getSequence(refName);

    iterator = reader.iterator();
    Sam2CramRecordFactory factory = new Sam2CramRecordFactory(sequence.getBases());
    factory.preserveReadNames = false;
    factory.captureAllTags = false;
    factory.captureUnmappedBases = true;
    factory.captureUnmappedScores = true;
    factory.preserveReadNames = true;

    List<CramRecord> cramRecords = new ArrayList<CramRecord>();
    List<SAMRecord> samRecords = new ArrayList<SAMRecord>();
    for (int i = 0; i < 100000; i++) {
      SAMRecord samRecord = iterator.next();
      samRecords.add(samRecord);
      CramRecord cramRecord = factory.createCramRecord(samRecord);
      // cramRecord.setReadName(samRecord.getReadName()) ;
      cramRecord.counter = i;
      cramRecords.add(cramRecord);

      // a.addSAMRecord(samRecord) ;
    }
    reader.close();

    long time1 = System.nanoTime();
    new SpotAssemblyTest().connect(cramRecords);
    long time2 = System.nanoTime();
View Full Code Here


    scFactory.captureUnmappedScores = true;
    scFactory.losslessQS = true;
    scFactory.preserveReadNames = true;
    SequenceBaseProvider provider = new ByteArraySequenceBaseProvider(refBytes);

    SAMFileReader reader = new SAMFileReader(bamFile);
    SAMRecordIterator iterator = reader.query(seqName, 0, 0, false);
    List<CramRecord> records = new ArrayList<CramRecord>();

    PairedTemplateAssembler a = new PairedTemplateAssembler();
    int counter = 0;
    int bases = 0;
    long size = 0;
   
    Definition definition = new Definition();
    definition.contentId = "input.bam".getBytes();
    definition.formatMajor = 1;
    definition.formatMinor = 0;
    definition.magick = "CRAM".getBytes();
    Format format = new FormatFactory().createFormat(definition);

    SAMRecord samRecord = null;
    CramHeader cramHeader = createCramHeader(reader.getFileHeader());
    ByteArrayOutputStream hBaos= new ByteArrayOutputStream() ;
    Container hC = new Container() ;
    Block hBlock = new Block() ;
    hBlock.contentId=0;
    hBlock.contentType=0;
    hBlock.method = CompressionMethod.GZIP.byteValue() ;
    hC.blocks = new Block[]{hBlock} ;
    hC.containers= new Container[0] ;
    CramHeaderIO.write(cramHeader, hBaos) ;
    hBlock.data = hBaos.toByteArray() ;
    format.writeContainer(hC, hBaos) ;
    System.out.println("Header size: " + hBaos.size());
   
    for (int b = 0; b < maxRecords; b+=recordsPerBlock) {
      bases = 0 ;
      size = 0 ;
      for (int i = 0; i < recordsPerBlock; i++) {
        samRecord = iterator.next();
        a.addSAMRecord(samRecord);
        bases += samRecord.getReadLength();
      }

      for (int i = 0; i < recordsPerBlock; i++) {
        while ((samRecord = a.nextSAMRecord()) != null) {
          CramRecord cramRecord = scFactory.createCramRecord(samRecord);
          records.add(cramRecord);

          setPairingInformation(cramRecord, samRecord, a.distanceToNextFragment());
        }
        while ((samRecord = a.fetchNextSAMRecord()) != null) {
          CramRecord cramRecord = scFactory.createCramRecord(samRecord);
          records.add(cramRecord);

          setPairingInformation(cramRecord, samRecord, a.distanceToNextFragment());
        }

      }

      Container container = new Coder(recordsPerSlice).writeRecords(cramHeader, records, provider);

      ByteArrayOutputStream baos = new ByteArrayOutputStream();
      long time1 = System.nanoTime();
      format.writeContainer(container, baos);
      long time2 = System.nanoTime();
      System.out.printf("Container written: bytes=%d in %.2f ms.\n", baos.size(), (time2 - time1) / 1000000f);
      size += baos.size();

      records.clear();

      System.out.printf("Total records: %d, bases=%d, bytes=%d, b/b=%.2f\n", counter, bases, size, 8f * size
          / bases);

      time1 = System.nanoTime();
      Container c = format.readContainer(new ByteArrayInputStream(baos.toByteArray()));
      time2 = System.nanoTime();
      System.out.printf("Container read in %.2f ms.\n", (time2 - time1) / 1000000f);

      time1 = System.nanoTime();
      List<CramRecord> readRecords = new Coder(recordsPerSlice).readRecords(c, cramHeader, provider);
      time2 = System.nanoTime();
      System.out.printf("Cram records read in in %.2f ms.\n", (time2 - time1) / 1000000f);
      System.out.println(readRecords.size());

      RestoreBases rb = new RestoreBases(provider, "20");
      time1 = System.nanoTime();
      for (CramRecord r : readRecords)
        rb.restoreReadBases(r);
      time2 = System.nanoTime();
      System.out.printf("Bases restored in in %.2f ms.\n", (time2 - time1) / 1000000f);

      RestoreQualityScores rq = new RestoreQualityScores();
      time1 = System.nanoTime();
      for (CramRecord r : readRecords)
        rq.restoreQualityScores(r);
      time2 = System.nanoTime();
      System.out.printf("Scores restored in in %.2f ms.\n", (time2 - time1) / 1000000f);

      time1 = System.nanoTime();
      restoreNamesAndSpots("name", 1, readRecords);
      time2 = System.nanoTime();
      System.out.printf("Pairing restored in in %.2f ms.\n", (time2 - time1) / 1000000f);
      // for (int i = 0; i < 10; i++)
      // System.out.println(readRecords.get(i));
      // for (int i = readRecords.size() - 10; i < readRecords.size();
      // i++)
      // System.out.println(readRecords.get(i));

      time1 = System.nanoTime();
      SAMFileHeader header = Utils.cramHeader2SamHeader(cramHeader);
      List<SAMRecord> samRecords = convert(readRecords, header, null, seqName);
      for (SAMRecord r : samRecords)
        Utils.calculateMdAndNmTags(r, refBytes, true, true);
      time2 = System.nanoTime();
      System.out.printf("SAMRecords restored in in %.2f ms.\n", (time2 - time1) / 1000000f);

      // for (int i = 0; i < 10; i++)
      // System.out.print(samRecords.get(i).getSAMString());
      // for (int i = samRecords.size() - 10; i < samRecords.size(); i++)
      // System.out.print(samRecords.get(i).getSAMString());

    }

    reader.close();
  }
View Full Code Here

    protected void execute() throws Exception {


        String pathToBamFile = commandLine.getOptionValue("i");

        SAMFileReader reader = new SAMFileReader(new File(pathToBamFile));

        SAMRecordIterator iter = reader.iterator();

        long numBases = 0;
        long numGC = 0;

View Full Code Here

    public BamToFastqSimple(String bamFileName) {
       this.bamFileName = bamFileName;
       INPUT = new File(bamFileName)
       firstSeenMates = new HashMap<String,SAMRecord>();
       reader = new SAMFileReader(IoUtil.openFileForReading(INPUT));
       recordIterator = reader.iterator();
    }
View Full Code Here

        return 0;
    }

    protected void doUnpaired() {

        final SAMFileReader reader = new SAMFileReader(IoUtil.openFileForReading(INPUT));
        final FastqWriter writer = FastqWriterFactoryInstance().newWriter(FASTQ);

        for (final SAMRecord record : reader ) {
            if (record.getReadFailsVendorQualityCheckFlag() && !INCLUDE_NON_PF_READS) {
                // do nothing
            }
            else {
                writeRecord(record, null, writer);
            }
        }
        reader.close();
        writer.close();
    }
View Full Code Here

    protected void doPaired() {
        IoUtil.assertFileIsWritable(SECOND_END_FASTQ);
        IoUtil.assertFileIsWritable(FRAGMENT_FASTQ);

        final SAMFileReader reader = new SAMFileReader(IoUtil.openFileForReading(INPUT));
        final FastqWriter writer1 = FastqWriterFactoryInstance().newWriter(FASTQ);
        final FastqWriter writer2 = FastqWriterFactoryInstance().newWriter(SECOND_END_FASTQ);
        final FastqWriter fragWriter = FastqWriterFactoryInstance().newWriter(FRAGMENT_FASTQ);
        final Map<String,SAMRecord> firstSeenMates = new HashMap<String,SAMRecord>();
        final Set<String> failedReadNames = new HashSet<String>();

        try {

            for (final SAMRecord currentRecord : reader ) {

                final String currentReadName = currentRecord.getReadName() ;
                final SAMRecord firstRecord = firstSeenMates.get(currentReadName);

                // Skip non-PF reads as necessary
                if (currentRecord.getReadFailsVendorQualityCheckFlag() && !INCLUDE_NON_PF_READS) {
                    if (currentRecord.getReadPairedFlag()) {
                        failedReadNames.add(currentReadName);
                        // if this record failed QC, but we were already holding its mate...
                        if (firstRecord != null) {
                            firstSeenMates.remove(currentReadName);
                            notifyOrphan(currentReadName);
                            writeRecord(firstRecord, null, fragWriter);
                        }
                    }
                    continue;
                }

                if (currentRecord.getReadPairedFlag()) {
                    // if this reads mate already failed QC...
                    if (failedReadNames.contains(currentReadName)) {
                        notifyOrphan(currentReadName);
                        writeRecord(currentRecord, null, fragWriter);
                        continue;
                    }

                    if (firstRecord == null) {
                        firstSeenMates.put(currentReadName, currentRecord) ;
                    }
                    else {
                        assertPairedMates(firstRecord, currentRecord);

                        if (currentRecord.getFirstOfPairFlag()) {
                             writeRecord(currentRecord, 1, writer1);
                             writeRecord(firstRecord, 2, writer2);
                        }
                        else {
                             writeRecord(firstRecord, 1, writer1);
                             writeRecord(currentRecord, 2, writer2);
                        }
                        firstSeenMates.remove(currentReadName);
                    }
                } else {
                    writeRecord(currentRecord, null, fragWriter);
                }
            }

            if (firstSeenMates.size() > 0)  {
               
                // are we ignoring these.   
                if (IGNORE_ORPHAN_MATES == false)
                    throw new PicardException("Found "+firstSeenMates.size()+" reads with flags that indicated they were paired, but no mates were seen.");
           
                for (final SAMRecord currentRecord : firstSeenMates.values()) {
                    writeRecord(currentRecord, null, fragWriter);
                }

            }

        } finally {
            // Flush as much as possible.
            writer1.close();
            writer2.close();
            fragWriter.close();
            reader.close();
        }

    }
View Full Code Here

    }

    protected void doGrouped()
    {
        final SAMFileReader reader = new SAMFileReader(IoUtil.openFileForReading(INPUT));
        final Map<String,SAMRecord> firstSeenMates = new HashMap<String,SAMRecord>();
        final Map<SAMReadGroupRecord, List<FastqWriter>> writers = new HashMap<SAMReadGroupRecord, List<FastqWriter>>();

        for (final SAMRecord currentRecord : reader ) {
            // Skip non-PF reads as necessary
            if (currentRecord.getReadFailsVendorQualityCheckFlag() && !INCLUDE_NON_PF_READS) continue;

            if(currentRecord.getReadPairedFlag())
            {
                doGroupedPaired(firstSeenMates, writers, currentRecord);
            }
            else
            {
                doGroupedUnpaired(writers, currentRecord);
            }
        }

        if (firstSeenMates.size() > 0 && IGNORE_ORPHAN_MATES == false) {
            throw new PicardException("Found "+firstSeenMates.size()+" unpaired mates");
        }

        reader.close();
        for(final List<FastqWriter> writerPair : writers.values()){
            for(final FastqWriter fq : writerPair){
                fq.close();
            }
        }
View Full Code Here

        }
    }

    protected void doGroupedUnpaired(final Map<SAMReadGroupRecord, List<FastqWriter>> writers, final SAMRecord currentRecord) {
        final SAMReadGroupRecord readGroup = currentRecord.getReadGroup();
        final SAMFileReader reader = new SAMFileReader(IoUtil.openFileForReading(INPUT));

        List<FastqWriter> writerList = writers.get(readGroup);
        if(writerList == null){
            final File fq1 = makeReadGroupFile(readGroup, null);
            IoUtil.assertFileIsWritable(fq1);

            writerList = new ArrayList<FastqWriter>();
            writerList.add(FastqWriterFactoryInstance().newWriter(fq1));
        }

        writeRecord(currentRecord, null, writerList.get(0));
        reader.close();
    }
View Full Code Here

TOP

Related Classes of net.sf.samtools.SAMFileReader

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.