问题标签 [gff]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
198 浏览

bash - 使用 sed 从一行中一次提取两段文本

好的,我在 SO 上找到了类似的答案,但是我的 sed / grep / awk fu 太差了,以至于我无法完全适应我的任务。也就是说,给定这个文件“test.gff”:

我想提取两个值1)“ID =”右侧的文本到分号和2)“product =”右侧的文本到行尾或分号(因为您可以看到其中一个这些线条也有一个“gene=”值。

所以我想要这样的东西:

据我所知:

谢谢!

0 投票
1 回答
530 浏览

python - 重命名 gffile 中的名称 ID。

我有一个 gff 文件,如下所示:

我希望重命名 ID 名称,从 0001 开始,这样对于上述基因,条目是:

上面的例子只是一个基因条目,但我希望重命名所有基因,以及它们对应的 mRNA/外显子,从 ID = dd_0001 开始连续。任何有关如何执行此操作的提示将不胜感激。

0 投票
1 回答
101 浏览

sed - 用另一个文件中相同行号的相同行替换一个文件中的多行?

我有一个修改过的 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线?

感谢大家提供的任何帮助!

0 投票
0 回答
18 浏览

string - 如何替换文件A和文件B的第一列中存在的字符串并替换为文件B第二列中的相应字符串?

文件 A(制表符分隔,10 列):

chrI DBVPG6765 基因 7249 9030。- 。ID=01G00030;名称= YAL067W
chrI DBVPG6765 mRNA 7249 9030。- 。ID=01T00030.1;父母=01G00030
chrI DBVPG6765 外显子 7249 9030。- 。ID=01T00030.1.exon.1;父级=01T00030.1
chrI DBVPG6765 CDS 7249 9030。- 。ID=01T00030.1.CDS.1;父母=01T00030.1
chrI DBVPG6765 基因 11586 11945 。- 。ID=01G00040;名称= YAL065C
chrI DBVPG6765 mRNA 11586 11945。- 。ID=01T00040.1;父母=01G00040
chrI DBVPG6765 外显子 11586 11945。- 。ID=01T00040.1.exon.1;父级=01T00040.1
chrI DBVPG6765 CDS 11586 11945。- 。ID=01T00040.1.CDS.1;父级=01T00040.1

文件 B(制表符分隔,2 列):

YAL001C TFC3
YAL002W VPS8
YAL003W EFB1
YAL005C SSA1
YAL007C ERP2
YAL008W FUN14
YAL009W SPO7 YAL010C
MDM10 YAL011W
SWC3
YAL012W CYS3
YAL013W DEP1
...
YAL067W SEO1
YAL065W
YAL066C
... YAL066 YAL

我应该得到的格式是:

chrI DBVPG6765 基因 7249 9030。- 。ID=01G00030;名称= SEO1
chrI DBVPG6765 mRNA 7249 9030。- 。ID=01T00030.1;父母=01G00030
chrI DBVPG6765 外显子 7249 9030。- 。ID=01T00030.1.exon.1;父级=01T00030.1
chrI DBVPG6765 CDS 7249 9030。- 。ID=01T00030.1.CDS.1;父母=01T00030.1
chrI DBVPG6765 基因 11586 11945 。- 。ID=01G00040;名称= YAL065C
chrI DBVPG6765 mRNA 11586 11945。- 。ID=01T00040.1;父母=01G00040
chrI DBVPG6765 外显子 11586 11945。- 。ID=01T00040.1.exon.1;父级=01T00040.1
chrI DBVPG6765 CDS 11586 11945。- 。ID=01T00040.1.CDS.1;父级=01T00040.1


ID=DBVPG6765_01G00030;Name=YAL067C 是文件 A 中的第 10 列。脚本/单行程序应在文件 B 中查找 YAL067W,并将 YALO67W 替换为文件 B 的相应第二列(本例中为 SEO1)。

由于文件 B 中的基因顺序与文件 A 中的行号不同,因此 awk 'NR==FNR ... 不起作用。

有人对我应该如何进行此操作有一些建议或小脚本吗?我应该提到我对脚本/编程很陌生。

0 投票
1 回答
61 浏览

awk - 使用 awk 提取特定模式

我解释我的问题。

我有一个 gff 格式的大文件,例如:

依此类推......我想找到一个命令来提取他们的 FIRST CDS 以密码子阶段 0(第 7 列)开头的一侧转录本,以及他们的 FIRST CDS 以 1 或 a 开头的那些2. 然后,我想获取 3 个文件,这里是:

第一个文件:记录的第一个 CDS 从阶段 0 开始。

第二个是从第一阶段开始的成绩单的第一个 CDS:

第三个是从第 2 阶段开始的成绩单的第一个 CDS:

如您所见,由于示例 transcript_id "g60.t1 的转录本从第 2 阶段开始具有其第一个 CDS,因此必须将属于该转录本的所有后续 CDS 转移到同一个文件中。

感谢您的帮助,我希望有人能找到解决方案:)?我认为 awk 可以提供帮助吗?

