简介:我是生物信息学家.在我对所有人类基因(约20 000)进行的分析中,我搜索特定的短序列基序,以检查每个基因中出现这个基序的次数.
基因以四个字母(A,T,G,C)的线性序列"书写".例如:CGTAGGGGGTTTAC ......这是遗传密码的四个字母的字母表,就像每个细胞的秘密语言一样,它就是DNA实际存储信息的方式.
我怀疑在一些基因中频繁重复特定的短基序列(AGTGGAC)在细胞的特定生化过程中是至关重要的.由于基序本身非常短,因此用计算工具很难区分基因中的真实功能性实例和偶然看起来相似的实例.为了避免这个问题,我得到了所有基因的序列并连接成一个字符串并进行了改组.存储每个原始基因的长度.然后,对于每个原始序列长度,通过从连接序列中随机重复地挑选A或T或G或C并将其转移到随机序列来构建随机序列.以这种方式,得到的随机序列组具有相同的长度分布,以及总体A,T,G,C组成.然后我在这些随机序列中搜索主题.我将此程序置于1000次并对结果取平均值.
15000个不含给定基序的基因5000个基因含有1个基序3000个基因,含有2个基序1000个含有3个基序的基因... 1个含有6个基序的基因
因此,即使经过1000次真正遗传密码的随机化,也没有任何基因具有超过6个基序.但是在真正的遗传密码中,有一些基因含有超过20个基序的出现,这表明这些重复可能是有效的,并且它不可能通过纯粹的机会找到它们如此丰富.
问题:我想知道找到一个基因的可能性,假设我的分布中出现了20个基序.所以我想知道偶然发现这样一个基因的可能性.我想在Python中实现它,但我不知道如何.
我可以在Python中进行这样的分析吗?
任何帮助,将不胜感激.
ecdf(x)(x)
在Numpy或scipy中,R的R 函数相当于什么?是ecdf(x)(x)
基本相同:
import numpy as np
def ecdf(x):
# normalize X to sum to 1
x = x / np.sum(x)
return np.cumsum(x)
Run Code Online (Sandbox Code Playgroud)
还是需要其他东西?
编辑如何控制使用的垃圾箱数量ecdf
?
我是Python的新手,来自R世界.我正在尝试使用SciPy将分布拟合到样本数据并取得了很好的成功.我可以distribution.fit(data)
回报理智的结果.我一直无法做的是创建拟合优度统计数据,这是我习惯使用fitdistrplus
R中的包.是否有一种通用的方法来比较SciPy中许多不同发行版的"最佳拟合"?
我正在寻找像Kolmogorov-Smirnov测试或Cramer-von Mises或Anderson-darling测试的东西
我已经阅读了有关此模块(以及Scipy文档)的现有帖子,但是当我有数据集和可调用函数时,我仍然不清楚如何使用Scipy的kstest模块进行拟合优度测试.
我想测试我的数据的PDF不是标准的scipy.stats发行版之一,所以我不能用以下内容调用它:
kstest(mydata,'norm')
Run Code Online (Sandbox Code Playgroud)
其中mydata是Numpy数组.相反,我想做的事情如下:
kstest(mydata,myfunc)
Run Code Online (Sandbox Code Playgroud)
其中'myfunc'是可调用函数.这不起作用 - 这并不令人惊讶,因为kstest无法知道'mydata'数组的横坐标是为了使用'myfunc'生成相应的理论频率.假设'mydata'中的频率对应于随机变量的值是数组'abscissa'.然后我想也许我可以使用stats.ks_2samp:
ks_2samp(mydata,myfunc(abscissa))
Run Code Online (Sandbox Code Playgroud)
但我不知道这是否在统计上有效.(旁注:做kstest和ks_2samp期望频率数组被归一化为1,或者他们想要绝对频率?)
在任何情况下,由于单样本KS测试应该用于拟合优度测试,我必须假设有一些方法可以直接用kstest来完成.你怎么做到这一点?