GCTA PCA分析以及软件安装教程

article/2025/7/8 20:54:48

软件介绍系列

1. GCTA介绍

在群体遗传中,GCTA中做PCA非常方便, 下面介绍一下GCTA的安装方法.

2. 安装命令

使用conda自动安装

conda install -c biobuilds gcta 

手动安装

官方地址

说明文档

3. 安装成功测试

这里, 应该键入gcta64, 而不是gcta

(base) [dengfei@localhost bin]$ gcta64
*******************************************************************
* Genome-wide Complex Trait Analysis (GCTA)
* version 1.26.0
* (C) 2010-2016, The University of Queensland
* MIT License
* Please report bugs to: Jian Yang <jian.yang@uq.edu.au>
*******************************************************************
Analysis started: Wed Apr 24 14:07:43 2019Options:Error: no analysis has been launched by the option(s).Analysis finished: Wed Apr 24 14:07:43 2019
Computational time: 0:0:0

显示上面信息, 表明软件安装成功.

4. 功能介绍

在这里插入图片描述

5. 参数说明

5.1 输入输出文件

输入文件:

  • --bfile test: 类似plink的参数格式. 支持binary文件(test.fam,test.bim,test.bed)
  • --dosage-mach test.mldose test.mlinfo支持其它数据格式

输出文件:

  • --out result: 类似plink的--out参数, 定义输出文件名

5.2 数据清洗

ID保留和删除
如果不写, 默认全部使用

  • --keep test.indi.list定义分析个体列表
  • --remove test.indi.list 删除个体列表

选择SNP

--chr 1:选择染色体
--autosome 选择所有SNP

6. 构建G矩阵

--make-grm 会生成三个文件:
在这里插入图片描述
如何你想在R中读取二进制文件, 可以使用如下代码:

ReadGRMBin=function(prefix,AllN=F,size=4){sum_i=function(i){return(sum(1:i))}BinFileName=paste(prefix,".grm.bin",sep="")NFileName=paste(prefix,".grm.N.bin",sep="")IDFileName=paste(prefix,".grm.id",sep="")id = read.table(IDFileName) # read the ID of the gmatrixn=dim(id)[1]BinFile=file(BinFileName,"rb")grm=readBin(BinFile,n=n*(n+1)/2,what=numeric(0),size=size)  # generate the fack gmatrixNFile=file(NFileName,"rb");if(AllN==T){N=readBin(NFile,n=n*(n+1)/2,what=numeric(0),size=size)}else{N=readBin(NFile,n=1,what=numeric(0),size=size)}i=sapply(1:n,sum_i)return(list(diag=grm[i],off=grm[i],id=id,N=N))
}

计算近交系数

--ibc: 会用三种方法计算近交系数.

示例:

gcta64 --bfile test --autosome --make-grm --out grm

这里:

  • --bfile 读取的是plink的二进制文件
  • --autosome 是利用常染色体上的所有SNP信息, 这个不能省略
  • --make-grm生成grm矩阵
  • --out 生成前缀名

会生成如下三个文件夹:

(base) [dengfei@localhost plink_file]$ ls grm*
grm.grm.bin  grm.grm.id  grm.grm.N.bin

7. 利用构建好的G矩阵, 计算PCA分析

--grm test: 这里的xx是前缀, 它其实包括三个文件:

test.grm.bin,
test.grm.N.bin
test.grm.id

命令:

gcta64 --grm grm --pca 3 --out out_pca
  • --grmgrm文件
  • --pca PCA的数目为3
  • --out 结果输出文件

结果生成两个文件:

(base) [dengfei@localhost plink_file]$ ls out_pca.eigenv*
out_pca.eigenval  out_pca.eigenvec

8. 利用PCA结果画图

在R语言中, 设置好工作路径, 键入如下命令:

dd=read.table("out_pca.eigenvec",header=F)
head(dd)
names(dd) = c("Fid","ID","PC1","PC2","PC3")
plot(dd$PC1,dd$PC2,pch=c(rep(1,112),rep(2,103)),col=c(rep("blue",112),rep("red",103)),main="PCA",xlab="pc1",ylab="pc2")
legend("bottomright",c("TEXT1","TEXT2"),pch=c(rep(1),rep(2)),col=c(rep("blue"),rep("red")))

结果:
在这里插入图片描述

后记1, 使用示例数据b.pedb.map使用gcta64做PCA分析

看完gcta, 发现plink也可以构建G矩阵, 也可以进行PCA分析, 本数据使用plink的解决方案:

  • 将ped文件, 转化为bed文件
plink --file b --make-bed --out test

生成test.bed, test.bim,test.fam三个文件

  • 构建G矩阵grm
 gcta64 --bfile test --autosome --make-grm --out grm

生成三个文件:

grm.grm.bin  grm.grm.id  grm.grm.N.bin
  • 生成PCA, 数目为3
gcta64 --grm grm --pca 3

生成两个文件:

gcta.eigenval  gcta.eigenvec
  • 作图
