【金山文档 | WPS云文档】 当你需要提取基因组启动子序列,在服务器里该怎么做?
https://www.kdocs.cn/l/csp6ytbnYwvE
当你恰好有基因组DNA序列(xxx.fasta)和对应的注释文件(xxx.gff),又恰好需要提取启动子序列以完成下一步工作,你需要怎么做?
首先挂载好文件所在的文件夹到容器中,本次处理需要用到的工具有samtools和bedtools。
如果缺少工具就输入:
sudo apt-get update
sudo apt-get install bedtools samtools
#安装bedtools和samtools以Tgrandis.fa和Tgrandis_clean.gff为例
- 先创建基因组索引文件
samtools faidx Tgrandis.fa
#这会生成一个.fai文件- 对gff文件进行预处理
awk '$3=="mRNA"' Tgrandis_clean.gff | cut -f1,4,5,9,6,7 > Tgrandis_mRNA.bed
#筛选出mRNA行,只保留必须内容,生成的是.bed文件
#此处第四列是ID,保证后面输出最终文件是带ID的- 确定启动子区间
一般用转录起始位点(TSS)上游 2000bp ~ TSS,用awk处理Tgrandis_mRNA.bed
#生成带链信息的启动子BED
awk 'BEGIN{OFS="\t"} {
if($6 == "+"){
start = $2 - 2000;
end = $2 - 1;
strand = "(+)"; # 正链标识
} else {
start = $3 + 1;
end = $3 + 2000;
strand = "(-)"; # 负链标识
}
if(start < 1) start = 1;
#关键:ID + 链标识(如mRNA001(+))
print $1, start, end, $4 strand, $5, $6;
}' Tgrandis_mRNA.bed > Tgrandis_promoter_2000_strand.bed
#重新提取序列(序列名会自动带链)
bedtools getfasta -fi Tgrandis.fa \
-bed Tgrandis_promoter_2000_strand.bed \
-fo Tgrandis_promoter_2000_strand.fa \
-name -s- 用bedtools提取启动子序列
提取启动子序列(-name:用BED第4列ID命名序列;-s:根据链方向反向互补负链序列)
bedtools getfasta -fi Tgrandis.fa \-bed Tgrandis_promoter_2000.bed \-fo Tgrandis_promoter_2000.fa \-name-s参数说明 |
|
参数 | 作用 |
| 输入基因组 fasta 文件 |
| 输入启动子区间 BED 文件 |
| 输出启动子序列 fasta 文件 |
| 输出序列名使用 BED 第 4 列的 ID(而非默认的 chr:start-end),方便后续分析 |
| 严格遵循链方向:负链序列自动反向互补(启动子序列需与转录方向一致) |
- 特殊情况说明:
问题1:当fasta文件里的染色体数目与gff文件里不对应时(比如fasta里多一条染色体,是组装的时候导致的)程序会报错,请检查文件并修改。
问题2:当对启动子长度有要求时,直接修改步骤2中的数字参数,比如2000改为1000,此时上游为1000bp。
问题3:按上文2000的参数,得到的启动子序列,每行应该是2000个数据,打开文件检查下。