【问题标题】:biojava Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:线程“主”java.lang.ArrayIndexOutOfBoundsException 中的 biojava 异常:
【发布时间】:2014-06-26 11:02:32
【问题描述】:

我有多个序列对齐的问题。我有两个序列如下,我正在尝试使用 biojava 方法对齐它们,我得到这样的错误。我不知道出了什么问题。我知道序列的长度不一样,但没关系。

GSKTGTKITFYEDKNFQGRRYDCDCDCADFHTYLSRCNSIKVEGGTWAVYERPNFAGYMYILPQGEYPEYQRWMGLNDRLSSCRAVHLPSGGQYKIQIFEKGDFSGQMYETTEDCPSIMEQFHMREIHSCKVLEGVWIFYELPNYRGRQYLLDKKEYRKPIDWGAASPAVQSFRRIVE SMSAGPWKMVVWDEDGFQGRRHEFTAECPSVLELGFETVRSLKVLSGAWVGFEHAGFQGQQYILERGEYPSWDAWGGNTAYPAERLTSFRPAACANHRDSRLTIFEQENFLGKKGELSDDYPSLQAMGWEGNEVGSFHVHSGAWVCSQFPGYRGFQYVLECDHHSGDYKHFREWGSHAPTFQVQSIRRIQQ

线程“main”中的异常 java.lang.ArrayIndexOutOfBoundsException: 1 在 org.forester.evoinference.distance.NeighborJoining.getValueFromD(NeighborJoining.java:150) 在 org.forester.evoinference.distance.NeighborJoining.execute(NeighborJoining.java:123) 在 org.biojava3.alignment.GuideTree.(GuideTree.java:88) 在 org.biojava3.alignment.Alignments.getMultipleSequenceAlignment(Alignments.java:183) 在 Fasta.main(Fasta.java:41)

public class Fasta {

    public static void main(String[] args) throws Exception{


        ArrayList<String> fileName = new ArrayList<String> ();
        fileName.add("2M3T.fasta.txt");
        fileName.add("3LWK.fasta.txt");
        ArrayList<ProteinSequence> al = new ArrayList<ProteinSequence>();
        //ArrayList<ProteinSequence> all =  new ArrayList<ProteinSequence>();
        for (String fn : fileName)
        {
        al = getProteinSequenceFromFasta(fn);
        //all.add(al.get(0));
        for  (ProteinSequence s : al)
        {
            System.out.println(s);
        }
        }
        Profile<ProteinSequence, AminoAcidCompound> profile = Alignments.getMultipleSequenceAlignment(al);
        System.out.printf("Clustalw:%n%s%n", profile);
        ConcurrencyTools.shutdown();
        }
        //for (int i=0;i<sequence.size();i++)
        //  System.out.println(sequence);


    public static ArrayList<ProteinSequence> getProteinSequenceFromFasta(String file) throws Exception{

        LinkedHashMap<String, ProteinSequence> a = FastaReaderHelper.readFastaProteinSequence(new File(file));
        //sztuczne
        ArrayList<ProteinSequence> sequence =  new ArrayList<ProteinSequence>(a.values());


        return sequence;
    }
}

【问题讨论】:

  • 你能发布你的代码吗?
  • 你现在可以看看我的代码了。

标签: bioinformatics biojava


【解决方案1】:

我的猜测是问题出在这一行:

for (String fn : fileName)
{
    al = getProteinSequenceFromFasta(fn);
...
 }

您正在为每个文件覆盖a1 的内容。 (我假设您想将所有 fasta 记录添加到 a1。如果您的 fasta 文件每个只有 1 条记录,那么它不能对单个记录进行多重对齐。

你可能想要

for (String fn : fileName)
{
    al.addAll(getProteinSequenceFromFasta(fn) );
...
 }

当然,您使用的库可能应该首先检查以确保有超过 1 个序列....

【讨论】:

  • 没错,它已经解决了问题。谢谢,但新问题是“线程“主”中的异常 java.lang.NoSuchMethodError: org.forester.phylogeny.PhylogenyNode.addAsChild(Lorg/forester/phylogeny/PhylogenyNode;)V"
  • @EwaKania 然后将我的答案标记为已接受的答案,我们可以在您的其他问题中解决您的其他问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-13
  • 2011-09-09
  • 2016-01-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多