ChELL: ChELL 执行分层逻辑
ChRIS 互动壳
ChELL是一个命令行外壳,将一个Chris分布式计算平台作为熟悉的Unix文件系统来呈现. 如果你知道的话 bash 或者说 zsh,你已经知道大部分ChELL.
安装
npm install -g @fnndsc/chell
要求节点.js 20.12. 此安装 chell 命令 - 见 开始 连接到 CUBE.
概念
ChRIS将数据,分析工具和结果存储在一个REST API背后. ChELL 将所有这些映射到路径上:
- 您的数据生活在
/home/<user>/ - 每个注册插件和管道都是虚拟可执行文件
/bin - 系统配置可读于
/etc - PACS 查询结果表面
/net/pacs/queries/
您的导航 cd,检查与 ls,将文件读取到 cat,并引用插件名称来进行分析——与任何Unix系统中使用的肌肉内存相同.
PACS检索还可以直接确定新分析的投入:
pacs query AccessionNumber:12345678
pacs pull /net/pacs/queries/.../Study_... --new-feed "Brain MRI"
--new-feed 等待完整选中的系列集, 创建一个 feed start
时间 pl-dircopy,并打印种子ID,根任务ID,并打印种子路径. 没有
旗帜, pacs pull 只获取 CUBE 存储中的数据.
跑过被拉到的地方是它自己的一行: gather process <plugin|pipeline>
一次跑遍整个组, 从它的根。 见
PACS 查询/ 检索/ 解析。 。 。 .
虚拟文件系统
ChELL文件系统有两种路径:
- CFS( 立方体FS) ——真实的Chris存储:您上传的文件,种子输出,同义链接文件. 可读可写可写可坚持.
- VFS( 虚拟) ——从API资源上合成了苍蝇:插件,配置,PACS结果. 只读视图, 不存储字节 .
| 路径 | 类型 | 你看见的 |
|---|---|---|
/home/<user>/ | 爱幼学校 | 您上传的文件和目录 |
/home/<user>/feeds/ | 爱幼学校 | 您的分析信息及其输出树 |
/PIPELINES/ | 爱幼学校 | 共享管道产出数据 |
/PUBLIC/ | 爱幼学校 | 公开查阅的文件 |
/SERVICES/ | 爱幼学校 | 服务级数据 |
/SHARED/ | 爱幼学校 | 用户共享数据 |
*.chrislink | 爱幼学校 | 与其他 ChRIS 路径的符号链接 |
/bin | VFS 飞行器 | 在此 CUBE 中注册的每个插件和管道 |
/usr/bin | VFS 飞行器 | 内建 shell 命令 (id, (中文(简体) ), whoami, (中文(简体) ), whereami, (...) (中文(简体) ) |
/etc/ | VFS 飞行器 | 配置: 计算环境、 组、 用户、 CUBE 信息 |
/net/pacs/queries/ | VFS 飞行器 | PACS 查询结果集 |
/proc/jobs/ | VFS 飞行器 | 任务监测——所有插件实例的活状态 |
cd /etc
cat compute.yaml # inspect available compute environments
cat group # list groups and their current CUBE users
cd /bin
ls pl-mri* # browse MRI-related plugins
cd /home/chris/feeds
ls -l # see your analysis feeds
连结关系( E).chrislink 文档)
CRIS 用途 .chrislink 文件作为符号链接. ls -l 让他们成为 l 条目; cd 财务报告和审定财务报表 cat 以透明的方式跟随他们。 链接目标通过VFS调度器解决——它可以指向虚拟树的任何地方.
运行插件
因为插件住在里面 /bin 作为虚拟可执行文件,您引用 直接按名称 就像运行一个本地二进制。 CHELL 使用您的 当前工作目录 自动确定上下文,所以你不需要提供 --previous_id 手边.
案例1——从数据目录开始新的分析
cd /home/chris/uploads/SAG-anon
pl-fshack-v1.2.0 --inputFile brain.mgz --outputFile brain.nii
ChELL检测到您是 在种子之外它:
- 自动运行
pl-dircopy在当前目录上将数据设置为新种子 - 将您的插件附在目录实例上作为下一步
为你创造了新的饲料——没有锅炉板.
案例2——继续进行现有分析
cd /home/chris/feeds/feed_123/pl-fshack_456/data
pl-segmentation-v1.0.0 --threshold 0.5
ChELL检测到您是 在种子中它从路径中提取插件实例 ID(456)并用作 previous_id 自动。 新插件节点被接入已存在的计算 DAG.
命名种子和实例
使用 -- 从种子级别上下文中分离插件参数:
pl-fshack-v1.2.0 --inputFile brain.mgz -- feed_title="Brain MRI Study" instance_title="FreeSurfer recon"
之前的一切,都一样 -- 转到插件; 设置 Chris 元数据后的一切.
检查已版本的插件
可执行文件本身会显示帮助、参数和寄存文件:
pl-fshack-v1.2.0 --help
pl-fshack-v1.2.0 --parameters
pl-fshack-v1.2.0 --readme
pl-fshack-v1.2.0 --readme --raw > pl-fshack-README.md
标记下 README 是终端显示的样式, 而 reStructured Text 是
保留为书面. --raw 只返回原始的 README 内容,制作
它安全地用于管道和定向。 这些表格在当地和
远程会话.
监测
job inspect <instance_id>
jobs list --feed <feed_id>
安装新插件
# Search the public peer store
store search simplefs
# Install (auto-discovers compute resources)
store install pl-simplefsapp
# Install pinned to specific compute
store install pl-simplefsapp --compute ares,argentum
store install (和 plugin add执行一个分三个阶段的决议:
- CUBE 报告已经登记
- 在对等端商店中找到( E)
store set选择它; 立方体. chrisproject.org 默认) → 通过admin API导入 - 未找到 – Docker 提取和注册
plugin add 也可以在另一个 CUBE 中取一个插件 URL,由 CUBE 自行获取,并且 --json <file>一个描述文件.
从插件索引中填入 CUBE
plugin sync --plan # what FNNDSC/chris-plugins would add, skip and report here
sudo plugin sync # the plan, one question, then the adds
plugin validate ./plugins # check descriptors without a CUBE
plugin sync 绝不删除或更改已经在那里的插件;见 文件/插件.adoc。 。 。 .
当登记需要升级时,ChELL报告原始故障和
建议明确的重试, 例如 sudo store install pl-simplefsapp。 。 。 .
sudo 使用隐藏密码的管理员证书提示
产生的 CUBE 身份只用于嵌入命令。 远程会议
这些提示和引导 停留在原客户表面.
运行管道
A 类 管道 是一个已注册的模板——一个命名的、可重复使用的插件图,其参数默认连接在一起。 管道是静态的定义;它们不是自行运行.
A 类 工作流程 是一个管道的活性即时化, 连接在一个特定的饲料节点。 创建工作流程是"运行"一个管道的行为:ChrIS按顺序安排每个插件步骤,将一个输出输入下一个输入.
# Browse registered pipeline templates
pipeline list
pipeline info <name|id>
# Inspect or draw a registered template
pipeline manifest <name|id|slug>
pipeline diagram <name|id>
# Run by invoking its /bin name in the current context
brain-segmentation
brain-segmentation --segmentation.threshold 0.5
brain-segmentation --paramFile ~/experiments/run-1.yaml
# Equivalent explicit form
pipeline run brain-segmentation --previous <instance_id>
# Monitor all the jobs it spawns
jobs list --feed <feed_id>
<pipeline> --manifest 是完整注册的直接别名
引用 YAML, 包括管道标识、 存储值、 计算位置、 资源
控制 和地形学. cat /bin/<pipeline> 故意继续立即:
它只打印显示命令的缓存可执行摘要.
<pipeline> --diagram 直接绘图别名; 添加 --withargs 用于存储
默认或 --signalflow 信号花YAML。 管道参数和执行
控制使用情况 --<node>.<field> <value>时 --paramFile <cfs-file> 读取一个
耐用CFS的重叠很少 ChELL 自动解决当前上下文;
--previous <instance_id> 选择一个明确的附件点.
监测工作: /proc/jobs/
因为每个插件在Chris同步运行, /proc/jobs/ 是你们回来看看发生了什么 它以可导航的 DAG 显示您所有可见的种子及其插件实例 —— 与计算实际运行的树结构相同 .
/proc/jobs/
└── feed_123/
├── status ← aggregate feed status
├── title ← feed name
└── pl-dircopy_456/ ← root node (j = job type in ls -l)
├── status ← finishedSuccessfully
├── params
├── log
└── pl-fshack_789/
├── status ← started
└── pl-segmentation_1011/
└── status ← scheduled
ls -l /proc/jobs/feed_123 # see all nodes with colour-coded status
cat /proc/jobs/feed_123/pl-fshack_789/status # terminal cached; active refreshed
cat /proc/jobs/feed_123/pl-fshack_789/log # stdout/stderr
cat /proc/jobs/feed_123/pl-fshack_789/params # what it ran with
# The whole feed as one DAG view
feed tree 123 # collapsed, status-coloured tree (⋈ marks joins)
feed tree 123 --focus 789 # scope to one node's subtree
feed diagram --signalflow 123 | signalflow - # emit the DAG; render with your own tools
pipeline diagram brain-segmentation # shallow registered-pipeline template
brain-segmentation --diagram --withargs # /bin alias with stored defaults
brain-segmentation --signalflow | signalflow - # direct SignalFlow alias
# Search across all jobs
tree /proc/jobs | grep 789 # find instance 789 and see its full lineage
# Cancel a running job
rm /proc/jobs/feed_123/pl-fshack_789
# Cancel all jobs in a feed (requires -r)
rm -r /proc/jobs/feed_123
状态颜色在 ls -l绿色= finishedSuccessfully黄色= started编号 :running灰色 = scheduled编号 :cancelled红色 = finishedWithError。 。 。 .
连接起动索引可见的种子列表,并温暖工作地形
背景情况。 一个守护进程首先恢复了 其识别范围的地方检查站,
验证其饲料是否仍然可见,并为可用地貌学服务
和CUBE调和 终端状态可以恢复; 活动
状态和日志仍然有效。 检查新鲜度和饲料范围 proc stat数字 :
proc stat # feed scope, loaded jobs, sweep and checkpoint state
proc stat feed_123 # cached detail for one feed
proc retry # resume a failed topology sweep at its failed page
proc refresh # rebuild all and start one replacement topology sweep
proc refresh feed_123 # scope to one feed
如果启动预补被禁用,则首先访问会建立索引懒散. 运行一个
满 proc refresh 在从另一个客户端或网络图形界面开展活动之后; CUBE 是
总是权威的.
自兹 /proc 路径编码实例ID,您也可以 继续从任何节点进行分析 只是通过 cd- 进入其中:
cd /proc/jobs/feed_123/pl-dircopy_456
pl-fshack-v1.2.0 --inputFile brain.mgz # attaches here, no --previous_id needed
密钥命令
文件系统
ls [-l] [-h] [-a] # list directory
cd <path> # change directory (follows .chrislinks)
cat <file> # print file content
edit <file> # open in $EDITOR, save back to ChRIS
cp / mv / rm # copy, move, delete
mkdir / touch # create directory or empty file
upload <local> <remote> # upload local file or directory tree
download <remote> <local>
tree # recursive listing
du # disk usage
资源
plugin list / search / inspect / run
plugins list [--search <term>] [--all]
<plugin>-v<version> --help / --parameters / --readme [--raw]
feed list / inspect
feeds list [--user <name>] [--all]
feed note <id> # read feed note
feed note edit <id> # edit feed note in $EDITOR
feed comments <id> # list comments
pipeline list / info / manifest / run / source / diagram
workflow list / create
job inspect <id>
compute list # list compute environments
存储
store list # browse peer store
store search <query>
store install <plugin> # install with admin escalation if needed
store inspect # show current peer store URL
store set <url> # override peer store
系统
id # CUBE UID, projected primary GID, and memberships
whoami # current CUBE user
whereami # current CUBE URL (use pwd for working directory)
prompt list # list prompt themes
prompt default # compact single-line prompt
prompt p10k # vivid two-line powerline prompt
connect --user <u> --password <p> <url>
logout
proc stat # show /proc feed scope, freshness, and checkpoint
proc retry # resume failed /proc reconciliation without starting over
proc refresh # rebuild /proc job cache and restart topology warm-up
proc refresh feed_123 # scope rebuild to one feed
两个提示主题都显示为 ~这样
/home/chris/uploads 显示为 ~/uploads编辑 default 财务报告和审定财务报表 p10k 主题
共享一个生动真实的彩色调色板; p10k 添加背景填充的电线
区域、高相通字体、优美图标和可选状态信息.
图标和分隔符需要内德字体. 使用 prompt --show 预览
即时行动.
P10k 提示命令 PACS, CUBE URL, 用户, 路径, 以及 /proc 从左到左
对;可选物理模式指示和命令遥测随附
核心序列 。 可见 /proc 区分冷索引、 缓存
刷新并刷新失败; 一旦 CUBE 授权索引消失
是当前.
开始
# Start the shell, then connect interactively
chell
> connect --user chris --password chris1234 http://localhost:8000/api/v1/
# Connect via flags
chell -u chris -p chris1234 http://localhost:8000/api/v1/
# Compact user@host form (password prompted if omitted)
chell chris@localhost:8000/api/v1/
chell -p chris1234 chris@localhost:8000/api/v1/
脚本
# Non-interactive: single command via -c
chell -c "ls -l /home/user/study" > study_contents.txt
chell -c "store install pl-dircopy"
# Run a script file
chell -f my_workflow.chell
建筑
ChELL是"桑德威克模型"的演示层:
- 铃声 ——REPL,内建,制表完成,即时
- 吉利尔 ——键入命令,视图,CLI控制器
- 萨尔萨 ——业务逻辑,VFS调度器,意向层
- 库明 ——连接,上下文持续,状态
@fnndsc/chrisapi- 原始 Chris REST 客户端
进一步阅读
| 文档 | 专题 |
|---|---|
| 文件/vfs.adoc | VFS架构——提供者,发送,路径分辨率 |
| 文件/插件:adoc | 运行插件 — 新 feed vs 继续 feed, 等待, 命名运行 |
| 文件/商店.adoc | 储存安装——三相分解,管理升级 |
| 文件/插件.adoc | 注册插件 - plugin add从索引中填入 CUBE(plugin sync, (中文(简体) ), plugin validate, (中文(简体) ), plugin index |
| 文件/日志.adoc | 连接和认证选项 |
| 文件/执行.adoc | 如何援引果壳:REPL, -c、脚本、旗帜 |
| ././docs/ manifest.adoc | 脚本和明显语言: @param变量, expect, (中文(简体) ), play |
| 文件/命令.adoc | 完整命令参考 |
| 文件/文件目录 | PACS 查询和检索 |
| 文件/物理模型.adoc | 物理对逻辑文件系统模式 |
| 文件/目录.adoc | 已知的边缘案例和工作 |
| 文件/建筑图书.adoc | 完整的建筑深潜 |
| 内 容 提 要 | 域名词汇表-ChrIS概念,权限模型,资源合同 |
许可证
部分 Chris项目。 。 。 .
ChELL是ChRIS项目的一部分.
- 30岁