CropGS-Hub:用于主要作物基因组预测的基因型和表型资源综

2024-04-07  本文已影响0人  wo_monic

CropGS-Hub:用于主要作物基因组预测的基因型和表型资源综合数据库

提供了7种植物的预测

这个网站主要提供的功能有:

  1. 该数据库提供了包括玉米、水稻、小米、陆地棉、大豆、鹰嘴豆、油菜、小米这些物种的基因型SNP和表型文件下载。
  2. 可以用户提交SNP文件,预测表型。SNP表型需要由SNPGT创建。
  3. 用户上传SNPGT创建的基因型文件,和表型文件,使用网站在线调用贝叶斯模型、LightGBM、GBLUP、rrBLUP模型进行模型训练,然后即可获得通过自己的基因型的训练得到的模型。
    要求上传的训练模型的时候SNP的数量不能超过5万行,样本数不超过1000个。
  4. 还针对玉米和水稻提供了杂交设计平台,要求输入的亲本数量不超过50个。

作者开发的SNPGT工具提供了win和linux版。

要输入基因型SNP文件对表型进行预测时

需要的基因型(测试集)格式如下:

#CHROM  POS Line1   line2   ...
1   1077    T   T   ...
1   12127   G   G   ...
... ... ... ... ...
10  1299332 T   A   ...
10  1299513 G   G   ...

第1列是染色体编号,第2列是SNP的物理位置,第三列开始即为样本在该位置的碱基类型。

要训练自己的模型时

需要提供的(训练集)基因型文件的格式如下:

#CHROM  POS REF ALT Sample001   Sample002   Sample003   ...
1   8077    A   T   A   A   A   ...
1   9233    T   C   T   T   T   ...
1   12911   C   T   C   C   C   ...
1   28126   T   C   C   T   T   ...
1   44681   C   T   T   C   C   ...
1   44693   T   G   G   T   T   ...
... ... ... ... ... ... ... ...

第1列染色体编号,第2列snp物理位置,第3列参考基因组的碱基,第4列是变异的碱基,第5列开始是样本在该位置的碱基类型。
需要提供的表型文件的格式如下:

LINE    Plant_height    Panicle_length  ...
Sample001   139.333 26.178  ...
Sample002   128.889 29.420  ...
Sample003   106.426 27.567  ...

训练完成后,使用的测试集和上面的测试集的基因型格式是一样的。
基因型数据应采用代表四个核苷酸的碱基“A”、“G”、“C”和“T”的形式。杂合基因型应以“H”表示,未知或缺失基因型应以“.”表示。

注意:一定要注意基因型的参考基因组是否一致,如果你的SNP和数据库的参考基因组不一致,有2种方法解决。

  1. 使用作者数据库的参考基因组文件(https://github.com/JessieChen7/LinSNPGT),使用SNPGT对你的测序文件从头分析获得基因型文件。
  2. 使用你自己的基因型和表型,从头训练你自己的模型。只不过基因型数量限制为5万个snp,样本数量限制为1000个。如果你的SNP或样本数量超过阈值,则只能使用方法1。
    限制样本数和SNP数,一方面是为了降低服务器运算开销,另一方面是因为规模足够大之后,这里提供的6种建模方法可能已经不能获得最优的预测结果了,此时可能就需要深度学习的模型了。
下面以棉花为例,使用LinSNPGT来进行实验。

LinSNPGT依赖的软件列表如下:

使用作者提供的基因组参考文件,进行分型
把下载的基因组参考压缩文件tar.gz放入01.Reference_Genome文件夹中,把你的下机数据修改为test1_1.fastq.gztest1_2.fastq.gz这种格式。
SNPGT.config的内容如下

#=================== Software Path =======================#
Java_Path=./jdk/bin/java
Bowtie2_Path=bowtie2
Samtools_Path=samtools

#=================== LinSNPGT Config =======================#
* [Project]
Project_Name=Cotton

* [Species and Dataset]
RefDataSet_File=Cotton_1245_Inbred.tar.gz

* [Running LinSNPGT Thread]
Thread_Count=24

* [Samples_list]
> ===========================================
> |sample | Read1          | Read2          |
> -------------------------------------------
  | Line1 | test1_1.fastq.gz | test1_2.fastq.gz |
  | Line2 | test2_1.fastq.gz | test2_2.fastq.gz |

注意这个config文件里,最后的样本名这块,样本格式必须是gz压缩文件,

>|sample|samplename_1.fastq.gz|samplename_2.fastq.gz|

修改SNPGT.config这个配置文件后,运行python3 SNPGT.py即可。


使用SNPGT利用自己的基因组文件,进行基因分型,获取基因型文件

python SNPGT-build.py -F path_to/Rice.fa -B path_to/Rice_378_Inbred.bim -S Rice -N 378_Inbre 

SNPGT-build.py参数如下:
-F FASTA参考基因组文件
-B BIM SNP的bim文件,使用plink获得
-S SPECIES物种名称
-N STRAIN指定群体的名称
-L BINLEN 这是要提取的SNP上下游的总长度,默认是400,即上下游各200bp,可以根据基因组大小和染色体的重复情况修改这个长度
--JavaPath JAVA8PATHjava8的路径
--SamtoolsPath SAMTOOLSPATHsamtools的路径
--SeqtkPath SEQTKPATHseqtk的路径
--Bowtie2Path BOWTIE2PATHbowtie2的路径

运行SNPGT-build.py或者SNPGT.py都需要在安装目录运行,否则会报各种各样的错误。

注意群体名称这块,最好不要有超过1个下划线。如果还有下划线可能会报错。
SNPGT的原理是根据SNP位点提取染色体上下游各200bp的片段,组成短片段,然后使用bowtie2把原始测序进行比对到提取的短序列上,后续使用gatk3.8 call SNP,这个算法比直接使用全基因组call SNP会快很多。但是也是有代价的,准确率并不是100%。


SNPGT的实现原理示意图

从图中的20 Fold验证可以看出准确率依然高达99.68%,但是时间快了20.07倍。所以不用再call全基因组了。

上一篇 下一篇

猜你喜欢

热点阅读