可记录和可复制的分析和研究工具

psicons.core的Python项目详细描述


关于psicons.core
| psicons替换::*psicons*



背景
----


科学分析可能有问题:

*可能涉及多个步骤,每个步骤都使用前一阶段的结果。
犯错误通常意味着为了安全起见重复整个系列。

*有时分析链必须在不同的数据集上重复。
有时,即使在单个分析中,相同的操作或测试也需要用稍有不同的参数重复。

*即使在事实发生之后,也很容易忘了做了什么。9个月后,当对裁判的报告做出回应时,这可能是不可能的。

*collaborators,clients或boss可能会要求问责。


*对于长而常规的任务,很容易感到厌烦并犯错误。

分析。分析的每个阶段都是对脚本或可执行文件的命令行调用,该脚本或可执行文件接受*输入*并生成*输出*。当调用
scons时,将测试输出和输入之间的依赖关系,并且只运行更新输出所必需的那些阶段。此外,构建文件还记录了
准确的分析顺序。

总而言之,psicons提供:

*重复性:运行生成文件,重新运行相同的分析

*重复性:生成文件(和自定义脚本)记录
分析的步骤
*最小化工作量:如果输入或分析步骤发生更改,则仅分析的
必要(依赖)步骤IS重新运行

*防错:由于重复性("我做了什么")和工作量最小化(仅重复依赖步骤),错误不会影响分析

*可编程性:分析任务可以用编程方式构建
("在此参数范围内重复分析")




/>——

*psicons*是一个非常简单的项目,是在2009年h1n1流感大流行后,由于需要使用特殊脚本和格式对大量序列数据进行复杂处理而产生的。它在这个有限的角色中工作得很好,但仍然是探索
方法的早期版本。功能有限,api可能会改变。还有其他更发达(和更专业)的替代品。请发表评论。



installation
----

等效程序::

%easy\install psicons.core

或者可以下载、解压缩tarball并运行"setup.py":

%tar zxvf psicons core.tgz
%cd psicons core
%python set.py install

当然,psicons需要
来使用scons库,因此必须强制进行常规安装。
下载scons tarball,解包并安装,如下所示:

%python setup.py install--标准库



事实上,这是斯科恩斯。其他地方有更多的详细信息,但是简单地说,您可以运行如下scon::

*命令*:

(第一个库+第二个库)

自动跟踪步骤之间的依赖项
:如果原始源
文件中的一个被更改(例如hello.c),则在重新运行文件时,仅重新运行其"下游"步骤(例如重新编译第一个库和最终的
链接)。

scons有大量用于各种软件构建的命令。psicons
添加两个新命令,以便可以在生成中使用本地脚本或外部程序。这样,可以从一系列相互依赖的命令构造复杂的多步骤分析,这些命令"构建"中间数据和最终结果:


_干净数据=脚本(env,'clean_seqs.py',
args=['--sa另存为,干净数据],
infedes=[in_数据],
output=clean_数据,




;调用外部命令
epi_data='jg types.txt'
result_data='results.data='results.tab'
type_data=ext外部(env,'treemaker',
args=['['----sa另存为,results''sa另存为,result as',u data],
填充=[clean_data,epi_data],
output=[result_data],



这两个命令的接口类似:

*调用什么?
*它使用什么输入(取决于)?
*它产生什么输出?

在此生成文件上运行scons时,它会调用
"in_data"上的脚本"clean_seqs.py"来生成"clean_data"。然后外部程序"treemaker"对"clean_data"和"epi_data"调用以生成"result_data"。如果要编辑
"epi_data",当再次调用scons时,只有第二个外部
步骤将作为第一个步骤再次运行,并且其结果仍然是最新的。
因此:

*分析可以很容易地运行(和重新运行)

*如果数据更改(或脚本更改-错误修复),则只需执行必要的步骤
重新运行

*所采取的操作将记录在生成文件中

为了方便以合理的方式重命名中间文件或输出文件,*psicons*
提供了一些实用功能从参数中插入文件名。
>说明:


>从模板中生成新字符串
>>>gt;d={'foo':'123','bar':'456'}
>;gt;gt;interpolate('ab{'foo}cd{foo}bar}ef','d)
'ab123cd45456ef'
'ab123cd45456ef'ab123cd456ef'ab123cd456ef'
>从旧命名新文件名,方法是在名称中添加后缀
>>>>;gt;interpol插值来自路径('mydata.csv'mydata.csv','mydata.csv','mydata'mydata'mydata'mydata'csv','my'{stem}-已清理的{ext}')
'mydata-c学习.csv'



局限性
——


当然,更复杂的再现性工具已经存在(请参见http://csdl2.computer.org/comp/mags/cs/2009/01/mcs200901005.pdf>;``uu),但
许多都是基于某些学科(如地球物理学、计算数学),
需要通过web接口或使用非常标准的分析工具集。*Psicons*是从生物信息学家的角度编写的,它进行
序列和系统发育分析,使用大量
自定义脚本和不断变化的工具列表在命令行上工作。正如有时发生的那样,其他工具不适合,所以我写了一个。

与许多快速黑客工具一样,文档目前有点少。

未来版本的
psicons可能需要直接包括orporate scons便于安装。


显然,一套用于提取、转换和绘制
数据的标准工具将是对*psicons*的强大补充。这还不存在。

因此,附加的"命令"是真正的scons命令,因此
与生成命令的函数一样多。但是它们很容易使用。



当然要感谢scons的建筑师。

这是一个非常强大的系统,尽管不适合我目前的目的。你应该检查一下。

只有在编写本文档时,我才意识到sconstools[sconstools],
它似乎遵循着与"psicons"完全相同的方向。



[psicons主页]`psicons主页<;http://www.agapow.net/software/psicons core>;`

…[psicons pypi]`关于pypi的psicons<;http://pypi.python.org/pypi/psicons core>;`

…[setuptools]`setuptools&easy_install<;http://packages.python.org/distribute/easy_install.html>;`

…[psicons github]`Github上的psicons<;https://github.com/agapow/psicons.core>;`

…[scons]`scons<;http://www.scons.org>;```庘

…[马达加斯加]`madagscar and scons for reproducibility<;http://reproducibility.org/wiki/reproducile\u computational\u experiments\u using\u scons>;`\uuu

…[scons custom]`将自定义生成器和工具放在何处<;http://scons.org/doc/production/html/scons user/x3697.html>;`

…[sconstools]`sconstools<;http://code.google.com/p/sconstools/>;`


====
变更日志
===



<0.2dev(29072011)
----

-第一个广泛发布的版本---

-初次发布

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
javajaxb在嵌套节点中生成xmlns:xsi声明   java重定向到youtube以上传jsp上可用的视频   java提高了JVM和ANT的性能   java如何将返回的JSON数据放在HTML表单中   java如何发送XWWWFORMURLENCODE在重新授权   java为什么jvm XX:+EliminateAllocations失败   堆移除和重建方法?(爪哇)   Stanford NPL in Spark(Scala)应用程序运行到Java堆空间(Java.lang.OutOfMemoryError)   调试java中打开/关闭println的任何方式(详细模式)   java IntelliJ在鼠标悬停时显示JavaDocs工具提示   Olingo Odata Java中的自动扩展选项   json将postgres文本arry转换为java列表?   oop需要帮助推断Java代码   复选框的java添加操作侦听器AbstractTableModel   java如何从公共静态void main(String[]args)传递值   java从数据库中获取大值   java Processing 2.0电影从jar运行时无法打开电影文件   java如何在不使用应用程序的情况下刷新活动?   尝试将JSON解析为ListView时的Android:JSON parse:null对象引用