Skip to content

Commit

Permalink
updated examples to show version 5 API improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
dkatzel-home committed Mar 11, 2021
1 parent f632ffa commit 5835e4d
Show file tree
Hide file tree
Showing 5 changed files with 90 additions and 27 deletions.
37 changes: 30 additions & 7 deletions examples/org/jcvi/common/examples/ReverseComplementFasta.java
Original file line number Diff line number Diff line change
Expand Up @@ -29,18 +29,23 @@
import org.jcvi.jillion.core.residue.nt.NucleotideSequence;
import org.jcvi.jillion.core.residue.nt.NucleotideSequenceBuilder;
import org.jcvi.jillion.core.util.iter.StreamingIterator;
import org.jcvi.jillion.fasta.nt.NucleotideFastaDataStore;
import org.jcvi.jillion.fasta.nt.NucleotideFastaFileDataStoreBuilder;
import org.jcvi.jillion.fasta.nt.NucleotideFastaRecord;
import org.jcvi.jillion.fasta.nt.NucleotideFastaWriter;
import org.jcvi.jillion.fasta.nt.NucleotideFastaWriterBuilder;
import org.jcvi.jillion.fasta.FastaParser;
import org.jcvi.jillion.fasta.nt.*;

public class ReverseComplementFasta {

public static void main(String[] args) throws DataStoreException, IOException {
File inputFasta = new File("path/to/input/fasta");
File reverseComplimentOutputFasta = new File("/path/to/output.sorted.fasta");


// jillion4Way(inputFasta, reverseComplimentOutputFasta);

jillion5Way(inputFasta, reverseComplimentOutputFasta);


}

protected static void jillion4Way(File inputFasta, File reverseComplimentOutputFasta) throws IOException {
NucleotideFastaDataStore dataStore = new NucleotideFastaFileDataStoreBuilder(inputFasta)
.hint(DataStoreProviderHint.ITERATION_ONLY)
.build();
Expand All @@ -59,6 +64,24 @@ public static void main(String[] args) throws DataStoreException, IOException {
}
} finally{
IOUtil.closeAndIgnoreErrors(iter,out);
}
}
}

protected static void jillion5Way(File inputFasta, File reverseComplimentOutputFasta) throws IOException {


try(NucleotideFastaWriter writer = new NucleotideFastaWriterBuilder(reverseComplimentOutputFasta)
.createIndex(true)
.build()
){
NucleotideFastaFileReader.records(inputFasta)
.throwingForEach(record ->

writer.write(record.getId(),
record.getSequence().toBuilder().reverseComplement().build(),
record.getComment())
);

}
}
}
25 changes: 19 additions & 6 deletions examples/org/jcvi/common/examples/SortFasta.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,17 +22,15 @@

import java.io.File;
import java.io.IOException;
import java.util.Comparator;
import java.util.SortedSet;
import java.util.TreeSet;

import org.jcvi.jillion.core.datastore.DataStoreException;
import org.jcvi.jillion.core.datastore.DataStoreProviderHint;
import org.jcvi.jillion.core.io.IOUtil;
import org.jcvi.jillion.core.util.iter.StreamingIterator;
import org.jcvi.jillion.fasta.nt.NucleotideFastaDataStore;
import org.jcvi.jillion.fasta.nt.NucleotideFastaFileDataStoreBuilder;
import org.jcvi.jillion.fasta.nt.NucleotideFastaWriter;
import org.jcvi.jillion.fasta.nt.NucleotideFastaWriterBuilder;
import org.jcvi.jillion.fasta.nt.*;

