我有一个修改过的 gff 文件,它缺少原始 gff 文件中存在的一些行。我想把它们加回去。
即,在每个新的 contig 之前包含额外的行“# Fasta ...”和“##sequence-region”的原始 gff 文件:
1 # Fasta 定义行:>contig00047
2 ##sequence-region
3 contig00047 AUGUSTUS old annotation
4 contig00047 AUGUSTUS old annotation
5 contig00047 AUGUSTUS old annotation
6 contig00047 AUGUSTUS old annotation
7 contig00047 AUGUSTUS old annotation
8 contig00047 AUGUSTUS old annotation
9 # Fasta 定义行: >contig00048
10 ##sequence-region
11 contig00048 AUGUSTUS 旧注释
12 contig00048 AUGUSTUS 旧注释
13 contig00048 AUGUSTUS 旧注释
14 contig00048 AUGUSTUS 旧注释
这是新修改的 gff 文件格式,缺少那些额外的行:
1 contig00047 AUGUSTUS new annotation
2 contig00047 AUGUSTUS new annotation
3 contig00047 AUGUSTUS new annotation
4 contig00047 AUGUSTUS new annotation
5 contig00047 AUGUSTUS new annotation
6 contig00047 AUGUSTUS new annotation
7 contig00048 AUGUSTUS new annotation
8 contig00048 AUGUSTUS new annotation
9 contig00048 AUGUSTUS new annotation
10 contig00048 AUGUSTUS new annotation
这就是我想要的:
1 # Fasta 定义行:>contig00047
2 ##sequence-region
3 contig00047 AUGUSTUS new annotation
4 contig00047 AUGUSTUS new annotation
5 contig00047 AUGUSTUS new annotation
6 contig00047 AUGUSTUS new annotation
7 contig00047 AUGUSTUS new annotation
8 contig00047 AUGUSTUS new annotation
9 # Fasta 定义行: >contig00048
10 ##sequence-region
11 contig00048 AUGUSTUS 新注释
12 contig00048 AUGUSTUS 新注释
13 contig00048 AUGUSTUS 新注释
14 contig00048 AUGUSTUS 新注释
我已将原始文件引入 R 并更新了注释,但它丢失了以“#”开头的行。我需要那些回来让我的 gff 有效。我尝试使用 grep 来获取原始 gff 中以 # 开头的所有行的行号:
$ grep -n "#' Renamed_Blast2GO_gff_without_contig.gff | cut -f1 -d: > line.txt
然后我在 gedit 中打开 line.txt 并搜索并将所有 \n' 替换为 G; 在第 1 行中获取一个长字符串。然后我在修改后的 gff 文件中使用 sed 在第 1 行字符串中指定的每个行号之后添加空行:
$ sed '<\paste line 1 string here>' mod2_gff.gff
ie,
$ sed '1G;2G;9G;10G' mod2_gff.gff # 我的文件实际上非常大,所以它变得很长,但仍然有效。
现在我想用原始文件中的行替换修改后的文件中的空行。我尝试了各种方法,但无法使其正常工作。字符串“##sequence-region”不是唯一的,因此在这种情况下进行键值设置将不起作用。我不确定是否可以逐行查询,并查看下一行何时有新的重叠群编号,然后在其上方插入两行与匹配的 #Fasta 定义行和 ##sequence-region线?
感谢大家提供的任何帮助!