bedtools shuffle -excl未提示染色体命名不一致问题问询
bedtools shuffle染色体命名不匹配的影响说明
核心结论
你之前设置的-excl参数已经完全失效,所有已生成的重排文件不符合分析要求,必须重做相关分析。
原因解释
- bedtools全工具的区间操作均遵循染色体名称严格完全匹配的规则,只有染色体名称完全一致的区间才会参与重叠校验、过滤等计算。你使用的排除区域为
1/2/X这类数字/字母型命名,输入文件为chr1/chr2/chrX这类带前缀的命名,两类文件没有任何匹配的染色体条目,bedtools shuffle运行时会判定不存在需要排除的区域,你原本设置的排除规则完全没有生效,所有重排区间都可能落在你想避开的区域内。 - 运行无报错是bedtools的正常逻辑:工具本身不会自动校验多个输入文件的染色体命名体系是否一致,也不会做自动的名称转换,只要单个输入文件本身格式合规就会正常运行,这类逻辑类问题不会触发运行时错误或警告。
修复方案
重新运行前需要先统一两类文件的染色体命名,可选两种操作:
- 给排除区域文件添加
chr前缀:可以用awk '{if($0 !~ /^#/) print "chr"$0; else print $0}' 原排除区域.bed > 修正后排除区域.bed快速处理,处理后需要手动校验性染色体、线粒体等特殊染色体的命名是否和你的输入文件匹配(比如原排除区域的MT是否需要改为chrM等) - 移除输入文件的
chr前缀:可以用sed 's/^chr//' 原输入文件.bed > 修正后输入文件.bed处理
命名统一后可以先运行bedtools intersect -a 修正后的输入文件.bed -b 修正后的排除区域.bed,如果有输出结果即证明命名匹配正常,可以重新运行shuffle流程。
内容的提问来源于stack exchange,提问作者user2449089
相关产品推荐
相关产品推荐

