使用numpy将DNA序列读数随机分布在基因组特征上

用户名

嗨,我写了一个脚本,随机地随机排列它们定位到的基因上的阅读序列。如果您要确定在目的基因上观察到的峰是否具有统计学意义,这将很有用。我使用此代码来计算感兴趣基因中峰的错误发现率。代码下方:

import numpy as np
import matplotlib.pyplot as plt
iterations = 1000 # number of times a read needs to be shuffled
featurelength = 1000  # length of the gene
a = np.zeros((iterations,featurelength))  # create a matrix with 1000 rows of the feature length
b = np.arange(iterations)                 # a matrix with the number of iterations (0-999)
reads = np.random.randint(10,50,1000)     # a random dataset containing an array of DNA read lengths

在下面的代码中填充大矩阵(a):

for i in reads:               # for read with read length i
    r = np.random.randint(-i,featurelength-1,iterations) # generate random read start positions for the read i
    for j in b:               # for each row in a:
        pos = r[j]            # get the first random start position for that row
        if pos < 0:           # start position can be negative because a read does not have to completely overlap with the feature
            a[j][:pos+i]+=1
        else:
            a[j][pos:pos+i]+=1  # add the read to the array and repeat

然后生成一个热图,以查看分布是否大致均匀:

plt.imshow(a)
plt.show()

这会产生所需的结果,但是由于有许多for循环,因此它非常慢。我试图做一些花哨的numpy索引,但是不断出现“索引过多错误”。

有人对如何执行此操作有更好的主意吗?

皮膜球虫科

花式索引有点棘手,但仍然可能:

for i in reads:
    r = np.random.randint(-i,featurelength-1,iterations)
    idx = np.clip(np.arange(i)[:,None]+r, 0, featurelength-1)
    a[b,idx] += 1

为了对此进行一些解构,我们是:

  1. 创建一个简单的索引数组作为从0到i的列向量: np.arange(i)[:,None]

  2. r(行向量)中的每个元素相加,然后广播以(i,iterations)在的列中制作一个具有正确偏移量的大小矩阵a

  3. [0,featurelength)通过将索引固定在范围内np.clip

  4. 最后,我们a为每行(b)和相关列(idx)设置了花式索引

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用numpy将DNA序列读数随机分布在基因组特征上

来自分类Dev

Snakemake:针对许多基因组的许多RNAseq读数的HISAT2比对

来自分类Dev

将SNP ID映射到基因组坐标

来自分类Dev

将单个基因组区间连接到种群区域

来自分类Dev

将位置串联成基因组片段

来自分类Dev

重叠基因组范围

来自分类Dev

如何完成获取给定氨基酸序列的基因组子串的操作

来自分类Dev

从基因组创建树状图

来自分类Dev

样本之间的基因组间隔相等

来自分类Dev

Perl排序基因组位置

来自分类Dev

检查重叠基因组区域的算法

来自分类Dev

从基因组创建树状图

来自分类Dev

基因组数据的块引导程序

来自分类Dev

滚动连接以查找基因组区域

来自分类Dev

训练后将保存的NEAT-Python基因组应用于测试环境

来自分类Dev

如何将基因组SNP转换为二进制格式?

来自分类Dev

使用正则表达式匹配基因组位置

来自分类Dev

Java Codility Training基因组范围查询

来自分类Dev

根据重叠的基因组范围合并数据框

来自分类Dev

Python的 - 编码基因组数据的数据帧

来自分类Dev

产生DNA的随机序列

来自分类Dev

使用 NEAT 算法,两个基因组的子代是否总是与最合适的父代具有相同的结构?

来自分类Dev

使用蛋白质的基因标识符检索DNA序列

来自分类Dev

以单个数(核苷酸)划分间隔(基因组区域)

来自分类Dev

查找不是时间或基因组的R中整数的重叠范围的值

来自分类Dev

表示基因组区间数据。需要一些帮助

来自分类Dev

连接到 UCSC 基因组 MYSQL:“无法连接到数据库”

来自分类Dev

如何使用biopython将基因库文件的序列编辑并保存到新的基因库文件中?

来自分类Dev

如何通过抓取从ucsc基因组浏览器中提取表浏览器结果

Related 相关文章

  1. 1

    使用numpy将DNA序列读数随机分布在基因组特征上

  2. 2

    Snakemake:针对许多基因组的许多RNAseq读数的HISAT2比对

  3. 3

    将SNP ID映射到基因组坐标

  4. 4

    将单个基因组区间连接到种群区域

  5. 5

    将位置串联成基因组片段

  6. 6

    重叠基因组范围

  7. 7

    如何完成获取给定氨基酸序列的基因组子串的操作

  8. 8

    从基因组创建树状图

  9. 9

    样本之间的基因组间隔相等

  10. 10

    Perl排序基因组位置

  11. 11

    检查重叠基因组区域的算法

  12. 12

    从基因组创建树状图

  13. 13

    基因组数据的块引导程序

  14. 14

    滚动连接以查找基因组区域

  15. 15

    训练后将保存的NEAT-Python基因组应用于测试环境

  16. 16

    如何将基因组SNP转换为二进制格式?

  17. 17

    使用正则表达式匹配基因组位置

  18. 18

    Java Codility Training基因组范围查询

  19. 19

    根据重叠的基因组范围合并数据框

  20. 20

    Python的 - 编码基因组数据的数据帧

  21. 21

    产生DNA的随机序列

  22. 22

    使用 NEAT 算法,两个基因组的子代是否总是与最合适的父代具有相同的结构?

  23. 23

    使用蛋白质的基因标识符检索DNA序列

  24. 24

    以单个数(核苷酸)划分间隔(基因组区域)

  25. 25

    查找不是时间或基因组的R中整数的重叠范围的值

  26. 26

    表示基因组区间数据。需要一些帮助

  27. 27

    连接到 UCSC 基因组 MYSQL:“无法连接到数据库”

  28. 28

    如何使用biopython将基因库文件的序列编辑并保存到新的基因库文件中?

  29. 29

    如何通过抓取从ucsc基因组浏览器中提取表浏览器结果

热门标签

归档