Datawhale AI 夏令营生命科学方向Task1学习笔记

赛题解析

目标

        本次siRNA药物药预测主要通过深度学习模型预测化学修饰siRNA序列数据预测其对应的信使RNA的沉默效率,从而指导siRNA药物设计。

相关生物知识

1.RNAi(RNA干扰):siRNA通过与目标mRNA结合,切割目标mRNA,从而沉默特定基因,抑制特定基因的表达。

2.siRNA设计与合成:siRNA与靶向RNA互补,即为靶向RNA的反义序列,并携带RNA诱导沉默复合物(RISC),在与靶向RNA结合后,RISC发生作用降解靶向RNA,所以在设计siRNA时,需要考虑靶向RNA的序列特异性,同时不应其他基因有显著同源的序列,以保证siRNA能够特异性结合到靶向RNA上,除此之外,还应考虑GC含量,序列稳定性等问题。

评价指标

对预测结果的平均绝对误差(MAE)、预测值在一定范围内的平均绝对误差(RANGE-MAE)、预测值在一定范围内的F1指标(F1)进行权重计算:

score = (1 - mae / 100) * 0.5 + (1 - range_mae / 100) * f1 * 0.5

Baseline初次跑通

代码思路

1.依赖库的导入

        使用import导入文件操作、深度学习、数据处理、模型评估等必要的工具。

2.创建基因组分词器

        将输入的RNA序列分割成多个部分,以便进行后续的分析和处理

        分词器构造方法:

  1. 初始化 (__init__ 方法):

    • 定义了两个参数:ngram(指定 n-gram 的大小)和stride(每次移动多少个标记以获取下一个 n-gram)。
    def __init__(self, ngram=5, stride=2):
            self.ngram = ngram
            self.stride = stride
  2. 分词 (tokenize 方法):

    • 将输入的序列转换为大写。
    • 根据 ngram 的值获取满足条件的列表。
    • 移除不完整的分词。
   def tokenize(self, t):
        t = t.upper()
        if self.ngram == 1:
            toks = list(t)
        else:
            toks = [t[i:i+self.ngram] for i in range(0, len(t), self.stride) if len(t[i:i+self.ngram]) == self.ngram] 
        if len(toks[-1]) < self.ngram:
            toks = toks[:-1]
3.创建基因组词汇表
        初始化一个词汇表的列表,统计每个基因片段的出现频率,筛选出最常出现的片段。在生物学上的体现为找出在疾病或药物中的高频基因段,从而进行研究与分析。
4.siRNA数据集转化

(1)初始化数据集

def __init__(self, df, columns, vocab, tokenizer, max_len, is_test=False):

(2)获取数据集中样本数量

 def __len__(self):
        return len(self.df)

(3)对样本进行分词和编码

(4)将编码后的序列填充至相同长度

 padded = encoded + [0] * (self.max_len - len(encoded))
5.GRU模型

        GRU是一种用于处理序列数据的递归神经网络架构,以GRU为基础构建的用于处理siRNA序列的模型包含重置门(决定先前信息的保留程度)、更新门(决定保留多少前一状态的信息)等

6.评估指标计算函数

根据赛事评价指标进行相应计算得到综合评分

7.主训练函数
​
bs = 64    
epochs = 50    
lr = 0.001    
seed = 42    
output_dir = "output/models"   

​

        上述为主要调整参数,包括:

(1)bs(Batch Size):每次迭代中通过模型训练的数据样本数量,常见的设为32、64、128等,大批次可使模型更稳固,提高训练速度,小批次可使模型更好地收敛。

(2)epochs(Epoch):整个训练数据集被完整训练的次数,适度增加epochs可帮助提高模型的训练表现,但过大会导致过拟合现象,使模型在新数据上的表现不佳。

(3)lr(学习率):决定模型权重更新的幅度,较大的学习率可能导致训练不稳定,而较小的学习率会导致训练过慢。

(4)seed(随机种子)初始化为随机数生成器的值,确保试验的可重复性。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值