@yeyuan98/opencode-bioresearcher-plugin 1.6.7 → 1.6.8-alpha.0

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 (200) hide show
  1. package/LICENSE +0 -0
  2. package/README.md +0 -0
  3. package/dist/agents/bioresearcher/index.d.ts +0 -0
  4. package/dist/agents/bioresearcher/index.js +0 -0
  5. package/dist/agents/bioresearcher/prompt.d.ts +0 -0
  6. package/dist/agents/bioresearcher/prompt.js +0 -0
  7. package/dist/agents/bioresearcherDR/index.d.ts +0 -0
  8. package/dist/agents/bioresearcherDR/index.js +0 -0
  9. package/dist/agents/bioresearcherDR/prompt.d.ts +0 -0
  10. package/dist/agents/bioresearcherDR/prompt.js +0 -0
  11. package/dist/agents/bioresearcherDR_worker/index.d.ts +0 -0
  12. package/dist/agents/bioresearcherDR_worker/index.js +0 -0
  13. package/dist/agents/bioresearcherDR_worker/prompt.d.ts +0 -0
  14. package/dist/agents/bioresearcherDR_worker/prompt.js +0 -0
  15. package/dist/index.d.ts +0 -0
  16. package/dist/index.js +4 -3
  17. package/dist/shared/skill-sync.d.ts +0 -0
  18. package/dist/shared/skill-sync.js +0 -0
  19. package/dist/shared/tool-restrictions.d.ts +0 -0
  20. package/dist/shared/tool-restrictions.js +0 -0
  21. package/dist/skills/bioresearcher-core/README.md +0 -0
  22. package/dist/skills/bioresearcher-core/SKILL.md +0 -0
  23. package/dist/skills/bioresearcher-core/examples/contexts.json +0 -0
  24. package/dist/skills/bioresearcher-core/examples/data-exchange-example.md +0 -0
  25. package/dist/skills/bioresearcher-core/examples/template.md +0 -0
  26. package/dist/skills/bioresearcher-core/patterns/bioresearcher/analysis-methods.md +0 -0
  27. package/dist/skills/bioresearcher-core/patterns/bioresearcher/best-practices.md +0 -0
  28. package/dist/skills/bioresearcher-core/patterns/bioresearcher/python-standards.md +0 -0
  29. package/dist/skills/bioresearcher-core/patterns/bioresearcher/report-template.md +0 -0
  30. package/dist/skills/bioresearcher-core/patterns/bioresearcher/tool-selection.md +0 -0
  31. package/dist/skills/bioresearcher-core/patterns/calculator.md +0 -0
  32. package/dist/skills/bioresearcher-core/patterns/citations.md +0 -0
  33. package/dist/skills/bioresearcher-core/patterns/data-exchange.md +0 -0
  34. package/dist/skills/bioresearcher-core/patterns/json-tools.md +0 -0
  35. package/dist/skills/bioresearcher-core/patterns/progress.md +0 -0
  36. package/dist/skills/bioresearcher-core/patterns/rate-limiting.md +0 -0
  37. package/dist/skills/bioresearcher-core/patterns/retry.md +0 -0
  38. package/dist/skills/bioresearcher-core/patterns/shell-commands.md +0 -0
  39. package/dist/skills/bioresearcher-core/patterns/subagent-waves.md +0 -0
  40. package/dist/skills/bioresearcher-core/patterns/table-tools.md +0 -0
  41. package/dist/skills/bioresearcher-core/patterns/user-confirmation.md +0 -0
  42. package/dist/skills/bioresearcher-core/python/template.md +0 -0
  43. package/dist/skills/bioresearcher-core/python/template.py +0 -0
  44. package/dist/skills/bioresearcher-tests/README.md +0 -0
  45. package/dist/skills/bioresearcher-tests/SKILL.md +0 -0
  46. package/dist/skills/bioresearcher-tests/pyproject.toml +0 -0
  47. package/dist/skills/bioresearcher-tests/resources/json_samples/in_markdown.md.gz +0 -0
  48. package/dist/skills/bioresearcher-tests/resources/json_samples/nested_object.json.gz +0 -0
  49. package/dist/skills/bioresearcher-tests/resources/json_samples/schema_draft7.json.gz +0 -0
  50. package/dist/skills/bioresearcher-tests/resources/json_samples/simple_array.json.gz +0 -0
  51. package/dist/skills/bioresearcher-tests/resources/json_samples/simple_object.json.gz +0 -0
  52. package/dist/skills/bioresearcher-tests/resources/obo_sample.obo.gz +0 -0
  53. package/dist/skills/bioresearcher-tests/resources/pubmed_sample.xml.gz +0 -0
  54. package/dist/skills/bioresearcher-tests/resources/table_sample.xlsx.gz +0 -0
  55. package/dist/skills/bioresearcher-tests/test_cases/json_tests.md +0 -0
  56. package/dist/skills/bioresearcher-tests/test_cases/misc_tests.md +0 -0
  57. package/dist/skills/bioresearcher-tests/test_cases/parser_tests.md +0 -0
  58. package/dist/skills/bioresearcher-tests/test_cases/skill_tests.md +0 -0
  59. package/dist/skills/bioresearcher-tests/test_cases/table_tests.md +0 -0
  60. package/dist/skills/bioresearcher-tests/test_runner.py +0 -0
  61. package/dist/skills/demo-skill/SKILL.md +0 -0
  62. package/dist/skills/demo-skill/demo_script.py +0 -0
  63. package/dist/skills/env-jsonc-setup/SKILL.md +0 -0
  64. package/dist/skills/gromacs-guides/SKILL.md +0 -0
  65. package/dist/skills/gromacs-guides/guides/create_index.md +96 -96
  66. package/dist/skills/gromacs-guides/guides/inspect_tpr.md +160 -160
  67. package/dist/skills/long-table-summary/SKILL.md +0 -0
  68. package/dist/skills/long-table-summary/combine_outputs.py +0 -0
  69. package/dist/skills/long-table-summary/generate_prompts.py +0 -0
  70. package/dist/skills/long-table-summary/pyproject.toml +0 -0
  71. package/dist/skills/pubmed-weekly/SKILL.md +0 -0
  72. package/dist/skills/pubmed-weekly/pubmed_weekly.py +0 -0
  73. package/dist/skills/pubmed-weekly/pyproject.toml +0 -0
  74. package/dist/skills/python-setup-uv/SKILL.md +0 -0
  75. package/dist/tools/db/backends/index.d.ts +0 -0
  76. package/dist/tools/db/backends/index.js +0 -0
  77. package/dist/tools/db/backends/mongodb/backend.d.ts +0 -0
  78. package/dist/tools/db/backends/mongodb/backend.js +0 -0
  79. package/dist/tools/db/backends/mongodb/connection.d.ts +0 -0
  80. package/dist/tools/db/backends/mongodb/connection.js +0 -0
  81. package/dist/tools/db/backends/mongodb/index.d.ts +0 -0
  82. package/dist/tools/db/backends/mongodb/index.js +0 -0
  83. package/dist/tools/db/backends/mongodb/translator.d.ts +0 -0
  84. package/dist/tools/db/backends/mongodb/translator.js +0 -0
  85. package/dist/tools/db/backends/mysql/backend.d.ts +0 -0
  86. package/dist/tools/db/backends/mysql/backend.js +0 -0
  87. package/dist/tools/db/backends/mysql/connection.d.ts +0 -0
  88. package/dist/tools/db/backends/mysql/connection.js +0 -0
  89. package/dist/tools/db/backends/mysql/index.d.ts +0 -0
  90. package/dist/tools/db/backends/mysql/index.js +0 -0
  91. package/dist/tools/db/backends/mysql/translator.d.ts +0 -0
  92. package/dist/tools/db/backends/mysql/translator.js +0 -0
  93. package/dist/tools/db/core/base.d.ts +0 -0
  94. package/dist/tools/db/core/base.js +0 -0
  95. package/dist/tools/db/core/config-loader.d.ts +0 -0
  96. package/dist/tools/db/core/config-loader.js +0 -0
  97. package/dist/tools/db/core/index.d.ts +0 -0
  98. package/dist/tools/db/core/index.js +0 -0
  99. package/dist/tools/db/core/jsonc-parser.d.ts +0 -0
  100. package/dist/tools/db/core/jsonc-parser.js +0 -0
  101. package/dist/tools/db/core/validator.d.ts +0 -0
  102. package/dist/tools/db/core/validator.js +0 -0
  103. package/dist/tools/db/index.d.ts +0 -0
  104. package/dist/tools/db/index.js +0 -0
  105. package/dist/tools/db/interface/backend.d.ts +0 -0
  106. package/dist/tools/db/interface/backend.js +0 -0
  107. package/dist/tools/db/interface/connection.d.ts +0 -0
  108. package/dist/tools/db/interface/connection.js +0 -0
  109. package/dist/tools/db/interface/index.d.ts +0 -0
  110. package/dist/tools/db/interface/index.js +0 -0
  111. package/dist/tools/db/interface/query.d.ts +0 -0
  112. package/dist/tools/db/interface/query.js +0 -0
  113. package/dist/tools/db/interface/schema.d.ts +0 -0
  114. package/dist/tools/db/interface/schema.js +0 -0
  115. package/dist/tools/db/tools.d.ts +0 -0
  116. package/dist/tools/db/tools.js +0 -0
  117. package/dist/tools/db/utils.d.ts +0 -0
  118. package/dist/tools/db/utils.js +0 -0
  119. package/dist/tools/misc/calculator.d.ts +0 -0
  120. package/dist/tools/misc/calculator.js +0 -0
  121. package/dist/tools/misc/index.d.ts +1 -0
  122. package/dist/tools/misc/index.js +1 -0
  123. package/dist/tools/misc/json-extract.d.ts +0 -0
  124. package/dist/tools/misc/json-extract.js +0 -0
  125. package/dist/tools/misc/json-infer.d.ts +0 -0
  126. package/dist/tools/misc/json-infer.js +0 -0
  127. package/dist/tools/misc/json-validate.d.ts +0 -0
  128. package/dist/tools/misc/json-validate.js +0 -0
  129. package/dist/tools/misc/markdown-to-html.d.ts +19 -0
  130. package/dist/tools/misc/markdown-to-html.js +109 -0
  131. package/dist/tools/misc/marked-bundle.d.ts +1 -0
  132. package/dist/tools/misc/marked-bundle.js +1 -0
  133. package/dist/tools/misc/timer.d.ts +0 -0
  134. package/dist/tools/misc/timer.js +0 -0
  135. package/dist/tools/parser/obo/index.d.ts +0 -0
  136. package/dist/tools/parser/obo/index.js +0 -0
  137. package/dist/tools/parser/obo/obo.d.ts +0 -0
  138. package/dist/tools/parser/obo/obo.js +0 -0
  139. package/dist/tools/parser/obo/types.d.ts +0 -0
  140. package/dist/tools/parser/obo/types.js +0 -0
  141. package/dist/tools/parser/obo/utils.d.ts +0 -0
  142. package/dist/tools/parser/obo/utils.js +0 -0
  143. package/dist/tools/parser/pubmed/index.d.ts +0 -0
  144. package/dist/tools/parser/pubmed/index.js +0 -0
  145. package/dist/tools/parser/pubmed/pubmed.d.ts +0 -0
  146. package/dist/tools/parser/pubmed/pubmed.js +0 -0
  147. package/dist/tools/parser/pubmed/types.d.ts +0 -0
  148. package/dist/tools/parser/pubmed/types.js +0 -0
  149. package/dist/tools/parser/pubmed/utils.d.ts +0 -0
  150. package/dist/tools/parser/pubmed/utils.js +0 -0
  151. package/dist/tools/sandbox/bash-parser.d.ts +0 -0
  152. package/dist/tools/sandbox/bash-parser.js +0 -0
  153. package/dist/tools/sandbox/escape-scenarios.test.d.ts +0 -0
  154. package/dist/tools/sandbox/escape-scenarios.test.js +0 -0
  155. package/dist/tools/sandbox/expander.d.ts +0 -0
  156. package/dist/tools/sandbox/expander.js +0 -0
  157. package/dist/tools/sandbox/final-verification.test.d.ts +0 -0
  158. package/dist/tools/sandbox/final-verification.test.js +0 -0
  159. package/dist/tools/sandbox/hooks.d.ts +0 -0
  160. package/dist/tools/sandbox/hooks.js +0 -0
  161. package/dist/tools/sandbox/index.d.ts +0 -0
  162. package/dist/tools/sandbox/index.js +0 -0
  163. package/dist/tools/sandbox/manager.d.ts +0 -0
  164. package/dist/tools/sandbox/manager.js +0 -0
  165. package/dist/tools/sandbox/sandbox.integration.test.d.ts +0 -0
  166. package/dist/tools/sandbox/sandbox.integration.test.js +0 -0
  167. package/dist/tools/sandbox/sandbox.test.d.ts +0 -0
  168. package/dist/tools/sandbox/sandbox.test.js +0 -0
  169. package/dist/tools/sandbox/tool.d.ts +0 -0
  170. package/dist/tools/sandbox/tool.js +0 -0
  171. package/dist/tools/sandbox/types.d.ts +0 -0
  172. package/dist/tools/sandbox/types.js +0 -0
  173. package/dist/tools/sandbox/validator.d.ts +0 -0
  174. package/dist/tools/sandbox/validator.js +0 -0
  175. package/dist/tools/skill/frontmatter.d.ts +0 -0
  176. package/dist/tools/skill/frontmatter.js +0 -0
  177. package/dist/tools/skill/index.d.ts +0 -0
  178. package/dist/tools/skill/index.js +0 -0
  179. package/dist/tools/skill/registry.d.ts +0 -0
  180. package/dist/tools/skill/registry.js +0 -0
  181. package/dist/tools/skill/tool.d.ts +0 -0
  182. package/dist/tools/skill/tool.js +0 -0
  183. package/dist/tools/skill/types.d.ts +0 -0
  184. package/dist/tools/skill/types.js +0 -0
  185. package/dist/tools/table/index.d.ts +0 -0
  186. package/dist/tools/table/index.js +0 -0
  187. package/dist/tools/table/tools.d.ts +0 -0
  188. package/dist/tools/table/tools.js +0 -0
  189. package/dist/tools/table/utils.d.ts +0 -0
  190. package/dist/tools/table/utils.js +0 -0
  191. package/dist/version.d.ts +1 -1
  192. package/dist/version.js +1 -1
  193. package/package.json +3 -2
  194. package/dist/skills/pzfx-io/SKILL.md +0 -111
  195. package/dist/skills/pzfx-io/guides/convert.md +0 -102
  196. package/dist/skills/pzfx-io/guides/read-parse.md +0 -116
  197. package/dist/skills/pzfx-io/guides/schema-reference.md +0 -167
  198. package/dist/skills/pzfx-io/guides/write-edit.md +0 -150
  199. package/dist/skills/pzfx-io/pyproject.toml +0 -6
  200. package/dist/skills/pzfx-io/pzfx.py +0 -1156
