本文构建了一个新的预测化合物–蛋白质关联关系的端到端的模型,可直接输入样本序列后直接输出预测结果,命名为“CT-CPI”。在此方法中,模型主要由嵌入模块、CNN模块、transformer模块、合并模块以及多层感知机模块组成。本文对嵌入方法、transformer模型进行了改进,主要表现为优化了嵌入样本信息的语义可解释性以及在模型中将样本信息充分利用。该模型在基于不同的数据集进行实验时结果显示:基于Davis数据库提供的数据集作为实验数据下,模型预测的AUC值达到了95.6%,模型以DrugBank数据库为数据集时,模型预测效果达到了95.8%。结果表明:与传统模型相比,我们的模型具有更好的预测结果。 In this article, we constructed a new end-to-end model for predicting compound-protein associations, which can directly input sample sequences and then directly output the prediction results, named “CT-CPI”. In this method, the model is mainly composed of embedding module, CNN module, transformer module, merging module and multilayer perceptron module. In this paper, the embedding method and transformer model are improved, mainly in terms of optimising the semantic interpretability of the embedded sample information and making full use of the sample information in the model. The results of the model based on different datasets show that the model predicts 95.6% of the AUC value based on the dataset provided by Davis database as the experimental data, and 95.8% of the model prediction effect when the model uses DrugBank database as the dataset. The results show that: our model has better prediction results compared to the traditional model.
本文构建了一个新的预测化合物–蛋白质关联关系的端到端的模型,可直接输入样本序列后直接输出预测结果,命名为“CT-CPI”。在此方法中,模型主要由嵌入模块、CNN模块、transformer模块、合并模块以及多层感知机模块组成。本文对嵌入方法、transformer模型进行了改进,主要表现为优化了嵌入样本信息的语义可解释性以及在模型中将样本信息充分利用。该模型在基于不同的数据集进行实验时结果显示:基于Davis数据库提供的数据集作为实验数据下,模型预测的AUC值达到了95.6%,模型以DrugBank数据库为数据集时,模型预测效果达到了95.8%。结果表明:与传统模型相比,我们的模型具有更好的预测结果。
化合物–蛋白质关联关系,嵌入模块,CNN模块,Transformer模块
Tianshu Zhao
Faculty of Science, Dalian Jiaotong University, Dalian Liaoning
Received: Mar. 21st, 2024; accepted: May 22nd, 2024; published: May 31st, 2024
In this article, we constructed a new end-to-end model for predicting compound-protein associations, which can directly input sample sequences and then directly output the prediction results, named “CT-CPI”. In this method, the model is mainly composed of embedding module, CNN module, transformer module, merging module and multilayer perceptron module. In this paper, the embedding method and transformer model are improved, mainly in terms of optimising the semantic interpretability of the embedded sample information and making full use of the sample information in the model. The results of the model based on different datasets show that the model predicts 95.6% of the AUC value based on the dataset provided by Davis database as the experimental data, and 95.8% of the model prediction effect when the model uses DrugBank database as the dataset. The results show that: our model has better prediction results compared to the traditional model.
Keywords:Compound-Protein Association Relationship, Embedding Module, CNN Module, Transformer Module
Copyright © 2024 by author(s) and beplay安卓登录
This work is licensed under the Creative Commons Attribution International License (CC BY 4.0).
http://creativecommons.org/licenses/by/4.0/
在新药物的发掘中,识别化合物–蛋白质的关联关系(CPI)是一项十分重要的工作。在生物信息学中,如果可以准确的识别化合物与蛋白质关联关系,将可以大大的降低成本而且可以缩短时间。如果我们想要精准的预测化合物与蛋白质关联关系,我们就需要更全面的蛋白质信息,例如三维结构的蛋白质的信息。但是由于现有的方法无法将获取三维结构的蛋白质的信息以三维的形式嵌入到CPI方法中,所以开发者需要只能使用蛋白质二维信息或一维序列信息来预测化合物与蛋白质关联关系。而化合物最常见的嵌入方法是通过smile方法进行的一维嵌入方式,所以我们也需要使用蛋白质的一维序列信息进行实验。因为化合物与蛋白质的结构都不同,所以化合物与蛋白质的序列长短不一。然而之前的方法中,由于不合理的嵌入方法,以及过少的特征信息,这都会导致最终的预测结果性能不佳。
药物发掘与再利用是当前生物医学中十分重要的一项工作。其中识别化合物–蛋白质的关联关系(CPI)是这项工作中的关键一环。传统的识别CPI方法主要有两种,一种是通过湿式实验室识别CPI,但是这种处理方法的成本昂贵,并且耗时;另一种方法是虚拟筛选(vs) [
近些年来,Shi等人提出来一种端到端的深度学习模型 [
在应用深度学习算法对CPI进行预测研究的初期阶段,研究人员使用卷积神经网络(CNN)模型预测CPI。其中DeepDTA (Ozturk et al., 2018) [
Transformer是Vaswani等人在2017年发表的Attention Is All You Need中使用的模型 [
基于之前的方法(Lee et al., 2019; Chen et al., 2020; Zhao et al., 2022) [
我们使用的模型需要数据集提供很多信息,其中包括化合物的标签、蛋白质的标签、化合物的序列信息、蛋白质的序列信息以及化合物与蛋白质间的关联关系。通过化合物的序列信息和蛋白质的序列信息能够成为模型训练和测试的主要样本信息,通过化合物的标签和蛋白质的标签可以标识样本,因为对于预测CPI任务,我们将其视为二分类任务,即预测CPI的结果表示为无关联关系或者有关联关系,所以我们需要数据集提供化合物与蛋白质间的关联关系,其中的关系分别是阳性样本关联关系和阴性样本关联关系。
针对于我们需求的信息,我们最终在DrugBank数据库和Davis数据库提取的数据作为建立我们实验基本的数据集。对于DrugBank数据库和Davis数据库,它们都可以将详细的化合物数据和全面的蛋白质信息结合起来(Wishart et al., 2006) (Davis et al., 2011) [
Compounds | Proteins | Interactions | Positive | Negative | |
---|---|---|---|---|---|
Davis | 68 | 379 | 25,772 | 7320 | 18,452 |
DrugBank | 4294 | 6655 | 35,022 | 17,511 | 17,511 |
表1. 使用的两种数据的信息
我们模型的提出是基于transformer结构(Vaswani et al., 2017) [
图1. CT-CPI的工作框架
在嵌入模块,我们需要将化合物和蛋白质以序列的形式进行输入。在输入方面,我们使用smiles序列表示化合物,使用氨基酸序列表示蛋白质。化合物的smiles序列字符包括原子和结构表示符,共计64个。在蛋白质中,虽然氨基酸的种类一共有20种,但是由于在蛋白质基因组学的研究中会出现一些不确定的氨基酸或者罕见的氨基酸,所以我们最终确定的蛋白质的氨基酸序列的字符的数量一共有25个。那么我们可以通过嵌入模块,使得化合物的smiles序列、蛋白质的氨基酸序列转换为化合物、蛋白质的特征矩阵。嵌入模块后,化合物的嵌入矩阵为 C e ∈ R c s × c v ,其中 c s = { c s 1 , c s 2 } 表示化合物的嵌入长度,cv表示smiles字符的词汇量大小。蛋白质的嵌入矩阵为 P e ∈ R p s × p v ,其中 p s = { p s 1 , p s 2 } 表示蛋白质的嵌入长度,pv表示氨基酸的词汇量大小。图2表示为嵌入模块的具体工作流程。
图2. 嵌入模块的工作流程
在我们的模型中,我们希望通过不同尺寸的CNN模块以便获得化合物或者蛋白质的多个特征。为了计算机性能的考虑,我们为化合物与蛋白质分别设置了两个不同尺寸的CNN模块,如图1,即对化合物和蛋白质一共设置了四个不同的CNN module模块。在每一个CNN模块中,都包括三个一维卷积层,之后连接了一个一维最大池化层。在化合物的两个CNN模块中,我们既保证了模块间卷积核的大小不同,又保证了在最后输出的两个特征矩阵大小一致,同理,我们对蛋白质进行了相同的处理方法。并且,我们在每一个卷积层后都添加了一个激活函数,而且每个不同的CNN模块使用的激活函数都不相同,理由就是为了获得不同的特征。为了将化合物嵌入矩阵 C e 和蛋白质嵌入矩阵 P e 输入至CNN模块,我们需要通过非线性函数对 C e 和 P e 进行维数变化,使得:
C C N N i = F ( W C e ⋅ C e + b ) (1)
P C N N j = F ( W P e ⋅ P e + b ) (2)
其中 W C e ∈ R c v × f 表示对 C e 进行维数变换的权重, W P e ∈ R p v × f 表示对 P e 进行维数变换的权重,b表示偏置, F ( ∘ ) 表示非线性激活函数:ReLU函数。
经过CNN模块生成化合物特征矩阵 C C N N i ∈ R c s × f 和蛋白质特征矩阵 P C N N j ∈ R p s × f ,其中 i = { 1 , 2 } 表示化合物的第i个CNN模块, j = { 1 , 2 } 表示蛋白质的第j个CNN模块,f表示最后一个一维卷积层的滤波器个数,并且保证化合物和蛋白质最后一个一维滤波器的个数相同, C C N N 1 和 P C N N 1 使用的是激活函数Tanh函数, C C N N 2 和 P C N N 2 使用的是激活函数ReLu函数。
Transformer模型的核心是自注意力机制,在本篇论文使用的是多头注意力机制。在我们之前的介绍中,化合物的特征矩阵 C C N N i ∈ R c s × f ,其中 c s = { c s 1 , c s 2 } ,因为表示化合物的特征矩阵的维数不尽相同,所以我们通过多层感知机(MLP)将维数统一,蛋白质同理,我们也需要将蛋白质的特征矩阵的维数统一。所以通过多层感知机后的化合物和蛋白质的特征矩阵表示如下:
C ′ C N N i = F ( W C ⋅ C C N N i + b ) (3)
P ′ C N N j = F ( W P ⋅ P C N N j + b ) (4)
其中 F ( ∘ ) 表示非线性激活函数:ReLU函数, W C ∈ R c s 1 × c s 和 W P ∈ R p s 1 × p s 表示权重矩阵,b表示偏置。
因为通过多层感知机后的化合物的特征矩阵 C ′ C N N i ∈ R c s 1 × f 和蛋白质的特征矩阵 P ′ C N N j ∈ R p s 1 × f 的第二维数相同,所以符合多头注意力机制模型的输入标准。首先我们构建的是transformer机制的编码器部分,为了将两个特征矩阵转换成一个可交互的特征矩阵,因为在本模型中化合物与蛋白质都输入到了两个不同的CNN模块中,所以构建的多头注意力机制就包含两个头,而且那么 C ′ C N N 1 与 P ′ C N N 1 输入到一个注意力机制中, C ′ C N N 2 与 P ′ C N N 2 输入到另一个注意力机制中,注意力矩阵可以表示为 A k ∈ R c s 1 × p s 1 × f ,其中 k = { 1 , 2 } 。之后构建transformer机制的解码器部分,主要内容是将一个交互的特征矩阵转换成两个经过注意力机制的特征矩阵,即对注意力矩阵 A k ∈ R c s 1 × p s 1 × f 降维,那么:
A C k = squeeze ( A k , 2 ) (5)
A P k = squeeze ( A k , 1 ) (6)
其中 A C k ∈ R c s 1 × f 和 A P k ∈ R p s 1 × f 表示经过第k个头的多头注意力机制的化合物和蛋白质的特征矩阵, squeeze ( A k , 2 ) 表示注意力矩阵 A k 对第2维的降维方法, A k 是我们想要降维的数组,2表示为第2维。
在合并模块中,我们希望经过transformer机制的特征矩阵与未经过transformer机制的特征矩阵进行合并,那么首先我们将(3)、(4)的 C ′ C N N i 和 P ′ C N N j 进行整合成:
C ′ C N N = 1 2 ⋅ ∑ i = 1 2 C ′ C N N i (7)
P ′ C N N = 1 2 ⋅ ∑ j = 1 2 P ′ C N N j (8)
其中 C ′ C N N 和 P ′ C N N 表示整合后但未经过transformer机制的化合物和蛋白质的特征矩阵。
之后,我们整合经过transformer机制的化合物和蛋白质的特征矩阵,我们整合的特征矩阵采用相加取平均的方法,通过提取(5)、(6)的结果我们得到经过transformer机制的整合后的特征矩阵:
A C = 1 2 ⋅ ∑ k = 1 2 A C k (9)
A P = 1 2 ⋅ ∑ k = 1 2 A P k (10)
其中 A C 和 A P 表示整合后的经过transformer机制的化合物和蛋白质的特征矩阵。我们再将未经过transformer机制的特征矩阵与经过transformer机制的特征矩阵进行整合:
M C = 0.5 ⋅ C ′ C N N + A C ⊗ C ′ C N N (11)
M P = 0.5 ⋅ C ′ C N N + A P ⊗ C ′ C N N (12)
其中 M C 和 M P 表示整合后的可更新的化合物和蛋白质的特征矩阵, ⊗ 表示矩阵间各个元素相乘。之后合并化合物和蛋白质的特征矩阵:
Interaction = concat ( M C , M P ) (13)
其中Interaction表示合并后的特征矩阵, concat ( ∘ ) 表示按二维矩阵的列向量进行拼接。
我们将Interaction输入至多层感知机,表示为:
z l = σ ( W l ⋅ z l − 1 + b ) (14)
其中 l = { 1 , 2 , 3 } , z 0 = Interaction , σ ( ∘ ) 表示非激活函数:Leaky-ReLu函数, W l 表示第l层的多层感知机的权重矩阵,b表示偏置,表示最终的输出结果。在每个多层感知机中都加入一个Dropout,以便于忽略一些特征,其中Dropout是指随机选择的某一组神经元在训练阶段忽略单元(即神经元)。由于我们研究的CPI任务是一个二分类任务,所以我们使用二分类交叉熵损失函数来训练我们的模型:
l o s s = − [ z ⋅ log ( z 3 ) + ( 1 − z ) ⋅ log ( 1 − z 3 ) ] (15)
其中z表示真实值, z 3 是我们通过模型的预测结果。
我们将HyperAttentionDTI论文中使用的DrugBank数据库中的数据集作为基准数据集(Zhao et al., 2022),我们又与三种先进的方法进行了比较,主要从五个方面进行比较,分别是AUC、PRC、Accuracy、Precision和Recall。
Accuracy = T P + T N T P + F P + F N + T N (16)
Precision = T P T P + F P (17)
Recall = T P R = T P T P + F N (18)
F P R = F P F P + T N (19)
其中TP、TN、FP和FN分别表示真阳性、真阴性、假阳性和假阴性,TPR表示正样本中的正确判别率,FPR表示负样本中的错判率。AUC值通常使用ROC曲线围成的面积表示,ROC曲线的横纵坐标分别由FPR和TPR表示,PRC的横纵坐标分别由TPR和Precision表示。
本篇论文使用五折交叉验证的方法,意思是我们将数据随机且平均分成五份,将一份作为测试集,之后将剩余的四份在平均且随机的分成五份,取其中的一份作为验证集,剩下的数据作为训练集。模型重复五次计算以保证每个数据都至少都在测试集中出现过一次。为了防止这种方法出现随机性,我们将方法重复十次然后获得结果的平均值。
根据上述公式,我们基于两种数据集进行了实验,与MolTrans、TransformerCPI、HyperAttentionDTI和GA-ENs方法比较信息如表2和表3。
AUC | PRC | Accuracy | Precision | Recall | |
---|---|---|---|---|---|
MolTrans | 0.900 | 0.784 | 0.842 | 0.782 | 0.617 |
TransformerCPI | 0.877 | 0.767 | 0.822 | 0.688 | 0.688 |
HyperAttentionDTI | 0.920 | 0.839 | 0.866 | 0.754 | 0.780 |
CT-CPI | 0.956 | 0.919 | 0.890 | 0.831 | 0.854 |
表2. 基于Davis数据库与不同模型进行的比较
AUC | PRC | Accuracy | Precision | Recall | |
---|---|---|---|---|---|
MolTrans | 0.861 | 0.856 | 0.787 | 0.786 | 0.792 |
TransformerCPI | 0.837 | 0.836 | 0.764 | 0.750 | 0.792 |
HyperAttentionDTI | 0.889 | 0.897 | 0.810 | 0.799 | 0.829 |
GA-ENs | 0.934 | - | 0.865 | 0.900 | - |
CT-CPI | 0.958 | 0.842 | 0.913 | 0.780 | 0.747 |
表3. 基于DrugBank数据库与不同模型进行的比较
由表2和表3结果显示,我们的实验结果在基准数据集上是要优于其他先进的实验的。我们又根据实验的结果画出来了ROC曲线,基于Davis数据库的ROC曲线图如图3,基于DrugBank数据库的ROC曲线图如图4。
此外,我们还根据五折交叉验证分别计算了实验中每一折的AUC值,由图5显示,其中每一折AUC的值分别为0.9554、0.9556、0.9559、0.9549和0.9561,结果说明我们模型的效果稳定。
在我们的模型中,为了使得嵌入模块中的特征矩阵的维数更适合于化合物与蛋白质的嵌入长度,所以我们设置了一个阈值。对于Davis数据库,当化合物的长度 > 62时,我们使用嵌入尺寸为124 × 64的特征矩阵,若化合物的长度 ≤ 62,我们使用嵌入尺寸62 × 64的特征矩阵,其中64表示smiles字符的词汇量,同理,我们设置蛋白质长度的阈值为744,若蛋白质长度超过744,那么我们使用嵌入尺寸1488 × 25的特征矩阵,同理,若蛋白质长度 ≤ 744,那么我们使用嵌入尺寸744 × 25的特征矩阵,其中25表示氨基酸的词汇量。我们又设置了其他的超参数,学习率为1e−4,批处理大小为8。在CNN模块中,一共有四个不同的CNN模块,它们都是由3个一维CNN卷积层组成,其中化合物的CNN模块卷积核大小分别为3,6,9和4,6,8;蛋白质的CNN模块卷积核大小分别为2,8,14和4,8,12。在最后多层感知机中,我们在每层感知机后都加入了一个Dropout,Dropout设置为0.1。在本篇论文我们引入了早停法,早停法持续周期为20周期。早停法的意思表示是在实验训练完成一次后,我们会比较训练损失和验证损失,如果训练损失大于验证损失,说明模型没有过拟合,那么模型需要继续训练,然而如果出现验证损失大于训练损失,说明模型可能出现过拟合,那么模型进入早停周期,如果周期持续20周期但是训练损失仍然小于验证损失,那么停止训练。表4总结了我们使用参数的信息。
图3. 基于Davis数据库的不同实验的ROC曲线
图4. 基于DrugBank数据库的不同实验的ROC曲线
我们基于Davis数据库和DrugBank数据库的数据的模型,我们从三个方面进行了消融实验,分别将这三种模型命名为CT-CPI-Size、CT-CPI-Cnn和CT-CPI-Transformer,分别从模型尺寸、CNN个数和消除transformer模型的三个方面建立的消融实验模型。
图5. 每一折实验的ROC曲线
Parameters | Setting |
---|---|
The threshold of compounds | 62 |
The threshold of proteins | 744 |
Learing rate | 0.0001 |
Weight decay | 0.0001 |
Batch size | 8 |
Epoch | 200 |
CNN1 Filter (Compounds) | [3, 6, 9] |
CNN2 Filter (Compounds) | [4, 6, 8] |
CNN3 Filter (Proteins) | [2, 8, 14] |
CNN4 Filter (Proteins) | [4, 8, 12] |
Early stopping epoch | 20 |
表4. 模型的部分参数信息
对于CT-CPI的嵌入尺寸,如果我们设置的嵌入长度cs和ps的值过大,那么我们设置的化合物和蛋白质的嵌入矩阵也会过大,从而导致嵌入矩阵中包含大量无用元素。反之如果值过小,那么得到的嵌入矩阵也会过小,那么嵌入矩阵会丢失很多元素。对于嵌入长度的值的设置,我们先获得数据长度的平均值,平均值的大小可以最大程度的保证符合大多数数据的尺寸大小。那么我们将平均值作为cs1和ps1的值。其中基于DrugBank数据库的化合物、蛋白质长度的平均值为59、499,Davis数据库的化合物、蛋白质长度的平均值为62、744。
那么作为CT-CPI嵌入尺寸的消融实验模型,我们命名为CT-CPI-Size (Lc, Lp),其中Lc和Lp分别表示嵌入长度cs和ps的cs1和ps1的值。我们使用了两种CT-CPI-Size (Lc, Lp)与原模型进行了比较,基于DrugBank数据库、Davis数据库比较结果如表5和表6。
AUC | PRC | Accuracy | Precision | Recall | |
---|---|---|---|---|---|
CT-CPI | 0.958 | 0.842 | 0.913 | 0.780 | 0.747 |
CT-CPI-Size(53,449) | 0.950 | 0.861 | 0.889 | 0.765 | 0.811 |
CT-CPI-Size(63,549) | 0.944 | 0.874 | 0.879 | 0.786 | 0.805 |
表5. 基于DrugBank数据库与基于尺寸的消融实验模型进行的比较
AUC | PRC | Accuracy | Precision | Recall | |
---|---|---|---|---|---|
CT-CPI | 0.956 | 0.919 | 0.890 | 0.831 | 0.854 |
CT-CPI-Size(57,694) | 0.934 | 0.835 | 0.882 | 0.772 | 0.727 |
CT-CPI-Size(67,794) | 0.955 | 0.844 | 0.905 | 0.768 | 0.740 |
表6. 基于Davis数据库与基于尺寸的消融实验模型进行的比较
对于CNN模块,我们希望引入多个CNN模块是为了获取通过不同降维,从而得到的多个特征,如果我们设置的CNN模块过多,不但会加重计算机的运算负担,而且因为特征过多,导致噪声特征也会存在,所以可能会对预测结果产生负作用。但是如果CNN模块较少,那么特征较少,所以可能无法获得数据的全面性。
对于CT-CPI的CNN模块消融实验模型,我们命名为CT-CPI-Cnn(a),其中a表示CNN模块的个数,我们依旧是做出了两种消融实验模型与原模型进行对比,对比结果如表7。
AUC | PRC | Accuracy | Precision | Recall | |
---|---|---|---|---|---|
CT-CPI | 0.956 | 0.919 | 0.890 | 0.831 | 0.854 |
CT-CPI-Cnn(1) | 0.920 | 0.834 | 0.865 | 0.771 | 0.722 |
CT-CPI-Cnn(3) | 0.934 | 0.833 | 0.879 | 0.755 | 0.732 |
表7. 基于Davis数据库与基于CNN的消融实验模型进行的比较
为了验证transformer模块的有效性,我们在消融实验中将transformer模块删除,并且使用合并方法将化合物向量特征与蛋白质向量特征整合,我们使用的(13)方法作为合并方法。那么消融实验模型的结果与原模型的结果对比如表8。
AUC | PRC | Accuracy | Precision | Recall | |
---|---|---|---|---|---|
CT-CPI | 0.956 | 0.919 | 0.890 | 0.831 | 0.854 |
CT-CPI-Transformer | 0.917 | 0.837 | 0.862 | 0.770 | 0.734 |
表8. 基于Davis数据库与基于CNN的消融实验模型进行的比较
在本文中,我们设计了一个名为“CT-CPI”的端到端的模型用来预测CPI。我们改变了之前基准论文中的嵌入方法,对不同长度的样本分别进行了处理。我们使用的多个CNN模块获得了样本的多个特征,这些都表明,我们模型训练完成的特征是更加匹配于样本的特征。
在验证模型有效性时,基于Davis数据库数据,我们使用五折交叉验证的模型的AUC值与Accuracy值达到了95.6%和89.0%,其结果表明了在预测CPI方面,该模型有着良好的预测效果。
而且我们也使用了不同的数据集进行了预测测试,其结果依旧是较为准确的。所以我们的模型与最先进的模型相比在基准数据集上,结果表明,在我们评估的性能上,我们的模型取得了明显的改进。
目前,我们对嵌入方法只做了部分的优化,那么在未来的工作中,我们希望对嵌入方法进行更多的创新,使得在预测CPI方向上,我们的模型有更好的预测能力。
赵天舒. CT-CPI:基于整合CNN模块与Transformer的化合物–蛋白质相互作用深度学习模型CT-CPI: Deep Learning Model of Compound-Protein Interaction Based on Integrated CNN Module and Transformer[J]. 人工智能与机器人研究, 2024, 13(02): 322-333. https://doi.org/10.12677/airr.2024.132034
https://doi.org/10.1038/nrd986
https://doi.org/10.1038/nrg1317
http://arxiv.org/abs/1507.05717v1
https://doi.org/10.1093/bioinformatics/bty593
https://doi.org/10.1371/journal.pcbi.1007129
https://doi.org/10.1101/684662
https://doi.org/10.48550/arXiv.1706.03762
https://doi.org/10.1093/bioinformatics/btaa524
https://doi.org/10.1093/bioinformatics/btaa880
https://doi.org/10.1093/bioinformatics/btab715
https://doi.org/10.1093/nar/gkj067
https://doi.org/10.1038/nbt.1990
https://doi.org/10.1111/j.1747-0285.2009.00802.x