首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生物爪哇中氨基酸理化性质的计算

生物爪哇中氨基酸理化性质的计算
EN

Stack Overflow用户
提问于 2022-05-07 19:07:31
回答 1查看 41关注 0票数 2

我需要计算我从UNIPROT获得的蛋白质序列中极性/非极性、脂肪族/芳香族/杂环氨基酸的数量和百分比,使用BioJava.

我在BioJava教程中找到了如何读取Fasta文件并实现此代码。但我不知道如何解决这个问题。

如果你有什么想法,请帮帮我。

也许有一些我可以查的消息来源。

这是密码。

代码语言:javascript
复制
package biojava.biojava_project;

import java.net.URL;

import org.biojava.nbio.core.sequence.ProteinSequence;
import org.biojava.nbio.core.sequence.io.FastaReaderHelper;

public class BioSeq {
    // Inserting the sequence from UNIPROT
    public static ProteinSequence getSequenceForId(String uniProtId) throws Exception {
        URL uniprotFasta = new URL(String.format("https://rest.uniprot.org/uniprotkb/P31574.fasta", uniProtId));
        ProteinSequence seq = FastaReaderHelper.readFastaProteinSequence(uniprotFasta.openStream()).get(uniProtId);
        System.out.printf("id : P31574", uniProtId, seq, System.getProperty("line.separator"), seq.getOriginalHeader());
        System.out.println();
        return seq;
    }
    public static void main(String[] args) {
        try {
            System.out.println(getSequenceForId("P31574"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-07 19:41:01

我不知道BioJava是否将这些属性存储在任何地方。但是,只需手动列出所有氨基酸的性质就很容易了。然后遍历序列并计算满足属性的值。下面是极性的一个例子:

代码语言:javascript
复制
import java.io.InputStream;
import java.net.URL;
import java.util.Set;

import org.biojava.nbio.core.sequence.ProteinSequence;
import org.biojava.nbio.core.sequence.compound.AminoAcidCompound;
import org.biojava.nbio.core.sequence.io.FastaReaderHelper;

public class BioSeq {

    public static void main(String[] args) throws Exception {
        ProteinSequence seq = loadFromUniprot("P31574");

        int polarCount = numberOfOccurrences(seq, /*Polar AAs:*/ Set.of("Y", "S", "T", "N", "Q", "C"));
        System.out.println("% of polar AAs: " + ((double)polarCount)/seq.getLength());
    }

    public static ProteinSequence loadFromUniprot(String uniProtId) throws Exception {
        URL uniprotFasta = new URL(String.format("https://rest.uniprot.org/uniprotkb/%s.fasta", uniProtId));
        try (InputStream is = uniprotFasta.openStream()) {
            return FastaReaderHelper.readFastaProteinSequence(is).get(uniProtId);
        }
    }

    private static int numberOfOccurrences(ProteinSequence seq, Set<String> bases) {
        int count = 0;
        for (AminoAcidCompound aminoAcid : seq)
            if(bases.contains(aminoAcid.getBase()))
                count++;
        return count;
    }
}

PS:使用后不要忘记关闭IO流。在上面的例子中,我使用了试用资源语法,它会自动关闭InputStream。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72155659

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档