BioJava:Cookbook:SeqIO:ABItoSequence
From BioJava
How can I turn an ABI trace into a BioJava Sequence?
A lot of Bioinformatics begins with the reading of a piece of DNA (or several pieces) using a DNA sequencer. A typical output is an ABI trace. BioJava contains a Class called ABITrace that will parse either an ABITrace file or URL or a byte[] and store its values for programmatic retrieval.
The following program is modified from a version kindly supplied by Matthew Pocock. It demonstrates the creation of a BioJava Sequence from an ABI trace file.
BioJava 1.3 now contains a more generic chromatogram API that supports both ABI and SCF files. An example program that uses this API is shown below.
Reading ABI
import java.io.*; import org.biojava.bio.*; import org.biojava.bio.program.abi.*; import org.biojava.bio.seq.*; import org.biojava.bio.seq.impl.*; import org.biojava.bio.seq.io.*; import org.biojava.bio.symbol.*; public class Trace2Seq { public static void main(String[] args) throws Exception { File traceFile = new File(args[0]); //the name of the sequence String name = traceFile.getName(); //read the trace ABITrace trace = new ABITrace(traceFile); //extract the Symbols SymbolList symbols = trace.getSequence(); //make a fully fledged sequence Sequence seq = new SimpleSequence(symbols, name, name, Annotation.EMPTY_ANNOTATION); //write it to STDOUT SeqIOTools.writeFasta(System.out, seq); } }
Generic Solution
import java.io.*; import org.biojava.bio.*; import org.biojava.bio.chromatogram.*; import org.biojava.bio.seq.*; import org.biojava.bio.seq.impl.*; import org.biojava.bio.seq.io.*; import org.biojava.bio.symbol.*; public class Trace2Seq { public static void main(String[] args) throws Exception { File traceFile = new File(args[0]); //the name of the sequence String name = traceFile.getName(); //read the trace Chromatogram trace = ChromatogramFactory.create(traceFile); //extract the Symbols SymbolList symbols = ChromatogramTools.getDNASequence(trace); //make a fully fledged sequence Sequence seq = new SimpleSequence(symbols, name, name, Annotation.EMPTY_ANNOTATION); //write it to STDOUT SeqIOTools.writeFasta(System.out, seq); } }

