qRT-PCR计算器

实时荧光定量PCR技术(Real-time Quantitative PCR,qRT-PCR)是指在PCR反应体系中加入可与DNA产物特异性结合的荧光基团,利用荧光信号积累实时监测整个PCR进程,最终通过相对定量或绝对定量的方法确定各个样本的本底表达量。但是计算各个基因的相对表达量(Relative expression)较为繁琐,虽然Bio-Rad软件可以自动算出相对表达量,但是一次只能算出一个plate内的表达量,若要一次性算出多个plate的表达量还实现不了,因此我用Python写了一个用于计算相对表达量的一个小程序。

1.Plate的设计

想要后续快速的计算出相对表达量,必须从plate的设计开始。

首先打开BioRadCFXManager这款做qRT-PCR的软件,在选择好自己的PCR程序后,需要在Plate下,点击Edit selected对plate按照预先设计好的方案进行输入(图1)。

图1 进行plate的设计

在的点击Edit selected后,按照图2的顺序输入基因名称,就可以把所选好的区域的基因名称都改为自己输入的基因名称了;按照图3的顺序输入所选区域每个孔所属于的样本,就可以修改样本的名称了。

图2 如何进行板的基因名称的输入

图3 如何进行板的样本名称的输入

在完成所有孔的基因名称和样本名称输入后,点击右下角的“OK”,然后运行整个qRT-PCR的程序。

2.Ct值的导出

在完成qRT-PCR程序后,会生成一个prcd的文件(图4)。

图4 prcd文件

打开后点击"Export"(图5),然后点击"Export All Data Sheets",最后点击“Excel 2007(*.xlsx)”,对数据进行导出。

图5 导出数据

导出数据后,会生成多个文件,选择导出第4个,含有Cq的这个文件,然后打开(图6)。

图6 导出数据中文件的选择

打开后如图7所示,确保Target这一列为基因名称,Sample这列为样本名称,Cq这列为Ct值。如果有多个plate的数据,只需要将数据复制粘贴到文件末尾即可。但需要注意的是合并好后的第一行一定要有像图7一样的行名,名称不能改变。

图7 记录Ct值文件的样式

3.输入比较文件(contrast.xlsx)

qRT-PCR计算某个基因的相对表达量时,肯定需要4个数据,一是以哪个样本为对照,将样本名称输入在第一列的Control_sample这列;二是内参基因的名称,输入在Control_gene_name这列;三是处理组名称,输入在Treatment_sample这列;四是目的基因的名称,输入在Treatment_gene_name这列(图8)。

图8 比较文件的样式

4.qRT-PCR的代码展示

代码需要用到pandas、numpy以及openpyxl模块,需要自己用pip安装。下面的代码我会放在relative_expression_calculation_for_qPCR.py文件中,大家可滑到本推送的最下面进行下载。

import pandas as pd
import numpy as np
import openpyxl as op
import csv
import argparse

args = argparse.ArgumentParser(usage="relative_expression_calculation_for_qPCR.py Ct contrast [options] output")

args.add_argument('Ct',
                   type=str,
                   help="input file in excel")

args.add_argument('Contrast',
                   type=str,
                   help="input file in excel")

args.add_argument('-o', '--output',
                   type=str,
                   help="input filename in csv including absolute path")




args = args.parse_args()


#读取想要比较的表格
contrast = pd.read_excel(args.Contrast)
#读取Ct值
df = pd.read_excel(args.Ct)

# 1. 创建文件对象
f = open(args.output, 'w', encoding='utf-8')

    # 2. 基于文件对象构建 csv写入对象
csv_writer = csv.writer(f)

#提取比较信息
nrow = contrast.shape[0]
for x in range(nrow):
    Control_sample = contrast.loc[x][0]
    Control_gene_name = contrast.loc[x][1]
    Treatment_sample = contrast.loc[x][2]
    Treatment_gene_name = contrast.loc[x][3]
    print("=============Reading the {} group===========".format(x+1))



    control_reference_gene = []
    control_target_gene = []
    treatment_reference_gene = []
    treatment_target_gene = []
    for (m,n,i) in zip(df["Target"],df["Sample"],df["Cq"]):
        if m == Control_gene_name and n == Control_sample:
            control_reference_gene.append(i)
    for (m, n, i) in zip(df["Target"], df["Sample"], df["Cq"]):
        if m == Treatment_gene_name and n == Control_sample:
            control_target_gene.append(i)
    for (m, n, i) in zip(df["Target"], df["Sample"], df["Cq"]):
        if m == Control_gene_name and n == Treatment_sample:
            treatment_reference_gene.append(i)
    for (m, n, i) in zip(df["Target"], df["Sample"], df["Cq"]):
        if m == Treatment_gene_name and n == Treatment_sample:
            treatment_target_gene.append(i)




    #计算对照和处理Ct的平均值
    control_reference_gene_mean = np.mean(control_reference_gene)
    treatment_reference_gene_mean = np.mean(treatment_reference_gene)


    #计算▲Ct
    control_cCt = []
    treatment_cCt = []

    for i in control_target_gene:
        control_cCt.append(i-control_reference_gene_mean)

    for i in treatment_target_gene:
        treatment_cCt.append(i-treatment_reference_gene_mean)



    control_cCt_mean = np.mean(control_cCt)


    #计算▲▲Ct,并且计算相对表达量
    control_ccCt_expression = []
    treatment_ccCt_expression = []


    for i in control_cCt:
        control_ccCt_expression.append(pow(2,-(i-control_cCt_mean)))
        csv_writer.writerow([Control_sample, Control_gene_name, pow(2,-(i-control_cCt_mean))])
    for i in treatment_cCt:
        treatment_ccCt_expression.append(pow(2,-(i-control_cCt_mean)))
        csv_writer.writerow([Treatment_sample, Treatment_gene_name, pow(2,-(i-control_cCt_mean))])

print("==========The program has finished running=============")

5.小程序的使用

5.1. 查看帮助文档

在window终端,输入如下命令查看帮助文档,箭头所指的蓝色文字就是py文件的绝对路径(图9)。有帮助文档可知,首先我们需要输入记录Ct值的excel所在的位置,然后输入比较文件所在的位置,最后-o参数,指定输出文件的位置,注意一定是CSV文件。

python "D:\自己写的小程序\qRT-PCR计算\relative_expression_calculation_for_qPCR.py" -h

图9 查看帮助文档

5.2. 运行小程序

运行如下命令,就可以进行相对表达量的计算,如图10所示,没有报错就说明程序运行成功,图中一下子计算了63组基因的相对表达量。

 python "D:\自己写的小程序\qRT-PCR计算\relative_expression_calculation_for_qPCR.py" "D:\浙江大学实验\自己写的小程序\qRT-PCR计算\Ct_result.xlsx" "D:\自己写的小程序\qRT-PCR计算\contrast.xlsx" -o "D:\自己写的小程序\qRT-PCR计算\final_result.csv"

 

图10 程序运行成功

所有的相对表达量都在刚刚-o参数指定的CSV文件中,一列文样本,第二列为基因,第三列为相对表达量(图 11)。

 

图11 输出文件的结果

附件

链接: https://pan.baidu.com/s/1-SMOb7BuY_rgTz8dvNXBXw

提取码: a1hr

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值