实战药物分子筛选之一 _ 初探

#算法实战

##1. 说明

  基于人工智能的药物分子筛选,是最近在 DC 大数据平台上看到的一个新比赛.这个题目对于我这种半科盲来说好难.花了一些时间才弄明白它是干嘛的.这是一家药品公词举办的比赛.我理解题目是这样的:给出三种数据:致病蛋白信息(病),小分子信息(药),蛋白和小分子间的亲和力(药和病能否结合),预测N种没见过的致病蛋白与已知的小分子之间的亲和力.简单地说就是知道一些病和药的特征以及它们之间的关系,预测一些新的病用什么药治.具体数据如下:

­­

##2. 数据分析

  蛋白质由氨基酸组成,氨基酸一共有 20 种,每一种用一个英文字母表示.蛋白质有四级结构,一级结构是组成蛋白质的氨基酸序列,二三四级还有螺旋折叠什么时,这里我们只考虑其一级结构,即某个蛋白质由哪些氨基酸组成的,它们的长度以及前后顺序是怎样的.在给出的数据(df_protein*.csv)中,氨基酸序列形如:FCIPTSSTIEQQNSTRVRQNTREHPSTANTVDRTNHQLENLEAETAPLP 它是一个由字母组成的序列.最长的一项长度为 7023,最短的长度为 26 个字符.测试集给出了与训练集不同的蛋白质及其序列,用于模拟发现新致病蛋白的场景.

  小分子的数据(df_molecule.csv)中包含分子指纹及对应的 18 种物化属性,对于训练集和预测集是一样的.而亲和力数据(df_affinity*.csv)是蛋白质和小分子之间的关系(多对多),也是我们要预测的目标.

##3. 算法分析

  计算的目标是找到有哪些特征的小分子和哪些特征的蛋白质可以结合.小分子数据中包括 20 个特征,而蛋白质数据只包括氨基酸序列(后简称序列).由于预测集和训练集中的蛋白质没有交集,所以只能通过序列来分析蛋白质的性质.

  比较理想的方法是将把序列拆分成一些氨基酸片断,把是否含有该片断作为蛋白质的特征,代入模型,问题就变成了用小分子的特征和蛋白质的特征预测它们之间亲和力数值大小的回归问题.

  如何拆分序列很关键.有点像自然语言处理(NLP)中,把一个中文句子拆成多个中文词汇,然后找出其中的关键词.而事先并不知道哪些字可以合成一个词,词汇也不定长,具体方法是用一些文章来自我训练,可使用类似 Apriori 寻找频繁项集的算法.

  从蛋白质的角度看,总是一起出现的字母组合可以看成一个词,在本题中即有意义的片断;从亲和力角度看,如果一个小分子对应的几个蛋白质中都含有相同的片断,可以将其视为有意义的片断.

  当然这里面也有一些坑,比如说某几个蛋白质对应的序列只有一个氨基酸的差异,我们也不能把它们相同的序列都认为是一个有意义的片断,就比如有三个句子:"我喜欢春天的花","我喜欢春天的草","我喜欢春天的树".其中"我喜欢春天的"虽然同时出现了好几次,但明显不是一个词.另外还有大片断包含小片断等等情况.其中的序列长度范围,出现频率都需要边做边调整.

##4. 相关知识

(1) IK analyzer

IK Analyzer 是一个开源的,基于 java 语言开发的轻量级中文分词工具包.除了基于字符串的分词,还提供了基于统计和机器学习的分词.

(2) N-Gram

N-Gram 是一种语言模型,nltk 工具集中包含此工具,它可以评价两个字符串的相似程度.常用于模糊匹配.比如我们可以用它衡量两个蛋白质之间的差异,配合最近邻类的算法使用.但是相对来说,这种算法不容易指向实质.

(3) Gensim 的 Word2Vec

Word2Vec 词向量,可将自然语言中的字词转为计算机可以理解的稠密向量.它描述了每个词和其上下文的词的集合的相关情况.

(4) NCBI

NCBI (National Center for Biotechnology Information)是美国国立生物技术信息中心。在这上面可以查到一些蛋白质序列和 DNA 序列的信息.

(5) BLAST

BLAST(Basic Local Alignment Search Tool)是一套在蛋白质数据库或 DNA 数据库中进行相似性比较的分析工具。BLAST 程序能迅速与公开数据库进行相似性序列比较。其结果中的得分是对一种对相似性的统计说明。

##5. 参考

(1) 蛋白质序列分析及结构预测 第一讲 https://wenku.baidu.com/view/7903145ad1f34693dbef3ed8.html