0
头像

检查文档是核苷酸序列还是氨基酸序列

我正在编写一个插件,可以将核苷酸或氨基酸序列作为输入。如果输入核苷酸序列,则第一步将其翻译。

该插件一次仅作用于一个文档。

测试输入文档是核苷酸序列还是氨基酸序列的最稳健方法是什么?

我目前的解决方案是:

if (documents[0] instanceof NucleotideSequenceDocument) {
//做核苷酸的事情
}
else if (documents[0] instanceof AminoAcidSequenceDocument) {
//做氨基酸的东西。
}

这在大多数情况下都有效,但在某些文档上会中断。具体来说,它会中断调试器告诉我的文档类型:

com.biomatters.plugins.ncbi.documents.GenBankNucleotideSequence

必须有办法解决这个问题,因为签名选择功能能够解决这个问题,并且工作得很好。很高兴知道它在幕后做什么,所以我可以做同样的事情。

公共 DocumentSelectionSignature[] getSelectionSignatures() {
返回新的 DocumentSelectionSignature[] {
new DocumentSelectionSignature(AminoAcidSequenceDocument.class,1,1)
,new DocumentSelectionSignature(NucleotideSequenceDocument.class,1,1)
// 这表明此注释生成器将接受单个核苷酸序列或单个氨基酸作为输入
};
}
肖恩·约翰逊

3 条评论

0
头像

我想出了一个似乎有效的解决方案。可能有更好的方法来做到这一点,但我现在所做的只是围绕强制转换操作执行 try-catch 块。

例如:

尝试 {
inputAASequence = (AminoAcidSequenceDocument) 文档[0].getDocument();
doctype = "氨基酸";
}
捕获(例外 e){
尝试 {
inputNtSequence = (NucleotideSequenceDocument) 文档[0].getDocument();
doctype = "核苷酸";
}
捕获(例外 e){
throw (new DocumentOperationException("无法确定输入文档的类型"));
}
}
肖恩·约翰逊 0 票
评论动作 永久链接
0
头像

我找到了另一种方法来做到这一点。我认为这种方式实际上是首选方式。

如果 (DocumentType.isAminoAcidSequence(documents[0].getDocument())) {
//做氨基酸的东西
}
否则 if (DocumentType.isNucleotideSequence(documents[0].getDocument())) {
//做核苷酸的事情
}
别的 {
throw (new DocumentOperationException("输入文档必须是核苷酸序列或氨基酸序列。"));
}
肖恩·约翰逊 0 票
评论动作 永久链接
0
头像

我可以确认您找到了正确的方法:)

理查德·摩尔 0 票
评论动作 永久链接