dd=read.table("gcta.eigenvec",header=F)
head(dd)
names(dd) = c("Fid","ID","PC1","PC2","PC3")
plot(dd$PC1,dd$PC2,pch=c(rep(1,112),rep(2,103)),col=c(rep("blue",112),rep("red",103)),main="PCA",xlab="pc1",ylab="pc2")
legend("bottomright",c("TEXT1","TEXT2"),pch=c(rep(1),rep(2)),col=c(rep("blue"),rep("red")))

结果:
在这里插入图片描述

后记2, 使用示例数据b.pedb.map使用plink做PCA分析

看完gcta, 发现plink也可以构建G矩阵, 也可以进行PCA分析, 本数据使用plink的解决方案:

只用一行代码, 就可以生成PCA的数据, 比gcta64简单太多了.

plink --file b --pca 3

比较两个数据的结果, 可以看出, plinkgcta64结果一致.
在这里插入图片描述

对PCA作图:
在这里插入图片描述

结果一致, 因为plink调用的是gcta64的算法, 构建G矩阵, 构建PCA.

福利1
计算gcta64或者plink可以构建矩阵, asreml也支持下三角的G矩阵或者G逆矩阵, 问题来了, 两者怎么联系到一起呢?

这样asreml就可以愉快的进行GBLUP的分析了.

福利2
之前的博客中有提到利用H矩阵构建PCA分析, 那么如何操作呢?

欲听后事如何, 请听下回分解.

公众号后台回复:plink, 获得测试数据:b.pedb.map, 用于本次分析.



如果您对于数据分析,对于软件操作,对于数据整理,对于结果理解,有任何问题,欢迎联系我。

在这里插入图片描述


http://chatgpt.dhexx.cn/article/naB3Iilg.shtml

相关文章

PCA分析法的python主要代码

一 PCA分析法介绍 可以理解为是一种降维的思想&#xff0c;将M列数据降维成对应的N列数据&#xff0c;用主要的几个字段解释整体方差变异 也可以理解为一种低维度的映射&#xff0c;举例将三维的数据找到一个二维映射面&#xff0c;同时可以尽力解释出较多的信息来 举例如下图…

R统计绘图-PCA分析及绘制双坐标轴双序图

zhe 点击名片 关注我们 有师妹来咨询&#xff0c;怎样画类似于上图的双坐标轴PCA双序图。正好之前虽然PCA和RDA分析及绘图都写过教程&#xff0c;但是变量分析结果没有在图中显示&#xff0c;所以使用R统计绘图-环境因子相关性热图流程开始按图1整理环境因子数据&#xff0c;…

PCA分析(主成分分析)--结果解读

主成分分析&#xff08;PCA&#xff09;是一个很好的工具&#xff0c;可以用来降低特征空间的维数。PCA的显著优点是它能产生不相关的特征&#xff0c;并能提高模型的性能。 PCA用于减少用于训练模型的特征维度数量&#xff0c;它通过从多个特征构造所谓的主成分&#xff08;P…

R统计绘图-PCA分析绘图及结果解读(误差线,多边形,双Y轴图、球形检验、KMO和变量筛选等)

虽然PCA和RDA分析及绘图都写过教程,但是对于结果的解释都没有写的很详细,刚好最近有人询问怎样使用FactoMineR factoextra包进行PCA分析。所以使用R统计绘图-环境因子相关性热图中的不同土壤环境因子数据进行PCA绘图和结果解读推文。 一、 数据准备 # 1.1 设置工作路径 #kn…

使用 QTLtools 进行 PCA 分析

3 使用 QTLtools 进行 PCA 分析 QTLtools 工具可以进行基因型的PCA分析&#xff0c;也可以进行表型的PCA分析&#xff0c;以下教程分别针对基因型和表型的PCA进行介绍&#xff1a; 3.1 对基因型进行PCA分析&#xff1b; 命令如下所示&#xff1a; QTLtools pca --vcf genot…

R语言中如何进行PCA分析?利用ggplot和prcomp绘制基因表达量分析图

学习笔记的主要内容是在R语言中利用ggplot2进行PCA分析和绘图&#xff0c;包括简单分析与操作流程&#xff0c;对比不同方式得到的结果差异&#xff0c;提供脚本代码供练习. PCA分析的原理 在处理基因差异表达数据时&#xff0c;有时候需要分析其中因素的影响最大&#xff0c;…

r语言dataellipse_R语言 PCA分析

PCA数据分析 PCA结果分析及可视化首推factoextra包&#xff0c;能处理各种R函数计算PCA的结果&#xff0c;有&#xff1a; stats::prcomp() FactoMiner::PCA() ade4::dudi.pca() ExPosition::epPCA() 如果我们想判断PCA中需要多少个主成分比较好&#xff0c;那么可以从主成分的…

样本数据PCA分析

