任意长度的python列表_Python一行流:生成任意长度K-mer序列的集合

太长不看版

reduce(lambda x,y: [i+j for i in x for j in y], [['A','T','C','G']] * K)

K-mer介绍

引用刘尧老师在科学网博文上的介绍:

mer,其在分子生物学领域中意义为单体单元 (monomeric unit,mer)。通常用于核酸序列中的单位,代表nt或者bp,例如,100 mer DNA代表这段DNA序列单链长度100nt,或者双链长度100bp。

而k-mer则是指将核酸序列分成包含k个碱基的字符串,即从一段连续的核酸序列中迭代地选取长度为K个碱基的序列,若核酸序列长度为L,k-mer长度为K,那么可以得到L-K+1个k-mers。如下图所示,假设这里存在某序列长度为21,设定选取的k-mer长度为7,则得到(21-7+1=15)个7-mers。

原理

Reduce思想

Reduce:对于一串序列中的第一和二个元素计算出某个值(自己指定算法),用该计算结果与第三个元素计算,再用该计算结果与第四个元素进行计算……

比如计算阶乘50!,可以用reduce( lambda x, y: x * y, range(1, 50) )。range(1, 50)是从1到50的序列,这里lambda函数是将传入的两个数相乘。应用reduce之后就变成了:

res= 1 * 2

res= res * 3

res= res * 4

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值