其他
昨天的编程资源发放,填表人数太多,我发放了300个邮箱就爆了,【资源分享】生物信息学编程实战(文末赠送120集工程师级别python视频教程)根据现在填表人数,起码得10天才能全部发放完毕,稍安勿躁哦!
我们的NGS组学在B站有详细的视频,配备讲义思维导图,同样的,我也为每个组学视频课程,设置了练习题,不知道大家是否有去学习实践呢?同样的,我也为每个组学视频课程,设置了练习题,不知道大家是否有学习呢?
基本上每个过来我这边学习一个月以上的学徒我都会让他们学习多种组学(围绕着中心法则),而且有了Linux基础和R语言能力后, 跟着我们的视频教程很容易就学会基础流程,毫无压力。
不过通常大家是一步步学习,很少涉及到脚本流程构建,我这里还是稍微演示一下通常我们流程是如何构建的。基于的测试数据:单端测序,参考基因组选择hg38,有input,走bowtie2+macs2流程。
首先安装必备软件
这里直接使用conda即可,关于conda安装我们在B站也是有视频课程的,这里就不再赘述。
conda create -n chip python=2
conda activate chip
conda install -y macs2 bowtie bowtie2 sambamba macs2 samtools bedtools deeptools trim-galore fastqc fastp
配置OK后,可以每个软件都看看帮助文档。当然了,你首先需要有自己的服务器哦,这些软件代码都是运行在Linux服务器上面的。可以看看我们生信技能树发布的服务器相关教程的历史推文目录:
而且我们生信技能树B站有一个服务器视频,一定要看完哦!
workflow
step0: folder
组织一下项目的文件夹架构,这个取决于自己的习惯,很多人会在不同文件夹前面加上 01,02,03这样的序号标签。
mkdir -p {raw,clean,align,peaks,motif,qc}
conda activate chip
需要去EBI拿到3个样本的fq地址并且下载;
GSM2113517 BE2C_BRD4
GSM2113518 BE2C_H3K27AC
GSM2113519 BE2C_H3K4ME3
GSM2113520 BE2C_INPUT
GSM2113521 BE2C_MYCN
GSM2113522 BE2C_RNA_POL2
GSM2113523 BE2C_TWIST
这个大家可以看到我前面的教程:使用ebi数据库直接下载fastq测序数据的改进脚本
在Linux下面,可以直接使用wget下载即可。
wget ftp://ftp.sra.ebi.ac.uk/vol1/fastq/SRR335/003/SRR3356383/SRR3356383.fastq.gz -O BE2C_H3K27AC.fq.gz
下载文件的时候随便改名。
step1: basic QC for fastq files
需要自行摸索 fastp 软件的参数:
nohup fastp -i SRR3356385.fastq.gz -o input.fq.gz --thread=5 --length_required=36 --n_base_limit=6 --compression=6 -R input 1>log.fastp.input.txt 2>&1 &
nohup fastp -i SRR3356386.fastq.gz -o MYCN.fq.gz --thread=5 --length_required=36 --n_base_limit=6 --compression=6 -R MYCN 1>log.fastp.MYCN.txt 2>&1 &
nohup fastp -i SRR3356388.fastq.gz -o TWIST.fq.gz --thread=5 --length_required=36 --n_base_limit=6 --compression=6 -R TWIST 1>log.fastp.TWIST.txt 2>&1 &
step2: alignment
需要自行摸索bowtie2的参数
index=/home/yb77613/reference/index/bowtie/hg38
bowtie2 -p 5 -x $index -U input.fq.gz | samtools sort -O bam -@ 5 -o - > input.bam
bowtie2 -p 5 -x $index -U MYCN.fq.gz | samtools sort -O bam -@ 5 -o - > MYCN.bam
bowtie2 -p 5 -x $index -U TWIST.fq.gz | samtools sort -O bam -@ 5 -o - > TWIST.bam
step3: QC for bam files
同样的需要自行摸索sambamba的参数
# --overflow-list-size 600000 --tmpdir='./'
sambamba markdup -r input.bam input_rmd.bam
sambamba markdup -r MYCN.bam MYCN_rmd.bam
sambamba markdup -r TWIST.bam TWIST_rmd.bam
拿到了去除了PCR重复的bam文件,走后续分析。
step4: call peaks
如果是单个样本摸索,没有input就需要修改下面的代码了。
macs2 callpeak -t MYCN_rmd.bam -c input_rmd.bam -f BAM -g hs -n MYCN_vs_input -q 0.01
macs2 callpeak -t TWIST_rmd.bam -c input_rmd.bam -f BAM -g hs -n TWIST_vs_input -q 0.01
上面的流程看起来没有大的问题了,就可以考虑把它串起来成为一个脚本。毕竟你需要的是自动化分析大样本数据。
付费内容分割线
为有效杜绝黑粉跟我扯皮,设置一个付费分割线,这样它们就没办法复制粘贴我的代码,也不可能给我留言骂街了!
世界顿时清净很多!
综合脚本
前面演示的4个步骤,其实是可以连贯起来,如下所示:
"},{querySelector:"qqmusic",genId:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(t.node.getAttribute("musicid")||"").replace(/^\s/,"").replace(/\s$/,"")+"_"+t.index},calW:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return 1*t.parentWidth},calH:function(){return 88},replaceContentCssText:"",appendContentCssText:"margin:16px 0;diplay:block;",outerContainerLeft:"",outerContainerRight:""},{querySelector:"mpvoice",genId:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=decodeURIComponent(t.node.getAttribute("voice_encode_fileid")||"").replace(/^\s/,"").replace(/\s$/,"");return e+"_"+t.index},calW:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return 1*t.parentWidth},calH:function(){return 122},replaceContentCssText:"",appendContentCssText:"margin:16px 0;diplay:block;",outerContainerLeft:"",outerContainerRight:""},{querySelector:"mppoi",genId:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return t.node.getAttribute("data-id")||""},calW:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return 1*t.parentWidth},calH:function(){return 219},replaceContentCssText:"",appendContentCssText:"margin:16px 0;diplay:block;",outerContainerLeft:"",outerContainerRight:""},{querySelector:"mpsearch",genId:function(){return decodeURIComponent("mpsearch")},calW:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return 1*t.parentWidth},calH:function(){return 100},replaceContentCssText:"",appendContentCssText:"margin:16px 0;diplay:block;",outerContainerLeft:"",outerContainerRight:""},{querySelector:"mpvideosnap",genId:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.node.getAttribute("data-type")||"video";return"live"===e?decodeURIComponent(t.node.getAttribute("data-noticeid")||""):decodeURIComponent(t.node.getAttribute("data-id")||"")},calW:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.node.getAttribute("data-type")||"video",n=t.node.getAttribute("data-width")||"",r=t.node.getAttribute("data-height")||"";if("live"===e||"topic"===e)return t.parentWidth;if("image"===e)return.665*t.parentWidth;var i=1,o=0,a=0,d=!1;return 1===(i=n/r)||i===3/4||(i===4/3||i===16/9?d=!0:i1&&i4/3?d=!0:("number"!=typeof i||Object.is(i,NaN))&&(i=1)),t.node.setAttribute("data-datio",i),t.node.setAttribute("data-isHorizontal",d),o=(a=!0===d?t.parentWidth:window.innerWidth0&&void 0!==arguments[0]?arguments[0]:{},e=t.node.getAttribute("data-desc")||"",n=t.node.getAttribute("data-type")||"video",r=t.node.getAttribute("data-computedHeight")||"";switch(n){case"live":return e?152:116;case"topic":return 201;case"image":return e?this.calW(t)+44+35+27:this.calW(t)+44+35;case"video":return parseFloat(r)}},getBorderRadius:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.node.getAttribute("data-type")||"video";return"video"===e?4:8},replaceContentCssText:"",appendContentCssText:"margin:16px auto;diplay:block;",outerContainerLeft:"",outerContainerRight:""},{querySelector:"mp-wxaproduct",genId:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return decodeURIComponent(t.node.getAttribute("data-wxaproduct-productid")||"")},calW:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return 1*t.parentWidth},calH:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.node.getAttribute("data-wxaproduct-cardtype")||"";return"mini"===e?124:466},replaceContentCssText:"",appendContentCssText:"margin:16px 0;diplay:block;",outerContainerLeft:"",outerContainerRight:""},{querySelector:"mpprofile",genId:function(t){return t.node.getAttribute("data-id")||""},calW:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return 1*t.parentWidth},calH:function(){return 143},replaceContentCssText:"",appendContentCssText:"margin:16px 0 16px;diplay:block;",outerContainerLeft:"",outerContainerRight:""}]};!function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if("function"==typeof document.querySelectorAll)for(var e={maxWith:document.getElementById("img-content").getBoundingClientRect().width,idAttr:"data-preloadingid"},n=0,r=t.config.length;n