没有melt这个函数_[pandas]处理pcr数据的时候,melt真是好东西呀

d312bbef02d620f3c3ec40c3fb7ae4b4.png

摘要:

如果几个列的数据都是一个类型,合并起来会更容易分析。怎么合并呢?用pandas的melt函数。在文末对于rt-pcr ddct值的统计也写了一点个人的认识。


2f2efe34dace2eb2a873e98f9f3ff922.png

pcr的数据表一般长成这样,每一列一个ct值,然后各次测量的结果就一行一行列下来。或者长成下面这样:

bad44b6e047e903920fe22d4d0e48ff6.png

三次检测从左到右依次排开,基因和treatment group作为两个id var就这么放在左边。不管是哪种形式,真正方便我们做数据分析的,还是下面这种:

9aba8b98bb71a6e1327e992b539beecc.png

在excel里面做这种转换很蛋疼,所以还是直接用pandas比较好

import pandas as pd
pcr = pd.read_csv('datasets/data.csv')
pcr_melt = pd.melt(pcr, id_vars=['group', 'gene'],var_name='ct trial',value_name='ct')
pcr_melt.to_csv('datasets/pcr_melt.csv')

搞定。

pd.melt的文档:pandas.melt - pandas 0.24.1 documentation


关于rt-pcr的统计

下面的内容是我自己粗浅的理解,如有错误请务必指出。

  1. ct值是什么东西呢?

ct值指的是目标基因通过不断的复制,到达可以被pcr仪器检测的临界值时候经历的周期数。自然,越早(ct值越小)到达临界值,说明要检测的基因含量越高。

2. ddct是怎么一个计算过程

首先肯定要有一个内参基因,比如说GAPDH,这个基因的ct我们写作

equation?tex=Ct_%7Bgapdh%7D ,然后现在我们有一个目标基因,比如说是OPG和RANKL,ct值计作
equation?tex=Ct_%7Bopg%7D%EF%BC%8CCt_%7Brankl%7D ,两种ct值都是重复测量3次,都求平均值分别记作:
equation?tex=%5Cbar%7BCt%7D_%7Bgapdh%7D%2C+%5Cbar%7BCt%7D_%7Bopg%7D%2C+%5Cbar%7BCt%7D_%7Brankl%7D 。先求dCt,分别是
equation?tex=%5Cbar%7BCt%7D_%7Bopg%7D-%5Cbar%7BCt%7D_%7Bgapdh%7D
equation?tex=%5Cbar%7BCt%7D_%7Brankl%7D-%5Cbar%7BCt%7D_%7Bgapdh%7D ,之后的ddCt就是
equation?tex=%28%5Cbar%7BCt%7D_%7Bopg%7D-%5Cbar%7BCt%7D_%7Bgapdh%7D%29-%28%5Cbar%7BCt%7D_%7Brankl%7D-%5Cbar%7BCt%7D_%7Bgapdh%7D%29

哦,上面的例子选取有点不大对,一般是同一个基因control组和对照组相比,但是不要在意这么多细节好了。

那在简化的情况下,我们认为pcr各个周期都是倍增的(当然实际情况可能不会一直这么快),那么相对的倍数(OPG的基因水平比起RANKL的基因水平,另外很多时候我们是检测rna的水平,所以会先做一个逆转录拿到cDNA,然后再跑RT-PCR)就是

equation?tex=2%5E%7B-ddct%7D

上面这些一路走过来倒还ok,只不过error bar怎么办呢?比如现在你有三个数据,那就可以求一个方差对吧,但是这个方差是ct值的方差呀,不是dct或者ddct更加不是

equation?tex=2%5E%7B-ddct%7D 的方差哦。

3. 方差怎么算

先看dct的算法,比如

equation?tex=%5Cbar%7BCt%7D_%7Bopg%7D-%5Cbar%7BCt%7D_%7Bgapdh%7D 这个就是两个平均数的方差,emmm,所以不就是等同于
equation?tex=VAR%28%5Cbar%7Bx%7D-%5Cbar%7By%7D%29%3DVAR%28%5Cbar%7Bx%7D%29%2BVAR%28%5Cbar%7By%7D%29 呢,当x和y相互独立的时候,对吧。

至于平均值的方差自然就应该是

equation?tex=VAR%28%5Cbar%7Bx%7D%29%3D%5Cfrac%7BVAR%28x%29%7D%7Bn%7D ,从样本去估算的话, 就应该是
equation?tex=VAR%28%5Cbar%7Bx%7D%29%3D%5Cfrac%7B%5Cfrac%7B%5Csum%7B%28x-%5Cbar%7Bx%7D%29%5E2%7D%7D%7Bn-1%7D%7D%7Bn%7D 对吧,把数据依次弄进去就可以拿到dct的方差了

而对于ddct呢,因为ddct是

equation?tex=%28%5Cbar%7BCt%7D_%7Bopg%7D-%5Cbar%7BCt%7D_%7Bgapdh%7D%29-%28%5Cbar%7BCt%7D_%7Brankl%7D-%5Cbar%7BCt%7D_%7Bgapdh%7D%29 ,所以这个时候应该就是两个dCt的方差的和了。不过说实话,
equation?tex=%5Cbar%7BCt%7D_%7Bgapdh%7D 作为内参,方差一般都是不大的,不然你还做个毛线内参,所以最后大体上也就是
equation?tex=%5Cbar%7BCt%7D_%7Bopg%7D%2C%5Cbar%7BCt%7D_%7Brankl%7D 两个方差的和。

这个方差求出来以后就能开方拿到标准差,不过这个时候也仅仅只是ddCt的方差,不过只是做一个幂运算

equation?tex=2%5E%7B-ddCt%7D 不会引入新的变量,所以实际上相对倍数应该表示为
equation?tex=2%5E%7B-ddCt%5Cpm+std%7D ,不过幂运算这东西,指数部分的加减算出来的对于均值并不对称,也就是说肯定不能写成
equation?tex=2%5E%7B-ddCt%7D%5Cpm+2%5E%7Bstd%7D 对吧,当然了,对称不对称,在bar图上真的挺难分辨的。

所以,关于方差的bottom lines:

  1. 方差应该相加,所以用来做对照的那一组其实不应该画error bar,因为最终的error bar是两边均值方差的叠加,一起画在treatment group上才对
  2. error bar其实是不对称的,真正对平均值对称的仅仅到ddCt这一步为止,再往后就不对称了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值