Hi Muhammad, I am not sure how to convert a profile from the alignment module into a sequence alignment that can be used in the phylo module. Perhaps Andy, Scooter, or Mark have a suggestion on that? It would be good if there was a convenience method for that.
Looking at your code it seems you are doing a profile.toString() when creating the ProteinSequence. This seems wrong, since you would dump the whole alignment representation into a single sequence object. I suspect a better approach would be to get an aligned sequence from the profile and use that instead, however I have never tried that myself... Perhaps one of the over developers has a better suggestion here? Andreas On Tue, May 10, 2011 at 11:00 PM, Muhammad Tariq Pervez < [email protected]> wrote: > > > > Dear Andreas, now I took code from BioJavaCookbook as it is and tried again > to create the tree but in vain. Problem is not with > http://biojava.org/wiki/BioJava:CookBook3:MSA and > http://biojava.org/wiki/BioJava:CookBook:Core:FastaReadWrite. Files are > read and MSA is performed successfully but problem is faced when the code to > build the tree is reached. > > Problem is how to get MultipleSequenceAlignment object to be used in the > phylo module from the Profile object used in the alignment module. > > > > > > > Kindly help me. > > The following exception is thrown and code is given below of this > exception. > > Best Regards. > > > 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) > > > package biojavademo; > > > import java.net.URL; > import java.util.ArrayList; > import java.util.List; > > > import org.biojava3.alignment.template.Profile; > import org.biojava3.alignment.Alignments; > 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.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() throws Exception { > String[] ids = new String[] {"Q21691", "Q21495", "O48771"}; > try { > multipleSequenceAlignment(ids); > > > > } catch (Exception e){ > e.printStackTrace(); > } > } > > private void multipleSequenceAlignment(String[] ids) throws Exception { > List<ProteinSequence> lst = new ArrayList<ProteinSequence>(); > > > > for (String id : ids) { > lst.add(getSequenceForId(id)); > } > Profile<ProteinSequence, AminoAcidCompound> profile = > Alignments.getMultipleSequenceAlignment(lst); > System.out.printf("Clustalw:%n%s%n", profile); > > > > > ProteinSequence seq=new ProteinSequence(profile.toString()); > 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); > ConcurrencyTools.shutdown(); > } > > private static ProteinSequence getSequenceForId(String uniProtId) throws > Exception { > > > > URL uniprotFasta = new URL(String.format(" > http://www.uniprot.org/uniprot/%s.fasta", uniProtId)); > ProteinSequence seq = > FastaReaderHelper.readFastaProteinSequence(uniprotFasta.openStream()).get(uniProtId); > > > > System.out.printf("id : %s %s%n%s%n", uniProtId, seq, > seq.getOriginalHeader()); > return seq; > } > > Muhammad Tariq Pervez > > Ph.D (Scholar) - Bioinformatics, > University of Veterinary and Animal Science, Lahore, Pakistan > > > > > > From: [email protected] > > Subject: Biojava-l Digest, Vol 100, Issue 4 > > To: [email protected] > > Date: Tue, 10 May 2011 12:00:04 -0400 > > > > Send Biojava-l mailing list submissions to > > [email protected] > > > > To subscribe or unsubscribe via the World Wide Web, visit > > http://lists.open-bio.org/mailman/listinfo/biojava-l > > or, via email, send a message with subject or body 'help' to > > [email protected] > > > > You can reach the person managing the list at > > [email protected] > > > > When replying, please edit your Subject line so it is more specific > > than "Re: Contents of Biojava-l digest..." > > > > > > Today's Topics: > > > > 1. Re: An exception is being thrown while using the code related > > to phylogeny from BioJava cookbook (Andreas Prlic) > > > > > > ---------------------------------------------------------------------- > > > > Message: 1 > > Date: Mon, 9 May 2011 17:13:01 -0700 > > From: Andreas Prlic <[email protected]> > > Subject: Re: [Biojava-l] An exception is being thrown while using the > > code related to phylogeny from BioJava cookbook > > To: Muhammad Tariq Pervez <[email protected]> > > Cc: [email protected] > > Message-ID: <[email protected]> > > Content-Type: text/plain; charset=ISO-8859-1 > > > > Hi Muhammad, > > > > did you see the Cookbook pages? > > > > Best to start with a simple example like > > http://biojava.org/wiki/BioJava:CookBook3:MSA > > > > I suspect there is something going wrong with your input file. Try to > get > > the file parsing right first. E.g.: > > http://biojava.org/wiki/BioJava:CookBook:Core:FastaReadWrite > > > > Andreas > > > > > > On Sun, May 8, 2011 at 10:20 PM, Muhammad Tariq Pervez < > [email protected] > > > wrote: > > > > > 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 > > > > > > End of Biojava-l Digest, Vol 100, Issue 4 > > ***************************************** > > _______________________________________________ > Biojava-l mailing list - [email protected] > http://lists.open-bio.org/mailman/listinfo/biojava-l > _______________________________________________ Biojava-l mailing list - [email protected] http://lists.open-bio.org/mailman/listinfo/biojava-l