PCA分析及画图 library(ggpubr) library(ggplot2) library(ggthemes) data1<-read.table(./100klist.txt,header 1)[,1:4] head(data1)BCD_rep1 BCD_rep2 CK_rep1 CK_rep2 1 0.1987 0.2036 0.1807 0.2062 2 0.2133 0.2169 0.2040 0.2140 3 0.1943 0.1965 …

转录组-PCA分析

PCA分析步骤&#xff1a; 第一步&#xff0c;对所有样本进行中心化 第二步&#xff0c;求特征协方差矩阵 第三步&#xff0c;求协方差矩阵的特征值和特征向量 第四步&#xff0c;将特征值按照从大到小的顺序排序&#xff0c;选择其中最大的k个&#xff0c;然后将其对应的k个特征…

PCA分析及CNS级别作图

从这节开始&#xff0c;就逐渐涉及转录组的基本可视化了&#xff0c;我们的可视化要做到CNS级别的图&#xff0c;争取做好分析&#xff0c;一步到位&#xff0c;让您有真正的收获&#xff01; PCA&#xff08;主成分分析&#xff09;&#xff0c;具体的原理就不说了&#xff0…

R语言PCA分析

常用R包&#xff1a;princomp&#xff0c;prcomp及rda R中输入数据类型有两类&#xff0c;R mode和Q mode。一般来说数据每一列为一个变量&#xff08;variable&#xff09;&#xff0c;每一行为一个数据&#xff08;observation&#xff09;。其中R mode的数据行数大于列数&a…

CSS3 媒体查询

1. 什么是媒体查询 CSS3媒体查询&#xff08;Media Query&#xff09;语法的特性&#xff1a; ①使用 media 查询&#xff0c;可以针对不同的媒体类型定义不同的样式&#xff1b; ②media 可以针对不同的屏幕尺寸设置不同的样式&#xff1b; ③当你重置浏览器大小的过程中&am…

mysql以逗号分隔的字段作为查询条件怎么查——find_in_set()函数

文章目录 写在前面作为查询条件 多条件查询用于mybatis 聚合查询count总数查询distinct的列表find_in_set()函数走索引吗 写在前面 使用mysql时&#xff0c;有可能一个字段代表一个集合&#xff0c;如果将这个集合单独抽成一张表又不值当的&#xff0c;这个时候我们存储时&a…

PageHelper实现分页查询

文章目录 前言一、PageHelper实现分页查询二、PageHelper的基本使用1. 先编写持久层2.编写业务逻辑层3..编写控制层4.使用JsonPage返回结果 总结 前言 分页查询的优点 所谓分页,就是查询结果数据较多时,采用按页显示的方法,而不是一次性全部显示 分页的优点: 服务器:一次性…

降低数据库压力的方法

1.合理增加索引 表索引可以加快对表中数据的检索速度&#xff0c;但是会降低表中数据的更新速度&#xff0c;所以增加表的索引一定控制在合理范围内&#xff0c;过多的索引不但不会降低数据库的压力&#xff0c;反而可能增大数据库的压力&#xff0c;表索引的建立一般要从具体业…

MyBatis—利用MyBatis查询(查询所有,查询一行,条件查询)

文章目录 1、查询所有2、查询详情&#xff08;通过特定属性查询&#xff09;3、多条件查询&#xff08;1&#xff09;接口参数列表三种表达方式&#xff08;2&#xff09;多条件查询&#xff08;3&#xff09;动态Sql&#xff08;4&#xff09;多条件动态查询&#xff08;5&…

Redis实现分页和多条件模糊查询方案

导言 Redis是一个高效的内存数据库&#xff0c;它支持包括String、List、Set、SortedSet和Hash等数据类型的存储&#xff0c;在Redis中通常根据数据的key查询其value值&#xff0c;Redis没有模糊条件查询&#xff0c;在面对一些需要分页、排序以及条件查询的场景时(如评论&…

python操作es条件查询定制body

参考连接&#xff1a; python操作elasticsearch - 无量python - 博客园 1、切片查询 from elasticsearch import Elasticsearch# 建立连接 es Elasticsearch( hosts{192.168.0.120, 192.168.0.153}, # 地址timeout3600 # 超时时间 )# body指定查询条件 body {from: 0, #…

Oracle clob怎么存储超过4000长度的数据,你了解吗

目录 方式一、使用存储过程&#xff1a; 方式二、使用to_clob函数 方式三、mybatis中的方法 附&#xff1a; oracle将把varchar2字段&#xff08;长度4000&#xff09;改为clob类型 参考资料&#xff1a; 题记&#xff1a;我们知道Oracle存储的字段长度是有限制&#xff0…

oracle中clob和blob,Oracle中的BLOB和CLOB

非洲小白脸 阅读(364) 评论(0) 编辑 收藏 所属分类: oracle Oracle中的BLOB和CLOB 一、区别和定义 LONG: 可变长的字符串数据,最长2G,LONG具有VARCHAR2列的特性,可以存储长文本一个表中最多一个LONG列 LONG RAW: 可变长二进制数据,最长2G CLOB: 字符大对象Clob 用来存储单…