Java help develop a Java program to read in a FASTA format DNA sequence file, an
ID: 3859735 • Letter: J
Question
Java help
develop a Java program to read in a FASTA format DNA sequence file, and parse out each sequence record into the part of ID and sequence. The ID is identified between the ">" and the "|" in the header line, and the sequence is the concatenation of all lines of the sequence part into a single string. Each DNA sequence record can then be stored into an array element of the DNA class. Use a loop in your program to prompt the user to enter a sequence ID, and if the ID exists print out the sequence. If the ID does not exist, print out a warning message. Exit the loop if the user enters “quit”. Please use any file containing sequences sequence file (i.e. a file named seq.fastfa)as the input file.
Explanation / Answer
Hi,
Please see below the classes:
Thanks!
DNA.java
public class DNA {
private String ID;
private String sequence;
//Constructor
public DNA(String id,String sequence){
this.ID = id;
this.sequence =sequence;
}
//Getters and Setters
public String getID() {
return ID;
}
public void setID(String iD) {
ID = iD;
}
public String getSequence() {
return sequence;
}
public void setSequence(String sequence) {
this.sequence = sequence;
}
}
DNASequence.java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.Scanner;
public class c {
static DNA[] dnaArray = new DNA[100];
public static void main(String[] args) {
readSequnce();
//Prompting te uer to enter the header
Scanner scan = new Scanner(System.in);
boolean loop=true;
boolean found= false;
while(loop){
System.out.println("Enter the header: or Q to Quit");
String header = scan.nextLine();
if("Q".equalsIgnoreCase(header)){
loop = false;
}
else{
for(DNA dna : dnaArray){
if(null!=dna && header.equalsIgnoreCase(dna.getID())){
System.out.println("ID : "+dna.getID());
System.out.println("Sequence: "+dna.getSequence());
found =true;
break;
}
}
}
if(!found){
System.out.println("Not found!");
}
}
}
public static void readSequnce(){
try{
BufferedReader readIn = new BufferedReader( new FileReader("seq.fastfa") );
String sb ="";
String line ="";
int counter =0;
String id ="";
boolean newFlag = false;
for( line = readIn.readLine().trim(); line != null; line = readIn.readLine() )
{
if( line.length()>0 && line.charAt( 0 ) == '>' )
{
if(counter>0){
DNA dna = new DNA(id, sb);
dnaArray[counter] =dna ;
sb ="";
}
int indexOfLast = line.indexOf("|");
id = line.substring(1,indexOfLast);
counter++;
} else {
sb = sb= sb+line;
}
}
DNA dna = new DNA(id, sb);
dnaArray[counter] =dna ;
}catch(IOException e)
{
System.out.println("Error when reading seq.fastfa");
e.printStackTrace();
}
}
}
seq.fastfa
>by05e12.y1|BF724769
CCGCCGTGCGCCCAGCCAGCCATGGGGAAGATCACCCTCTACGAGGACCG
GGGCTTCCAGGGCCGCCACTACGAATGCAGCAGCGACCACCCCAACCTGC AGCCCTACTTGAGGAATTCGAACTCGGCGCGCGTGGACAGCGGCTGCTGG ATGCTCTATGAGCAGCCCAACTACTCGGGCCTCCAGTACTTCCTGCGCCG CGGCGACTATGCCGACCACCAGCAGTGGATGGGCCTCAGCGACTCGGTCC GCTCCTGCCGCCTC
>by09f05.y1|BF73659
CACCAGCTCAGCACCGCCGTGCGCCCAGCCAGCCATGGGGAAGATCACCC TCTACGAGGACCGGGGCTTCCAGGGCCGCCACTACGAATGCAGCAGCGAC CACCCCAACCTGCGGAATTCCTTGAGCCGCTGCAACTCGGCGCGCGTGGA CAGCGGCTGCTGGATGCTCTATGAGCAGCCCAACTACTCGGGCCTCCAGT ACTTCCTGCGCCGCGGCGACTATGCCGACCACCAGCAGTGGATGGGCCTC AGCGACTCGGTCCGCTCCTGCCGCCTCATCCCCCACTCTGGCTCTCACAG GATCAGACTCTATGAGGAATTCCCCTACAGAGGCCAGATGATAGAGTTCA CTGAGGACTGCTCCTGTCTTCAGGACCGCTTCCGCTTCAATGAAATCCAC TCCCTCAACGTGCTGGAGGGCTCCTGGGTCCTCTACGAGCTGTCCAACTA CCGAGGACGGCAGTACCTG
Sample output:
Enter the header: or Q to Quit
by05e12.y1
ID : by05e12.y1
Sequence: CCGCCGTGCGCCCAGCCAGCCATGGGGAAGATCACCCTCTACGAGGACCG GGGCTTCCAGGGCCGCCACTACGAATGCAGCAGCGACCACCCCAACCTGC AGCCCTACTTGAGGAATTCGAACTCGGCGCGCGTGGACAGCGGCTGCTGG ATGCTCTATGAGCAGCCCAACTACTCGGGCCTCCAGTACTTCCTGCGCCG CGGCGACTATGCCGACCACCAGCAGTGGATGGGCCTCAGCGACTCGGTCC GCTCCTGCCGCCTC
Enter the header: or Q to Quit
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.