多核/多会话Jupyter科学报告生成器和识字编程工具。
metys的Python项目详细描述
大都会
Metys是一个科学的报告生成器和一个类似于 刀或刀。和pweave一样,metys使用jupyter协议运行代码 嵌入到源文档中。与pweave不同,metys可以访问多个 jupyter内核位于同一个源文档中,还可以创建多个 同一内核的不同会话。
Metys目前是Alpha级软件。
处理Metys文档
Metys当前使用以下命令行运行。
metys foo.tmt
有许多命令行选项可用。将显示简短的说明 具有以下功能。
metys --help
输入格式
metys可以解析noweb、markdown或metys格式的源文档。格式
源文档的
--parser
命令行选项(如果指定)。带有文件的源文档
以nw
结尾的扩展名假定为noweb文档。有档案的
以md
结尾的扩展名假定为标记文档。所有其他文件
假设为Metys格式。
分析源文档会产生一系列逻辑块。这些块 是文本、代码或组块。文本块包含复制的文本 逐字记录到输出文档。代码块由jupyter内核计算 结果在输出文档中按照本地和全局 指定的选项。组块用于设置 分块或包含包含更多文本、代码和组分块的子文件。
noweb格式
noweb格式的文档可以包含文本或代码块,但不能包含组
块。文本块前面的一行只包含@
。代码块
前面有一行包含<;..>;=
,其中..
表示
键/值选项。文本和代码块都由开始的标记终止
新的一块。noweb文档中的第一个块假定为文本块。
在下面的示例文档中,要求maxima核求解一个三次方程,
一些代码被发送到python,然后maxima被要求绘制一个函数。拜托
请注意,缺少值的键值选项假定为块名称。
换句话说,<;<;foo,kernel=python>;=
等同于
<;<;name=foo,kernel=python>;=
Let's ask Maxima to solve a cubic equation.
<<kernel=maxima>>=
solve(x^3+x+1=0,x);
@
Next let Python say hello and have Maxima plot a hyperbolic paraboloid.
<<kernel=python>>=
print('Hello world!')
<<foo, kernel=maxima>>=
plot3d (u^2 - v^2, [u, -2, 2], [v, -3, 3], [grid, 100, 100],
[mesh_lines_color, false], [svg_plot, "m.svg"]);
@
That's all for now.
降价格式
标记格式的源文档可以包含文本或代码块,但不能 分组块。代码块由一对单回勾号或 一对三叉棍。这与普通标记使用的分隔符相同 为了指示代码,不同之处在于metys需要一组键/值 由大括号或一组空大括号包围的选项。
下面的示例文档完成与前面的noweb相同的任务 例子。与noweb不同,假定文档键值选项没有值 作为内核名,而不是块名。
Let's ask Maxima to solve a cubic equation. ```{maxima} solve(x^3+x+1=0,x); ``` Next let Python say hello and have Maxima plot a hyperbolic paraboloid. `{python} print('Hello world!')` ```{maxima, name=foo} plot3d (u^2 - v^2, [u, -2, 2], [v, -3, 3], [grid, 100, 100], [mesh_lines_color, false], [svg_plot, "m.svg"]); ``` That's all for now.
Metys格式
Metys格式的文档可以包含文本、代码或组块。比如降价
假设整个文档处于文本模式,因此只有代码和组块
有分隔符。代码块和组块都由<;
开始并终止
通过>;
。在打开分隔符后,可以指定键/值选项,直到
接收到块分隔符。块的其余部分则是代码或
组数据。块分隔符是:
,或
@
。使用分隔符
对于代码块,分隔符用于内联代码,
@
分隔符用于组块。例如,下面使用组
在调用maxima内核和
一个python内核。
<|maxima@
Let's ask Maxima to solve a cubic equation.
<|:solve(x^3+x+1=0,x);|>
Next let Python say hello and have Maxima plot a hyperbolic paraboloid.
<|python|print('Hello world!')|>
<|name=foo:
plot3d (u^2 - v^2, [u, -2, 2], [v, -3, 3], [grid, 100, 100],
[mesh_lines_color, false], [svg_plot, "m.svg"]);
|>
That's all for now.
|>
请注意kernels和sessions是最内层封闭的本地 分组块。
块选项
块选项可以在所有输入格式中指定为键/值对列表
以逗号分隔。每个键/值对都包含一个名称,后跟一个
等号和值。缺少等号和值被视为
要分配给默认键的值。noweb格式的默认键是
名称
。对于所有其他格式,默认键是kernel
密钥名称可以包含字母和下划线的任意组合,以及
用于指定子选项的单个句点。例如,下面
指定Maxima内核,其乳胶代码环境为逐字和
frame=single
作为逐字环境选项。
<|maxima, code_env=Verbatim, code_env_options.frame=single:
solve(x^3+x+1=0,x);
|>
下表列出了可用的块选项以及 每个选项。
<表><广告>true
逐字记录
乳胶的代码环境。
true
false
图
图
图:
乳胶
,降价
公式
均衡器:
降价
,大都会
,现在
true
true
逐字记录
Stderr乳胶环境。
false
逐字记录
用于乳胶的标准输出环境。
true
请不要认为某些选项是自动推导出来的,或者可能有特殊的 行为。例如,
如果未指定,
格式
选项将自动设置。如果语法分析器是 设置为markdown
则格式也为。否则
格式设置为
乳胶
自动为markdown和metys文档设置
inline
选项,但是 不适用于NoWeb文档。输入
选项对于文本/代码块与组具有不同的行为 块。对于组块,块内容替换为内容 解析后由input
指定的文件。用于文本或代码 分块文件的内容包括在内而不进行任何分析。默认情况下,
内核
选项未设置,但将设置为 扩展名为.pmd
的输入文件,对于带有 扩展.rmd
输出
选项将任何块输出写入 选项与将输出写入主输出文档相比。会话
选项将允许同一内核的多个单独会话 存在。例如,下面的文档将有两个独立的python 内核活动。在默认会话中,x
的值为3,而在foo
sessionx
的值为4。Wibble <|python|x=3|>, wibble <|python,session=foo|x=4|>, quux <|python|x|>.