当前位置: 首页 > news >正文

使用geneHapR做单倍型分析

1、以hmp文件为例

chr1_hmp<- read.delim("data/Haplotype/chr1.hmp.txt", check.names=F, header=T)chr1_hmp<- chr1_hmp[,-c(1,5:11)]# 去掉无用的列chr1_hmp_df<- chr1_hmp %>% tidyr::separate(alleles, into=c("REF","Alt"), sep="/")# 将alleles拆分为REF、ALT列chr1_hmp_df<- data.frame(CHR=chr1_hmp_df$chrom, POS=chr1_hmp_df$pos, REF=chr1_hmp_df$REF, Alt=chr1_hmp_df$Alt, INFO="NA", chr1_hmp_df[,-c(1:4)])# 创建新的数据框hap_data<- chr1_hmp_df %>% dplyr::filter(CHR=="1", POS<=20000&POS>=1)# 取一定范围内的数据# 从表格形式的基因型数据开始单倍型分析hapResult<- table2hap(hap_data, hapPrefix="Hap", hetero_remove=TRUE,# 移除包含杂合位点的样本na_drop=TRUE)# 移除包含基因型缺失的样本hapSummary<- hap_summary(hapResult, hapPrefix="Hap")# 官方可视化热图plotHapTable(hapSummary,# 单倍型结果hapPrefix="Hap",# 单倍型名称前缀angle=45,# 物理位置的角度displayIndelSize=0,# 图中展示最大的Indel大小title="Haplotype", ALLELE.color="white")

# 自定义热图hapSummary_df<- hapSummary[c(5:nrow(hapSummary)),]%>% dplyr::select(-c("Accession"))heatmap_data<- hapSummary_df %>%# 创建副本,保留原始频率as_tibble()%>% mutate(row_id=row_number())%>%# 转换为长格式pivot_longer(cols=-c(Hap, freq, row_id),# 排除这些列names_to="position_name",# 原始列名values_to="allele"# 等位基因)%>%# 从列名中提取位置信息mutate(# 提取位置数字(假设列名是pos1, pos2, pos3或类似格式)position=as.numeric(gsub("\\D+","", position_name)),# 提取数字# 如果列名没有数字,则使用列索引position=ifelse(is.na(position), as.numeric(factor(position_name, levels=unique(position_name))), position), hap=Hap)%>%# 排序和选择arrange(desc(freq), hap, position)%>% select(hap, position, allele, freq)%>% ungroup()# 创建热图p3<- ggplot(heatmap_data, aes(x=factor(position), y=reorder(hap, freq), fill=allele))+ geom_tile(color="white", size=0.8, width=0.9, height=0.9)+ geom_text(aes(label=allele), color="white", fontface="bold", size=4)+ scale_fill_brewer(palette="Set1")+ scale_y_discrete(labels=function(x){# 在y轴标签上添加频率freq_values<- heatmap_data %>% distinct(hap, freq)%>% arrange(desc(freq))%>% pull(freq)paste0(x," (", sprintf("%s", freq_values),")")})+ labs(title="Haplotype heatmap",#subtitle = "Visualization of alleles at each polymorphic site",x="Variant Position", y=NULL, fill="Allele")+ theme_minimal(base_size=12)+ theme(axis.text.x=element_text(face="bold", angle=45, color="black"), axis.text.y=element_text(face="bold", color="black"), panel.grid=element_blank(), legend.position="bottom", plot.title=element_text(face="bold", hjust=0.5), plot.subtitle=element_text(hjust=0.5, color="black"))+ guides(fill=guide_legend(nrow=1, byrow=TRUE))print(p3)

# LD heatmapolor.rgb<- colorRampPalette(rev(c("white","red")),space="rgb")assign("name_gap",0.2, envir=.GlobalEnv)p<- plot_LDheatmap(hap=hapResult,# 单倍型结果add.map=FALSE,# 是否添加基因模式图gff=NULL,# 注释信息Chr=NULL,# 染色体名称start=NULL,# 基因的起始位置end=NULL, title=NULL, color=olor.rgb(20), newpage=F)LDheatmap::LDheatmap(gdat=p, title=NULL, text=FALSE,# 单元格不显示数字SNP.name=F)

http://www.jsqmd.com/news/253091/

相关文章:

  • python绘制基因表达量热图
  • ‌欧盟AI法案首张罚单事件:软件测试从业者的警示与行动指南
  • 中国大模型暗战:阿里通义2.0的伦理后门测试报告
  • 深度伪造技术风暴:测试工程师的数字打假战场
  • 算法奴隶制:非洲数据标注工厂的血汗真相调查
  • 查看ai有没有学会知识的方法,打印神经网络最后一层
  • ‌人权组织指控‌:87%国家用AI监控实施种族歧视
  • 意识觉醒第一案:AI艺术家起诉人类剥夺著作权
  • 《危险边缘》:量子噪声导致AI医疗诊断集体失真事件
  • 端侧推理加速:NCNN (腾讯开源) 部署实战,在树莓派上跑通 30FPS 的人脸检测
  • python基于django的自助点餐系统
  • python基于django的酒店宾馆客房管理系统的设计与实现
  • 金属粉末成型液压机PLC设计(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_文章底部可以扫码
  • WebAssembly 逆向分析:如何反编译 Wasm 二进制文件,修改游戏里的“金币数量”?
  • 【车辆控制】移动机器人路径跟踪Matlab仿真系统,通过RRT路径规划算法生成机器人的可行路径,再通过PID控制器实现机器人对路径的跟踪,最终输出速度跟踪效果
  • 大模型“越狱”指南:DAN 模式与对抗样本 (Adversarial Examples) 攻击原理揭秘
  • H.265 (HEVC) 网页播放:WebAssembly + FFmpeg 实现浏览器端的硬解/软解兼容方案
  • JDK8 升级到 JDK17,到底带来了哪些实用新特性?(附 Spring Boot 实战代码)
  • JDK8 升级到 JDK17(续):那些被忽略但超实用的隐藏特性 + Spring Boot 实战避坑指南
  • 【开题答辩实录分享】以《座位预约管理的系统》为例进行选题答辩实录分享
  • UE5 C++(35):动态多播代理
  • 5.11 职场AI应用避坑指南:常见错误、数据安全与最佳实践
  • 5.10 数据分析与报告生成:让AI成为你的数据洞察专家
  • 【tensorRT从零起步高性能部署】20-TensorRT基础-第一个trt程序,实现模型编译的过程
  • SpreadJS V19.0 新特性解密:实时协作革命,重新定义表格团队工作流
  • SpreadJS V19.0 新特性解密:评论重构协作体验,让表格沟通更高效
  • Docker一键部署YunYouJun/cook+cpolar穿透:打造可远程访问的私有菜谱管理系统
  • 【新】基于SSM的珠宝购物网站【源码+文档+调试】
  • CD40/CD40L信号通路在免疫治疗中的核心作用与靶向策略
  • 【GNSS 定位与完好性监测】多测站 GNSS 精密定位,融合电离层 对流层时空相关性、Kriging 空间插值、卡尔曼滤波,最终解算用户站高精度位置附matlab代码