从文件gencode.v43.chr_patch_hapl_scaff.annotation.gff3中提取type为gene的记录,将 chrid 、 start 、 end 、gene_id 、 gene_type 、 gene_name (不包括"gene_id ="、"gene_type ="或"gene_name ="部分)和利用start和end计算得到的各基因长度length,整理为一个名为gdf的DataFrame(字段作为列名); 将gdf以Tab分隔的形式存储到文件gene.txt中(文件中不保留行标签)。
时间: 2023-11-27 13:54:48 浏览: 206
Demo_Simulink_GenCode.rar
以下是Python代码实现,需要使用pandas库和正则表达式:
```python
import pandas as pd
import re
# 读取gff3文件
df = pd.read_csv('gencode.v43.chr_patch_hapl_scaff.annotation.gff3', sep='\t', comment='#', header=None)
# 提取type为gene的记录
df_genes = df[df[2] == 'gene']
# 提取gene_id、gene_type、gene_name并计算length
gene_id = df_genes[8].str.extract(r'gene_id=([^;]*)')
gene_type = df_genes[8].str.extract(r'gene_type=([^;]*)')
gene_name = df_genes[8].str.extract(r'gene_name=([^;]*)')
length = df_genes[4] - df_genes[3] + 1
# 整合所有字段
gdf = pd.concat([df_genes[0], df_genes[3], df_genes[4], gene_id, gene_type, gene_name, length], axis=1)
gdf.columns = ['chrid', 'start', 'end', 'gene_id', 'gene_type', 'gene_name', 'length']
# 保存到文件
gdf.to_csv('gene.txt', sep='\t', index=False)
```
执行以上代码后,会生成一个名为gene.txt的文件,其中包含了所有type为gene的记录的信息。
阅读全文