Datawhale AI夏令营第三期(AI+生命科学)学习笔记

本次学习主要内容:

        提供一部分公开文献中提取的siRNA修饰序列以及相应实验条件数据(例如药物浓度、细胞系、转染方式等),随机打散后使用约85%数据训练,剩余约15%数据用于leaderboard submission评分,主要用于测试针对在训练集中出现过的目标mRNA序列,不同siRNA的沉默效率预测的准确率。       

对于siRNA的官方解释:

         小干扰RNA(siRNA),有时称为短干扰RNA或沉默RNA,是一类双链RNA分子,长度为20-25个碱基对,类似于miRNA,并且在RNA干扰(RNAi)途径内操作。它干扰了表达与互补的核苷酸序列的特定基因的转录后降解的mRNA,从而防止翻译。
        siRNA由双链RNA (double strand RNA,dsRNA) 在细胞内被RNase III (如Dicer) 切割成21~25bp大小的双链RNA。dsRNA可以是外源的,如病毒RNA复制中间体或人工导入的dsRNA;也可以是内源的,如细胞中单链RNA在RNA依赖的RNA聚合酶的作用下形成的dsRNA 。

对于这个siRNA模型:

        这是一个基于GRU的神经网络模型;GRU中文是门控循环单元,是一种常用的 GRNN(门控循环神经网络);它对 LSTM 做了很多简化,同时却保持着和 LSTM 相同的效果。

        对于GRU的具体内容可以前往Dive-into-DL-PyTorch进行学习。

下面是我遇到的一些问题以及解释:

1、序列分词方式

        下列代码的分词方式有两种:第一是典型的根据空格进行分词;第二是根据分词器进行分词(防止序列过长)。

def tokenize_and_encode(self, seq):
        if ' ' in seq:  # 修改过的序列
            tokens = seq.split()  # 按空格分词
        else:  # 常规序列
            tokens = self.tokenizer.tokenize(seq)  # 使用分词器分词

2、分词器

        首先对分词器初始化,定义ngram(长度)和stride(步幅),代码中定义的ngram为5、stride为2。

        接下来是对输入序列进行大小写的统一,代码中是全部转换为大写(统一的格式更有利于提高学习效果)。

        然后就是处理序列,长度为1的序列直接写入列表toks中;如果长度不为1,则从第一个字符开始取长度为ngram的字符写入列表,接着指针向前移动长度为stride的字符;序列转换完后对最后一个分词长度进行判断,若该分词长度小于ngram则舍去。例如:序列长度小于5时(如:0123),最终得到的列表为空;序列长度大于等于5时(如:0123456789),最终得到的列表中会存在01234,23456,45678三项,而6789长度小于5被移除。

        最后便是返回toks列表。

class GenomicTokenizer:
    def __init__(self, ngram=5, stride=2):
        # 初始化分词器,设置n-gram长度和步幅
        self.ngram = ngram
        self.stride = stride
        
    def tokenize(self, t):
        # 将输入序列转换为大写
        t = t.upper()
        
        if self.ngram == 1:
            # 如果n-gram长度为1,直接将序列转换为字符列表
            toks = list(t)
        else:
            # 否则,按照步幅对序列进行n-gram分词
            toks = [t[i:i+self.ngram] for i in range(0, len(t), self.stride) if len(t[i:i+self.ngram]) == self.ngram]
        
        # 如果最后一个分词长度小于n-gram,移除最后一个分词
        if len(toks[-1]) < self.ngram:
            toks = toks[:-1]
        
        # 返回分词结果
        return toks

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值