A brief version of this protocol appeared in:
Advertisement

Navigate this Article


 

Genomic Genetic Load Analysis   

How to cite Favorites 7 Q&A Share your feedback Cited by

摘要:有害突变会破坏基因功能从而降低个体对当前环境的生存适应能力产生遗传负荷(genetic load)。基因组水平的遗传负荷是评估生物群体生存潜力的重要指标。有害突变主要包括有害的错义突变(deleterious missense mutations)以及造成基因功能缺失(loss of function)的突变。常用的SnpEff软件能够对群体中每个个体编码区的突变类型进行预测。该方法通过统计纯合等位基因和杂合等位基因突变数量,评估目标群体的遗传负荷。此外,通过基因功能注释,确定产生遗传负荷相关基因的功能,进一步评估遗传负荷对当前生物群体造成的潜在影响。

关键词: 遗传负荷, 有害突变, 有害错义突变, 功能缺失突变, SnpEff

软件运行环境及信息

  1. 本文中所有软件的运行及数据处理和分析均在Linux操作系统环境上进行(http://linux.vbird.org)
  2. SnpEff v.4.3t (http://snpeff.sourceforge.net/SnpEff.html)
  3. Vcftools v0.1.16 (https://vcftools.github.io/man_latest.html)
  4. Grantham_score_calculator (https://github.com/ashutoshkpandey/Annotation/blob/master/Grantham_score_calculator.py)
  5. JAVA v.1.8 (https://www.java.com/)
  6. Python v.2.7 (https://www.python.org/)

实验步骤

  1. 获取数据
    本实验方案需要获取相关研究物种的参考基因组和注释信息,同时还需要获取该物种的基因组SNP数据来开展遗传负载分析。首先,读者需要从存储原始数据的Fastq文件中获取存储变异位点信息SNP的VCF文件。详细流程可参考“GATK4.0和全基因组数据分析实践”https://www.plob.org/article/11630.html
  2. 下载SnpEff软件 (Cingolani et al. 2012)

    #下载软件的最新版本
    wget https://snpeff.blob.core.windows.net/versions/snpEff_latest_core.zip

    利用unzip将软件直接解压到新建的snpEff文件夹中就可以使用。SnpEff软件是基于JAVA开发的软件,所以解压之后可以直接运行java -jar snpEff.jar,以确认你的系统里面是否安装有配套的JAVA 1.8及其以上的版本,另外还可以查看具体的使用方法。
  3. 构建研究物种的参考基因组数据库
    Snpeff软件可以直接使用已经构建好的数据库进行数据分析。通过databases命令,查找可供下载的数据库,以human为例,运行以下命令:

    java -jar snpEff.jar databases | grep -i human

    可以相应获得GRCh37和GRCh38两个不同版本的数据库信息,根据实验需要进行下载使用。

    但是基因组数据和注释信息经常有更新,新测序的物种没有现成的数据库供使用,因此常常需要自己构建参考物种(reference)的数据库。首先将参考物种的基因组数据和基因组注释信息分别更名为sequences.fa和genes.gff,存放在/snpEff/data/ref_1/下面,然后在snpEff.config配置文件中添加参考物种基因组和版本信息(分别用ref_1.genome和ref_1命名)并指定数据库的绝对路径:

    #genome, version
    ref_1.genome : ref_1
    data.dir = /snpEff/data/

    最后运行java -jar snpEff.jar build -gff3 -v ref_1,进行数据库构建,构建成功之后会在/snpEff/data/ref_1/下面生成snpEffectPredictor.bin文件,表示数据库构建成功。
  4. 注释不同个体的SNP信息
    4.1
    定义祖先等位基因组型
    将与外群相同的等位基因定义为祖先等位基因,如果研究类群没有合适的外群,可以考虑将所有个体中主要的等位基因型(即超过50%的个体都是纯合的等位基因)定义为祖先型,也可以考虑整合以上两个条件。将能够确定祖先等位基因的位点利用vcftools (Danecek et al. 2011)中的--positions 进行提取,获得总VCF文件all.vcf。
    4.2
    将每个个体的VCF从总VCF文件中分离出来

    vcftools --vcf all.vcf --indv individual01 --recode --out individual01

    4.3
    注释每个个体的VCF文件

    java -jar snpEff.jar ref_1 individual01.recode.vcf >individual01.ann

    4.4
    将每个注释结果划分为纯合(0/0或者1/1)和杂合(0/1)

    grep “0/0” individual01.ann > individual01.ann.hom
    grep “1/1” individual01.ann >> individual01.ann.hom
    grep “0/1” individual01.ann > individual01.ann.het

  5. 统计注释结果
    5.1
    SnpEff软件将突变类型划分为同义突变(synonymous_variant),错义突变(missense_variant)和功能缺失突变(loss of function_variant; LOF)。因此,可以将注释结果中的纯合突变和杂合突变分别划分到不同的突变类型,并进行统计。
    5.2
    功能缺失突变主要包括翻译提前终止(stop_gained),翻译起始缺失(start_lost),剪切受体变异(splice_acceptor_variant),剪切供体变异(splice_donor_variant)等,会直接造成基因原有功能的丢失,影响基因的表达,因此是最直接的遗传负荷。
    5.3
    错义突变是否是有害突变遗传负荷,可以通过Grantham Score (Grantham. 1974),即氨基酸变化的物理/化学性质改变的量化指标进行判断。通常Grantham Score大于或等于150被认为是有害突变遗传负荷。将每个错义突变位点利用Python程序Grantham_score_calculator.py,计算其Grantham Score,并统计大于150的位点,定义为错义有害突变遗传负荷。
  6. 计算不同突变类型的遗传负荷
    统计和计算纯合等位基因突变数量占所有纯合和杂合突变等位基因数量的比率,来评估群体的遗传负荷。其中纯合等位基因数量是纯合位点数的两倍,杂合等位基因数量与杂合位点数相等。
  7. 基因注释分析
    对高频且纯合等位基因中功能缺失突变相关基因(LOF基因)进行功能注释。将LOF基因与人或小鼠进行同源基因确定,获得相关基因列表。打开DAVID数据库(https://david.ncifcrf.gov/),选择Start Analysis,将基因列表导入,根据基因列表选择相应的基因类别(Select Identifier),如果使用的是ENSEMBL的基因编号则选择ENSEMBL_GENE_ID,List Type 选择Gene List,最后选择Submit List。结果出来之后,对应查看相应的 GO和KEGG功能富集分析结果。

方法运用

该流程已经成功运用在濒危动物穿山甲的遗传负荷检测中 (Hu et al. 2020)。研究结果发现穿山甲的遗传负荷显著增加,其中LOF基因主要富集到与代谢和疾病相关的通路。

参考文献

  1. Cingolani, P., Platts, A., Wang le, L., Coon, M., Nguyen, T., Wang, L., Land, S. J., Lu, X. and Ruden, D. M. (2012). A program for annotating and predicting the effects of single nucleotide polymorphisms, SnpEff: SNPs in the genome of Drosophila melanogaster strain w1118; iso-2; iso-3. Fly (Austin) 6(2): 80-92.
  2. Danecek, P., Auton, A., Abecasis, G., Albers, C. A., Banks, E., DePristo, M. A., Handsaker, R. E., Lunter, G., Marth, G. T., Sherry, S. T., McVean, G., Durbin, R. and Genomes Project Analysis, G. (2011). The variant call format and VCFtools. Bioinformatics 27(15): 2156-2158.
  3. Grantham, R. (1974). Amino acid difference formula to help explain protein evolution. Science 185(4154): 862-864.
  4. Hu, J.Y., Hao, Z.Q., Frantz, L., Wu, S.F., Chen W, Jiang, Y.F., Wu, H., Kuang, W.M., Li, H.P., Zhang, Y.P., Yu, L. (2020). Genomic consequences of population decline in critically endangered pangolins and their demographic histories. Natl Sci Rev 7:798-814.
Please login or register for free to view full text
Copyright: © 2021 The Authors; exclusive licensee Bio-protocol LLC.
引用格式:胡靖扬, 匡卫民, 吴宏, 于黎. (2021). 基因组水平的遗传负荷分析. Bio-101: e1010600. DOI: 10.21769/BioProtoc.1010600.
How to cite: Hu, J. Y., Kuang, W. M., Wu, H. and Yu, L. (2021). Genomic Genetic Load Analysis. Bio-101: e1010600. DOI: 10.21769/BioProtoc.1010600.
Q&A

If you have any questions/comments about this protocol, you are highly recommended to post here. We will invite the authors of this protocol as well as some of its users to address your questions/comments. To make it easier for them to help you, you are encouraged to post your data including images for the troubleshooting.

If you have any questions/comments about this protocol, you are highly recommended to post here. We will invite the authors of this protocol as well as some of its users to address your questions/comments. To make it easier for them to help you, you are encouraged to post your data including images for the troubleshooting.

Junhao Wang
Ocean university of China

老师,您好,对于“将每个注释结果划分为纯合(0/0或者1/1)和杂合(0/1)”这一步,您前面的步骤已经将个体vcf提取出来了,个体中0/0等位基因表示未发生突变,是不是应该继续将个体vcf中的0/0基因型去除掉,再进行后续的步骤分析?

10/10/2023 3:34:10 AM Reply
黎 于

This depends on your outgroup, if your allele in outgroup is 1/1, then 0/0 is the derived allele, so you still have to keep it. If you don't have a suitable outgroup, you can only define the ancestral alleles in terms of relatively high frequency alleles.

10/12/2023 6:14:10 PM Reply


Junhao Wang
Ocean university of China
于老师您好!对于您“4.4将每个注释结果划分为纯合(0/0或者1/1)和杂合(0/1)”,我不太明白。对于单个个体,0/0表示该位点未发生突变,这些位点在个体中是不是应该去除
9/14/2023 6:37:29 AM Reply
Zhang zh
中国海洋大学

非常感谢您,能否告知我 Grantham_score_calculator.py 这个程序所需要的输入文件的格式是什么样的吗?

2/28/2023 12:18:04 AM Reply
Tian Xia
Kunming Institute of Botany

张同学,请问您找出了于黎老师提供的这个python脚本的输入文件的格式了吗?

3/2/2023 9:57:12 AM Reply


tian Xia
Southwest University

同学您好,我想问问大家在划分LOF的时候,除了于老师提到的几种类型,还包括了哪些类型呢?或者是否应该包含splice_region_variant 和stop_lost呢?

3/1/2023 11:50:22 PM Reply


黎 于

Leu Pro

Ser Pro

Leu Ile

His Tyr

Arg Gly

Pro Leu

Pro Ala

Gly Arg

Ser Asn

Ile Thr

Glu Lys

Glu Gly

3/7/2023 7:31:49 PM Reply


黎 于

Leu Pro

Ser Pro

Leu Ile

His Tyr

Arg Gly

Pro Leu

Pro Ala

Gly Arg

Ser Asn

Ile Thr

Glu Lys

Glu Gly

3/7/2023 7:31:49 PM Reply


黎 于

Leu Pro

Ser Pro

Leu Ile

His Tyr

Arg Gly

Pro Leu

Pro Ala

Gly Arg

Ser Asn

Ile Thr

Glu Lys

Glu Gly

3/7/2023 7:31:49 PM Reply


黎 于

Leu Pro

Ser Pro

Leu Ile

His Tyr

Arg Gly

Pro Leu

Pro Ala

Gly Arg

Ser Asn

Ile Thr

Glu Lys

Glu Gly

3/7/2023 7:31:49 PM Reply


黎 于

Leu Pro

Ser Pro

Leu Ile

His Tyr

Arg Gly

Pro Leu

Pro Ala

Gly Arg

Ser Asn

Ile Thr

Glu Lys

Glu Gly

3/7/2023 7:31:49 PM Reply


黎 于

Leu Pro

Ser Pro

Leu Ile

His Tyr

Arg Gly

Pro Leu

Pro Ala

Gly Arg

Ser Asn

Ile Thr

Glu Lys

Glu Gly

3/7/2023 7:31:49 PM Reply


跃飞 汪
西北农林科技大学

missense_variants.vcf | grep -v '#' | awk -F"\t|\\\\|" '{printf ("%s\t%s\t%s\t%s\t%s\n", $18,$1,$2,$4,$5)}' | awk -F"\t" '{OFS = FS} { gsub(/p\./,"", $1); print }' | awk '{sub(/[0-9]+/," ",$1); print}'

可以通过以上代码将文件转化为输入文件

3/14/2023 11:23:48 AM Reply


mx wu
中南林业科技大学研究生院

同学你好,我目前也有同样的疑问,请问你解决了吗,能否指教一下

5/9/2023 5:40:50 PM Reply


tian Xia
Southwest University
于老师您好,我想问问“高频且纯合等位基因中功能缺失突变相关基因(LOF 基因)”是怎么筛选出来的呢?拜读了穿山甲的文章及其引用文献【52】,仍然没太理解这些被用来做注释的LOF基因是怎么从所有的LOF基因中挑选出来的。非常感谢老师的帮助!
2/27/2023 6:17:22 AM Reply
Zhang zh
中国海洋大学
2/19/2023 6:03:46 PM Reply
黎 于

# Python

# Authorship: Guoliang Lin/Hu jingyang

# Date: 2022-12-16 11:11:11


import sys


def print_hi(name):

 

  print(f'Hi, {name}') 

Score_matrix={'Ser': {'Arg':110, 'Leu':145, 'Pro':74, 'Thr':58, 'Ala':99, 'Val':124, 'Gly':56, 'Ile':142, 'Phe':155, 'Try':144, 'Cys':112, 'His':89, 'Gln':68, 'Asn':46, 'Lys':121, 'Asp':65, 'Glu':80, 'Met':135, 'Trp':177},

'Arg': {'Arg':0, 'Leu':102, 'Pro':103, 'Thr':71, 'Ala':112, 'Val':96, 'Gly':125, 'Ile':97, 'Phe':97, 'Try':77, 'Cys':180, 'His':29, 'Gln':43, 'Asn':86, 'Lys':26, 'Asp':96, 'Glu':54, 'Met':91, 'Trp':101, 'Ser':0},

'Leu': {'Arg':0, 'Leu':0, 'Pro':98, 'Thr':92, 'Ala':96, 'Val':32, 'Gly':138, 'Ile':5, 'Phe':22, 'Try':36, 'Cys':198, 'His':99, 'Gln':113, 'Asn':153, 'Lys':107, 'Asp':172, 'Glu':138, 'Met':15, 'Trp':61, 'Ser':0},

'Pro': {'Arg':0, 'Leu':0, 'Pro':0, 'Thr':38, 'Ala':27, 'Val':68, 'Gly':42, 'Ile':95, 'Phe':114, 'Try':110, 'Cys':169, 'His':77, 'Gln':76, 'Asn':91, 'Lys':103, 'Asp':108, 'Glu':93, 'Met':87, 'Trp':147, 'Ser':0},

'Thr': {'Arg':0, 'Leu':0, 'Pro':0, 'Thr':0, 'Ala':58, 'Val':69, 'Gly':59, 'Ile':89, 'Phe':103, 'Try':92, 'Cys':149, 'His':47, 'Gln':42, 'Asn':65, 'Lys':78, 'Asp':85, 'Glu':65, 'Met':81, 'Trp':128, 'Ser':0},

'Ala': {'Arg':0, 'Leu':0, 'Pro':0, 'Thr':0, 'Ala':0, 'Val':64, 'Gly':60, 'Ile':94, 'Phe':113, 'Try':112, 'Cys':195, 'His':86, 'Gln':91, 'Asn':111, 'Lys':106, 'Asp':126, 'Glu':107, 'Met':84, 'Trp':148, 'Ser':0},

'Val': {'Arg':0, 'Leu':0, 'Pro':0, 'Thr':0, 'Ala':0, 'Val':0, 'Gly':109, 'Ile':29, 'Phe':50, 'Try':55, 'Cys':192, 'His':84, 'Gln':96, 'Asn':133, 'Lys':97, 'Asp':152, 'Glu':121, 'Met':21, 'Trp':88, 'Ser':0},

'Gly': {'Arg':0, 'Leu':0, 'Pro':0, 'Thr':0, 'Ala':0, 'Val':0, 'Gly':0, 'Ile':135, 'Phe':153, 'Try':147, 'Cys':159, 'His':98, 'Gln':87, 'Asn':80, 'Lys':127, 'Asp':94, 'Glu':98, 'Met':127, 'Trp':184, 'Ser':0},

'Ile': {'Arg':0, 'Leu':0, 'Pro':0, 'Thr':0, 'Ala':0, 'Val':0, 'Gly':0, 'Ile':0, 'Phe':21, 'Try':33, 'Cys':198, 'His':94, 'Gln':109, 'Asn':149, 'Lys':102, 'Asp':168, 'Glu':134, 'Met':10, 'Trp':61, 'Ser':0},

'Phe': {'Arg':0, 'Leu':0, 'Pro':0, 'Thr':0, 'Ala':0, 'Val':0, 'Gly':0, 'Ile':0, 'Phe':0, 'Try':22, 'Cys':205, 'His':100, 'Gln':116, 'Asn':158, 'Lys':102, 'Asp':177, 'Glu':140, 'Met':28, 'Trp':40, 'Ser':0},

'Try': {'Arg':0, 'Leu':0, 'Pro':0, 'Thr':0, 'Ala':0, 'Val':0, 'Gly':0, 'Ile':0, 'Phe':0, 'Try':0, 'Cys':194, 'His':83, 'Gln':99, 'Asn':143, 'Lys':85, 'Asp':160, 'Glu':122, 'Met':36, 'Trp':37, 'Ser':0},

'Cys': {'Arg':0, 'Leu':0, 'Pro':0, 'Thr':0, 'Ala':0, 'Val':0, 'Gly':0, 'Ile':0, 'Phe':0, 'Try':0, 'Cys':0, 'His':174, 'Gln':154, 'Asn':139, 'Lys':202, 'Asp':154, 'Glu':170, 'Met':196, 'Trp':215, 'Ser':0},

'His': {'Arg':0, 'Leu':0, 'Pro':0, 'Thr':0, 'Ala':0, 'Val':0, 'Gly':0, 'Ile':0, 'Phe':0, 'Try':0, 'Cys':0, 'His':0, 'Gln':24, 'Asn':68, 'Lys':32, 'Asp':81, 'Glu':40, 'Met':87, 'Trp':115, 'Ser':0},

'Gln': {'Arg':0, 'Leu':0, 'Pro':0, 'Thr':0, 'Ala':0, 'Val':0, 'Gly':0, 'Ile':0, 'Phe':0, 'Try':0, 'Cys':0, 'His':0, 'Gln':0, 'Asn':46, 'Lys':53, 'Asp':61, 'Glu':29, 'Met':101, 'Trp':130, 'Ser':0},

'Asn': {'Arg':0, 'Leu':0, 'Pro':0, 'Thr':0, 'Ala':0, 'Val':0, 'Gly':0, 'Ile':0, 'Phe':0, 'Try':0, 'Cys':0, 'His':0, 'Gln':0, 'Asn':0, 'Lys':94, 'Asp':23, 'Glu':42, 'Met':142, 'Trp':174, 'Ser':0},

'Lys': {'Arg':0, 'Leu':0, 'Pro':0, 'Thr':0, 'Ala':0, 'Val':0, 'Gly':0, 'Ile':0, 'Phe':0, 'Try':0, 'Cys':0, 'His':0, 'Gln':0, 'Asn':0, 'Lys':0, 'Asp':101, 'Glu':56, 'Met':95, 'Trp':110, 'Ser':0},

'Asp': {'Arg':0, 'Leu':0, 'Pro':0, 'Thr':0, 'Ala':0, 'Val':0, 'Gly':0, 'Ile':0, 'Phe':0, 'Try':0, 'Cys':0, 'His':0, 'Gln':0, 'Asn':0, 'Lys':0, 'Asp':0, 'Glu':45, 'Met':160, 'Trp':181, 'Ser':0},

'Glu': {'Arg':0, 'Leu':0, 'Pro':0, 'Thr':0, 'Ala':0, 'Val':0, 'Gly':0, 'Ile':0, 'Phe':0, 'Try':0, 'Cys':0, 'His':0, 'Gln':0, 'Asn':0, 'Lys':0, 'Asp':0, 'Glu':0, 'Met':126, 'Trp':152, 'Ser':0},

'Met': {'Arg':0, 'Leu':0, 'Pro':0, 'Thr':0, 'Ala':0, 'Val':0, 'Gly':0, 'Ile':0, 'Phe':0, 'Try':0, 'Cys':0, 'His':0, 'Gln':0, 'Asn':0, 'Lys':0, 'Asp':0, 'Glu':0, 'Met':0, 'Trp':67, 'Ser':0},

'Trp':  {'Arg':0, 'Leu':0, 'Pro':0, 'Thr':0, 'Ala':0, 'Val':0, 'Gly':0, 'Ile':0, 'Phe':0, 'Try':0, 'Cys':0, 'His':0, 'Gln':0, 'Asn':0, 'Lys':0, 'Asp':0, 'Glu':0, 'Met':0, 'Trp':0 , 'Ser':0}}


if __name__ == '__main__':

  if len(sys.argv)<3:

    print("Error!")

    print("Usage:python get_score.py inputfile outputfile")

    sys.exit(-1)

  # print_hi('PyCharm')

  with open(sys.argv[1]) as infile:

    with open(sys.argv[2],'w') as outfile:

      for item in infile:

        item=item.strip()

        itemlist=item.split()

        if (itemlist[0] in Score_matrix) and (itemlist[1] in Score_matrix[itemlist[0]]):

          score=Score_matrix[itemlist[0]][itemlist[1]]

        else:

          score=0

        outfile.write(f"{itemlist[0]} {itemlist[1]} {score} ")


2/27/2023 12:41:11 AM Reply


跃飞 汪
西北农林科技大学

老师,这个矩阵可能有问题,这个脚本写的0填充,但是我看原文章可能的意思是对称,类似下图
1 S R L P T A V G I F Y C H Q N K D E M W
S 0 110 145 74 58 99 124 56 142 155 144 112 89 68 46 121 65 80 135 177
R 110 0 102 103 71 112 96 125 97 97 77 180 29 43 86 26 96 54 91 101
L 145 102 0 98 92 96 32 138 5 22 36 198 99 113 153 107 172 138 15 61
P 74 103 98 0 38 27 68 42 95 114 110 169 77 76 91 103 108 93 87 147
T 58 71 92 38 0 58 69 59 89 103 92 149 47 42 65 78 85 65 81 128
A 99 112 96 27 58 0 64 60 94 113 112 195 86 91 111 106 126 107 84 148
V 124 96 32 68 69 64 0 109 29 50 55 192 84 96 133 97 152 121 21 88
G 56 125 138 42 59 60 109 0 135 153 147 159 98 87 80 127 94 98 127 184
I 142 97 5 95 89 94 29 135 0 21 33 198 94 109 149 102 168 134 10 61
F 155 97 22 114 103 113 50 153 21 0 22 205 100 116 158 102 177 140 28 40
Y 144 77 36 110 92 112 55 147 33 22 0 194 83 99 143 85 160 122 36 37
C 112 180 198 169 149 195 192 159 198 205 194 0 174 154 139 202 154 170 196 215
H 89 29 99 77 47 86 84 98 94 100 83 174 0 24 68 32 81 40 87 115
Q 68 43 113 76 42 91 96 87 109 116 99 154 24 0 46 53 61 29 101 130
N 46 86 153 91 65 111 133 80 149 158 143 139 68 46 0 94 23 42 142 174
K 121 26 107 103 78 106 97 127 102 102 85 202 32 53 94 0 101 56 95 110
D 65 96 172 108 85 126 152 94 168 177 160 154 81 61 23 101 0 45 160 181
E 80 54 138 93 65 107 121 98 134 140 122 170 40 29 42 56 45 0 126 152
M 135 91 15 87 81 84 21 127 10 28 36 196 87 101 142 95 160 126 0 67
W 177 101 61 147 128 148 88 184 61 40 37 215 115 130 174 110 181 152 67 0

3/23/2023 4:18:17 PM Reply


Zhaoping Lu
northwest university
老师您好,请问是如何定义祖先等位基因组型,是如何操作的呢
11/28/2022 3:58:31 PM Reply
跃飞 汪
西北农林科技大学
请问Grantham_score_calculator的具体使用命令是什么,输入文件是什么
6/12/2022 9:59:34 AM Reply
黎 于

输入文件是SnpEff 注释的 vcf 文件中的missense variants位点,然后计算的方法是python脚本Grantham_score_calculator.py(https://github.com/ashutoshkpandey/Annotation/blob/master/Grantham_score_calculator.py)

6/20/2022 12:08:04 AM Reply


Jie xiao
Huazhong agriculture university

请问这个Grantham_score_calculator.py具体如何使用呢?python Grantham_score_calculator.py missense.vcf 这个命令吗?谢谢

11/13/2022 7:28:06 PM Reply


黎 于

这是一个python脚本。源代码是针对单个位点的计算。所以建议找熟悉python的人修改成批量执行,或者就是把vcf拆分成单个位点再去执行。

11/13/2022 11:45:46 PM Reply


We use cookies on this site to enhance your user experience. By using our website, you are agreeing to allow the storage of cookies on your computer.