0 投票
1 回答
63 浏览

parsing - 使用多个参数解析 - awk

我无法解析 GFF 文件。我使用下面的代码作为一个衬里。我正在获得基于第 1 列($1)过滤的输出,但是当我添加大于 5000 但小于 150000 的附加过滤器时,awk 不会适当地过滤掉我的文件。我误解了一些东西,我不太确定它是什么。

输入

我得到错误的输出

预期产出

0 投票
0 回答
606 浏览

java - 将字符串数组转换为 JSONArray

我正在尝试解析 GFF 文件并搜索特定的基因 ID,如果找到,则将该基因 ID 的整行转换为 JSONArray 的元素。

但是,当我执行上述操作时,数组中不存在列标题:

输出如下所示:

而我希望它看起来像这样,保留标题:

我需要它是这样的,这样我就可以根据这些在 javafx 中填充一个表,方法是:

任何帮助将不胜感激,谢谢。

0 投票
1 回答
45 浏览

bioinformatics - 如何在 FASTA 文件中找到基因的第一个碱基数?

为了手动修改我拥有的 .gff 文件,我需要在我的动物的 FASTA 格式基因组中找到我的基因的起始位置(即它在序列中的#碱基是什么?)。我有这个基因的序列。

我如何尽可能轻松地做到这一点(这不是一种在互联网上很容易获得基因组的动物)?

我所拥有的:基因组,FASTA 格式;一个 GFF 文件,其中包含该生物体基因组的注释(需要大量更新);这个基因的序列。

谢谢!

0 投票
0 回答
37 浏览

fasta - 在验证 GFF 和 FASTA 等生物文件格式时,验证器应该检查什么样的错误

我正在做一个项目来创建一个库(在 Java 中),它可以验证各种生物文件格式,如 GFF、FASTA、OBO 等。

但由于我不是来自这个领域,所以我对验证程序应该执行什么样的验证有点困惑。

有一些在线工具,如基因组工具,可以验证 GFF 文件格式,所以任何人都可以帮助我了解应该对这些文件应用什么样的验证规则。

0 投票
1 回答
381 浏览

file-conversion - 如何将 Ensembl .gff3 转换为 12 列 .bed

我正在尝试使用来自 RSeQC 的geneBody_coverage.py 脚本,它需要一个制表符分隔的 12 列 .bed 文件作为参考。为此,我使用 gff2bed 脚本将 .gff3 文件从 Ensembl 转换为 .bed 格式。当我运行它时,我只会收到错误消息,通知我文件不是 12 列格式。一位同事告诉我,他还尝试在 Ensembl 文件上使用 gff2bed,但格式对他来说也不正确。有什么解决办法吗?

我用不同的 .gff3 Ensembl 文件尝试了同样的事情,结果相同。我也尝试过 gtf2bed ,结果相同。