package/LICENSE CHANGED
File without changes
package/README.md CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/dist/index.d.ts CHANGED
File without changes
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@ import { createBioResearcherDRAgent } from "./agents/bioresearcherDR/index";
4
4
  import { createBioResearcherDRWorkerAgent } from "./agents/bioresearcherDR_worker/index";
5
5
  import { tableTools } from "./tools/table/index";
6
6
  import { dbTools } from "./tools/db/index";
7
- import { blockingTimer, calculator, jsonExtract, jsonValidate, jsonInfer } from "./tools/misc/index";
7
+ import { blockingTimer, calculator, jsonExtract, jsonValidate, jsonInfer, markdownToHtml } from "./tools/misc/index";
8
8
  import { parse_pubmed_articleSet } from "./tools/parser/pubmed";
9
9
  import { parse_obo_file } from "./tools/parser/obo";
10
10
  export const BioResearcherPlugin = async (input) => {
@@ -23,7 +23,7 @@ export const BioResearcherPlugin = async (input) => {
23
23
  "tableGroupBy", "tablePivotSummary", "tableAppendRows", "tableUpdateCell",
24
24
  "tableCreateFile", "dbQuery", "dbListTables", "dbDescribeTable",
25
25
  "calculator", "blockingTimer", "jsonExtract", "jsonValidate", "jsonInfer",
26
- "parse_pubmed_articleSet", "parse_obo_file",
26
+ "parse_pubmed_articleSet", "parse_obo_file", "markdownToHtml",
27
27
  ];
28
28
  if (!pluginToolIds.includes(input.toolID))
29
29
  return;
@@ -38,7 +38,8 @@ export const BioResearcherPlugin = async (input) => {
38
38
  jsonValidate,
39
39
  jsonInfer,
40
40
  parse_pubmed_articleSet,
41
- parse_obo_file
41
+ parse_obo_file,
42
+ markdownToHtml
42
43
  }
43
44
  };
