美文网首页
GenBase 序列提交

GenBase 序列提交

作者: 徒唤奈何_c5f0 | 来源:发表于2025-04-23 20:26 被阅读0次

一 个人信息填写

genbase网址 ->https://ngdc.cncb.ac.cn/genbase/submit/

整体步骤
前面三部分自行填写即可,很简单。

二 序列信息填写

fasta序列格式要求

把fasta格式整理成如上格式,先做了一个序列名和物种的对应表,把gb文件按照物种名改名,然后修改物种信息。需要注意的是,一开始让gpt写脚本改物种,它把所有的序列改成了一个物种,后面检查才发现。

#
#修改前:
#>Terniopsis_yongtaiensis3 Terniopsis yongtaiensis voucher P56 plastid, complete genome
#修改后:
#>Seq1 [organism=Terniopsis yongtaiensis] [isolate=voucher_P58] [Terniopsis_yongtaiensis4]
#
--------------------------------------------------------------------------------------------------
import re

input_file = "53fasta.fasta"         # 输入文件
output_file = "53.edited.fasta"      # 输出文件

with open(input_file, "r") as infile, open(output_file, "w") as outfile:
    seq_count = 1
    for line in infile:
        if line.startswith(">"):
            original_name = line[1:].strip().split()[0]  # 提取原始ID(如 lcl|xxx)

            # 提取 voucher 编号
            match = re.search(r"voucher\s+([A-Za-z0-9_]+)", line)
            isolate = f"voucher_{match.group(1)}" if match else "voucher_UNKNOWN"

            # 提取物种名(匹配两个单词,并去除末尾数字)
            species_match = re.search(r"([A-Z][a-z]+_[a-z]+)(\d*)", line)
            organism = species_match.group(1).replace("_", " ") if species_match else "Unknown_species"

            # 构造新的 header
            new_header = f">Seq{seq_count} [organism={organism}] [isolate={isolate}] [{original_name}]\n"
            outfile.write(new_header)
            seq_count += 1
        else:
            outfile.write(line)


三 元信息填写

前面两步没什么好说的,保持一致就好


表格内容

表格内容填写前三列和第13列就行,序列类型和前面保持一致。

四 上传注释信息

特征填写

本来我想传gff的,后来试了试报错不显示,于是改成tbl上传了。tbl可以用CPSTOOLS的功能生成。

cpstools convert -d gb文件夹 -m tbl
#然后按照seq1~n的方式重新命名各tbl,需要用之前步骤的名字-seq对照表,如下。
#找gbt帮忙写脚本改名,改完以后cat到一起上传即可。
head name_mapping.txt -n 1
Seq1    genus_species 
-------------------------------
import os

# 配置文件路径
mapping_file = "name_mapping.txt"  # 替换为你的映射文件路径
tbl_folder = "tbl"     # 包含原始tbl文件的文件夹
output_folder = "modified_tbls"  # 输出修改后的tbl文件

# 创建输出文件夹(如果不存在)
os.makedirs(output_folder, exist_ok=True)

# 读取映射信息
mapping = {}
with open(mapping_file, "r") as f:
    for line in f:
        if line.strip():
            seq_id, filename_base = line.strip().split("\t")
            mapping[filename_base] = seq_id

# 遍历映射字典,修改tbl文件第一行
for filename_base, seq_id in mapping.items():
    input_path = os.path.join(tbl_folder, f"{filename_base}.tbl")
    output_path = os.path.join(output_folder, f"{filename_base}.tbl")

    if not os.path.exists(input_path):
        print(f"❌ 找不到文件: {input_path}")
        continue

    with open(input_path, "r") as infile:
        lines = infile.readlines()

    # 替换第一行
    if lines and lines[0].startswith(">Feature"):
        lines[0] = f">Feature {seq_id}\n"
    else:
        print(f"⚠️ 文件 {input_path} 第一行不是预期格式,跳过。")
        continue

    # 写入输出文件
    with open(output_path, "w") as outfile:
        outfile.writelines(lines)

    print(f"✅ 已处理文件: {input_path} -> {output_path}")

最后一步不报错的话,上传就搞定了。过程也不难不复杂,写在这给自己长长记性。

上传后报错:
1.序列步骤,如果拓扑结构为环状,应为完整的叶绿体序列,如果是不完整应为线性的。请针对报错Circular topology without complete flag核对。
2.isolate等信息需要填在在元信息步骤的isolate列,才可以正常显示。
修改:
1 在fasta描述行最后加入cloroplast,complete genome
2 在元信息中填写isolate列,本来选填的懒得填,最后还是要写

相关文章

  • 07-28

    表单序列化提交 kata 页面2

  • 填表感悟

    今天把员工职业序列表终于填完了。在填写管理序列还是业务序列的时候,纠结了很久最后还是选择了管理序列,结果提交到领导...

  • 上传序列数据到SRA

    笔记内容:SRA是什么,点解要向它上传序列数据上传之前的准备如何上传 SRA是什么,点解要向它提交序列数据 SRA...

  • Jquery表单序列化后添加数据

    serialize()、serializeArray()方法都是jquery用户序列化表单的,用于ajax提交的d...

  • 如何向NCBI提交序列(在线提交法)

    转载自

  • 表单序列化

    表单通过 Ajax 提交一共两种方式: form 表单的 method 一次性提交 表单序列化,使用 get po...

  • Java对象转Map的序列化

    由于后台要求提交表单形式的参数,之前使用 Json 格式是可以序列化对象,但是对象序列化成键值对貌似没找到比较合适...

  • Git高级命令

    ① git rebase :在新位置重新提交,改变 commit 序列的基础点。把 merge 换成 rebas...

  • git命令集合

    git status 状态查看,文件增删改等状态 git add . 增加修改到提交序列中 git commit ...

  • 编程 || 事务隔离级别

    这个我们老背了。 四个级别:读未提交;读已提交;可重复读;序列化。 读未提交是指一个事务里的两次查询,可以查到另一...

网友评论

      本文标题:GenBase 序列提交

      本文链接:https://www.haomeiwen.com/subject/ynjgbjtx.html