www.pudn.com > DNA_Analysis.rar > DNA.java
/**
*
*/
package dna.sequences.analysis;
import java.io.*;
import java.util.*;
import jaligner.Alignment;
import jaligner.Sequence;
import jaligner.SmithWatermanGotoh;
import jaligner.formats.Pair;
import jaligner.matrix.MatrixLoader;
import jaligner.util.SequenceParser;
/**
* @author Administrator
*
*/
public class DNA {
/**
* @param args
*/
@SuppressWarnings("unchecked")
public static void main(String[] args) {
if(args.length !=3)
{
System.out.println("args error! please check...");
System.exit(1);
}
// put codontable to the hashmap
HashMap codonTable = new HashMap();
File ct = new File("codontable");
if(!ct.exists())
{
System.out.println("the file codontable not exits,please check!");
System.exit(1);
}
FileReader ctr = null;
BufferedReader cbr = null;
try {
ctr = new FileReader(ct);
cbr = new BufferedReader(ctr);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
String strK = null;
String strV = null;
try {
while((strK = cbr.readLine()) != null && (strV = cbr.readLine()) != null)
{
codonTable.put(strK.toUpperCase(),strV.toUpperCase());
}
} catch (IOException e) {
e.printStackTrace();
}
//store the total number of DNA sequence
int totalSeq = 0;
//read input file
File infile = null;
FileReader fr = null;
BufferedReader br = null;
//write output file
File outfile = null;
FileWriter fw = null;
PrintWriter out = null;
int seqNum = 0;
int baseTotal = 0;
String partOne = "PART 1: GENENATION INFORMATION \n";
String partTwo = "PART 2: SEQUENCE DETAILS \n";
String seqTwo = null;
String partThree = "PART 3: SEQUENCE ALIGNMENT \n";
if(args[0].toLowerCase().equals("simple"))
{
infile = new File(args[1]);
try {
fr = new FileReader(infile);
br = new BufferedReader(fr);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
try {
while(br.readLine() != null)
{
totalSeq ++;
}
} catch (IOException e1) {
e1.printStackTrace();
}
try {
fr.close();
br.close();
} catch (IOException e1) {
e1.printStackTrace();
}
String []seqString = new String[totalSeq];
infile = new File(args[1]);
try {
fr = new FileReader(infile);
br = new BufferedReader(fr);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
outfile = new File(args[2]);
try {
fw = new FileWriter(outfile,true);
out = new PrintWriter(fw);
} catch (IOException e) {
e.printStackTrace();
}
//start to read line from the input file
String line = null;
try {
while((line = br.readLine())!= null)
{
//part 1
baseTotal += line.length();
seqNum ++;
//part 2
partTwo = partTwo + "Sequence " + String.valueOf(seqNum) + "\n";
partTwo = partTwo + "Number of bases : " + String.valueOf(line.length()) +"\n";
partTwo = partTwo + "GC Percentage : " + String.valueOf(GCPercentage(line)) + "\n";
partTwo = partTwo + "Base Details : " + " A: " + String.valueOf(BaseDetails('A',line));
partTwo = partTwo + " C: "+String.valueOf(BaseDetails('C',line));
partTwo = partTwo + " G: "+String.valueOf(BaseDetails('G',line));
partTwo = partTwo + " T: "+String.valueOf(BaseDetails('T',line))+"\n";
boolean startT = false;
String subStrV = null;
String subStrK = null;
seqTwo = "";
for(int i=0,j=i+3; i')
totalSeq ++;
}
} catch (IOException e1) {
e1.printStackTrace();
}
try {
fr.close();
br.close();
} catch (IOException e1) {
e1.printStackTrace();
}
String []seqString = new String[totalSeq];
String []seqItem = new String[totalSeq];
String []seqAmino = new String[totalSeq];
infile = new File(args[1]);
try {
fr = new FileReader(infile);
br = new BufferedReader(fr);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
outfile = new File(args[2]);
try {
fw = new FileWriter(outfile,true);
out = new PrintWriter(fw);
} catch (IOException e) {
e.printStackTrace();
}
String line = null;
String seqTemp = "";
try {
while((line = br.readLine()) != null)
{
//part 1
if(line.equals(""))
continue;
if(line.charAt(0) == '>')
{
seqItem[seqNum] = line;
if(!seqTemp.equals(""))
{
seqString[seqNum-1] = seqTemp;
seqTemp = "";
}
seqNum++;
}
else
{
baseTotal += line.length();
seqTemp += line;
}
}
seqString[seqNum-1] = seqTemp;
//start to write part 1 result to the output file
partOne += "The file contains ";
partOne += String.valueOf(seqNum);
partOne += " sequence\n";
partOne += "There are a total of ";
partOne += String.valueOf(baseTotal);
partOne += " bases in all sequences\n";
partOne +="There are on average ";
partOne +=String.valueOf(baseTotal/seqNum);
partOne +=" bases in each sequence\n";
out.println(partOne);
//part 2
for(int i=0; i