首页 > 其他分享 >cuttag分析流程(部分存疑)

cuttag分析流程(部分存疑)

时间:2024-04-15 23:11:22浏览次数:25  
标签:-- 流程 bed sample cuttag output input 存疑 bowtie2

参考博客

https://mp.weixin.qq.com/s/uwO9G_71h8kU3lTWsW_zPw
https://www.jianshu.com/p/1a23656a0713
https://zhuanlan.zhihu.com/p/520071927

数据质控

fastqc -o 0_fastqc/ -f fastq -t 10 --noextract ./0_rawdata/*_1.fq
fastqc -o 0_fastqc/ -f fastq -t 10 --noextract ./0_rawdata/*_2.fq

bowtie2建立索引

wget ftp://ftp.ensembl.org/pub/release-102/fasta/sus_scrofa/dna/Sus_scrofa.Sscrofa11.1.dna.toplevel.fa.gz
gunzip Sus_scrofa.Sscrofa11.1.dna.toplevel.fa.gz && mv Sus_scrofa.Sscrofa11.1.dna.toplevel.fa pig.fa

bowtie2-build genome/pig.fa genome/pig

slurm提交

#!/bin/bash
#SBATCH --job-name=sbatch_cuttag
#SBATCH --cpus-per-task=40
#SBATCH -o 1_bowtie2.out
#SBATCH --nodelist=comput3

bowtie2比对

比对到猪基因组

cat sample.txt | while read id
do
echo "bowtie2 --end-to-end --very-sensitive --no-mixed --no-discordant --phred33 -I 10 -X 700 -p 8 -x genome/pig -1 ./0_rawdata/${id}_1.fq -2 ./0_rawdata/${id}_2.fq -S ./1_bowtie2/${id}.sam &"
done > bowtie2.sh

SpikeIn处理

不确定在猪的cuttag中是否需要进行spikeIn,如果需要,可以参考以下代码

比对到大肠杆菌基因组

# 下载大肠杆菌基因组
wget ftp://ftp.ensemblgenomes.org/pub/bacteria/release-48/fasta/bacteria_0_collection/escherichia_coli_str_k_12_substr_mg1655/dna/Escherichia_coli_str_k_12_substr_mg1655.ASM584v2.dna.toplevel.fa.gz
gunzip Escherichia_coli_str_k_12_substr_mg1655.ASM584v2.dna.toplevel.fa.gz && mv Escherichia_coli_str_k_12_substr_mg1655.ASM584v2.dna.toplevel.fa ecoli.fa

# 建立索引
bowtie2-build genome/e.coli/ecoli.fa genome/e.coli/ecoli

# 比对
cat sample.txt | while read id
do
echo "bowtie2 --end-to-end --very-sensitive --no-mixed --no-discordant --phred33 -I 10 -X 700 -p 8 -x genome/e.coli/ecoli -1 ./0_rawdata/${id}_1.fq -2 ./0_rawdata/${id}_2.fq -S ./1_bowtie2/ecoli/${id}.sam & > ${id}_bowtie2_spikeIn.txt"
done > bowtie2_ecoli.sh

获取测序深度值

while read id
do
{
    seqDepthDouble=`samtools view -F 0x04 ./1_bowtie2/ecoli/${id}.sam | wc -l`
    seqDepth=$((seqDepthDouble/2))
    echo $seqDepth > ./1_bowtie2/ecoli/${id}_bowtie2_spikeIn.seqDepth
} &
done < sample.txt
wait

文件格式的转换,获得bed文件

while read i
do
{
## 转换为 BAM 文件格式,并且仅保留成功映射到参考序列上的读取
samtools view -bS -F 0x04 ./1_bowtie2/pig/${i}.sam > ./1_mapped/${i}.bam

## 将 BAM 文件转换为 bedpe 文件格式
bedtools bamtobed -i ./1_mapped/${i}.bam -bedpe > ./2_bed/${i}.bedpe
## 将 BAM 文件转换为 bed 文件格式
bedtools bamtobed -i ./1_mapped/${i}.bam > ./2_bed/${i}.bed

## 保留那些在同一条染色体且片段长度小于 1000bp 的双端 reads
awk '$1==$4 && $6-$2 < 1000 {print $0}' ./2_bed/${i}.bed > ./2_bed/${i}.clean.bed

## 仅提取片段相关的列 
cut -f 1,2,6 ./2_bed/${i}.clean.bed | sort -k1,1 -k2,2n -k3,3n  > ./3_fragments/${i}.fragments.bed
} &
done < sample.txt
wait

评估重复性

## 评估重复性
## 为了研究重复之间和不同条件下的可重复性,基因组被分成 500 bp bin,每个 bin reads 计数的 log2 转换值的皮尔逊相关性在重复数据集之间计算。多个重复和 IgG 对照数据集显示在层次化聚类关联矩阵中。
while read i
do
{
binLen=500
awk -v w=$binLen '{print $1, int(($2 + $3)/(2*w))*w + w/2}' ./3_fragments/${i}.fragments.bed \
sort -k1,1V -k2,2n \
uniq -c \
awk -v OFS="\t" '{print $2, $3, $1}' \
sort -k1,1V -k2,2n  > ./4_bin/${i}.fragmentsCount.bin$binLen.bed
} &
done < sample.txt
wait

加入测序深度对bed文件进行标准化处理

需要有大肠杆菌的测序深度值,如没有不进行标准化处理

# 标准化
samtools faidx ./genome/pig/pig.fa ##后面的bedtools -g的内容通过samtools的faidx来进行构建获得索引文件

# 这里的seqDepth是前面的数据比对处理当中获得测序深度值,可以调取txt文件,来进行后续的循环处理
while read i
do
{
# 读取测序深度值
seqDepth=`cat ./1_bowtie2/ecoli/${i}_bowtie2_spikeIn.seqDepth`
# 根据测序深度值进行标准化处理
if [[ "$seqDepth" -gt "1" ]]; then
scale_factor=`echo "10000 / $seqDepth" | bc -l`
echo "Scaling factor for $histName is: $scale_factor!"
bedtools genomecov -bg -scale $scale_factor -i ./3_fragments/${i}.fragments.bed -g ./genome/pig/pig.fa.fai > ./5_normalized/${i}.fragments.normalized.bedgraph
fi  
} &
done < sample.txt
wait

call peak

# 用SEACR进行peak calling
seacr="seacr.sh"

cat sample.txt | while read i
do
bash $seacr ./5_normalized/${i}.fragments.normalized.bedgraph 0.01 non stringent ./6_peak/${i}_seacr_top0.01.peaks.bed
done

snakemake

shell.executable("/bin/bash")
configfile: "./config.yaml"

SAMPLES=['RD29C36_N501_701', 'RD29C36-N501-702', 'RD29C36-N501-702', 'RD29C36-N501-703', 'RD29C36-N501-703', 'RD29C36-N501-704', 'RD29C36-N501-704', 'RD29C36-N502-701', 'RD29C36-N502-701', 'RD29-N502-702', 'RD29-N502-702', 'RD29-N502-703', 'RD29-N502-703', 'RD29-N502-704', 'RD29-N502-704', 'M2-oocyte-501-704', 'M2-oocyte-501-704', 'M2-oocyte-501-706', 'M2-oocyte-501-706', 'no-oocyte-501-705', 'no-oocyte-501-705', 'RD29C36_N501_701']

rule all:
    input:
        "1_fastqc/multiqc_report.html",
        "genome/pig.complete",
        expand("6_bed/{sample}.clean.bed", sample=SAMPLES),
        expand("7_bigwig/{sample}.bw", sample=SAMPLES)

rule fastqc1:
    input:
        "0_rawdata/{sample}_1.fq.gz",
        "0_rawdata/{sample}_2.fq.gz"
    output:
        "1_fastqc/{sample}_1_fastqc.html",
        "1_fastqc/{sample}_2_fastqc.html"
    shell:
        "fastqc -o 1_fastqc/ -f fastq -t {config[threads]} --noextract {input[0]} {input[1]}"

rule multiqc1:
    input:
        expand("1_fastqc/{sample}_1_fastqc.html", sample=SAMPLES),
        expand("1_fastqc/{sample}_2_fastqc.html", sample=SAMPLES)
    output:
        "1_fastqc/multiqc_report.html"
    shell:
        "multiqc 1_fastqc/ -o 1_fastqc/"

rule bowtie2build:
    input:
        fa="genome/pig.fa"
    output:
        touch("genome/pig.complete")
    shell:
        "bowtie2-build {input.fa} genome/pig && touch {output}"

rule bowtie2:
    input:
        "0_rawdata/{sample}_1.fq.gz",
        "0_rawdata/{sample}_2.fq.gz"
    output:
        "2_bowtie2/{sample}.sam"
    shell:
        """
        bowtie2 --end-to-end --very-sensitive --no-mixed --no-discordant --phred33 -I 10 -X 700 -p 8 -x genome/pig -1 {input[0]} -2 {input[1]} -S {output}
        """

rule sam2bam:
    input:
        "2_bowtie2/{sample}.sam"
    output:
        "3_bam/{sample}.bam"
    shell:
        "samtools view -@ {config[threads]} -F 0x04 -bS {input} > {output}"

rule bam2bed:
    input:
        "3_bam/{sample}.bam"
    output:
        "4_bed/{sample}.bedpe"
    shell:
        "bedtools bamtobed -i {input} -bedpe > {output}"

rule cleanbed:
    input:
        "4_bed/{sample}.bedpe"
    output:
        "5_bed/{sample}.clean.bedpe"
    shell:
        "awk '$1==$4 && $6-$2 < 1000 {{print $0}}' {input} > {output}"

rule bedpe2bed:
    input:
        "5_bed/{sample}.clean.bedpe"
    output:
        "6_bed/{sample}.clean.bed"
    shell:
        "cut -f 1,2,6 {input} | sort -k1,1 -k2,2n -k3,3n  > {output}"

rule bamsort:
    input:
        "3_bam/{sample}.bam"
    output:
        "3_bam/{sample}.sorted.bam"
    shell:
        "samtools sort -@ {config[threads]} -o {output} {input}"

rule bamindex:
    input:
        "3_bam/{sample}.sorted.bam"
    output:
        "3_bam/{sample}.sorted.bam.bai"
    shell:
        "samtools index {input}"

rule bam2bigwig:
    input:
        "3_bam/{sample}.sorted.bam",
        "3_bam/{sample}.sorted.bam.bai"
    output:
        "7_bigwig/{sample}.bw"
    shell:
        "bamCoverage -b {input[0]} -o {output}"

标签:--,流程,bed,sample,cuttag,output,input,存疑,bowtie2
From: https://www.cnblogs.com/cauwj/p/18137150

相关文章

  • vscode深度debug, 解决import包无法check运行流程的问题。
    解决方法:通过修改VSCode的launch.json文件。参考:用vscode调试python程序与launch.json的修改-知乎(zhihu.com)解决vscode在库里无法打断点问题-知乎(zhihu.com)问题描述:debug无法进入封装成package的包内。具体修改方法:创建launch.json文件;修改为下......
  • WIN11彻底关闭windows更新全流程
    一、在服务中禁用windows更新找到该项目右键-属性“常规”界面-启动类型选择禁用“恢复”界面-第一次失败无操作第二次失败无操作后续失败无操作二、禁止其自动恢复启动1、右键鼠标打开windows面板,找到“计算机管理功能”并单机鼠标左键打开2、依次打开计算机管理(本地......
  • java基础_05_流程控制
    1、用户交互Scanner(译:扫描器) 1\使用next方法接收,只接收空格以前的packageliuchengkongzhi;importjava.util.Scanner;publicclassScanner01{publicstaticvoidmain(String[]args){//创建一个扫描器对象,用于接收键盘数据ScannerSca......
  • MarkDown流程图
    markdown语法```mermaid流程图/时序图```.流程图布局TB,从上到下TD,从上到下BT,从下到上RL,从右到左LR,从左到右```mermaidgraphLR```.Example```mermaidgraphLRA(体素化)-->B[体素编码器]B[体素编码器]-->C[中间编码器] C[中间编码器]-->D[......
  • 如何让表单流程引擎提质增效?
    随着社会的进步和科技的发展,低代码技术平台在诸多行业中成为利用价值高的平台。对于解决信息孤岛、部门协作不给力、办公效率不高等缺点,低代码技术平台都可以为其架设出一道优质的桥梁,共同朝着高效率的流程化办公方向前进。表单流辰引擎是提质增效的理想软件平台,优势特点多、可视......
  • ODI(境外投资备案)作用、类别和申请流程详解
     中国企业越来越多地选择在境外进行投资,而国家相关部门也出台了多项政策以规范这一行为。在进行海外投资前,企业必须在政策指导下进行合法操作并办理相应手续,其中ODI(境外投资备案)是其中一种最常见的方式之一。 以下是对ODI的介绍、类别以及申请流程的详细指南:目录:ODI(境外......
  • order by的工作流程
    在日常的业务开发中,使用到MySQL的orderby对数据进行排序是一个很正常的行为,那么你知道orderby是如何工作的嘛?一、全字段排序先创建一张user表,字段name,age,address,插入随机数据100w条记录,由于按照name查询,所以给name字段添加索引:altertableuseraddindexidx_name(name);......
  • 04流程控制 for循环,while循环
    for循环for((初始值;循环控制条件;变量变化))do程序done或for变量in值1,值2,值3...do程序done#!/bin/bashs=0for((i=1;i<=100;i++))dos=$[$s+$i]doneecho$s 执行结果: 例子:打印所有参数#!/bin/bashforiin$*doecho"bangzhang......
  • 自己开发的App如何上架,详细解读App上架操作流程
     对于企业或个人开发的App,上架是必经之路。然而,许多人不清楚如何进行App上架。工信部在2023年规定,App必须备案才能上架。那么,让我们一起了解App上架流程吧。 1.准备上架所需材料在上架App之前,需要准备应用图标、应用截图、应用描述等材料。这些材料需要精心设计,以吸引用户......
  • 2、APIView执行流程以及request对象源码分析
    一、基于View编写5个接口1、创建模型表models.pyfromdjango.dbimportmodelsclassBook(models.Model):name=models.CharField(max_length=64)price=models.IntegerField()publish=models.CharField(max_length=32)2、视图函数views.pyfrom......