Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.awt.event.*;
- import javax.swing.*;
- import java.io.*;
- import java.util.*;
- import javax.swing.border.*;
- import java.text.StringCharacterIterator;
- import java.text.CharacterIterator;
- import org.biojava3.core.sequence.*;
- import org.biojava3.core.sequence.io.*;
- import org.biojava3.core.sequence.compound.*;
- import org.biojava3.core.sequence.transcription.*;
- public class orffinder{
- public static void main (String args[]){
- View view = new View();
- view.showMain();
- }
- }
- class View extends JFrame implements ActionListener{
- JPanel root = new JPanel();
- Box topbox = Box.createVerticalBox();
- JPanel input_panel = new JPanel();
- JPanel output_panel = new JPanel();
- JTextArea input = new JTextArea(10,30);
- JTextArea output = new JTextArea(10,30);
- JMenuBar menubar = new JMenuBar();
- JMenu filemenu = new JMenu("file");
- JMenu helpmenu = new JMenu("help");
- JMenuItem item_open = new JMenuItem("open");
- JMenuItem item_run = new JMenuItem("run");
- JMenuItem item_about = new JMenuItem("about");
- TitledBorder title_input = BorderFactory.createTitledBorder("input sequence(DNA)");
- TitledBorder title_output = BorderFactory.createTitledBorder("output sequence(protein)");
- //variables
- DNASequence input_sequence;
- public void showMain(){
- output.setEditable(false);
- input.setEditable(true);
- JScrollPane input_scrollpane = new JScrollPane(input);
- JScrollPane output_scrollpane = new JScrollPane(output);
- this.setName("ORF finder");
- item_open.addActionListener(this);
- item_run.addActionListener(this);
- item_about.addActionListener(this);
- filemenu.add(item_open);
- filemenu.add(item_run);
- helpmenu.add(item_about);
- menubar.add(filemenu);
- menubar.add(helpmenu);
- this.setJMenuBar(menubar);
- input_panel.add(input_scrollpane);
- input_panel.setBorder(title_input);
- output_panel.add(output_scrollpane);
- output_panel.setBorder(title_output);
- topbox.add(input_panel);
- topbox.add(output_panel);
- root.add(topbox);
- this.setResizable(false);
- this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- this.setContentPane(root);
- this.pack();
- this.setVisible(true);
- }
- public void actionPerformed(ActionEvent e){
- if(e.getSource().equals(item_open)){
- LinkedHashMap<String, DNASequence> inputSequences = null;
- JFileChooser filechooser = new JFileChooser();
- int returnVal = filechooser.showOpenDialog(this);
- FastaParser file = new FastaParser();
- if(returnVal == JFileChooser.APPROVE_OPTION) {
- try{
- inputSequences = file.readFastaDNASequence(filechooser.getSelectedFile());
- }catch(Exception ex){}
- }
- Object[] options = inputSequences.keySet().toArray();
- Object dialog = null;
- dialog = JOptionPane.showInputDialog(this,
- "wich sequence do you want to use?",
- "choose sequence",
- JOptionPane.QUESTION_MESSAGE,
- null,
- options,
- null);
- input_sequence = file.getSequence(dialog);
- CharacterIterator it = new StringCharacterIterator(input_sequence.getSequenceAsString());
- String temp = "";
- int i = 0;
- for (char ch=it.first(); ch != CharacterIterator.DONE; ch=it.next()){
- temp += ch;
- i += 1;
- if (i == 37){
- temp += '\n';
- i = 0;
- }
- }
- input.setText(temp);
- }
- if(e.getSource().equals(item_run)){
- Translator translator = new Translator();
- translator.setSequence(input_sequence);
- ProteinSequence output_sequence = translator.run();
- output.setText(output_sequence.getOriginalHeader());
- output.append("\n");
- String temp = null;
- int i = 0;
- CharacterIterator it = new StringCharacterIterator(output_sequence.getSequenceAsString());
- for (char ch=it.first(); ch != CharacterIterator.DONE; ch=it.next()){
- temp += ch;
- i += 1;
- if (i == 37){
- temp += '\n';
- i = 0;
- }
- }
- output.append(temp);
- }
- }
- }
- class FastaParser{
- LinkedHashMap<String, DNASequence> dnaSequences = null;
- public LinkedHashMap<String, DNASequence> readFastaDNASequence(InputStream inStream) throws Exception{
- FastaReader<DNASequence, NucleotideCompound> fastaReader = new FastaReader<DNASequence, NucleotideCompound>(
- inStream,new GenericFastaHeaderParser<DNASequence, NucleotideCompound>(),
- new DNASequenceCreator(DNACompoundSet.getDNACompoundSet()));
- return fastaReader.process();
- }
- public LinkedHashMap<String, DNASequence> readFastaDNASequence(File file) throws Exception{
- FileInputStream inStream = new FileInputStream(file);
- dnaSequences = readFastaDNASequence(inStream);
- inStream.close();
- return dnaSequences;
- }
- public DNASequence getSequence(Object sequenceID){
- return dnaSequences.get(sequenceID);
- }
- }
- class Translator{
- DNASequence seq;
- ArrayList<ProteinSequence> output = new ArrayList<ProteinSequence>();
- ProteinSequence temp;
- Frame frame;
- public void setSequence(DNASequence input){
- seq = input;
- }
- public ProteinSequence run(){
- for (int i = 0; i < 3; i++){
- if(i == 0){
- frame = frame.ONE;
- }if(i == 1){
- frame = frame.TWO;
- }if(i == 2){
- frame = frame.THREE;
- }
- ProteinSequence prot_forward = seq.getRNASequence(frame).getProteinSequence();
- prot_forward.setOriginalHeader(seq.getOriginalHeader() + "TranslationFrame: +" + i);
- //ProteinSequence prot_reversecomplement = seq.getRNASequence(frame).getReverseComplement().getProteinSequence();
- //prot_reversecomplement.setOriginalHeader(seq.getOriginalHeader() + "TranslationFrame: +" + i);
- output.add(prot_forward);
- //output.add(prot_reversecomplement);
- }
- for(int i = 0;i < output.size();i++){
- for(int x = 0;x < output.size();x++){
- if(output.get(i).getSequenceAsString().length() > output.get(x).getSequenceAsString().length()){
- temp = output.get(i);
- }
- }
- }
- return temp;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement