使用平台
我的notebook · 魔搭社区 https://modelscope.cn/my/mynotebook/preset
主要操作
-
运行实例,如果有时长尽量选择方式二(以下操作基于方式二的实例实现)
-
创建文件夹,并重命名为 2.3sirna
-
上传两个文件
到文件夹, 这里面的第三个按钮是上传 -
在当前文件夹打开终端(如图示意打开终端)并输入解压命令
注意:如果你的压缩包名字不是这个请将“sirna_0715.zip” 换成你的压缩文件的名字“xxx.zip”(xxx为文件名)
(方便复制)
unzip sirna_0715.zip
到这里准备工作可以了,如果解压出问题了,可以重新上传一下,然后重复解压的操作
总览
参赛平台
task 1 跑通基线
- 运行笔记本
- 运行笔记本中的所有代码
- 等待结果出来
可以看到多了一个文件夹和文件
注意用完平台记得关闭实例(右上角)!!!
注意用完平台记得关闭实例(右上角)!!!
注意用完平台记得关闭实例(右上角)!!!
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含量、序列的熵值
创建了两个函数作为特征
-
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 知识点终结
基因组分词器类
基因组分词器的目的是将基因组序列分割成固定长度的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⋅[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)
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=a⊙b
其中 ⊙ 表示hadamard乘积运算,c 是结果向量,c 的每个元素都等于 a 和 b 对应位置元素的乘积。
对于矩阵和张量,hadamard乘积的运算规则与向量相同,只不过是在对应位置的元素进行相乘。
hadamard乘积通常用于逐元素操作,如逐元素乘法、逐元素加法等。
它与矩阵乘法或点积运算不同,矩阵乘法是对应位置元素的乘积再求和,
而hadamard乘积是对应位置元素直接相乘。
hadamard乘积在深度学习中经常用于一些操作,如逐元素激活函数、逐元素损失函数、逐元素操作的正则化等。它可以帮助模型学习非线性关系,同时保持数据的维度不变。
发表评论