从零入门 AI for Science(AI+药物) #Datawhale AI 夏令营
优雅的造轮狮 2024-08-02 11:01:02 阅读 78
使用平台
我的Notebook · 魔搭社区 https://modelscope.cn/my/mynotebook/preset
主要操作
运行实例,如果有时长尽量选择方式二(以下操作基于方式二的实例实现)
创建文件夹,并重命名为 2.3siRNA
上传两个文件
到文件夹, 这里面的第三个按钮是上传
在当前文件夹打开终端(如图示意打开终端)并输入解压命令
注意:如果你的压缩包名字不是这个请将“siRNA_0715.zip” 换成你的压缩文件的名字“xxx.zip”(xxx为文件名)
(方便复制)
<code>unzip siRNA_0715.zip
到这里准备工作可以了,如果解压出问题了,可以重新上传一下,然后重复解压的操作
总览
详细可以参考这篇
参赛平台
上海科学智能研究院
Task 1 跑通基线
baseline
运行笔记本
2.3siRNA/task3.2_siRNA.ipynb
就是这个橙不溜秋的书签,双击运行
运行笔记本中的所有代码
等待结果出来
可以看到多了一个文件夹和文件
右键下载result/submission.csv文件(download)
注意用完平台记得关闭实例(右上角)!!!
注意用完平台记得关闭实例(右上角)!!!
注意用完平台记得关闭实例(右上角)!!!
tips: 算力充足可以当我没说,不关的话时长会一直使用
提交文件获得第一个分数
平台: 上海科学智能研究院
注册和实名制略过
点击提交结果和选中刚刚下载的文件等待上传
点击我的成绩查看分数
其中task1中只选择了部分作为特征值,可以将全部的有效数据转换成特征值,必涨点。
训练数据表头说明
数据来源于官网
特征的分析总结
特征类别 | 特征字段名称 | 特征描述 | 分析目的 |
---|---|---|---|
基因特异性 | gene_target_symbol_name | 靶基因符号名称 | 研究不同基因名称对siRNA设计的影响 |
gene_target_ncbi_id | 靶基因的NCBI标识 | 研究不同NCBI ID对siRNA设计的影响 | |
gene_target_species | 靶基因参考序列的物种 | 研究不同物种对siRNA沉默效率的影响 | |
siRNA序列特征 | siRNA_sense_seq | siRNA的sense序列 | 分析sense序列设计对沉默效率的影响 |
siRNA_antisense_seq | siRNA的antisense序列 | 分析antisense序列设计对沉默效率的影响 | |
modified_siRNA_sense_seq | 带修饰的siRNA的sense序列 | 分析修饰对siRNA功能的影响 | |
modified_siRNA_antisense_seq | 带修饰的siRNA的antisense序列 | 分析修饰对siRNA功能的影响 | |
siRNA浓度和单位 | siRNA_concentration | 实验使用的siRNA浓度 | 研究不同浓度对沉默效率的影响 |
concentration_unit | siRNA浓度单位 | 研究不同单位对siRNA浓度影响的理解 | |
转染方法 | Transfection_method | 转染方法 | 分析不同转染技术对siRNA传递和沉默效果的影响 |
转染后持续时间 | Duration_after_transfection_h | 转染后持续时间 | 了解转染后不同时间点的沉默效果 |
序列分解列表 | modified_siRNA_sense_seq_list | 带修饰的siRNA的sense序列分解列表 | 识别关键核苷酸位点,优化siRNA设计 |
modified_siRNA_antisense_seq_list | 带修饰的siRNA的antisense序列分解列表 | 识别关键核苷酸位点,优化siRNA设计 | |
靶基因序列 | gene_target_seq | 靶基因的参考序列 | 分析siRNA与靶基因序列匹配程度对沉默效率的影响 |
沉默效率 | mRNA_remaining_pct | 实验后mRNA的剩余百分比 | 评估不同条件下siRNA沉默效率的直接指标 |
目前尝试了 计算序列的长度 、计算序列的熵值、序列中腺嘌呤(A)、胸腺嘧啶(T)、胞嘧啶(C)和鸟嘌呤(G)的数目、GC含量、序列的熵值
创建了两个函数作为特征
<code>calculate_sequence_features 函数:
它首先计算序列的长度。然后计算序列中腺嘌呤(A)、胸腺嘧啶(T)、胞嘧啶(C)和鸟嘌呤(G)的数目,并由此计算出它们的相对频率。接着计算GC含量,即序列中G和C的比例,这是影响DNA稳定性的一个重要因素。计算序列的熵值,熵是一个度量序列随机性或复杂性的指标。熵越高,表示序列的多样性越高,没有明显的偏好性。
calculate_entropy
函数:
计算序列中每个核苷酸(A、C、G、T)的数目。用一个字典来存储每个核苷酸的计数。遍历这个字典,对每个非零计数的核苷酸,使用公式
−
p
log
2
(
p
)
-p \log_2(p)
−plog2(p) 来计算其对熵的贡献。
(比赛原因先不贴代码)
至此Task1 baseline 任务完成
Task1 知识点终结
基因组分词器类
基因组分词器的目的是将基因组序列分割成固定长度的n-gram片段。这是为了进一步处理或分析基因组数据时的需要。
基因组数据通常是由ACGT四个字母(腺嘌呤、胞嘧啶、鸟嘌呤和胸腺嘧啶)组成的序列。
n-gram
指由n个连续字母构成的片段。将基因组序列分割成n-gram片段可以帮助我们理解基因组的结构和功能。
基因组分词器将基因组序列分割成固定长度的n-gram片段可以用于以下应用:
基因组注释:通过分析n-gram片段可以识别基因、启动子、转录因子结合位点等功能区域。基因组比对:将n-gram片段与已知的基因组序列进行比对,可以找到相似的片段并识别基因的同源性。基因组序列分类:通过分析n-gram片段可以将不同物种的基因组序列进行分类。
GRU的神经网络模型
GRU是一种循环神经网络(RNN)模型,全称为Gated Recurrent Unit。它是一种改进的RNN架构,用于处理序列数据,尤其在自然语言处理和语音识别等任务中表现出色。
GRU通过引入门控机制来解决传统RNN存在的短期记忆和长期记忆不平衡的问题。它具有两个门控单元:重置门(reset gate)和更新门(update gate)。重置门控制了当前状态如何与先前状态相结合,而更新门控制了用于传递信息的新状态的计算。
GRU单元结构如下图所示
GRU是Ilya Sutskever和Oriol Vinyals等人在2014年提出的一种改进的RNN单元,它旨在解决传统RNN在处理长序列时出现的梯度消失或梯度爆炸问题。
GRU的核心思想是引入两个门控机制:更新门(Update Gate)和重置门(Reset Gate)。这两个门控机制允许模型动态地决定在每个时间步上应该保留多少之前的信息,以及应该更新多少当前的信息。这使得GRU能够更好地捕捉长距离依赖关系。
GRU的数学模型
更新门(Update Gate)
更新门决定了在当前时间步应该保留多少之前的隐藏状态。更新门的公式如下:
z
t
=
σ
(
W
z
⋅
[
h
t
−
1
,
x
t
]
)
z_t = \sigma(W_z \cdot [h_{t-1}, x_t])
zt=σ(Wz⋅[ht−1,xt])
其中,
z
t
z_t
zt 是更新门的输出,
W
z
W_z
Wz 是更新门的权重矩阵,
σ
\sigma
σ 是sigmoid函数(不懂的后面有讲 sigmoid函数)。
重置门(Reset Gate)
重置门决定了在当前时间步应该忽略多少之前的隐藏状态。重置门的公式如下:
r
t
=
σ
(
W
r
⋅
[
h
t
−
1
,
x
t
]
)
r_t = \sigma(W_r \cdot [h_{t-1}, x_t])
rt=σ(Wr⋅[ht−1,xt])
其中,
r
t
r_t
rt 是重置门的输出,
W
r
W_r
Wr 是重置门的权重矩阵。
候选隐藏状态(Candidate Hidden State)
候选隐藏状态是当前时间步的新信息,其公式如下:
h
~
t
=
tanh
(
W
⋅
[
r
t
⊙
h
t
−
1
,
x
t
]
)
\tilde{h}_t = \tanh(W \cdot [r_t \odot h_{t-1}, x_t])
h~t=tanh(W⋅[rt⊙ht−1,xt])
其中,
h
~
t
\tilde{h}_t
h~t 是候选隐藏状态,
W
W
W 是候选隐藏状态的权重矩阵,
⊙
\odot
⊙ 表示Hadamard乘积(不懂的后面有讲 Hadamard乘积)。
最终隐藏状态(Final Hidden State)
最终隐藏状态结合了之前保留的信息和当前的新信息,其公式如下:
h
t
=
(
1
−
z
t
)
⊙
h
t
−
1
+
z
t
⊙
h
~
t
h_t = (1 - z_t) \odot h_{t-1} + z_t \odot \tilde{h}_t
ht=(1−zt)⊙ht−1+zt⊙h~t
其中,
h
t
h_t
ht 是最终的隐藏状态。
GRU在自然语言处理、语音识别和时间序列预测等领域有着广泛的应用。
小结
相比于普通的RNN模型,GRU具有更好的记忆能力和更强的建模能力,同时减少了参数数量,使得训练过程更加高效。 由于其优秀的性能和实用性,GRU已经成为经典的循环神经网络模型之一,并被广泛应用于各种序列数据分析任务中。
学科知识
RNA干扰(RNAi)
RNA干扰(RNAi)是一种细胞内的基因调控机制,通过通过RNA分子的干扰来抑制特定基因的表达。
RNAi在细胞内通过两种途径实现:小干扰RNA(siRNA) 和微小RNA(miRNA)。
在RNAi中,基因表达的抑制通常发生在转录后水平。当特定基因的DNA序列转录成RNA时,RNA聚合酶将生成多个复制的RNA分子。这些RNA分子中的一部分可以通过Dicer酶切割成长度约为21-23个核苷酸的小片段,即siRNA或miRNA。这些小片段与蛋白质复合物形成RNA-诱导沉默复合物(RISC),并通过与靶标mRNA相互作用来抑制其翻译或引起其降解。
siRNA是通过外源性引入细胞的siRNA分子,通过与特定基因的mRNA相互作用来抑制其表达。
miRNA是内在于细胞的小RNA分子,能够识别并与多个基因的mRNA结合,从而调节多个基因的表达。
RNAi在生物学研究中被广泛应用。可以用于研究基因功能,筛选潜在药物靶点,开发基因治疗方法等。还有潜力成为治疗疾病的方法,包括癌症、病毒感染和遗传疾病等。
Dicer 酶
RNA 干扰(RNAi)过程中的一个关键酶。它是一种 RNase III 家族的内切酶,在 RNAi 过程中起着重要的作用。
Dicer 酶能够识别和切割双链 RNA(dsRNA)分子,将其切割成短的双链小干扰 RNA(siRNA)。
RNAi作用机制
文档内容里面的这个讲的很详细我啃臭cv一份
生物体内,RNAi首先将较长的双链RNA加工和切割成 siRNA,通常在每条链的3’末端带有2个核苷酸突出端。负责这种加工的酶是一种RNase III样酶,称为Dicer。形成后,siRNA与一种称为RNA诱导的沉默复合物(RNAinduced silencing complex, RISC)的多蛋白组分复合物结合。在RISC复合物中,siRNA链被分离,具有更稳定的5′末端的链通常被整合到活性RISC复合物中。然后,反义单链siRNA组分引导并排列在靶mRNA上,并通过催化RISC蛋白(Argonaute family(Ago2))的作用,mRNA被切割,即对应基因被沉默,表达蛋白能力削弱。
传统siRNA设计原则与知识
siRNA的沉默效率与众多因素相关,例如siRNA的稳定性、修饰、转染方法等。一些经验的生物知识可用于特征构建和AI模型的设计。
在siRNA一般设计过程中有以下知识和原则:
siRNA序列(一般为反义链)与靶向RNA互补。siRNA序列长度一般在19~29nt之间。研究表明21nt相比27nt对靶基因的最大抑制率更容易达到。一般来说,从靶基因起始密码子AUG下游50~100个核苷酸,或位于终止密码子50-100个核苷酸范围内的序列(确保转录基因为沉默状态)搜寻理想的siRNA序列,越靠近靶基因的3′端,其基因沉默效果可能越好。一般设计好的潜在siRNA序列,会在GenBank数据库进行BLAST,去掉其他基因有显著同源性的靶序列(错误靶向)。具体序列而言,最好为AA+(Nn)UU(N代表任意碱基,n为碱基数目),其次是NA(Nn)UU和NA(Nn)NN。一般情况下,siRNA的稳定性直接影响其最终在细胞中的敲低效率。在siRNA的反义链5’端第一个碱基尽量可能是为A或U; siRNA正义链的5’端第一个碱基尽量为G或C。一般情况下,3′端的2个碱基使用突出的dTdT(deoxythymidine dinucleotide)取代,能够增强siRNA 双链复合体的稳定性,进而增加siRNA的敲低效率。G/C含量在30%~52%的siRNA序列,其沉默基因效果较好。研究表明40–55% GC的含量敲低效率高于GC含量高于55%的。一般来说,siRNA序列中连续2个及以上G/C能够降低双链RNA内在稳定性,从而降低siRNA在细胞中的敲低效率;而连续3个以上的A和U可能终止由RNA Polymerase III介导的转录作用。siRNA序列中的重复序列或回文结构可能形成发夹状结构,这种结构的存在可以降低siRNA敲低效率。
化学修饰siRNA
化学修饰siRNA是指通过在siRNA分子上引入化学修饰基团,改变其结构或性质的方法。这种修饰可以增强siRNA的稳定性、增加其目标特异性、改善细胞内进入能力等。
常用的siRNA化学修饰包括以下几种:
2’-氧甲基(2’-O-Me)修饰:这种修饰是将2’-羟基上的氧原子替换为甲基基团。它可以增加siRNA的稳定性,提高RNA酶的抵抗性。2’-氟(2’-F)修饰:这种修饰是将2’-羟基上的氧原子替换为氟原子。它可以提高siRNA的稳定性和特异性,减少对非特定靶标的作用。磷酸甲酯(PS)修饰:这种修饰是在磷酸二酯桥上引入甲酯基团。它可以增强siRNA的稳定性和细胞内进入能力。枝状修饰:这种修饰是在siRNA分子上引入枝状结构,增加其稳定性和亲水性。核苷酸修饰:这种修饰是在siRNA的碱基上引入修饰基团,例如甲基化、二硫苷化等。它可以改变siRNA与靶标RNA的配对能力和稳定性。
化学修饰siRNA可以优化其性能和提高其在RNAi研究和治疗中的应用潜力。但化学修饰可能会对siRNA的活性和毒性产生影响,因此在设计和选择修饰方案时需要进行全面的评估和优化。
机器学习知识点
MAE (Mean Absolute Error)
表示预测值与真实值之间的平均绝对误差。
它计算每个样本的预测值与真实值之间的差值的绝对值,然后对所有样本取平均。
召回率(Recall)
表示所有真正例中被正确预测为正例的比例。
召回率可以衡量模型对正例的覆盖程度,即模型有多少能够找到真正例。
F1得分
精确度和召回率的调和平均值。
F1得分的取值范围为0到1,其中1表示最佳性能,0表示最差性能。
精确度(Precision)
表示被预测为正例中实际为正例的比例。
精确度可以衡量模型的准确性,即模型有多少预测为正例的样本真正是正例。
赛题评分代码
<code># score = 50% × (1−MAE/100) + 50% × F1 × (1−Range-MAE/100)
def calculate_metrics(y_true, y_pred, threshold=30):
# 计算平均绝对误差(MAE)
mae = np.mean(np.abs(y_true - y_pred))
# 将真实值和预测值转换为二值标签,根据阈值进行分类
y_true_binary = (y_true < threshold).astype(int)
y_pred_binary = (y_pred < threshold).astype(int)
# 阈值(30)
# 创建一个掩码,用于将预测值限制在指定范围内
mask = (y_pred >= 0) & (y_pred <= threshold)
# 在掩码范围内计算平均绝对误差(MAE)
range_mae = mean_absolute_error(y_true[mask], y_pred[mask]) if mask.sum() > 0 else 100
# 计算精确度、召回率和F1分数
precision = precision_score(y_true_binary, y_pred_binary, average='binary')code>
recall = recall_score(y_true_binary, y_pred_binary, average='binary')code>
f1 = 2 * precision * recall / (precision + recall)
# 计算综合评分
score = (1 - mae / 100) * 0.5 + (1 - range_mae / 100) * f1 * 0.5
return score
综合评分
score = (1 - mae / 100) * 0.5 + (1 - range_mae / 100) * f1 * 0.5
最终的评分是根据模型在三个方面的表现进行计算的。
通过计算平均绝对误差(MAE)来衡量模型的整体预测精度,MAE越小,表明模型的预测误差越小,得分越高。通过计算在指定范围内的平均绝对误差(Range MAE),来衡量模型对于特定范围内的预测的准确性,Range MAE越小,表明模型在该范围内的预测误差越小,得分越高。计算模型的分类性能,即精确度、召回率和F1得分。F1得分越高,表明模型在分类任务上的性能越好,得分越高。最终的评分是这几个值的加权平均数,其中MAE和Range MAE各占50%权重。
综合考虑这些因素,可以得出模型的总体表现得分。
小结
在分类问题中,精确度和召回率是互相影响的指标。高精确度可能意味着模型只预测那些非常确信的正例,导致召回率较低。相反,高召回率可能意味着模型会将更多样本预测为正例,导致精确度较低。因此,F1得分作为精确度和召回率的综合指标,可以平衡这两个指标的表现。在评估模型性能时,通常会综合考虑精确度、召回率和F1得分。
Sigmoid函数
一种常用的激活函数,用于在神经网络中引入非线性。
它的数学表达式如下:
s
i
g
m
o
i
d
(
x
)
=
1
/
(
1
+
e
x
p
(
−
x
)
)
sigmoid(x) = 1 / (1 + exp(-x))
sigmoid(x)=1/(1+exp(−x))
其中,
e
x
p
(
−
x
)
exp(-x)
exp(−x)表示e的-x次方,e是自然常数。
Sigmoid函数的输出值范围在0到1之间,通常用于将输入值映射到一个概率分布,或者作为二分类问题中的激活函数。
在GRU单元中,Sigmoid函数被用于计算两个门控向量:更新门(update gate)和重置门(reset gate)。这两个门控向量通过Sigmoid函数将输入向量和先前的隐藏状态向量映射到0到1之间的值,以控制它们对更新和重置操作的贡献。
更新门决定了先前的隐藏状态应该如何被保留或更新,而重置门决定了先前的隐藏状态如何与当前输入进行组合。
Sigmoid函数在GRU单元中通过限制门控向量的取值范围,使得GRU单元能够自适应地更新和遗忘信息,并有效地处理输入序列数据。
Hadamard乘积
也称为元素级乘积或逐元素乘积,是一种运算,用来对两个具有相同维度的向量、矩阵或张量进行逐元素的相乘。
对于两个维度相同的向量 A 和 B,Hadamard乘积的运算规则为:
C
=
A
⊙
B
C = A ⊙ B
C=A⊙B
其中 ⊙ 表示Hadamard乘积运算,C 是结果向量,C 的每个元素都等于 A 和 B 对应位置元素的乘积。
对于矩阵和张量,Hadamard乘积的运算规则与向量相同,只不过是在对应位置的元素进行相乘。
Hadamard乘积通常用于逐元素操作,如逐元素乘法、逐元素加法等。
它与矩阵乘法或点积运算不同,矩阵乘法是对应位置元素的乘积再求和,
而Hadamard乘积是对应位置元素直接相乘。
Hadamard乘积在深度学习中经常用于一些操作,如逐元素激活函数、逐元素损失函数、逐元素操作的正则化等。它可以帮助模型学习非线性关系,同时保持数据的维度不变。
从零入门 AI for Science(AI+药物) #Datawhale AI 夏令营 Task2
上一篇: IntelliJ IDEA 2024.1 最新变化 附问卷调查 AI
本文标签
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。