gff3转为bed12格式:
用法:bash xx.sh gff3 gff3.bed
注意:最后生成的结果需要做细微的调整
#!/bin/bash
# 检查输入参数
if [ "$#" -ne 2 ]; then
echo "Usage: $0 input.gff3 output.bed"
exit 1
fi
input_gff3=$1
output_bed=$2
# 转换 GFF3 到 BED12 格式
awk 'BEGIN {OFS="\t"}
$3 == "exon" {
# 初始化变量
id = ""; parent = "";
# 解析第九列的属性
if (split($9, attr, ";") > 0) {
for (i in attr) {
split(attr[i], a, "=");
if (a[1] == "ID") id = a[2];
else if (a[1] == "Parent") parent = a[2];
}
}
# 设置 BED12 字段
chrom = $1;
start = $4 - 1;
end = $5;
name = (parent != "") ? parent : id;
score = 0;
strand = $7;
thickStart = start;
thickEnd = end;
itemRgb = "0,0,0";
blockCount = 1;
blockSizes = end - start;
blockStarts = 0;
# 输出 BED12 格式
print chrom, start, end, name, score, strand, thickStart, thickEnd, itemRgb, blockCount, blockSizes, blockStarts;
}' $input_gff3 > $output_bed
echo "Conversion complete: $output_bed"