当前位置: 代码网 > 科技>人工智能>机器学习 > 从零入门 AI for Science(AI+药物) #Datawhale AI 夏令营

从零入门 AI for Science(AI+药物) #Datawhale AI 夏令营

2024年08月01日 机器学习 我要评论
从零入门 AI for Science(AI + 药物) #Datawhale AI 夏令营

使用平台

我的notebook · 魔搭社区 https://modelscope.cn/my/mynotebook/preset

主要操作

  1. 运行实例,如果有时长尽量选择方式二(以下操作基于方式二的实例实现
    在这里插入图片描述

  2. 创建文件夹,并重命名为 2.3sirna

  3. 上传两个文件在这里插入图片描述
    到文件夹, 这里面的第三个按钮是上传在这里插入图片描述

  4. 在当前文件夹打开终端(如图示意打开终端)并输入解压命令
    在这里插入图片描述

注意:如果你的压缩包名字不是这个请将“sirna_0715.zip” 换成你的压缩文件的名字“xxx.zip”(xxx为文件名)
(方便复制)

unzip sirna_0715.zip 
到这里准备工作可以了,如果解压出问题了,可以重新上传一下,然后重复解压的操作

总览

在这里插入图片描述

参赛平台

上海科学智能研究院

task 1 跑通基线

  1. 运行笔记本
  1. 运行笔记本中的所有代码
    在这里插入图片描述
  2. 等待结果出来
    在这里插入图片描述
    可以看到多了一个文件夹和文件

在这里插入图片描述

注意用完平台记得关闭实例(右上角)!!!
注意用完平台记得关闭实例(右上角)!!!
注意用完平台记得关闭实例(右上角)!!!

在这里插入图片描述
tips: 算力充足可以当我没说,不关的话时长会一直使用

提交文件获得第一个分数

平台: 上海科学智能研究院

点击提交结果和选中刚刚下载的文件等待上传

在这里插入图片描述
在这里插入图片描述

点击我的成绩查看分数

在这里插入图片描述
其中task1中只选择了部分作为特征值,可以将全部的有效数据转换成特征值,必涨点。
在这里插入图片描述

训练数据表头说明

在这里插入图片描述

特征的分析总结
特征类别特征字段名称特征描述分析目的
基因特异性gene_target_symbol_name靶基因符号名称研究不同基因名称对sirna设计的影响
gene_target_ncbi_id靶基因的ncbi标识研究不同ncbi id对sirna设计的影响
gene_target_species靶基因参考序列的物种研究不同物种对sirna沉默效率的影响
sirna序列特征sirna_sense_seqsirna的sense序列分析sense序列设计对沉默效率的影响
sirna_antisense_seqsirna的antisense序列分析antisense序列设计对沉默效率的影响
modified_sirna_sense_seq带修饰的sirna的sense序列分析修饰对sirna功能的影响
modified_sirna_antisense_seq带修饰的sirna的antisense序列分析修饰对sirna功能的影响
sirna浓度和单位sirna_concentration实验使用的sirna浓度研究不同浓度对沉默效率的影响
concentration_unitsirna浓度单位研究不同单位对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含量、序列的熵值

创建了两个函数作为特征

  1. calculate_sequence_features 函数:

    • 它首先计算序列的长度。
    • 然后计算序列中腺嘌呤(a)、胸腺嘧啶(t)、胞嘧啶(c)和鸟嘌呤(g)的数目,并由此计算出它们的相对频率。
    • 接着计算gc含量,即序列中g和c的比例,这是影响dna稳定性的一个重要因素。
    • 计算序列的熵值,熵是一个度量序列随机性或复杂性的指标。熵越高,表示序列的多样性越高,没有明显的偏好性。
  2. calculate_entropy 函数:

    • 计算序列中每个核苷酸(a、c、g、t)的数目。
    • 用一个字典来存储每个核苷酸的计数。
    • 遍历这个字典,对每个非零计数的核苷酸,使用公式 − p log ⁡ 2 ( p ) -p \log_2(p) plog2(p) 来计算其对熵的贡献。

(比赛原因先不贴代码)

task1 知识点终结

基因组分词器类

基因组分词器的目的是将基因组序列分割成固定长度的n-gram片段。这是为了进一步处理或分析基因组数据时的需要。

基因组数据通常是由acgt四个字母(腺嘌呤、胞嘧啶、鸟嘌呤和胸腺嘧啶)组成的序列。

n-gram

基因组分词器将基因组序列分割成固定长度的n-gram片段可以用于以下应用:

  • 基因组注释:通过分析n-gram片段可以识别基因、启动子、转录因子结合位点等功能区域。
  • 基因组比对:将n-gram片段与已知的基因组序列进行比对,可以找到相似的片段并识别基因的同源性。
  • 基因组序列分类:通过分析n-gram片段可以将不同物种的基因组序列进行分类。

gru的神经网络模型

gru通过引入门控机制来解决传统rnn存在的短期记忆和长期记忆不平衡的问题。它具有两个门控单元:重置门(reset gate)和更新门(update gate)。重置门控制了当前状态如何与先前状态相结合,而更新门控制了用于传递信息的新状态的计算。

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[ht1,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[ht1,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[rtht1,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=(1zt)ht1+zth~t

其中, h t h_t ht 是最终的隐藏状态。

gru在自然语言处理、语音识别和时间序列预测等领域有着广泛的应用

小结

相比于普通的rnn模型,gru具有更好的记忆能力和更强的建模能力,同时减少了参数数量,使得训练过程更加高效。 由于其优秀的性能和实用性,gru已经成为经典的循环神经网络模型之一,并被广泛应用于各种序列数据分析任务中。

学科知识

rna干扰(rnai)

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 酶

dicer 酶能够识别和切割双链 rna(dsrna)分子,将其切割成短的双链小干扰 rna(sirna)。

rnai作用机制

生物体内,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

化学修饰sirna是指通过在sirna分子上引入化学修饰基团,改变其结构或性质的方法。这种修饰可以增强sirna的稳定性、增加其目标特异性、改善细胞内进入能力等。

化学修饰sirna可以优化其性能和提高其在rnai研究和治疗中的应用潜力。但化学修饰可能会对sirna的活性和毒性产生影响,因此在设计和选择修饰方案时需要进行全面的评估和优化

机器学习知识点

mae (mean absolute error)

它计算每个样本的预测值与真实值之间的差值的绝对值,然后对所有样本取平均。

召回率(recall)

召回率可以衡量模型对正例的覆盖程度,即模型有多少能够找到真正例。

f1得分

f1得分的取值范围为0到1,其中1表示最佳性能,0表示最差性能。

精确度(precision)

精确度可以衡量模型的准确性,即模型有多少预测为正例的样本真正是正例。

赛题评分代码
# 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')
    recall = recall_score(y_true_binary, y_pred_binary, average='binary')
    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
小结

在分类问题中,精确度和召回率是互相影响的指标。高精确度可能意味着模型只预测那些非常确信的正例,导致召回率较低。相反,高召回率可能意味着模型会将更多样本预测为正例,导致精确度较低。因此,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=ab
其中 ⊙ 表示hadamard乘积运算,c 是结果向量,c 的每个元素都等于 a 和 b 对应位置元素的乘积。

对于矩阵和张量,hadamard乘积的运算规则与向量相同,只不过是在对应位置的元素进行相乘。
hadamard乘积通常用于逐元素操作,如逐元素乘法、逐元素加法等。
它与矩阵乘法或点积运算不同,矩阵乘法是对应位置元素的乘积再求和
hadamard乘积是对应位置元素直接相乘。
hadamard乘积在深度学习中经常用于一些操作,如逐元素激活函数、逐元素损失函数、逐元素操作的正则化等。它可以帮助模型学习非线性关系,同时保持数据的维度不变。

从零入门 ai for science(ai+药物) #datawhale ai 夏令营 task2

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com