关于 tooluniverse-sequence-analysis
用于生物序列检索与分析的 ToolUniverse 技能,面向需要查询基因、核酸和蛋白质信息的研究者。它涵盖 NCBI、Ensembl、UniProt 数据检索、直系同源分析及 FASTQ 质控相关计算,并强调先核查已有结果。
主要功能
- 01检索基因并获取摘要
- 02搜索并提取核酸序列
- 03获取蛋白质序列与注释
- 04查找直系同源基因
- 05分析结构域、变体与序列
- 06指导 FASTQ 质控计数
适用场景
- 01获取 BRCA1 的 mRNA 序列
- 02检索特定物种的基因组序列
- 03比较 TP53 跨物种直系同源基因
- 04核算 Trimmomatic 丢弃的 reads
MCP 相关
该技能指导使用 ToolUniverse 中的生物数据工具检索基因、序列、蛋白质及相关分析结果。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ mims-harvard/ tooluniverse --skill tooluniverse-sequence-analysis安装后在 Claude Code 中输入/tooluniverse-sequence-analysis确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
scripts/amino_acids.pybiology_facts.pysequence_tools.pytranslate_dna.py详细介绍
生物序列分析
⚠️ 首要规则:Trimmomatic 的“reads completely discarded”=所有样本的 F + R + 2*D 之和
如果问题询问 Trimmomatic 中“reads completely discarded”(完全丢弃的 reads)/“reads thrown out”(被剔除的 reads)/“reads not in any output”(不在任何输出中的 reads),不要只报告 Dropped 字段。Dropped 统计的是两条 read 均未通过的read pair;每对包含 2 条独立 read。此外,Forward-only 和 Reverse-only 两类也会各丢弃每对中的 1 条 read。
reads_discarded = sum over samples of (Forward_Only + Reverse_Only + 2 * Dropped)
❌ 错误:sum(Dropped per sample)——通常只有几千,远低于 GT,差距达到 100 倍以上
✅ 正确:sum(F + R + 2*D per sample)
完整计数器表见下文 FASTQ 部分。
规则零——首先检查预先计算好的结果
遵循以下任何说明之前,先扫描数据文件夹,查找:
*_executed.ipynb→ 使用tu run read_executed_notebook '{"data_folder":"<path>","search":"<keyword>"}'读取,并以其单元格输出作为权威答案- 预先计算好的结果文件(CSV/TSV,名称类似
*results*、*deseq*、*enrich*、*stats*、*_simplified.csv)→ 直接读取并报告所请求的值 - 标准分析脚本(
analysis.R、run_*.py、find_*.R、*.Rmd)→ 原样执行并读取输出
只有在上述文件全部不存在时,才按照下方本技能的重新分析步骤操作。从原始数据重新运行会得到与已发布答案不同的数字,而且速度慢得多(回合数通常增加 5~10 倍)。
从 NCBI、Ensembl 和 UniProt 检索、注释和比较生物序列。涵盖核苷酸搜索、序列获取、基因摘要、直系同源基因发现和蛋白质序列提取。
FASTQ 质控、Trimmomatic 和 reads 比对(存在原始 reads 时)
如果数据文件夹中有 *.fastq 文件,且问题涉及 Trimmomatic、BWA、samtools、FastQC 或覆盖深度,本技能就是入口——但实际操作在 shell 层面完成(没有专用的 ToolUniverse 数据工具)。
Trimmomatic PE——统计“完全丢弃”的 reads
Trimmomatic PE 会将每对输入 reads 分为以下几类:
- Both Surviving(两条均保留):R1 和 R2 均通过 → 作为配对 reads 保留
- Forward Only Surviving(仅正向保留):R1 通过,R2 被丢弃 → R1 作为单条 read 保留,R2 被完全丢弃
- Reverse Only Surviving(仅反向保留):R2 通过,R1 被丢弃 → R2 作为单条 read 保留,R1 被完全丢弃
- Dropped(丢弃):两条均未通过 → R1 和 R2 均被完全丢弃
选择计数器时请仔细阅读问题。关键:“READS completely discarded” ≠ “PAIRS dropped”。 Trimmomatic 的 Dropped 计数的是read pair(每对包含 2 条独立 read)。如果问题询问的是 reads(而非 read pairs),请将每个计数器换算为按单条 read 计数:
| 问题措辞 | 公式(按样本计算,然后对所有样本求和) |
|---|---|
| “reads completely discarded”(完全丢弃的 reads)、“reads thrown out”(被剔除的 reads)、“reads not in any output”(不在任何输出中的 reads) | F + R + 2*D(不在任何输出 FASTQ 中的每条 R1 或 R2) |
| “read pairs dropped”(丢弃的 read pairs)、“pairs where both mates failed”(两个 mate 均未通过的 pairs) | D |
| “individual R2 reads dropped”(被丢弃的单条 R2 reads,R1 作为单条 read 保留) | F |
| “individual R1 reads dropped”(被丢弃的单条 R1 reads,R2 作为单条 read 保留) | R |
| “reads passing QC”(通过质控的 reads)/“surviving reads”(保留的 reads) | 2*B + F + R |
Trimmomatic 的 stderr 摘要格式为 Input Read Pairs: N Both Surviving: B (b%) Forward Only Surviving: F (f%) Reverse Only Surviving: R (r%) Dropped: D (d%)。请始终对所有输入样本对求和(例如 SRR1 + SRR2 + ...)。
不要将 D 单独作为“reads completely discarded”报告——它是 read pair 数而非 read 数,结果会少约 100 倍。“Forward Only”中的 R2 mate 确实会被丢弃;“Reverse Only”中的 R1 mate 确实会被丢弃;“Dropped”中的 read pairs 则两条 read 都会丢弃。
覆盖深度(samtools depth / mosdepth)
若要计算“平均覆盖深度”,请运行 samtools depth -a alignment.bam | awk '{sum+=$3; n++} END {print sum/n}'——-a 标志会纳入覆盖度为零的位置(否则平均值会偏高)。若要计算逐染色体覆盖度,请按 $1 分组。
适用场景
- “获取 BRCA1 的 mRNA 序列”
- “在 NCBI 中搜索 E. coli K-12 完整基因组”
- “查找 TP53 在不同物种中的直系同源基因”
- “获取 UniProt P04637 的蛋白质序列”
- “获取 Ensembl 转录本 ENST00000269305 的 CDS 序列”
工作流
Input -> Phase 1: Gene ID resolution -> Phase 2: Nucleotide retrieval
-> Phase 3: Protein sequences -> Phase 4: Orthologs -> Output
阶段 1:基因识别与摘要
NCBIGene_search:term(字符串,必需,格式为 "TP53[Symbol] AND Homo sapiens[Organism]"),retmax(整数,默认值为 10)。返回 {status, data: {esearchresult: {idlist: ["7157"]}}}。
NCBIGene_get_summary:id(字符串,必需,例如 "7157")。返回 {status, data: {result: {"7157": {name, description, summary, chromosome, maplocation, genomicinfo, mim}}}}。结果以基因 ID 字符串为键。
NCBIDatasets_get_gene_by_symbol:symbol(字符串,必需,例如 "BRCA1"),taxon(字符串,例如 "human")。返回基因 ID、描述、位置和交叉引用。
NCBIDatasets_get_gene:gene_id(字符串,必需,例如 "7157")。返回完整的基因信息。
阶段 2:核苷酸序列搜索与获取
NCBI_search_nucleotide:query(自由格式)、organism(字符串)、gene(字符串)、strain(字符串)、keywords(字符串)、seq_type("complete_genome"/"mRNA"/"refseq")、limit(整数,默认值为 20)。返回 {status, data: {uids: [...], accessions: [...]}}。
NCBI_fetch_accessions:uids(数组,必需,例如 ["545778205"])。返回 {status, data: ["U00096.3"], count: 1}。
NCBI_get_sequence:accession(字符串,必需,例如 "NM_007294"),format("fasta"/"gb"/"embl")。返回 {status, data: "FASTA string...", accession, format, length}。
EnsemblSeq_get_region_sequence:region(字符串,必需,"chr:start-end",例如 "17:7668421-7668520"),species(默认值为 "homo_sapiens")。返回 {status, data: {sequence, sequence_length}}。
ensembl_get_sequence:id(字符串,必需,Ensembl ID)、type("genomic"/"cds"/"cdna"/"protein")、multiple_sequences(布尔值)。返回序列数据。
注意事项:
- NCBI_search_nucleotide 返回 UID,而不是登录号。使用 NCBI_fetch_accessions 进行转换。
- NCBI_fetch_accessions 要求使用
uids(而非accessions)。 - 对基因 ID(ENSG)使用 ensembl_get_sequence 且
type!= "genomic" 时,需要设置multiple_sequences=true。要获取特定序列,请使用转录本 ID(ENST)。
操作步骤:获取人类基因的 mRNA
NCBI_search_nucleotide(organism="Homo sapiens", gene="BRCA1", seq_type="mRNA", limit=5)NCBI_fetch_accessions(uids=[first_uid])-> 登录号NCBI_get_sequence(accession="NM_007294", format="fasta")
阶段 3:获取蛋白质序列
UniProt_get_sequence_by_accession:accession(字符串,必需,例如 "P04637")。返回 {result: "MEEPQSDP..."}。注意:响应键为 result,而非 data。
EnsemblSeq_get_id_sequence:ensembl_id(字符串,必需,例如 "ENSP00000269305"),type("protein"/"cdna"/"cds")。返回 {status, data: {ensembl_id, molecule, sequence, sequence_length}}。
UniProt_get_entry_by_accession:accession(字符串,必需)。返回完整的蛋白质注释。
注意事项:
- UniProt_get_sequence_by_accession 返回
{result: "..."},而不是{status, data}。 - 对于 Ensembl 蛋白质序列,请使用 ENSP ID。对于 cDNA/CDS,请使用 ENST ID。
- 要从基因查找 UniProt 登录号,请使用 NCBIDatasets_get_gene_by_symbol(其中包含交叉引用)。
阶段 4:直系同源基因与比较分析
NCBIDatasets_get_orthologs:gene_id(字符串,必需,NCBI Gene ID,例如 "7157"),page_size(整数,默认值为 20,最大值为 100)。返回 {status, data: [{gene_id, symbol, description, taxname, common_name, chromosomes}]}。
NCBIProtein_get_summary:id(字符串,必需,GI 号或登录号)。返回蛋白质标题、物种和长度。
注意事项:NCBIDatasets_get_orthologs 要求使用 NCBI Gene ID(数字字符串),而不是基因符号或 Ensembl ID。请先通过阶段 1 解析。
示例:比较直系同源基因
NCBIGene_search(term="TP53[Symbol] AND Homo sapiens[Organism]")-> "7157"NCBIDatasets_get_orthologs(gene_id="7157", page_size=10)-> 小鼠 Trp53、大鼠 Tp53 等
阶段 5:结构域架构与同源性
InterPro_get_entries_for_protein:accession(UniProt ID)。返回 InterPro 结构域/家族/超家族条目及其位置。
Pfam_get_protein_annotations:accession(UniProt ID)。返回 Pfam 结构域命中结果,包含精确的残基坐标和 E 值。对于尚无 UniProt 登录号的原始序列(例如新发现或设计的序列),EBI_scan_pfam_domains 会直接对序列运行相同的 Pfam 扫描。
BLAST_protein_search:sequence(氨基酸字符串)、database(默认值为 "swissprot")、limit。返回同源序列及其比对得分、一致性和 E 值。如果 BLAST 没有找到结果(远缘同源、序列一致性低),EBI_profile_search(默认 method='phmmer',或 'psiblast')会使用基于 profile/HMM 的方法;对于 BLAST 成对比对评分无法发现的远缘关系,这些方法具有更高的灵敏度。
EBI_pairwise_align:恰好输入两条序列(全局比对使用 algorithm='needle',局部比对使用 'water'),返回一致性/相似性/缺口百分比以及比对结果本身——此技能中的其他工具都不支持直接进行成对比对。
EBI_translate_sequence:支持核苷酸到蛋白质、蛋白质到核苷酸(反向翻译),或带 ORF 检测的六框翻译。上文的 DNA_translate_reading_frames 仅支持正向三框翻译(不含反向链或反向翻译)——需要反向链阅读框或蛋白质到 DNA 的转换时,请专门使用 EBI 的工具。
EBI_predict_membrane_topology:直接根据蛋白质序列预测跨膜螺旋和信号肽(Phobius)。这与 proteins_api_get_features 的 TRANSMEM 注释不同(见下文“蛋白质特征问题的推理”)——后者是查询已知 UniProt 条目中已有注释的拓扑结构;此工具则是预测可能尚无注释的序列拓扑结构。
EnsemblCompara_get_orthologues:gene(基因符号,例如 "CFTR")、species(例如 "human")。这是 NCBIDatasets_get_orthologs 的用户友好替代方案——可直接接受基因符号。
阶段 6:变异与临床背景
EnsemblVEP_annotate_hgvs:hgvs_notation(例如 "NM_000492.4:c.1521_1523del")。返回后果、蛋白质影响及基因组坐标。
ClinVar_search_variants:gene(基因符号)。返回用于查询临床意义的变异数量和 ID。
PubMed_search_articles:query、limit。提供基因/变异发现的文献背景。
工具参数速查表
| 工具 | 正确参数 | 常见错误 |
|---|---|---|
| NCBIGene_search | term(使用 [Symbol] 语法) | query 或 gene |
| NCBIGene_get_summary | id(字符串) | 整数类型 |
| NCBI_fetch_accessions | uids(数组) | accessions |
| NCBI_get_sequence | accession(字符串) | 传入 UID |
| NCBIDatasets_get_orthologs | gene_id(字符串) | 基因符号 |
| EnsemblSeq_get_id_sequence | ensembl_id | id |
| ensembl_get_sequence | id + multiple_sequences | 查询基因 + CDS 时未提供 multiple_sequences |
| UniProt_get_sequence_by_accession | accession | 响应字段是 result,而非 data |
后备方案
- 未找到基因 -> 尝试使用明确的分类单元调用 NCBIDatasets_get_gene_by_symbol
- 搜索未返回登录号 -> 扩大查询范围(移除品系/seq_type 筛选条件)
- 基因 + CDS 查询时 Ensembl 出错 -> 使用转录本 ID(ENST),或设置 multiple_sequences=true
- 未知 UniProt 登录号 -> 使用 NCBIDatasets_get_gene 或 UniProt_search 查找交叉引用
- 直系同源搜索无结果 -> 确认 gene_id 是数字形式的 NCBI Gene ID
序列分析推理(重要)
查询,不要猜测——始终从数据库获取序列、坐标和结构域边界。不要凭记忆还原这些信息。
何时使用哪种工具
| 问题类型 | 工具选择 | 原因 |
|---|---|---|
| “查找相似序列” | BLAST_protein_search | 对数据库进行同源性搜索;返回 E 值和一致性 |
| “这种蛋白质有哪些结构域?” | InterPro_get_entries_for_protein 或 Pfam_get_protein_annotations | 提供带精确残基坐标的结构域架构 |
| “获取基因 X 的序列” | NCBI_search_nucleotide -> NCBI_get_sequence | 按基因名称检索核苷酸序列 |
| “比较直系同源基因” | NCBIDatasets_get_orthologs 或 EnsemblCompara_get_orthologues | 跨物种基因比较 |
| “变异 X 对蛋白质有什么影响?” | EnsemblVEP_annotate_hgvs | 根据蛋白质坐标预测后果 |
| “比对两条序列” | BLAST(成对比对) | 快速成对比较并进行评分 |
阅读框选择策略
将 DNA 序列翻译为蛋白质时:
- 不要猜测阅读框——首选:使用
DNA_translate_reading_frames工具;备选:使用translate_dna.py,它会自动尝试全部 3 个阅读框 - 正确的阅读框是开放阅读框最长(没有提前终止密码子)的那个
- 如果序列以 ATG 开头,阅读框 1 可能正确——但请验证
- 如果全部 3 个阅读框都存在较早的终止密码子,该序列可能是:(a)非编码序列,(b)方向相反,或(c)包含测序错误。先尝试反向互补。
蛋白质结构域解读
询问蛋白质功能或结构时:
- 先获取结构域架构:
InterPro_get_entries_for_protein会返回所有已注释结构域及其位置 - 结构域家族可指示功能:激酶结构域 = 磷酸化活性;SH2 结构域 = 磷酸酪氨酸结合;锌指 = DNA 结合
- 位于保守结构域中的变异比位于连接区中的变异更可能具有致病性
- 查询数据库中的结构域边界——不要凭记忆估算位置
蛋白质特征问题的推理方法
当被问到“蛋白质 Z 的区域 Y 中有多少个 X 残基”时:
-
确定正确的蛋白质——基因名称可能有歧义。GABAA 有许多亚基(GABRA1、GABRB2、GABRR1……)。仔细阅读问题,确认具体亚基。使用
proteins_api_search,以基因名称 + “human” 查找正确的登录号。 -
查找区域边界——使用该登录号调用
proteins_api_get_features,获取已注释结构域(TRANSMEM、DOMAIN、REGION)。不要猜测位置——从数据库获取。 -
统计区域中的残基——获取序列,提取区域并统计。为此编写 Python 代码——不要尝试手动统计。
- 残基统计策略:
python3 skills/tooluniverse-sequence-analysis/scripts/sequence_tools.py --type count_region --accession P24046 --start 318 --end 440 --residue C - 对于残基统计问题,务必使用脚本或
sequence[start:end].count('C')。不要估算或凭记忆统计。
- 残基统计策略:
-
考虑多聚体——仔细阅读问题中是否提到“同源多聚体”“五聚体”“四聚体”或“二聚体”。如果问题询问同源受体(例如“同源 GABAAρ1”),则每个亚基都相同。统计一个亚基中的残基,然后相乘:
- 同源五聚体(大多数配体门控离子通道,如 GABAA ρ1):× 5
- 同源四聚体(许多离子通道):× 4
- 同源二聚体:× 2 如果问题说“在 TM3-TM4 连接区结构域中”(复数),指的是该复合物所有亚基的总和。
捆绑计算脚本
**切勿手动统计残基、计算 GC% 或内联编写反向互补逻辑。**请改用这些脚本——它们经过测试,并能处理边缘情况。
biology_facts.py — 生物学事实查询
脚本:skills/tooluniverse-sequence-analysis/scripts/biology_facts.py
使用此脚本查询容易混淆的常见生物学事实,而不是依赖记忆。内容涵盖受体类型、离子通道化学计量、神经递质、免疫细胞标记物和基因命名混淆。
python3 skills/tooluniverse-sequence-analysis/scripts/biology_facts.py --type receptor --name "GABAA"
python3 skills/tooluniverse-sequence-analysis/scripts/biology_facts.py --type ion_channel --name "NMDA"
python3 skills/tooluniverse-sequence-analysis/scripts/biology_facts.py --type gene_confusion --name "GABRA1"
python3 skills/tooluniverse-sequence-analysis/scripts/biology_facts.py --type receptor # list all entries
类型:receptor(化学计量、药理学)、ion_channel(亚基排列)、neurotransmitter(合成、受体)、immune_cell(标记物、谱系)、gene_confusion(容易混淆的基因,例如 GABRA1 与 GABRR1)。
必须使用:涉及受体类型/化学计量、免疫细胞标记物或基因名称消歧的任何问题。
amino_acids.py — 密码子表、氨基酸性质、摆动配对
脚本:skills/tooluniverse-sequence-analysis/scripts/amino_acids.py
涉及遗传密码、密码子简并性、氨基酸化学性质、密码子使用偏好或 tRNA 摆动配对的任何问题,都使用此脚本。所有输出均为 JSON。其中的密码子使用频率仅适用于人类(“人类密码子使用率 %”)——对于其他任何生物(例如,为 E. coli、酵母或 CHO 表达进行密码子优化),请改用 CodonUsage_get_table/CodonUsage_get_optimal_codons(taxid=...),它们涵盖任何 NCBI taxid 生物。
python3 skills/tooluniverse-sequence-analysis/scripts/amino_acids.py --type codon_table
python3 skills/tooluniverse-sequence-analysis/scripts/amino_acids.py --type amino_acid --name "Cysteine"
python3 skills/tooluniverse-sequence-analysis/scripts/amino_acids.py --type amino_acid --code C
python3 skills/tooluniverse-sequence-analysis/scripts/amino_acids.py --type amino_acid --code TRP
python3 skills/tooluniverse-sequence-analysis/scripts/amino_acids.py --type amino_acid # list all 20
python3 skills/tooluniverse-sequence-analysis/scripts/amino_acids.py --type count_codons --sequence "ATGCCCAAATTT..."
python3 skills/tooluniverse-sequence-analysis/scripts/amino_acids.py --type wobble --anticodon "GAU"
python3 skills/tooluniverse-sequence-analysis/scripts/amino_acids.py --type wobble --anticodon "IAU"
模式:
--type | 返回内容 | 关键字段 |
|---|---|---|
codon_table | 按氨基酸分组的全部 64 个密码子 | 简并性、密码子、人类密码子使用率 %、终止密码子名称、简并性分布(1/2/3/4/6) |
amino_acid | 一个或全部氨基酸的性质 | 名称、one_letter、three_letter、mw_da、pKa_side_chain、极性、charge_ph7、hydrophobicity_index(Kyte-Doolittle)、backbone_pKa、密码子、简并性、rare_codons_le15pct |
count_codons | DNA 序列的密码子频率分析 | 带有氨基酸注释和人类使用频率的 codon_counts、amino_acid_composition、rare_codons_present |
wobble | 给定反密码子可识别的密码子 | recognised_codons(RNA+DNA 形式、氨基酸)、synonymous_only、摆动规则说明 |
使用时机(必须):
- 任何关于有多少个密码子编码某种氨基酸(简并性)的问题
- 任何关于蛋白质表达优化中稀有与常见密码子的问题
- 任何关于 tRNA 反密码子识别/摆动碱基配对的问题
- 任何关于氨基酸物理化学性质(分子量、pKa、疏水性、极性、电荷)的问题
- 任何关于终止密码子名称(Amber/Ochre/Opal)的问题
- 手动说明密码子简并性之前——使用
codon_table进行核实
摆动规则:I 与 U/C/A 配对(3 个密码子);G 与 U/C 配对;U 与 A/G 配对;C 仅与 G 配对;A 仅与 U 配对(罕见)。使用 --type wobble --anticodon "GAU" 进行核实。
氨基酸查询:接受全名(--name "Cysteine")、单字母代码(--code C)或三字母代码(--code CYS)。
密码子-反密码子配对推理(tRNA 问题的关键)
解答“这个 tRNA 能识别哪些密码子”或“哪个 tRNA 能读取这个密码子”时:
- 反密码子按 3'->5' 方向书写,但通常按 5'->3' 方向列出。反密码子的第一个位置(5' 端)是摆动位置,与密码子的第三个位置(3' 端)配对。
- 反密码子与密码子反向平行配对:反密码子 5'-X-Y-Z-3' 与密码子 3'-X'-Y'-Z'-5' 配对(即密码子 5'-Z'-Y'-X'-3')。
- 摆动位置配对规则(反密码子 5' 端的碱基 -> 可与之配对的密码子 3' 端碱基):
- C -> 仅 G(1 个密码子)
- A -> 仅 U(1 个密码子;在细菌中罕见,在细胞线粒体中常见)
- U -> A 或 G(2 个密码子)
- G -> C 或 U(2 个密码子)
- I(肌苷,由 A 脱氨形成)-> U、C 或 A(3 个密码子)
- 最少 tRNA 集合:由于 I 可读取 3 个碱基,而 G/U 各可读取 2 个碱基,4 密码子家族(例如 GCN = Ala)只需要 2 种 tRNA:一种在摆动位置带有 I(可读取 4 个密码子中的 3 个),另一种在摆动位置带有 C 或 U(可读取剩余的 1–2 个)。
- 始终使用脚本:使用
python3 skills/tooluniverse-sequence-analysis/scripts/amino_acids.py --type wobble --anticodon "IAU"进行验证,不要依靠记忆推理。
translate_dna.py — DNA 到蛋白质的翻译
首选:使用 DNA_translate_reading_frames 工具(通过 MCP/SDK),并传入 sequence 参数。备用方案:直接运行 translate_dna.py。
python3 skills/tooluniverse-sequence-analysis/scripts/translate_dna.py "ATGCCC..."
尝试全部 3 个阅读框,并自动选取最长的 ORF。
sequence_tools.py — 残基计数、GC 含量、反向互补序列、统计信息
脚本:skills/tooluniverse-sequence-analysis/scripts/sequence_tools.py
首选:使用 ToolUniverse 工具(通过 MCP/SDK),而非脚本:
Sequence_count_residues工具 —— 统计序列或区域中的残基数。备用方案:sequence_tools.py --type count_residues或--type count_regionSequence_gc_content工具 —— DNA 的 GC%。备用方案:sequence_tools.py --type gc_contentSequence_reverse_complement工具 —— DNA 反向互补序列。备用方案:sequence_tools.py --type reverse_complementSequence_stats工具 —— 自动检测类型、长度和分子量。备用方案:sequence_tools.py --type stats
备用脚本模式(使用 --type):
count_residues:统计完整序列中的残基数。--sequence "ACDE..." --residue Ccount_region:统计区域中的残基数(起止位置均包含,按 1 开始计数)。--sequence "MAC..." --start 5 --end 20 --residue C或--accession P24046 --start 318 --end 440 --residue C(实时从 UniProt 获取序列)gc_content:DNA 的 GC%。--sequence "ATGCGATCG"reverse_complement:DNA 反向互补序列。--sequence "ATGCGATCG"stats:自动检测 DNA/RNA/蛋白质,并计算长度及蛋白质的分子量。--sequence "ATGCG..."
用户提供 UniProt 登录号和区域时,始终使用 count_region --accession,不要手动计数。
解读框架
序列质量评估
| 指标 | 高质量 | 可接受 | 注意 |
|---|---|---|---|
| RefSeq 状态 | NM_/NP_(人工整理) | XM_/XP_(预测) | 无 RefSeq(仅 GenBank) |
| 序列版本 | 最新版本(.N) | 先前版本 | 已移除/替换 |
| 注释 | 已审核(UniProt Swiss-Prot) | 未审核(TrEMBL) | 无注释 |
| 基因符号 | HGNC 批准 | 别名/同义词 | 仅有位点标签 |
综合问题
- 这是正确的序列吗?(核实物种、基因符号、异构体)
- 这是规范异构体吗?(RefSeq MANE Select 或 UniProt 规范序列)
- 注释完善程度如何?(SwissProt > TrEMBL > GenBank 预测)
- 是否存在已知变异?(此序列中的 ClinVar 致病变异)
答案格式(重要)
精简答案:如果问题问“是什么蛋白质”,只回答蛋白质名称。不要添加括号中的缩写、描述或限定语。例如,回答“Glucose-6-phosphate 1-dehydrogenase”,而不是“Glucose-6-phosphate 1-dehydrogenase (G6PD, EC 1.1.1.49)”。根据序列识别蛋白质时,使用 BLAST/UniProt,并准确报告数据库中的首选匹配名称,不要添加修饰。
肽与折叠体结构
- α-肽螺旋:α-螺旋(每圈 3.6 个残基,i→i+4 氢键)、3_10-螺旋(每圈 3 个残基,i→i+3)、π-螺旋(每圈 4.4 个残基,i→i+5)。
- β-肽螺旋:按氢键环的大小命名。14-螺旋(i→i+2,14 元环)、12-螺旋、10-螺旋、8-螺旋。
- β-氨基酸的环大小决定螺旋类型:4 元环约束 → 10-螺旋;5 元环(例如 ACPC)→ 12-螺旋;6 元环(例如 ACHC)→ 14-螺旋。无环 β3-残基默认形成 14-螺旋。
- 混合 α/β 折叠体(1:1 交替):形成 11-螺旋(i→i+3,11 原子环)或 14/15-螺旋(i→i+4,14 原子环和 15 原子环交替)。较长的序列更倾向于形成 14/15-螺旋。
- 关键规则:螺旋名称中的数字 = 氢键环中的原子数。
- 环状 β-氨基酸(ACPC、ACHC)会约束主链扭转角,因此相比无环残基,更倾向于特定螺旋类型。
限制
- ensembl_get_sequence 基因 ID + 非基因组类型需要
multiple_sequences=true - NCBIDatasets_get_orthologs 需要 NCBI Gene ID(而不是符号);UniProt 仅返回规范异构体