An exception is being thrown while using the code related to phylogeny from BioJava cookbook

Muhammad Tariq Pervez <[email protected]>
Newsgroups gmane.comp.java.bio.general
Message-ID <[email protected]>
Dear concerns,
I want to develop an application for phylogenetic 
analysis. To get started, I took some lines of code from BioJava cookbook, modified them
 as per my requirement and have been trying to get the results for a few
 days but in vain. The code is as follows. 


package biojavademo;


import java.io.File;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map.Entry;

import org.biojava3.alignment.template.Profile;
import org.biojava3.alignment.Alignments;
import org.biojava3.alignment.template.AlignedSequence;
import org.biojava3.core.sequence.MultipleSequenceAlignment;
import org.biojava3.core.sequence.ProteinSequence;
import org.biojava3.core.sequence.compound.AminoAcidCompound;
import org.biojava3.core.sequence.io.FastaReaderHelper;
import org.biojava3.core.sequence.template.Compound;
import org.biojava3.core.sequence.template.Sequence;
import org.biojava3.core.util.ConcurrencyTools;
import org.biojava3.phylo.ProgessListenerStub;
import org.biojava3.phylo.TreeConstructionAlgorithm;
import org.biojava3.phylo.TreeConstructor;
import org.biojava3.phylo.TreeType;

public class MSA {

  
    MSA(){
              multipleSequenceAlignment = new MultipleSequenceAlignment <ProteinSequence, AminoAcidCompound>();
}
    public void multipleSequenceAlignment(List<String> ids) throws Exception {
        List<ProteinSequence> lst = new ArrayList<ProteinSequence>();
       
        for (String id : ids) {
            lst.add(getSequenceForId(id));
           
        }
     
        profile = Alignments.getMultipleSequenceAlignment(lst);
        System.out.println("Compound == "+ profile.getCompoundSet());
        seq=new  ProteinSequence(profile.toString(),profile.getCompoundSet());
        multipleSequenceAlignment.addAlignedSequence(seq);
       
 TreeConstructor<ProteinSequence, AminoAcidCompound> 
treeConstructor = new TreeConstructor<ProteinSequence, 
AminoAcidCompound>(multipleSequenceAlignment,  TreeType.NJ, 
TreeConstructionAlgorithm.PID, new ProgessListenerStub());
           treeConstructor.process();
           String newick = treeConstructor.getNewickString(true, true);
        System.out.println("Clustalw:\n Multisequence Alignment\n"+ profile.toString(Profile.StringFormat.CLUSTALW));
       System.out.println("Tree === "+ newick);
              ConcurrencyTools.shutdown();
    }

      private static ProteinSequence getSequenceForId(String fileName) throws Exception {
        
        LinkedHashMap<String, ProteinSequence> a = FastaReaderHelper.readFastaProteinSequence(new File(fileName));
     
                String seqStr;
                ProteinSequence seq=null;
        for (  Entry<String, ProteinSequence> entry : a.entrySet() ) {
                        seqStr=entry.getValue().getSequenceAsString();
                        seq=new ProteinSequence(seqStr);//entry.getValue();
                        
        }
        return seq;
    }
    public Profile<ProteinSequence, AminoAcidCompound> getMSAProfile(){
        return profile;
    }

Profile<ProteinSequence, AminoAcidCompound> profile;
MultipleSequenceAlignment<ProteinSequence, AminoAcidCompound> multipleSequenceAlignment;
 ProteinSequence seq=null;
}

When I run this code the following exception is thrown

Exception in thread "AWT-EventQueue-0" org.biojava3.core.exceptions.CompoundNotFoundError: Compound not found for: Cannot find compound for: 
        at org.biojava3.core.sequence.storage.ArrayListSequenceReader.setContents(ArrayListSequenceReader.java:196)
        at org.biojava3.core.sequence.template.AbstractSequence.<init>(AbstractSequence.java:88)
        at org.biojava3.core.sequence.ProteinSequence.<init>(ProteinSequence.java:52)
        at biojavademo.MSA.multipleSequenceAlignment(MSA.java:41)
        at biojavademo.MSAJFrame.jButton2ActionPerformed(MSAJFrame.java:160)
        at biojavademo.MSAJFrame.access$100(MSAJFrame.java:27)
        at biojavademo.MSAJFrame$2.actionPerformed(MSAJFrame.java:72)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6038)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
        at java.awt.Component.processEvent(Component.java:5803)
        at java.awt.Container.processEvent(Container.java:2058)
        at java.awt.Component.dispatchEventImpl(Component.java:4410)
        at java.awt.Container.dispatchEventImpl(Container.java:2116)
        at java.awt.Component.dispatchEvent(Component.java:4240)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
        at java.awt.Container.dispatchEventImpl(Container.java:2102)
        at java.awt.Window.dispatchEventImpl(Window.java:2429)
        at java.awt.Component.dispatchEvent(Component.java:4240)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)

Actually I don't know how to construct the multiple sequence alignment object which is given as a parameter while constructing the  'TreeConstructor' object.

Kindly guide/help me to resolve this issue.


Muhammad Tariq Pervez

Ph.D (Scholar) - Bioinformatics,
University of Veterinary and Animal Science, Lahore, Pakistan




 		 	   		  
_______________________________________________
Biojava-l mailing list  -  [email protected]
http://lists.open-bio.org/mailman/listinfo/biojava-l
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.