public class SortFasta {

Expand All @@ -44,7 +42,23 @@ public class SortFasta {
public static void main(String[] args) throws DataStoreException, IOException {
File inputFasta = new File("path/to/input.fasta");
File sortedOutputFasta = new File("path/to/sorted/output.fasta");


jillion4Way(inputFasta, sortedOutputFasta);

}

protected static void jillion5Way(File inputFasta, File sortedOutputFasta) throws IOException {

try(NucleotideFastaWriter writer = new NucleotideFastaWriterBuilder(sortedOutputFasta)
// .sortInMemoryOnly(Comparator.comparing(NucleotideFastaRecord::getId))
.sort(Comparator.comparing(NucleotideFastaRecord::getId))
.build()
){
NucleotideFastaFileReader.records(inputFasta).throwingForEach(writer::write);
}
}

protected static void jillion4Way(File inputFasta, File sortedOutputFasta) throws IOException {
NucleotideFastaDataStore dataStore = new NucleotideFastaFileDataStoreBuilder(inputFasta)
.hint(DataStoreProviderHint.RANDOM_ACCESS_OPTIMIZE_MEMORY)
.build();
Expand All @@ -67,7 +81,6 @@ public static void main(String[] args) throws DataStoreException, IOException {
}finally{
IOUtil.closeAndIgnoreErrors(out,dataStore);
}

}

}
51 changes: 38 additions & 13 deletions examples/org/jcvi/jillion/examples/pipelines/BwaTrimFastqFile.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,7 @@
import org.jcvi.jillion.core.residue.nt.NucleotideSequence;
import org.jcvi.jillion.core.util.ThrowingStream;
import org.jcvi.jillion.core.util.iter.StreamingIterator;
import org.jcvi.jillion.trace.fastq.FastqFileDataStore;
import org.jcvi.jillion.trace.fastq.FastqFileDataStoreBuilder;
import org.jcvi.jillion.trace.fastq.FastqRecord;
import org.jcvi.jillion.trace.fastq.FastqWriter;
import org.jcvi.jillion.trace.fastq.FastqWriterBuilder;
import org.jcvi.jillion.trace.fastq.*;
import org.jcvi.jillion.trim.BwaQualityTrimmer;
import org.jcvi.jillion.trim.QualityTrimmer;

Expand All @@ -45,31 +41,60 @@ public static void main(String[] args) throws IOException, DataStoreException {
File inputFastq = new File("");

File outputFastq = new File("");
// jillion5_0_way(inputFastq, outputFastq);

jillion5_3_way(inputFastq, outputFastq);
}

protected static void jillion5_0_way(File inputFastq, File outputFastq) throws IOException {
int MIN_LENGTH = 64;

QualityTrimmer bwaTrimmer = new BwaQualityTrimmer(PhredQuality.valueOf(20));

try(FastqFileDataStore fastqDataStore = new FastqFileDataStoreBuilder(inputFastq)
.hint(DataStoreProviderHint.ITERATION_ONLY)
.build();

FastqWriter writer = new FastqWriterBuilder(outputFastq)
.qualityCodec(fastqDataStore.getQualityCodec())
.build();

ThrowingStream<FastqRecord> stream = fastqDataStore.records();
){

stream.throwingForEach( fastq ->{

Range trimRange = bwaTrimmer.trim(fastq.getQualitySequence());
if(trimRange.getLength() >= MIN_LENGTH){

writer.write( fastq, trimRange);
}
});
}//autoclose writer

}

protected static void jillion5_3_way(File inputFastq, File outputFastq) throws IOException {
int MIN_LENGTH = 64;
//param is the threshold same as bwa -q option
QualityTrimmer bwaTrimmer = new BwaQualityTrimmer(PhredQuality.valueOf(20));

try(FastqFileReader.Results parsedFastq = FastqFileReader.read(inputFastq);

FastqWriter writer = new FastqWriterBuilder(outputFastq)
.qualityCodec(parsedFastq.getCodec())
.build();

ThrowingStream<FastqRecord> stream = parsedFastq.records();
){

stream.throwingForEach( fastq ->{

Range trimRange = bwaTrimmer.trim(fastq.getQualitySequence());
if(trimRange.getLength() >= MIN_LENGTH){

writer.write( fastq, trimRange);
}
});
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,8 @@ public static void main(String[] args) throws IOException{
//get the query names of those reads that mapped
Set<String> names = aligned.map(SamRecord::getQueryName)
.collect(Collectors.toCollection(TreeSet::new));

System.out.println(names);

}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ private static void using_version_5_3(File inputSam, File outputBam) throws IOEx
ThrowingStream<SamRecord> stream = datastore.records();
){

stream.throwingForEach(record -> writer.writeRecord(record));
stream.throwingForEach(writer::writeRecord);

}
}
Expand Down

0 comments on commit 5835e4d

Please sign in to comment.