44
45
  };
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -1,96 +1,96 @@
1
- # Creating Index Files for Protein Chains
2
-
3
- ## Basic Method
4
-
5
- ```bash
6
- # Interactive mode
7
- gmx make_ndx -f <tpr_file> -o <index_file.ndx>
8
-
9
- # Non-interactive: split protein group by chain
10
- printf "splitch <protein_group>\nq\n" | gmx make_ndx -f <tpr_file> -o <index_file.ndx>
11
- ```
12
-
13
- ## Caveat: `splitch` Artefacts
14
-
15
- `splitch` uses topological connectivity and may incorrectly split a single chain into multiple groups when:
16
- - Hydrogen atoms were rebuilt by `pdb2gmx` (N-terminal residues get extra H1/H2/H3 atoms)
17
- - Residue numbering has gaps (e.g., residues 1-18, then 26-108)
18
-
19
- **Symptom**: After `splitch`, a single protein chain appears as multiple `Protein_chainN` groups where the atom counts don't match expected molecule boundaries.
20
-
21
- ## Recommended Workflow: Fix Incorrectly Split Chains
22
-
23
- **Step 1: Identify the incorrect split**
24
- After `splitch`, press Enter (empty line) in `make_ndx` to list all groups. Compare atom counts against your expected molecule sizes.
25
-
26
- **Step 2: Merge the incorrectly split groups**
27
- ```
28
- <group_N> | <group_M>
29
- ```
30
- This creates a new merged group named `Protein_chainN_Protein_chainM` at the end of the list.
31
-
32
- **Step 3: Verify the merged group**
33
- Press Enter to list groups again. The merged group should have the correct total atom count.
34
-
35
- **Step 4: Delete the incorrect split groups**
36
- Delete in DESCENDING order to avoid index shifting confusion:
37
- ```
38
- del <higher_index>
39
- del <lower_index>
40
- ```
41
- After `k` deletions, the merged group index shifts down by `k`.
42
-
43
- **Step 5: Rename the merged group (optional)**
44
- ```
45
- name <final_index> <custom_name>
46
- ```
47
-
48
- ## Generic Example (interactive `make_ndx` session)
49
-
50
- ```
51
- > splitch 1
52
- Found N chains
53
- 1: XXX atoms (a to b)
54
- 2: YY atoms (c to d) <-- suspiciously small, may be incorrect split
55
- 3: ZZZ atoms (e to f) <-- remainder of same chain
56
-
57
- > <-- press Enter to list groups
58
- ...
59
- N Protein_chain1 XXX atoms
60
- N+1 Protein_chain2 YY atoms <-- wrong split (too small)
61
- N+2 Protein_chain3 ZZZ atoms <-- wrong split (remainder)
62
- ...
63
-
64
- > N+1 | N+2 <-- merge the incorrectly split groups
65
- Merged two groups with OR: YY ZZZ -> (YY+ZZZ)
66
-
67
- > <-- press Enter to verify
68
- ...
69
- M Protein_chain2_Protein_chain3 (YY+ZZZ) atoms <-- correct total!
70
-
71
- > del N+2 <-- delete higher index first
72
- > del N+1 <-- then lower index
73
-
74
- > <-- press Enter
75
- ...
76
- M-2 Protein_chain2_Protein_chain3 (YY+ZZZ) atoms <-- shifted!
77
-
78
- > name M-2 <your_chain_name>
79
- > q
80
- ```
81
-
82
- **Key insight**: After deleting `k` groups that were created AFTER the merged group, the merged group's index decreases by `k`.
83
-
84
- ## Non-interactive Equivalent
85
-
86
- ```bash
87
- printf "splitch 1\n<group_N> | <group_M>\ndel <higher>\ndel <lower>\nname <final> <name>\nq\n" | \
88
- gmx make_ndx -f <tpr_file> -o <index_file.ndx>
89
- ```
90
-
91
- ## Creating C-alpha Groups
92
-
93
- In `make_ndx` interactive mode:
94
- ```
95
- a CA & <chain_group> # creates C-alpha selection for specified chain
96
- ```
1
+ # Creating Index Files for Protein Chains
2
+
3
+ ## Basic Method
4
+
5
+ ```bash
6
+ # Interactive mode
7
+ gmx make_ndx -f <tpr_file> -o <index_file.ndx>
8
+
9
+ # Non-interactive: split protein group by chain
10
+ printf "splitch <protein_group>\nq\n" | gmx make_ndx -f <tpr_file> -o <index_file.ndx>
11
+ ```
12
+
13
+ ## Caveat: `splitch` Artefacts
14
+
15
+ `splitch` uses topological connectivity and may incorrectly split a single chain into multiple groups when:
16
+ - Hydrogen atoms were rebuilt by `pdb2gmx` (N-terminal residues get extra H1/H2/H3 atoms)
17
+ - Residue numbering has gaps (e.g., residues 1-18, then 26-108)
18
+
19
+ **Symptom**: After `splitch`, a single protein chain appears as multiple `Protein_chainN` groups where the atom counts don't match expected molecule boundaries.
20
+
21
+ ## Recommended Workflow: Fix Incorrectly Split Chains
22
+
23
+ **Step 1: Identify the incorrect split**
24
+ After `splitch`, press Enter (empty line) in `make_ndx` to list all groups. Compare atom counts against your expected molecule sizes.
25
+
26
+ **Step 2: Merge the incorrectly split groups**
27
+ ```
28
+ <group_N> | <group_M>
29
+ ```
30
+ This creates a new merged group named `Protein_chainN_Protein_chainM` at the end of the list.
31
+
32
+ **Step 3: Verify the merged group**
33
+ Press Enter to list groups again. The merged group should have the correct total atom count.
34
+
35
+ **Step 4: Delete the incorrect split groups**
36
+ Delete in DESCENDING order to avoid index shifting confusion:
37
+ ```
38
+ del <higher_index>
39
+ del <lower_index>
40
+ ```
41
+ After `k` deletions, the merged group index shifts down by `k`.
42
+
43
+ **Step 5: Rename the merged group (optional)**
44
+ ```
45
+ name <final_index> <custom_name>
46
+ ```
47
+
48
+ ## Generic Example (interactive `make_ndx` session)
49
+
50
+ ```
51
+ > splitch 1
52
+ Found N chains
53
+ 1: XXX atoms (a to b)
54
+ 2: YY atoms (c to d) <-- suspiciously small, may be incorrect split
55
+ 3: ZZZ atoms (e to f) <-- remainder of same chain
56
+
57
+ > <-- press Enter to list groups
58
+ ...
59
+ N Protein_chain1 XXX atoms
60
+ N+1 Protein_chain2 YY atoms <-- wrong split (too small)
61
+ N+2 Protein_chain3 ZZZ atoms <-- wrong split (remainder)
62
+ ...
63
+
64
+ > N+1 | N+2 <-- merge the incorrectly split groups
65
+ Merged two groups with OR: YY ZZZ -> (YY+ZZZ)
66
+
67
+ > <-- press Enter to verify
68
+ ...
69
+ M Protein_chain2_Protein_chain3 (YY+ZZZ) atoms <-- correct total!
70
+
71
+ > del N+2 <-- delete higher index first
72
+ > del N+1 <-- then lower index
73
+
74
+ > <-- press Enter
75
+ ...
76
+ M-2 Protein_chain2_Protein_chain3 (YY+ZZZ) atoms <-- shifted!
77
+
78
+ > name M-2 <your_chain_name>
79
+ > q
80
+ ```
81
+
82
+ **Key insight**: After deleting `k` groups that were created AFTER the merged group, the merged group's index decreases by `k`.
83
+
84
+ ## Non-interactive Equivalent
85
+
86
+ ```bash
87
+ printf "splitch 1\n<group_N> | <group_M>\ndel <higher>\ndel <lower>\nname <final> <name>\nq\n" | \
88
+ gmx make_ndx -f <tpr_file> -o <index_file.ndx>
89
+ ```
90
+
91
+ ## Creating C-alpha Groups
92
+
93
+ In `make_ndx` interactive mode:
94
+ ```
95
+ a CA & <chain_group> # creates C-alpha selection for specified chain
96
+ ```