2021-10-27【WGS】丨Pacbio三代甲基化修饰流程

摘要

前段时间特别忙,一个是项目多,另一个是个人私事,临近月底终于有空可以继续码文章。本篇介绍的是三代甲基化的基本流程分析。在测序时分析序列的甲基化修饰后,使用SMRT官方工具进行分析,得到m4C,m6A,m5C_TET的注释。
在这里插入图片描述

方法与工具

测序仪器:Pacbio
分析工具:
组装:Canu;flye
比对:pbmm2;samtools(SMRTlink自带)
注释:ipdSummary,motifmaker(SMRTlink自带)
SMRTlink安装文档
SMRTlink参考文档

操作流程

组装

bam2fastq转换格式
canu矫正/flye组装
原始数据.bam
原始数据.fastq
组装序列.fasta
for bam_path in */1.rawdata/*.bam; #读取bam文件路径和样品名
do
sample_id=${bam_path%/1.rawdata/*};
bam2fastq ${sample_id}.bam -o ${sample_id}
canu -correct \
     -p ${sample_id} -d ../02.Assemble/${sample_id} \
    genomeSize=6.5m \
    minReadLength=2000 minOverlapLength=500\
    corOutCoverage=300 corMinCoverage=2 \
    -pacbio ${sample_id}.fastq.gz
    flye --plasmids --pacbio-corr ${sample_id}/${sample_id}.correctedReads.fasta.gz -g 6.5m -o flye/${sample_id}_flye -t 16
done

Canu 自身也可以组装,在这里我们只用了他的校正功能,使用flye进行组装(前同事的pipeline被保留)。当然这两个工具的对比我没有去深究,如果大家有更好的流程可以留言讨论。

比对

pbmm2建立索引.mmi -- pbmm2比对
samtools sort排列
组装序列.fasta
数据比对
原始数据.bam
临时文件.tmp.bam
比对文件.bam
for bam_path in */1.rawdata/*.bam; #读取bam文件路径和样品名
do
sample_id=${bam_path%/1.rawdata/*};
echo ${bam_path} ${sample_id};
mkdir ../02.Assemble/ref ../05.align#建立参考和比对文件夹
pbmm2 index ../02.Assemble/flye/${sample_id}_assembly.fasta ../02.Assemble/ref/${sample_id}_assembly.mmi #建立参考序列索引
pbmm2 align ../02.Assemble/flye/${sample_id}_assembly.fasta ${bam_path} ../05.align/${sample_id}_tmp.bam #比对
samtools sort ../05.align/${sample_id}_tmp.bam  ../05.align/${sample_id} #排列文件
done

注释

samtools建立索引.fai
samtools建立索引.bai
组装序列.fasta
motif.gff
比对文件.bam
motifs.csv
for bam_path in */1.rawdata/*.bam; #读取bam文件路径和样品名
do
mkdir -p ../05.align/methylome/${sample_id}
samtools index ../05.align/${sample_id}.bam
samtools faidx ../02.Assemble/flye/${sample_id}_assembly.fasta
ipdSummary ../05.align/${sample_id}.bam --reference ../02.Assemble/flye/${sample_id}_assembly.fasta --gff ../05.align/methylome/${sample_id}/basemods.gff --csv ../05.align/methylome/${sample_id}/basemods.csv --pvalue 0.001 --numWorkers 16 --identify m4C,m6A,m5C_TET 
motifMaker find -f ../02.Assemble/flye/${sample_id}_assembly.fasta -g ../05.align/methylome/${sample_id}/basemods.gff -o ../05.align/methylome/${sample_id}/motifs.csv
motifMaker reprocess -f ../02.Assemble/flye/${sample_id}_assembly.fasta -g ../05.align/methylome/${sample_id}/basemods.gff -m ../05.align/methylome/${sample_id}/motifs.csv -o ../05.align/methylome/${sample_id}/motifs.gff

结果展示

可以得到4个结果,gff和csv各2个文件(M.前缀是自己加的,用于区分样品)
在这里插入图片描述

basemods

basemods.gff文件提供了m4C,m6A,m5C_TET的注释信息,csv提供了突变位点的信息
在这里插入图片描述
在这里插入图片描述

motif

motif.gff注释文件和basemods.gff前面都差不多,只有部分位点最后一列注释信息上有些区别,多一个id=BSC;motif.csv提供甲基化片段序列位置信息,如果序列太少,可以在motifmaker可以设置-m 参数调整筛选分数。
在这里插入图片描述
在这里插入图片描述

总结

三代的甲基化修饰其实并不复杂,工具安装也很方便好用。个人感觉后续是加一些分析,比如做统计,继续绘制一些图片的。介于目前客户需求,暂时没有添加,有兴趣的朋友可以加群一起交流。遇见二维码过期可添加VX:bbplayer2021 ,备注 申请加入生信交流群。
在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
GCJ-02坐标是一种加密坐标系,使用的是国测局制定的加密算法,因此需要进行转换才能得到标准的WGS-84坐标。以下介绍两种常见的转换方法: 1. 使用在线转换工具 目前网络上有很多在线的坐标转换工具,可以很方便地将GCJ-02坐标转换为WGS-84坐标。例如,可以使用坐标转换网站https://www.gpsspg.com/maps.htm 进行转换。具体步骤为: - 打开网站,点击左上方的“坐标转换”按钮; - 在弹出的页面中,选择“坐标系转换”; - 在“待转换坐标系”中选择“GCJ-02坐标系”,在“目标坐标系”中选择“WGS-84坐标系”,输入需要转换的坐标点; - 点击“开始转换”按钮,即可得到转换后的WGS-84坐标点。 2. 使用程序进行转换 除了使用在线转换工具,还可以通过编写程序实现GCJ-02坐标到WGS-84坐标的转换。例如,可以使用Python编写以下代码实现: ```python import math def gcj02_to_wgs84(lng, lat): a = 6378245.0 ee = 0.00669342162296594323 pi = 3.14159265358979324 dLat = transform_lat(lng - 105.0, lat - 35.0) dLng = transform_lng(lng - 105.0, lat - 35.0) radLat = lat / 180.0 * pi magic = math.sin(radLat) magic = 1 - ee * magic * magic sqrtMagic = math.sqrt(magic) dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi) dLng = (dLng * 180.0) / (a / sqrtMagic * math.cos(radLat) * pi) wgsLat = lat - dLat wgsLng = lng - dLng return wgsLng, wgsLat def transform_lat(lng, lat): pi = 3.14159265358979324 ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * math.sqrt(math.fabs(lng)) ret += (20.0 * math.sin(6.0 * lng * pi) + 20.0 * math.sin(2.0 * lng * pi)) * 2.0 / 3.0 ret += (20.0 * math.sin(lat * pi) + 40.0 * math.sin(lat / 3.0 * pi)) * 2.0 / 3.0 ret += (160.0 * math.sin(lat / 12.0 * pi) + 320 * math.sin(lat * pi / 30.0)) * 2.0 / 3.0 return ret def transform_lng(lng, lat): pi = 3.14159265358979324 ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * math.sqrt(math.fabs(lng)) ret += (20.0 * math.sin(6.0 * lng * pi) + 20.0 * math.sin(2.0 * lng * pi)) * 2.0 / 3.0 ret += (20.0 * math.sin(lng * pi) + 40.0 * math.sin(lng / 3.0 * pi)) * 2.0 / 3.0 ret += (150.0 * math.sin(lng / 12.0 * pi) + 300.0 * math.sin(lng / 30.0 * pi)) * 2.0 / 3.0 return ret # 示例 lng, lat = 116.3975, 39.9086 wgs_lng, wgs_lat = gcj02_to_wgs84(lng, lat) print(wgs_lng, wgs_lat) ``` 运行以上代码,即可将GCJ-02坐标转换为WGS-84坐标。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

穆易青

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值