451 lines
20 KiB
HTML
Executable File
451 lines
20 KiB
HTML
Executable File
<!doctype html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<title>bbav5 分析路线流程图</title>
|
||
<style>
|
||
:root {
|
||
--bg: #f6f7f9;
|
||
--ink: #1f2933;
|
||
--muted: #657282;
|
||
--line: #c8d1dc;
|
||
--panel: #ffffff;
|
||
--data: #e8f3ff;
|
||
--core: #eaf7ef;
|
||
--tree: #fff4df;
|
||
--plot: #f0ecff;
|
||
--rna: #ffeef1;
|
||
--util: #eef1f4;
|
||
--warn: #fff8e8;
|
||
}
|
||
* { box-sizing: border-box; }
|
||
body {
|
||
margin: 0;
|
||
background: var(--bg);
|
||
color: var(--ink);
|
||
font-family: Arial, "Microsoft YaHei", sans-serif;
|
||
line-height: 1.45;
|
||
}
|
||
header {
|
||
padding: 28px 36px 18px;
|
||
background: #17212f;
|
||
color: #fff;
|
||
}
|
||
h1 { margin: 0 0 8px; font-size: 26px; letter-spacing: 0; }
|
||
header p { margin: 0; color: #d5dde7; font-size: 14px; }
|
||
main { max-width: 1320px; margin: 0 auto; padding: 24px 28px 42px; }
|
||
.legend, .route {
|
||
background: var(--panel);
|
||
border: 1px solid #dfe5ec;
|
||
border-radius: 8px;
|
||
padding: 18px;
|
||
margin-bottom: 18px;
|
||
box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
|
||
}
|
||
h2 {
|
||
margin: 0 0 12px;
|
||
font-size: 18px;
|
||
border-bottom: 1px solid #e5eaf0;
|
||
padding-bottom: 10px;
|
||
}
|
||
.note {
|
||
margin: 8px 0 0;
|
||
color: var(--muted);
|
||
font-size: 13px;
|
||
}
|
||
.tags { display: flex; flex-wrap: wrap; gap: 8px; }
|
||
.tag {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
gap: 6px;
|
||
border: 1px solid #d6dde6;
|
||
border-radius: 999px;
|
||
padding: 5px 10px;
|
||
font-size: 12px;
|
||
color: #2f3b48;
|
||
background: #fff;
|
||
}
|
||
.dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }
|
||
.flow {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
align-items: stretch;
|
||
gap: 10px;
|
||
margin-top: 10px;
|
||
}
|
||
.node {
|
||
min-width: 150px;
|
||
max-width: 210px;
|
||
border: 1px solid #cfd8e3;
|
||
border-radius: 8px;
|
||
padding: 10px 12px;
|
||
background: #fff;
|
||
position: relative;
|
||
}
|
||
.node strong {
|
||
display: block;
|
||
font-size: 14px;
|
||
margin-bottom: 4px;
|
||
}
|
||
.node span {
|
||
display: block;
|
||
color: var(--muted);
|
||
font-size: 12px;
|
||
}
|
||
.data { background: var(--data); }
|
||
.core { background: var(--core); }
|
||
.tree { background: var(--tree); }
|
||
.plot { background: var(--plot); }
|
||
.rna { background: var(--rna); }
|
||
.util { background: var(--util); }
|
||
.warn { background: var(--warn); }
|
||
.arrow {
|
||
align-self: center;
|
||
color: #6c7a89;
|
||
font-weight: 700;
|
||
font-size: 18px;
|
||
padding: 0 1px;
|
||
}
|
||
.branch {
|
||
display: grid;
|
||
grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
|
||
gap: 10px;
|
||
margin-top: 12px;
|
||
}
|
||
.branch-card {
|
||
border: 1px dashed #bcc8d6;
|
||
border-radius: 8px;
|
||
padding: 12px;
|
||
background: #fbfcfd;
|
||
}
|
||
.branch-card h3 {
|
||
margin: 0 0 8px;
|
||
font-size: 14px;
|
||
}
|
||
.mini-flow {
|
||
display: flex;
|
||
flex-wrap: wrap;
|
||
gap: 8px;
|
||
align-items: center;
|
||
}
|
||
.mini {
|
||
border: 1px solid #d4dde7;
|
||
border-radius: 7px;
|
||
padding: 7px 9px;
|
||
background: #fff;
|
||
font-size: 12px;
|
||
}
|
||
.matrix {
|
||
width: 100%;
|
||
border-collapse: collapse;
|
||
margin-top: 8px;
|
||
font-size: 12px;
|
||
}
|
||
.matrix th, .matrix td {
|
||
border: 1px solid #dfe5ec;
|
||
padding: 8px;
|
||
text-align: left;
|
||
vertical-align: top;
|
||
}
|
||
.matrix th { background: #f0f3f7; }
|
||
code {
|
||
background: #eef2f6;
|
||
border-radius: 4px;
|
||
padding: 1px 5px;
|
||
font-family: Consolas, "Courier New", monospace;
|
||
font-size: 12px;
|
||
}
|
||
@media (max-width: 700px) {
|
||
header { padding: 22px 18px 14px; }
|
||
main { padding: 16px; }
|
||
.node { min-width: 100%; max-width: none; }
|
||
.arrow { width: 100%; text-align: center; transform: rotate(90deg); }
|
||
}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<header>
|
||
<h1>bbav5 分析路线流程图</h1>
|
||
<p>按当前代码依赖关系整理。每条路线单独列出,避免把基因家族、功能图、共线性和 RNA-seq 混成一张大图。</p>
|
||
</header>
|
||
|
||
<main>
|
||
<section class="legend">
|
||
<h2>颜色说明</h2>
|
||
<div class="tags">
|
||
<span class="tag"><i class="dot" style="background:#b9dcff"></i>数据准备</span>
|
||
<span class="tag"><i class="dot" style="background:#bde8c9"></i>基因家族核心</span>
|
||
<span class="tag"><i class="dot" style="background:#ffe0a3"></i>树与分类</span>
|
||
<span class="tag"><i class="dot" style="background:#d7cdfd"></i>图形/结构/功能</span>
|
||
<span class="tag"><i class="dot" style="background:#ffc9d3"></i>RNA-seq</span>
|
||
<span class="tag"><i class="dot" style="background:#dde3ea"></i>工具/可选输入</span>
|
||
</div>
|
||
<p class="note">执行时会先检查 manifest 和产物;缺上游阶段时,应按该路线自动补齐依赖。</p>
|
||
</section>
|
||
|
||
<section class="route">
|
||
<h2>路线 1:数据准备路线</h2>
|
||
<div class="flow">
|
||
<div class="node data"><strong>config.xlsx / 上传文件</strong><span>物种、角色、family、genome/gff/cds/pep</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node data"><strong>prepare_organize</strong><span>整理输入文件</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node data"><strong>prepare_normalize_gff</strong><span>统一 GFF/GFF3 格式</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node data"><strong>prepare_longest_transcript</strong><span>选择最长转录本</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node data"><strong>prepare_extract_pep / cds</strong><span>必要时由 genome + GFF 提取</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node data"><strong>genome_prepare</strong><span>输出 *_final.gff3、*.pep.fasta、*.cds.fasta</span></div>
|
||
</div>
|
||
<p class="note">这条路线为后续 identify、structure、promoter、synteny、RNA-seq 注释背景等提供基础文件。</p>
|
||
</section>
|
||
|
||
<section class="route">
|
||
<h2>路线 2:参考家族序列准备路线</h2>
|
||
<div class="flow">
|
||
<div class="node util"><strong>ID 列表 / NCBI 查询</strong><span>例如 At.SPL.ids</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node util"><strong>ncbi_fetch_sequences</strong><span>下载参考蛋白/CDS</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node util"><strong>{Species}.{Family}.pep.fa</strong><span>必要时创建软链接统一命名</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node core"><strong>identify 可复用</strong><span>作为参考 seed / family pep</span></div>
|
||
</div>
|
||
<p class="note">例如 NCBI 结果可保留原文件,同时软链接为 <code>At.SPL.pep.fa</code> 供后续识别和参考分类复用。</p>
|
||
</section>
|
||
|
||
<section class="route">
|
||
<h2>路线 3:基因家族成员鉴定路线</h2>
|
||
<div class="flow">
|
||
<div class="node data"><strong>genome_prepare 产物</strong><span>目标物种 whole-proteome pep</span></div>
|
||
<div class="arrow">+</div>
|
||
<div class="node util"><strong>HMM / Pfam</strong><span>HMM 文件或 required_pfams</span></div>
|
||
<div class="arrow">+</div>
|
||
<div class="node util"><strong>参考家族 pep</strong><span>如 At.SPL.pep.fa</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node core"><strong>identify</strong><span>HMMER/BLAST 鉴定候选成员</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node core"><strong>InterProScan 复核</strong><span>默认 Pfam + CDD</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node core"><strong>identify_refine</strong><span>按 domain review / curated id 生成最终成员</span></div>
|
||
</div>
|
||
<p class="note">输出包括合并成员 <code>Target.SPL.final_members.pep.fa</code>,以及单物种成员如 <code>Target.Dl.SPL.final_members.pep.fa</code>。</p>
|
||
</section>
|
||
|
||
<section class="route">
|
||
<h2>路线 4:系统发育树与参考亚家族分类路线</h2>
|
||
<div class="flow">
|
||
<div class="node core"><strong>identify / identify_refine</strong><span>最终成员蛋白</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node tree"><strong>phylogeny</strong><span>MAFFT + IQ-TREE,生成 tree.nwk</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node tree"><strong>reference_classification</strong><span>参考亚家族迁移与置信度</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node tree"><strong>subfamily_confirm</strong><span>确认后的亚家族标签</span></div>
|
||
</div>
|
||
<div class="branch">
|
||
<div class="branch-card">
|
||
<h3>目标物种单独树</h3>
|
||
<div class="mini-flow">
|
||
<span class="mini">target_only</span><span>→</span><span class="mini">Target 成员树</span>
|
||
</div>
|
||
</div>
|
||
<div class="branch-card">
|
||
<h3>目标 + 参考联合树</h3>
|
||
<div class="mini-flow">
|
||
<span class="mini">target_plus_reference</span><span>→</span><span class="mini">At + Target 联合树</span><span>→</span><span class="mini">亚家族分类</span><span>→</span><span class="mini">用户确认</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
<p class="note">多智能体规划中,“预测亚家族/亚家族分类”对应 <code>reference_classification</code>,“确认亚家族/亚家族确认”对应 <code>subfamily_confirm</code>。参考分类必须有同一 scope 的 phylogeny 树和参考亚家族文件,例如 <code>At.SPL.subfamily</code>;确认后生成 <code>{prefix}.confirmed_subfamily.tsv</code> 供后续绘图复用。</p>
|
||
</section>
|
||
|
||
<section class="route">
|
||
<h2>路线 5:结构 / Motif / Domain / 组合图路线</h2>
|
||
<div class="flow">
|
||
<div class="node core"><strong>identify</strong><span>成员 ID 和 pep</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node tree"><strong>phylogeny</strong><span>树排序和联合展示基础</span></div>
|
||
</div>
|
||
<div class="branch">
|
||
<div class="branch-card">
|
||
<h3>基因结构</h3>
|
||
<div class="mini-flow"><span class="mini">structure</span><span>依赖 final_members.id + *_final.gff3</span></div>
|
||
</div>
|
||
<div class="branch-card">
|
||
<h3>Motif</h3>
|
||
<div class="mini-flow"><span class="mini">motif</span><span>MEME motif 识别与绘图</span></div>
|
||
</div>
|
||
<div class="branch-card">
|
||
<h3>Domain</h3>
|
||
<div class="mini-flow"><span class="mini">domain</span><span>Pfam/domain 结构域图</span></div>
|
||
</div>
|
||
<div class="branch-card">
|
||
<h3>联合图</h3>
|
||
<div class="mini-flow"><span class="mini">combo</span><span>tree + structure + motif + domain</span></div>
|
||
</div>
|
||
</div>
|
||
<p class="note">亚家族判断阶段建议同时参考 tree、structure、motif、domain,而不是只看树;确认后的亚家族标签会优先用于后续 structure、motif、domain、combo、promoter 和树图标注。</p>
|
||
</section>
|
||
|
||
<section class="route">
|
||
<h2>路线 6:启动子与顺式作用元件路线</h2>
|
||
<div class="flow">
|
||
<div class="node core"><strong>identify</strong><span>成员 ID</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node tree"><strong>phylogeny</strong><span>用于排序/分组展示</span></div>
|
||
<div class="arrow">+</div>
|
||
<div class="node data"><strong>genome + *_final.gff3</strong><span>提取上游序列</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node plot"><strong>promoter</strong><span>启动子提取、PlantCARE/顺式元件图</span></div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="route">
|
||
<h2>路线 7:共线性 / 核型图 / KaKs 路线</h2>
|
||
<div class="flow">
|
||
<div class="node core"><strong>identify</strong><span>家族成员</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node plot"><strong>synteny</strong><span>种内共线性</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node plot"><strong>karyotype</strong><span>染色体定位和核型图</span></div>
|
||
</div>
|
||
<div class="flow">
|
||
<div class="node core"><strong>identify</strong><span>目标/比较/参考成员</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node plot"><strong>interspecies_synteny</strong><span>种间共线性</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node plot"><strong>kaks</strong><span>重复基因对 Ka/Ks</span></div>
|
||
</div>
|
||
<p class="note">种间共线性需要多个物种 whole-genome pep 和非空 GFF;Ka/Ks 还依赖可用 CDS。</p>
|
||
</section>
|
||
|
||
<section class="route">
|
||
<h2>路线 8:同源基因与 PPI 路线</h2>
|
||
<div class="flow">
|
||
<div class="node core"><strong>identify</strong><span>成员蛋白</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node tree"><strong>phylogeny</strong><span>辅助筛选和展示</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node plot"><strong>ortholog</strong><span>同源关系</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node plot"><strong>ppi</strong><span>STRING / 同源映射 PPI</span></div>
|
||
</div>
|
||
<p class="note">当前后端也支持以 <code>identify + interspecies_synteny</code> 作为 PPI 的依赖来源;前端旧依赖中还保留 <code>ortholog</code> 路线。</p>
|
||
</section>
|
||
|
||
<section class="route">
|
||
<h2>路线 9:表达矩阵路线</h2>
|
||
<div class="flow">
|
||
<div class="node core"><strong>identify</strong><span>家族成员 ID</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node tree"><strong>phylogeny</strong><span>用于热图排序/分组</span></div>
|
||
<div class="arrow">+</div>
|
||
<div class="node util"><strong>表达矩阵 / GEO</strong><span>上传矩阵或 fetch_expression</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node plot"><strong>expression</strong><span>家族表达热图和表达表</span></div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="route">
|
||
<h2>路线 10:PEP 理化性质路线</h2>
|
||
<div class="flow">
|
||
<div class="node core"><strong>identify</strong><span>最终成员蛋白</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node plot"><strong>pep</strong><span>理化性质、亚细胞/特征统计</span></div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="route">
|
||
<h2>路线 11:RNA-seq 主流程路线</h2>
|
||
<div class="flow">
|
||
<div class="node rna"><strong>samples.yaml / FASTQ</strong><span>样本、分组、比较设计</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node rna"><strong>rnaseq_qc</strong><span>FastQC + Cutadapt</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node rna"><strong>rnaseq_align</strong><span>HISAT2 / BAM</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node rna"><strong>rnaseq_quant</strong><span>featureCounts / count、FPKM、TPM</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node rna"><strong>rnaseq_sample_qc</strong><span>PCA、相关性、样本 QC</span></div>
|
||
</div>
|
||
<div class="branch">
|
||
<div class="branch-card">
|
||
<h3>差异表达主线</h3>
|
||
<div class="mini-flow">
|
||
<span class="mini">rnaseq_sample_qc</span><span>→</span><span class="mini">rnaseq_de</span>
|
||
</div>
|
||
</div>
|
||
<div class="branch-card">
|
||
<h3>WGCNA 分支</h3>
|
||
<div class="mini-flow">
|
||
<span class="mini">rnaseq_sample_qc</span><span>→</span><span class="mini">rnaseq_wgcna</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="route">
|
||
<h2>路线 12:RNA-seq 差异后分析路线</h2>
|
||
<div class="flow">
|
||
<div class="node rna"><strong>rnaseq_de</strong><span>DESeq2 差异表达结果</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node rna"><strong>rnaseq_go_enrich</strong><span>GO 富集</span></div>
|
||
<div class="arrow">/</div>
|
||
<div class="node rna"><strong>rnaseq_kegg_enrich</strong><span>KEGG 富集</span></div>
|
||
<div class="arrow">/</div>
|
||
<div class="node rna"><strong>rnaseq_fgsea</strong><span>排序富集</span></div>
|
||
<div class="arrow">/</div>
|
||
<div class="node rna"><strong>rnaseq_candidate_family</strong><span>候选家族筛选</span></div>
|
||
</div>
|
||
<div class="branch">
|
||
<div class="branch-card">
|
||
<h3>背景注释路线</h3>
|
||
<div class="mini-flow">
|
||
<span class="mini">annotation</span><span>→</span><span class="mini">gene2go / gene2ko</span><span>→</span><span class="mini">rnaseq_enrich / fgsea</span>
|
||
</div>
|
||
</div>
|
||
<div class="branch-card">
|
||
<h3>候选家族联动</h3>
|
||
<div class="mini-flow">
|
||
<span class="mini">rnaseq_de</span><span>+</span><span class="mini">annotation</span><span>+</span><span class="mini">WGCNA 可选</span><span>→</span><span class="mini">candidate_family</span>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<section class="route">
|
||
<h2>路线 13:汇总报告路线</h2>
|
||
<div class="flow">
|
||
<div class="node core"><strong>已完成基因家族阶段</strong><span>identify / tree / motif / domain / structure / synteny...</span></div>
|
||
<div class="arrow">+</div>
|
||
<div class="node rna"><strong>已完成 RNA-seq 阶段</strong><span>qc / align / quant / de / enrich / wgcna...</span></div>
|
||
<div class="arrow">→</div>
|
||
<div class="node warn"><strong>summary</strong><span>读取已有 manifest 和 final 产物生成总报告</span></div>
|
||
</div>
|
||
<p class="note">summary 的定位应是汇总和解释已完成结果,不应默认强制重跑所有阶段。</p>
|
||
</section>
|
||
|
||
<section class="route">
|
||
<h2>当前后端依赖速查</h2>
|
||
<table class="matrix">
|
||
<thead>
|
||
<tr><th>路线</th><th>阶段顺序</th><th>关键输入/说明</th></tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr><td>预测/确认亚家族</td><td><code>identify → phylogeny → reference_classification → subfamily_confirm</code></td><td>规划器先补齐同一 scope 的 tree;reference_classification 预测亚家族,subfamily_confirm 固化用户确认标签</td></tr>
|
||
<tr><td>联合图</td><td><code>identify → phylogeny → motif/domain/structure → combo</code></td><td>结构、motif、domain 可并行后合图,并优先读取 confirmed_subfamily 标签</td></tr>
|
||
<tr><td>种内共线性</td><td><code>identify → synteny → karyotype</code></td><td>whole-genome pep + GFF</td></tr>
|
||
<tr><td>种间共线性/KaKs</td><td><code>identify → interspecies_synteny → kaks</code></td><td>多物种 pep/GFF/CDS</td></tr>
|
||
<tr><td>RNA-seq 主线</td><td><code>rnaseq_qc → rnaseq_align → rnaseq_quant → rnaseq_sample_qc</code></td><td>FASTQ、样本配置、基因组索引/注释</td></tr>
|
||
<tr><td>RNA-seq 终端分析</td><td><code>rnaseq_sample_qc → rnaseq_de → enrich/fgsea/candidate_family</code></td><td>DE 结果和 GO/KEGG 背景</td></tr>
|
||
<tr><td>WGCNA</td><td><code>rnaseq_sample_qc → rnaseq_wgcna</code></td><td>表达矩阵和样本性状表</td></tr>
|
||
</tbody>
|
||
</table>
|
||
</section>
|
||
</main>
|
||
</body>
|
||
</html>
|