tbtools-cli 1.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. tbtools_cli-1.2.0/LICENSE +21 -0
  2. tbtools_cli-1.2.0/PKG-INFO +504 -0
  3. tbtools_cli-1.2.0/README.md +457 -0
  4. tbtools_cli-1.2.0/bridges/AdmixtureCli.java +91 -0
  5. tbtools_cli-1.2.0/bridges/AmazingMetaCli.java +78 -0
  6. tbtools_cli-1.2.0/bridges/AssemblyRecommandCli.java +47 -0
  7. tbtools_cli-1.2.0/bridges/BamIndexCli.java +31 -0
  8. tbtools_cli-1.2.0/bridges/BamSortCli.java +43 -0
  9. tbtools_cli-1.2.0/bridges/BamStateCli.java +49 -0
  10. tbtools_cli-1.2.0/bridges/BarPlotterCli.java +18 -0
  11. tbtools_cli-1.2.0/bridges/BarplotCli.java +168 -0
  12. tbtools_cli-1.2.0/bridges/BatchVizMotifsCli.java +47 -0
  13. tbtools_cli-1.2.0/bridges/BlastXmlConvertCli.java +45 -0
  14. tbtools_cli-1.2.0/bridges/BlatExecutorCli.java +66 -0
  15. tbtools_cli-1.2.0/bridges/CalcRepeatCli.java +62 -0
  16. tbtools_cli-1.2.0/bridges/CalculateSimilarityCli.java +34 -0
  17. tbtools_cli-1.2.0/bridges/CddMotifCli.java +46 -0
  18. tbtools_cli-1.2.0/bridges/CircleGeneViewerCli.java +81 -0
  19. tbtools_cli-1.2.0/bridges/CircosCli.java +76 -0
  20. tbtools_cli-1.2.0/bridges/ColorSchemeCli.java +29 -0
  21. tbtools_cli-1.2.0/bridges/CtgGroupCli.java +29 -0
  22. tbtools_cli-1.2.0/bridges/CubeHeatmapCli.java +70 -0
  23. tbtools_cli-1.2.0/bridges/DeHistCli.java +46 -0
  24. tbtools_cli-1.2.0/bridges/DegramdomCli.java +33 -0
  25. tbtools_cli-1.2.0/bridges/DiffExpCli.java +44 -0
  26. tbtools_cli-1.2.0/bridges/DistanceCli.java +53 -0
  27. tbtools_cli-1.2.0/bridges/DualSynCli.java +147 -0
  28. tbtools_cli-1.2.0/bridges/EggnogCli.java +39 -0
  29. tbtools_cli-1.2.0/bridges/ExprCorrCli.java +27 -0
  30. tbtools_cli-1.2.0/bridges/FastaMergerCli.java +36 -0
  31. tbtools_cli-1.2.0/bridges/FastaTableConvertCli.java +38 -0
  32. tbtools_cli-1.2.0/bridges/FileCleanerCli.java +31 -0
  33. tbtools_cli-1.2.0/bridges/FileSplitCli.java +15 -0
  34. tbtools_cli-1.2.0/bridges/FindBlockDualCli.java +71 -0
  35. tbtools_cli-1.2.0/bridges/FindBlockMultipleCli.java +67 -0
  36. tbtools_cli-1.2.0/bridges/FindPathCli.java +15 -0
  37. tbtools_cli-1.2.0/bridges/GSEAWrapperCli.java +33 -0
  38. tbtools_cli-1.2.0/bridges/GenBank2FastaCli.java +32 -0
  39. tbtools_cli-1.2.0/bridges/GeneDensityCli.java +38 -0
  40. tbtools_cli-1.2.0/bridges/GeneLocGffCli.java +140 -0
  41. tbtools_cli-1.2.0/bridges/GeneStructureCli.java +90 -0
  42. tbtools_cli-1.2.0/bridges/GenericCli.java +177 -0
  43. tbtools_cli-1.2.0/bridges/GetENALinksCli.java +36 -0
  44. tbtools_cli-1.2.0/bridges/GetSubNewickTreeCli.java +50 -0
  45. tbtools_cli-1.2.0/bridges/GoEnrichCli.java +42 -0
  46. tbtools_cli-1.2.0/bridges/GoLevelCli.java +59 -0
  47. tbtools_cli-1.2.0/bridges/GroupedBarCli.java +95 -0
  48. tbtools_cli-1.2.0/bridges/GsaDiagCli.java +45 -0
  49. tbtools_cli-1.2.0/bridges/GxfFilterCli.java +39 -0
  50. tbtools_cli-1.2.0/bridges/GxfSortCli.java +23 -0
  51. tbtools_cli-1.2.0/bridges/HclustCli.java +43 -0
  52. tbtools_cli-1.2.0/bridges/HeatmapCli.java +89 -0
  53. tbtools_cli-1.2.0/bridges/HmmerSuiteCli.java +47 -0
  54. tbtools_cli-1.2.0/bridges/JgblocksCli.java +65 -0
  55. tbtools_cli-1.2.0/bridges/KeggEnrichCli.java +31 -0
  56. tbtools_cli-1.2.0/bridges/LayoutHeatmapCli.java +90 -0
  57. tbtools_cli-1.2.0/bridges/MCScanXCli.java +80 -0
  58. tbtools_cli-1.2.0/bridges/MCScanXFastCli.java +41 -0
  59. tbtools_cli-1.2.0/bridges/MSACli.java +46 -0
  60. tbtools_cli-1.2.0/bridges/MakeMotifCli.java +39 -0
  61. tbtools_cli-1.2.0/bridges/MarkerDesignCli.java +62 -0
  62. tbtools_cli-1.2.0/bridges/MarkerToolsCli.java +57 -0
  63. tbtools_cli-1.2.0/bridges/Mast2TabCli.java +27 -0
  64. tbtools_cli-1.2.0/bridges/MastCli.java +54 -0
  65. tbtools_cli-1.2.0/bridges/MastRunCli.java +39 -0
  66. tbtools_cli-1.2.0/bridges/Meme2TabCli.java +26 -0
  67. tbtools_cli-1.2.0/bridges/MemeCli.java +74 -0
  68. tbtools_cli-1.2.0/bridges/MemeRunCli.java +40 -0
  69. tbtools_cli-1.2.0/bridges/MgGxfCli.java +35 -0
  70. tbtools_cli-1.2.0/bridges/MicroSynCli.java +118 -0
  71. tbtools_cli-1.2.0/bridges/MirIdentifyCli.java +55 -0
  72. tbtools_cli-1.2.0/bridges/MotifCli.java +75 -0
  73. tbtools_cli-1.2.0/bridges/MotifPatternCli.java +67 -0
  74. tbtools_cli-1.2.0/bridges/MotifShiftCli.java +30 -0
  75. tbtools_cli-1.2.0/bridges/MountainPlotCli.java +44 -0
  76. tbtools_cli-1.2.0/bridges/MultiSuperHeatCli.java +64 -0
  77. tbtools_cli-1.2.0/bridges/NeedlemanWunschCli.java +76 -0
  78. tbtools_cli-1.2.0/bridges/PafGC.java +15 -0
  79. tbtools_cli-1.2.0/bridges/PafVizCli.java +67 -0
  80. tbtools_cli-1.2.0/bridges/PeakDistCli.java +58 -0
  81. tbtools_cli-1.2.0/bridges/Pep2CodonCli.java +26 -0
  82. tbtools_cli-1.2.0/bridges/PfamMotifCli.java +43 -0
  83. tbtools_cli-1.2.0/bridges/PhyloTreeCli.java +92 -0
  84. tbtools_cli-1.2.0/bridges/PileUpCli.java +55 -0
  85. tbtools_cli-1.2.0/bridges/PlantCAREResultClassifyCli.java +36 -0
  86. tbtools_cli-1.2.0/bridges/PubmedSearchCli.java +25 -0
  87. tbtools_cli-1.2.0/bridges/QpcrCli.java +69 -0
  88. tbtools_cli-1.2.0/bridges/QpcrDdctCli.java +28 -0
  89. tbtools_cli-1.2.0/bridges/QpcrProcCli.java +28 -0
  90. tbtools_cli-1.2.0/bridges/QuickGenomeDotCli.java +66 -0
  91. tbtools_cli-1.2.0/bridges/QuickProteinAnnoCli.java +34 -0
  92. tbtools_cli-1.2.0/bridges/QuickRunIQtreeCli.java +69 -0
  93. tbtools_cli-1.2.0/bridges/QuickTrimALCli.java +67 -0
  94. tbtools_cli-1.2.0/bridges/RNAplotCli.java +129 -0
  95. tbtools_cli-1.2.0/bridges/RegionBedToGFF3Cli.java +43 -0
  96. tbtools_cli-1.2.0/bridges/RegionDepthCli.java +29 -0
  97. tbtools_cli-1.2.0/bridges/SamBamCovCli.java +33 -0
  98. tbtools_cli-1.2.0/bridges/SeqConverterCli.java +17 -0
  99. tbtools_cli-1.2.0/bridges/SeqLenTrackCli.java +41 -0
  100. tbtools_cli-1.2.0/bridges/SeveralSpeciesCli.java +132 -0
  101. tbtools_cli-1.2.0/bridges/SimpleEnricherCli.java +44 -0
  102. tbtools_cli-1.2.0/bridges/SimpleHmmscanCli.java +32 -0
  103. tbtools_cli-1.2.0/bridges/SixFrameTranlaterCli.java +35 -0
  104. tbtools_cli-1.2.0/bridges/StructAnnoCompareCli.java +66 -0
  105. tbtools_cli-1.2.0/bridges/SubmitSMARTCli.java +30 -0
  106. tbtools_cli-1.2.0/bridges/SuperCircosCli.java +330 -0
  107. tbtools_cli-1.2.0/bridges/TableColManipCli.java +56 -0
  108. tbtools_cli-1.2.0/bridges/TableCollapseCli.java +33 -0
  109. tbtools_cli-1.2.0/bridges/TargetScoreCli.java +47 -0
  110. tbtools_cli-1.2.0/bridges/TauCalcCli.java +28 -0
  111. tbtools_cli-1.2.0/bridges/TaxonomyBatchCli.java +72 -0
  112. tbtools_cli-1.2.0/bridges/TreeCli.java +75 -0
  113. tbtools_cli-1.2.0/bridges/TreeRootingCli.java +30 -0
  114. tbtools_cli-1.2.0/bridges/TrimMSACli.java +33 -0
  115. tbtools_cli-1.2.0/bridges/UnrootedTreeCli.java +44 -0
  116. tbtools_cli-1.2.0/bridges/UpSetCli.java +90 -0
  117. tbtools_cli-1.2.0/bridges/Venn5Cli.java +60 -0
  118. tbtools_cli-1.2.0/bridges/Venn6Cli.java +65 -0
  119. tbtools_cli-1.2.0/bridges/ViolinCli.java +66 -0
  120. tbtools_cli-1.2.0/bridges/VisualizeCli.java +57 -0
  121. tbtools_cli-1.2.0/bridges/VizGFACli.java +39 -0
  122. tbtools_cli-1.2.0/pyproject.toml +80 -0
  123. tbtools_cli-1.2.0/setup.cfg +4 -0
  124. tbtools_cli-1.2.0/tbtools_cli/__init__.py +18 -0
  125. tbtools_cli-1.2.0/tbtools_cli/auto_commands.py +1149 -0
  126. tbtools_cli-1.2.0/tbtools_cli/cli.py +528 -0
  127. tbtools_cli-1.2.0/tbtools_cli/cli_load.py +352 -0
  128. tbtools_cli-1.2.0/tbtools_cli/cli_rpc.py +303 -0
  129. tbtools_cli-1.2.0/tbtools_cli/cli_tools_registry.py +93 -0
  130. tbtools_cli-1.2.0/tbtools_cli/cli_top.py +1160 -0
  131. tbtools_cli-1.2.0/tbtools_cli/command_metadata.json +4606 -0
  132. tbtools_cli-1.2.0/tbtools_cli/command_spec.py +382 -0
  133. tbtools_cli-1.2.0/tbtools_cli/config.example.toml +19 -0
  134. tbtools_cli-1.2.0/tbtools_cli/config.py +43 -0
  135. tbtools_cli-1.2.0/tbtools_cli/core.py +508 -0
  136. tbtools_cli-1.2.0/tbtools_cli/errors.py +38 -0
  137. tbtools_cli-1.2.0/tbtools_cli/presets.py +100 -0
  138. tbtools_cli-1.2.0/tbtools_cli/scenarios.py +92 -0
  139. tbtools_cli-1.2.0/tbtools_cli.egg-info/PKG-INFO +504 -0
  140. tbtools_cli-1.2.0/tbtools_cli.egg-info/SOURCES.txt +147 -0
  141. tbtools_cli-1.2.0/tbtools_cli.egg-info/dependency_links.txt +1 -0
  142. tbtools_cli-1.2.0/tbtools_cli.egg-info/entry_points.txt +2 -0
  143. tbtools_cli-1.2.0/tbtools_cli.egg-info/requires.txt +4 -0
  144. tbtools_cli-1.2.0/tbtools_cli.egg-info/top_level.txt +1 -0
  145. tbtools_cli-1.2.0/tests/test_cli.py +683 -0
  146. tbtools_cli-1.2.0/tests/test_command_spec.py +52 -0
  147. tbtools_cli-1.2.0/tests/test_i18n.py +63 -0
  148. tbtools_cli-1.2.0/tests/test_metadata.py +93 -0
  149. tbtools_cli-1.2.0/tests/test_p0_protection.py +162 -0
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 tbtools-cli contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,504 @@
1
+ Metadata-Version: 2.4
2
+ Name: tbtools-cli
3
+ Version: 1.2.0
4
+ Summary: TBtools-II command-line wrapper: 200+ engines, 188+ RPC methods, journal presets, pitfall hints (exact counts via `tbtools version`)
5
+ Author: tbtools-cli contributors
6
+ License: MIT License
7
+
8
+ Copyright (c) 2026 tbtools-cli contributors
9
+
10
+ Permission is hereby granted, free of charge, to any person obtaining a copy
11
+ of this software and associated documentation files (the "Software"), to deal
12
+ in the Software without restriction, including without limitation the rights
13
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14
+ copies of the Software, and to permit persons to whom the Software is
15
+ furnished to do so, subject to the following conditions:
16
+
17
+ The above copyright notice and this permission notice shall be included in all
18
+ copies or substantial portions of the Software.
19
+
20
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
26
+ SOFTWARE.
27
+
28
+ Project-URL: Homepage, https://github.com/qby1613527176-cmd/tbtools-cli
29
+ Project-URL: upstream, https://github.com/CJ-Chen/TBtools
30
+ Project-URL: Documentation, https://github.com/qby1613527176-cmd/tbtools-cli/blob/main/docs/COMMAND_REFERENCE.md
31
+ Project-URL: Source, https://github.com/qby1613527176-cmd/tbtools-cli
32
+ Project-URL: Issues, https://github.com/qby1613527176-cmd/tbtools-cli/issues
33
+ Keywords: bioinformatics,tbtools,cli,plotting,genomics
34
+ Classifier: Development Status :: 4 - Beta
35
+ Classifier: Environment :: Console
36
+ Classifier: Intended Audience :: Science/Research
37
+ Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
38
+ Classifier: Programming Language :: Python :: 3
39
+ Classifier: Programming Language :: Java
40
+ Requires-Python: >=3.10
41
+ Description-Content-Type: text/markdown
42
+ License-File: LICENSE
43
+ Requires-Dist: click>=8.1
44
+ Provides-Extra: test
45
+ Requires-Dist: pytest>=7.0; extra == "test"
46
+ Dynamic: license-file
47
+
48
+ # TBtools CLI — TBtools-II 全功能命令行封装
49
+
50
+ [![CI](https://github.com/qby1613527176-cmd/tbtools-cli/actions/workflows/test.yml/badge.svg)](https://github.com/qby1613527176-cmd/tbtools-cli/actions/workflows/test.yml)
51
+ [![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
52
+ [![Python](https://img.shields.io/badge/python-3.10%2B-blue.svg)](pyproject.toml)
53
+ [![engines](https://img.shields.io/badge/engines-200+-orange.svg)](docs/_generated/commands.md)
54
+ [![Release](https://img.shields.io/github/v/release/qby1613527176-cmd/tbtools-cli?color=blue&label=release)](https://github.com/qby1613527176-cmd/tbtools-cli/releases)
55
+
56
+ > 把 [TBtools-II](https://github.com/CJ-Chen/TBtools)(2.535+)的全部功能封装成命令行,Linux/WSL 下免 GUI 直接使用。
57
+ > **200+ 绘图/分析命令 + 180+ RPC 数据工具 + 80+ 命令行工具 + 110+ Java 桥 + 任意引擎反射**,全部实测出图。
58
+ > 数字权威源: `tbtools version --json`(运行时统计) / [docs/_generated/counts.md](docs/_generated/counts.md)(静态注册口径, 自动生成防漂移)。README 内数字为范围快照, 以二者为准。
59
+
60
+ <div align="center">
61
+
62
+ **English** | 中文要点见各节说明(命令输出默认中文,`LC_ALL=en` 切换英文)
63
+
64
+
65
+ </div>
66
+
67
+ ---
68
+
69
+ ## 📺 Demo
70
+
71
+ ![tbtools-cli demo](docs/images/demo.gif)
72
+
73
+ 10 秒演示: `tbtools version` → `doctor` → `search volcano` → `volcano 实跑出图`。
74
+ (`docs/images/demo.cast` 为 asciinema 原始录制,可 `asciinema play` 播放。)
75
+
76
+ ```bash
77
+ # 本地播放
78
+ asciinema play docs/images/demo.cast
79
+ # 或上传 asciinema.org 网页播放(asciinema upload)
80
+ ```
81
+
82
+ ## 🤖 Agent 接口(结构化调用, AI 可用)
83
+
84
+ 统一命令模型 + 结构化 JSON 输出,Agent 可程序化发现/预检/执行/验证:
85
+
86
+ | 能力 | 命令 | 说明 |
87
+ |---|---|---|
88
+ | 1 发现 | `tbtools search <任务> --json` | 自然语言多词搜索(名称/描述/类名) |
89
+ | 2 描述 | `tbtools tool-describe <命令> --json` | 命令 schema(分组/参数/输入格式/输出/坑位) |
90
+ | 3 预检 | `tbtools tool-validate <命令> <输入...> --json` | 执行前检查(存在性/格式/列数) |
91
+ | 4 执行 | `tbtools tool-run <命令参数...> --json` | 统一执行 + {exit_code/duration/artifacts} |
92
+ | 5 结果 | `tbtools tool-result <产出>` | 结构化结果摘要(状态/产物) |
93
+ | 6 溯源 | `tbtools tool-provenance <产出>` | 运行记录(命令/版本/输入 sha/时间戳) |
94
+ | 7 环境 | `tbtools env --json` / `env --lock` | 环境快照/可复现性固化 |
95
+
96
+ ```bash
97
+ # Agent 调用链示例
98
+ tbtools search "gene structure" --json # 发现
99
+ tbtools tool-describe genestructure --json # 理解 schema
100
+ tbtools tool-validate genestructure in.gff ids.txt --json # 预检
101
+ tbtools tool-run seq genestructure in.gff ids.txt out.svg --json # 执行
102
+ tbtools tool-provenance out.svg # 溯源验证
103
+ ```
104
+
105
+ ## 📑 Table of Contents
106
+
107
+ - [Demo](#demo)
108
+ - [Quick Start](#quick-start)
109
+ - [Features](#features)
110
+ - [Documentation](#documentation)
111
+ - [Installation](#installation)
112
+ - [Example Outputs](#example-outputs)
113
+ - [Plotting Engines (200+)](#plotting-engines-218)
114
+ - [RPC Data Tools](#rpc-data-tools-188-methods)
115
+ - [CLI Tools](#cli-tools-82)
116
+ - [Any Engine Reflection](#any-engine-reflection-universal-fallback)
117
+ - [Project Structure](#project-structure)
118
+ - [兼容层退役计划](#兼容层退役计划)
119
+ - [Naming Convention](#naming-convention)
120
+ - [Known Limitations](#known-limitations)
121
+ - [FAQ](#faq)
122
+ - [Credits](#credits)
123
+ - [License](#license)
124
+
125
+ ## 🎯 这是什么
126
+
127
+ 生物信息学积累了大量成熟工具,但多为人工 GUI/CLI 设计,参数/格式/依赖复杂。**tbtools-cli 将 TBtools-II 及传统生信工具转换为 Agent 可发现、可调用、可验证的接口层**——人类用 CLI,AI Agent 用同一套接口(搜索/元数据/RPC/结构化输出)。
128
+
129
+ ```
130
+ Agent / 用户 / Shell
131
+
132
+ ┌────────┴────────┐
133
+ ↓ ↓
134
+ CLI RPC(JSON)
135
+ │ │
136
+ └────────┬────────┘
137
+
138
+ 统一注册层(metadata 单一数据源, 数量见 counts.md)
139
+
140
+ ┌────────┬─────────┬─────────┐
141
+ ↓ ↓ ↓ ↓
142
+ Bridge Direct Tool Engine
143
+ (118) Engine (82) Reflection
144
+
145
+ TBtools-II / 系统工具
146
+
147
+ 产物 SVG/TSV/图
148
+ ```
149
+
150
+ ### 典型工作流(Common Workflows)
151
+
152
+ - **基因家族分析(GRAS 实测)**: FASTA → `muscle`/`trimal` → `iqtree` → `motif` → `genestructure`(DEG 表 ± `volcano`)
153
+ - **RNA-seq**: counts → `tpmCalc` → `pca` → `heatmap` → `volcano`(DEG)
154
+ - **比较基因组学**: GFF → `mcscanx` → `dualsyn` → `dotplot`
155
+ - **系统发育**: FASTA → `msa` → `trimal` → `one-step`(IQ-TREE)→ `tree draw`
156
+ - **Agent 调用**: `tbtools search <任务>` → `version --json` / `rpc <method>` → 结构化结果
157
+
158
+ ## 🚀 Quick Start
159
+
160
+ > **最小示例数据**(新人入门防格式坑): 本仓库 `examples/data/` 为官方数据,`git clone` 或直接下载:
161
+ > `git clone --depth 1 https://github.com/qby1613527176-cmd/tbtools-cli` → `examples/data/` 即可复现本文所有命令。
162
+
163
+
164
+
165
+ ```bash
166
+ tbtools version # 查看版本(动态统计)
167
+ tbtools doctor # 环境诊断(检查 Java/JAR/xvfb/依赖)
168
+ tbtools list # 列出全部绘图/分析命令
169
+ tbtools list tools # 列出全部命令行工具
170
+ tbtools help volcano # 快捷帮助(自动定位分组)
171
+ tbtools rpc start # 启动 RPC 服务器(188 方法;pid 文件+健康检查,死亡后 call/methods 自动拉起)
172
+ tbtools rpc status # 查看 RPC 状态;rpc stop 停止
173
+ bash examples/scripts/run_examples.sh # 一键验证(8 项核心功能)
174
+ ```
175
+
176
+ ### 配置文件
177
+
178
+ ```bash
179
+ # ~/.config/tbtools-cli/config.toml
180
+ jar = "/path/to/TBtools_JRE1.6.jar"
181
+ [defaults]
182
+ threads = 4
183
+ format = "svg"
184
+ # preset = "nature" # 取消注释启用默认预设
185
+ ```
186
+
187
+ ### Bash Completion(tab 补全)
188
+
189
+ ```bash
190
+ source scripts/tbtools-completion.bash # 临时启用
191
+ # 或永久安装:
192
+ cp scripts/tbtools-completion.bash ~/.local/share/bash-completion/completions/tbtools
193
+ ```
194
+
195
+ ### Man Page
196
+
197
+ ```bash
198
+ man -l scripts/tbtools.1 # 查看 man page
199
+ # 或安装到系统:
200
+ sudo cp scripts/tbtools.1 /usr/local/share/man/man1/
201
+ ```
202
+
203
+ ### stdin/stdout 管道(CLI 工具层)
204
+
205
+ ```bash
206
+ # stat-fasta 支持 stdin
207
+ ./tbtools tool stat-fasta /dev/stdin /dev/stdout < seqs.fa
208
+ # ⚠️ 大部分 Java 引擎不认 /dev/stdin,管道支持有限
209
+ ```
210
+
211
+ ## ✨ Features
212
+
213
+ | 能力 | 状态 | 说明 |
214
+ |:---|:---:|:---|
215
+ | 绘图引擎 CLI | ✅ | 200+ 个(无头 SVG/PNG 输出,Linux 需 xvfb) |
216
+ | RPC 数据工具 | ✅ | 180+ 方法,自愈服务器(pid+健康检查+自动重启) |
217
+ | 管道(stdin/stdout) | ⚠️ | 仅部分 tool 层命令;绘图命令需真实文件路径 |
218
+ | Windows 绘图 | ⚠️ | 基本可用;无 xvfb 时部分绘图受限 |
219
+ | 联网命令(NCBI/API) | ⚠️ | srr2ena/pubmed/seqfetch 等需外网,被墙环境请配代理 |
220
+ | 中文路径 | ✅ | 已实测支持 |
221
+ | 并发/高吞吐 | ✅ | 1.2GB FASTA 23.9s 线性 |
222
+
223
+
224
+ | Layer | Capability | Entry |
225
+ |:------|:-----------|:------|
226
+ | 🎨 **绘图引擎** | 200+ 个(基因结构/Motif/热图/树/共线性/韦恩/ChIP-seq/柱图/环形图/标记设计/eFP 等) | `tbtools <plotName>` |
227
+ | 📊 **RPC 数据工具** | 180+ 个(FASTA/GFF/表达/Blast/富集/建树/引物等) | `tbtools rpc <method> '<json>'` |
228
+ | 🛠️ **命令行工具** | 80+ 个(extractFasta/statFasta/rpkmCal/tpmCalc/mimicVqsr 等) | `tbtools tool <name>` |
229
+ | 🔬 **任意引擎反射** | 万能兜底(任意 TBtools 引擎类) | `tbtools engine <class> key=value` |
230
+ | 🧩 **插件命令** | 12 个 CLI 化插件(GSEA/Notung reconcile/植物 TF motif 偏移/MEME 可视化/kallisto 定量/HMMer 全库扫描/MCScanX 加速/Newick 重命名/基因组 dot plot/diamond 蛋白注释/SMART 域注释/FIMO motif 扫描) | `tbtools table gsea` / `tbtools tree notung` 等 |
231
+
232
+ All engines are driven **headlessly** (via xvfb on Linux/WSL), no GUI needed. Verified with real biological data (oil-Camellia GRAS gene family etc).
233
+
234
+ ## 📖 Documentation
235
+
236
+ > **每次调用前先查 `docs/COMMAND_REFERENCE.md`**(命令参考手册,自动生成命令清单见 `docs/_generated/commands.md`)——每个命令的输入格式、参数、示例、已知坑都在里面。
237
+
238
+ | 文档 | 内容 |
239
+ |:-----|:-----|
240
+ | [`docs/COMMAND_REFERENCE.md`](docs/COMMAND_REFERENCE.md) | **命令参考手册**:200+ 个命令(用法表+详细注释)+ 80+ 个 CLI 工具(18 类功能分组)+ 110+ 个桥 Javadoc(输入格式权威来源)+ 46 条实测坑位 + engine 反射 + RPC 指引 |
241
+ | [`docs/rpc_methods_reference.md`](docs/rpc_methods_reference.md) | RPC 180+ 方法参考(参数/返回值,自动生成) |
242
+
243
+ ```bash
244
+ # 快速查用法(不用翻手册):
245
+ tbtools --help # 绘图命令一屏预览
246
+ tbtools list tools # CLI 工具列表
247
+ tbtools rpc methods # RPC 方法列表
248
+ java -cp $TBTOOLS_JAR <引擎类> # 无参运行 → 打印完整 [Usage] 参数表(含默认值)
249
+ ```
250
+
251
+ ---
252
+
253
+ ## 📦 Installation
254
+
255
+ > **推荐路径**: `pip install tbtools-cli`(见 0;受限环境加 `--user` 或 venv); **备用路径**: `git clone` + `install.sh`(见 1)。其余方式为历史兼容。
256
+
257
+ ### 0. pip 安装(推荐,Python 包入口)
258
+
259
+ > ⚠️ **Windows 用户注意**: 绘图类命令在无 xvfb 时部分受限(工具类/RPC 全可用);WSL2 推荐。详见 [FAQ](#faq)。
260
+ > 系统 Python 受 PEP 668 保护时(Debian/Ubuntu 23+),先建虚拟环境或加 `--user`:
261
+ > `python3 -m venv ~/.venv && source ~/.venv/bin/activate` 或 `pip install --user tbtools-cli`
262
+ ```bash
263
+ pip install . # 或 pipx install . / pip install git+https://github.com/qby1613527176-cmd/tbtools-cli
264
+ # 安装后 `tbtools` 直接可用(console_script);JAR 仍需就位(见下)
265
+ ```
266
+
267
+ ### Requirements
268
+ - **Linux / WSL2 / macOS**(绘图需要 `xvfb-run`,可用 `sudo apt install xvfb`)
269
+ - **Windows**:支持工具类/RPC/表格类命令(Git Bash + TBtools-II/bin 加入 PATH);绘图类命令受 xvfb 限制(部分可用)
270
+ - **JDK 11+**(`java`、`javac`)
271
+ - **TBtools_JRE1.6.jar**(TBtools-II 主 jar,~55MB)
272
+
273
+ ### 1. Install(自动接入本机 TBtools)
274
+
275
+ ```bash
276
+ git clone https://github.com/qby1613527176-cmd/tbtools-cli.git
277
+ cd tbtools-cli
278
+ ```
279
+
280
+ **三种接入方式,AI/脚本可按需选用:**
281
+
282
+ ```bash
283
+ # ① 自动搜索本机已有 TBtools jar 并配置(最常用)
284
+ tbtools setup --auto
285
+ # → 自动扫描 ~/TBtools、~/Downloads、~/桌面、/mnt/*(WSL)、C:/TBtools(Git-Bash)、
286
+ # /Applications(macOS)等常见位置,找到即写入 ~/.config/tbtools-cli/
287
+
288
+ # ② 知道 jar 路径,直接指定
289
+ tbtools setup /path/to/TBtools_JRE1.6.jar
290
+
291
+ # ③ 本机没有 jar?自动下载官方 portable 包并提取 jar(官方只发 zip,~300MB)
292
+ tbtools fetch-jar
293
+ # → 自动查询最新含 portable 的 release,下载 → 提取 TBtools_JRE1.6.jar → 配置
294
+ # 可选: tbtools fetch-jar --version 2.475
295
+ ```
296
+
297
+ 手动方式(无 tbtools 时):
298
+ ```bash
299
+ ./install.sh --jar /path/to/TBtools_JRE1.6.jar
300
+ # 或
301
+ export TBTOOLS_JAR=/path/to/TBtools_JRE1.6.jar
302
+ export PATH="$PWD/bin:$PATH"
303
+ ```
304
+
305
+ ### 2. Verify
306
+ ```bash
307
+ tbtools doctor # 一键检查 Java/jar/xvfb/可选依赖;jar 缺失时给出可执行指引
308
+ tbtools version # 实时统计命令/桥/坑位数量
309
+ ```
310
+
311
+ ### 3. Auto-verify(一键回归,8 项核心功能示例图)
312
+
313
+ ```bash
314
+ bash examples/scripts/run_examples.sh # 运行 8 个代表性引擎 → examples/output/ 下生成示例图
315
+ ```
316
+
317
+ ---
318
+
319
+ ## 🖼️ Example Outputs
320
+
321
+ | Heatmap | Venn / UpSet |
322
+ |:--|:--|
323
+ | ![heatmap](docs/images/heatmap.svg) | ![venn](docs/images/venn.svg) |
324
+ | ![msa](docs/images/msa.svg) | ![upset](docs/images/upset.svg) |
325
+
326
+ | Phylogenetic tree | Synteny (MCScanX + dot plot) | Grouped bar + significance |
327
+ |:--|:--|:--|
328
+ | ![tree](docs/images/tree.svg) | ![synteny](docs/images/synteny.svg) | ![bar](docs/images/bar.svg) |
329
+
330
+ > 全部由本仓库 `examples/fulltest` 合成数据实测生成(`docs/images/`,SVG 可放大无损)。
331
+ > 复现: `bash examples/scripts/run_examples.sh`。
332
+
333
+ ## 🎨 Plotting Engines (218)
334
+
335
+ ### Gene structure / Motif / Sequence logo
336
+ ```bash
337
+ # Gene structure (exons/UTR from GFF)
338
+ tbtools seq genestructure <input.gff> <mRNA_ids.txt> <out.svg> [genome.fa] [w] [h]
339
+ # Motif distribution (MEME XML)
340
+ tbtools seq motif <meme.xml> <idList.txt> <out.svg> [w] [h]
341
+ ```
342
+ > 更多命令见 [docs/_generated/commands.md](docs/_generated/commands.md) 或 `tbtools list plots`
343
+ ### Expression / Statistics
344
+ ```bash
345
+ # Volcano plot (DEG: GeneID Log2FC pvalue)
346
+ tbtools volcano <deg.txt> <out.svg> [pvalCutoff] [fcCutoff] [w] [h]
347
+ # Expression level calculators (counts+len → RPKM/TPM; FPKM → TPM)
348
+ tbtools tool rpkmCal --countsTable counts.tsv --lenInfo gene_len.tsv --outTable RPKM.out.tsv
349
+ ```
350
+ > 更多命令见 [docs/_generated/commands.md](docs/_generated/commands.md) 或 `tbtools list plots`
351
+ ### Phylogeny / Tree
352
+ ```bash
353
+ # Tree + annotation tracks (TextAnno/HeatMap/BarPlot/Tile/StackBar/Domain...)
354
+ tbtools tree draw <treeMeta.cfg> <out.svg> [pad]
355
+ # Hclust → Newick
356
+ tbtools expr hclust <distance_matrix.tsv> <out.nwk>
357
+ ```
358
+ > 更多命令见 [docs/_generated/commands.md](docs/_generated/commands.md) 或 `tbtools list plots`
359
+ ### Genomic location / Circos / Synteny
360
+ ```bash
361
+ # Gene chromosome location (GFF + IDs)
362
+ tbtools gxf genelocgff <gff3> <ids.txt> <out.svg> [--chrLen l.tsv --pairs p.tsv ...]
363
+ # Gene location (native CLI)
364
+ tbtools genelocation --ChrLen <chrlen.tsv> --FeaturePos <pos.tsv> --OutGraph <out.svg>
365
+ ```
366
+ > 更多命令见 [docs/_generated/commands.md](docs/_generated/commands.md) 或 `tbtools list plots`
367
+ ### Venn / Sets
368
+ ```bash
369
+ # Venn 2/3/4 (native ArgsParser CLI)
370
+ tbtools sets venn2 --List1 a.txt --List2 b.txt --label1 A --label2 B --graph out.svg --prefix out
371
+ tbtools sets venn3 --List1 a.txt --List2 b.txt --List3 c.txt --label1 A --label2 B --label3 C --graph out.svg --prefix out
372
+ tbtools sets venn4 --List1 a.txt --List2 b.txt --List3 c.txt --List4 d.txt --label1 A --label2 B --label3 C --label4 D --graph out.svg --prefix out
373
+ ```
374
+ > 更多命令见 [docs/_generated/commands.md](docs/_generated/commands.md) 或 `tbtools list plots`
375
+ ### ChIP-seq / Others
376
+ ```bash
377
+ # Peak-TSS heatmap
378
+ tbtools chipseq peaktss <gxf> <macs2_peak.xls> <out.svg> [--dist N]
379
+ # Peak chromosome distribution
380
+ tbtools chipseq peakdist <chrLen.tsv> <macs2_peak.xls> <out.svg> [--width W --height H]
381
+ ```
382
+ > 更多命令见 [docs/_generated/commands.md](docs/_generated/commands.md) 或 `tbtools list plots`
383
+ ## 📊 RPC Data Tools (188 methods)
384
+
385
+ ```bash
386
+ tbtools rpc start # 启动 RPC 服务器 (port 8765)
387
+ tbtools rpc methods # list all RPC methods
388
+ tbtools rpc FastaStat.process '{"inputPath":"in.fa","outputPath":"out.xls"}'
389
+ tbtools rpc OneStepBuildATree.process '{"inputPath":"seqs.fa","outputPath":"outdir","options":{"ultraFastBS":true}}'
390
+ ```
391
+
392
+ > 全部 188 方法见 [docs/rpc_methods_reference.md](docs/rpc_methods_reference.md) 或 `tbtools list rpc`
393
+
394
+ ## 🛠️ CLI Tools (82)
395
+
396
+ ```bash
397
+ tbtools tool <name> [args...] # run any CLI tool; full help: tbtools list tools
398
+
399
+ # --- Fasta / Fastq ---
400
+ tbtools tool statFasta # sequence statistics
401
+ tbtools tool extractFasta # extract/filter FASTA by ID list
402
+ ```
403
+
404
+ > 全部工具见 [docs/COMMAND_REFERENCE.md](docs/COMMAND_REFERENCE.md) 或 `tbtools list tools`(数量见 counts.md)
405
+
406
+ ## 🔬 Any Engine Reflection (universal fallback)
407
+
408
+ ```bash
409
+ tbtools engine <full.class.Name> key=value [--call method]
410
+ # example: QuickStatFasta
411
+ tbtools engine biocjava.bioIO.FastX.FastaIndex.QuickStatFasta inFile=seqs.fa --call stat
412
+ ```
413
+
414
+ ---
415
+
416
+ ## 📁 Project Structure
417
+
418
+ ```
419
+ tbtools-cli/
420
+ ├── bin/
421
+ │ ├── tbtools # unified entry (bash 兼容层,转发 python -m tbtools_cli.cli)
422
+ │ ├── tbplot.sh # plotting engines(兼容层,逐步退役为转发)
423
+ │ ├── tbtools_rpc.sh # RPC server & calls
424
+ │ └── tbcli.py # 旧工具入口(已由 cli_tools_registry 替代,保留兼容)
425
+ ├── tbtools_cli/ # ✅ Python 包(真正的入口)
426
+ │ ├── cli.py # click 主 CLI(全命令注册 + rpc 自愈 + 纠错)
427
+ │ ├── auto_commands.py # ENGINE_REGISTRY 表驱动命令工厂(命令数以 `tbtools version` 为准)
428
+ │ ├── cli_tools_registry.py # CLI 工具共享注册表
429
+ │ ├── command_metadata.json # 命令元数据(gen_metadata 从 CommandSpec 生成,唯一数据源)
430
+ │ ├── core.py # run_java 包装 + 输入保护 + PITFALL_HINTS(46)
431
+ │ ├── presets.py / scenarios.py / config.py
432
+ ├── pyproject.toml # ✅ pip 安装(tbtools console_script)
433
+ ├── bridges/ # 118 Java bridge sources
434
+ ├── build/ # compiled bridges (auto-generated)
435
+ ├── config/config.sh # unified config (TBTOOLS_JAR etc.)
436
+ ├── scripts/ # tbtools-completion.bash + tbtools.1 + 工具脚本
437
+ ├── examples/ # example data + scripts
438
+ ├── scripts/ # rpc_regression_linux.sh 等工具脚本
439
+ ├── tests/ # pytest(83 passed:框架/命令/防漂移/输入保护)
440
+ ├── docs/ # detailed documentation
441
+ │ ├── COMMAND_REFERENCE.md # 📖 命令参考手册(218 命令+82 工具+118 桥+46 坑位)
442
+ │ └── rpc_methods_reference.md # RPC 188 方法参考
443
+ ├── install.sh # one-command installer
444
+ └── README.md
445
+ ```
446
+
447
+ ---
448
+
449
+ ## 🛠️ 兼容层退役计划
450
+
451
+ `bin/tbplot.sh` / `bin/tbengine.sh` / `bin/tbcli.py` / `bin/tbtools_rpc.sh` 为旧入口兼容层(已打印 deprecation 警告)。
452
+ **计划 v2.0.0 移除**。新用法一律走 `tbtools`(Python 入口);`.bashrc` 如引用了旧入口请迁移。
453
+
454
+ ## 🏷️ Naming Convention
455
+
456
+ - **规范命令名是小写 camelCase**:`tableCast` / `tableMelt` / `recipBlast`(分组命令)
457
+ - 个别工具层保留旧大写注册名作别名:`TableCast` 与 `tableCast` 指向同一引擎(`tool TableCast` 兼容旧写法)
458
+ - 新旧入口并存是过渡设计,规范入口见 `tbtools list`
459
+
460
+ ## ⚠️ Known Limitations
461
+
462
+ | Engine | Status |
463
+ |:-------|:-------|
464
+ | MicroGenomeViz | doesn't handle `join(complement(...))` |
465
+ | UnrootedTreeViz | hardcoded demo main |
466
+ | geneOnGenome CLI | jar compile-level bug |
467
+ | PhyloTreeView | needs TreeTab format (not pure Newick) |
468
+ | DualSyn | old JJplot2 framework; `plot()` works but save limited (window traversal fails) |
469
+ | FindBlockDual/Multiple | requires real genome data; synthetic small data triggers `ArrayList.get` OOB |
470
+ | peakAnno | small coordinates (<10kb) trigger `GxFOverlapIndexer` bin boundary bug; use real genome scale |
471
+ | MountainPlot/StackMotif | empty shell in TBtools jar (no implementation) |
472
+ | DistanceAdvanced | pure calculation, no plotting (use `distance` command instead) |
473
+
474
+ ---
475
+
476
+ ## ❓ FAQ
477
+
478
+ **Java 版本要求?** 需要 JRE 8+(推荐 11/17;引擎为 Java 8 编译,JDK 9+ 移除部分 javax.xml 类,`--verbose` 报 ClassNotFoundException 时见 `docs/_worklog` 修复记录)。`tbtools doctor` 会自动检测。
479
+
480
+ **Windows 支持?** 双击/终端可用(v2.475 实测);绘图命令在 Windows 无 xvfb 时部分受限(见「Known Limitations」)。WSL2 经 /mnt/d 挂载 JAR 亦可。
481
+
482
+ **xvfb 是什么?** Linux 无头绘图必须的虚拟显示层。`sudo apt install xvfb`。`doctor` 会提示缺失。
483
+
484
+ **stdin/stdout 管道支持?** 仅 tool 层部分工具支持(/dev/stdin);绘图命令需真实文件路径(Java 引擎不认 /dev/stdin)。
485
+
486
+ **为什么命令有大小写混用?** 小写 camelCase 为规范名,旧大写名作兼容别名(见 Naming Convention)。
487
+
488
+ **如何升级?** `git pull && pip install -e .`(源码安装);JAR 用 `tbtools fetch-jar --yes` 更新。
489
+
490
+ ## 🙏 Credits
491
+
492
+ - [TBtools](https://github.com/CJ-Chen/TBtools) — the underlying toolkit by Chengjie Chen
493
+ - This project is an independent CLI wrapper, not affiliated with TBtools
494
+
495
+ ## 📄 License
496
+
497
+ This CLI wrapper is released under the **MIT License** (see [LICENSE](LICENSE)):
498
+ you may use, copy, modify, and distribute it freely, provided the copyright notice and
499
+ this permission notice are preserved in all copies or substantial portions.
500
+
501
+ The underlying [TBtools](https://github.com/CJ-Chen/TBtools) toolkit is also MIT-licensed
502
+ by its author Chengjie Chen. This project is an independent wrapper and is not affiliated with TBtools.
503
+
504
+ > 文档以英文版为准;命令帮助信息以 `tbtools <cmd> --help` 输出为准。