Sixoclock 以CWL和docker为基础。你可以使用CWL来创建内容(如工具、流程等),sixoclock会帮助你生成可视化页面来展示、设置、运行它们。你也可以基于sixoclock社区进行算法的托管,拖拽智能组合,以及在线计算和用户业务交付。
Sixoclock 是一个提供可重用、模块化、可视化生物医疗数据处理算法的云协作平台。通过使用sixoclock,你将快速获取可靠的数据处理软件、流程,并通过在线的可视化参数配置界面完成软件参数的设置、软件的下载,利用本地计算设备,完成一键下载,一键运行。
Sixoclock 诞生的初衷是为了:
简化数据分析复杂度,使任何人都可以轻松进行数据分析操作。
提高数据分析流程在科研与产业界共享以及重用重现的便利性。
它是如何工作的?
从技术上讲,Sixoclock 是一个以CWL和docker为基础的数据处理流程/数据(格式)/知识托管、协作与计算平台。
Sixoclock里所有工具/流程都由CWL构成,CWL替代了传统的shell、perl等流程脚本,并在可拓展性和规范性上优于WDL。CWL旨在满足数据密集型科学的需求,例如生物信息学、医学成像、天文学、物理学和化学。相比perl,shell等语言,CWL更容易,你可以轻松掌握CWL。
开发者(你、我或sixoclock生信团队)将数据处理流程/软件所有运行时依赖封装到docker,然后拟写一个流程描述文档(在sixoclock平台是CWL),发布到sixoclock应用仓库,sixoclock负责对CWL进行可视化和计算环境自适应。
用户在Sixoclock查找所需软件,通过可视化界面配置软件运行参数,下载到本地,使用sixbox客户端一键运行,sixbox自动解析流程依赖并安装,依据配置好的参数执行计算任务。你也可以使用任何CWL解释器运行下载自sixoclock的流程。
#为什么不是 ...?
#shell脚本
shell是linux自带的编程语言,诚然,shell可以做很多杰出的工作,但在生物医疗等数据密集型和复杂性应用场景下,shell过度自由化以及无法很好的处理算法依赖,流程输入输出接口,使得shell脚本共享给他人使用时的门槛较高,其算法可重现性较差,对于复杂的流程来说,用户在新的环境安装依赖也是一件很有挑战的事情,开发者维护也是一件不容易的事情。
#只用Docker
Docker是一个轻量运行时容器环境。你可以将你的开发环境、代码、配置文件等一并打包到这个容器中,并发布和应用到任意平台中。sixoclock本身也使用了Docker来解决流程运行依赖环境的一件安装,但生物医疗数据计算是构建在算法基础上的,以工具的使用和数据挖掘为目的,Docker是一个优秀依赖管理工具,但仅用docker不足以解决流程计算问题。
#WDL
WDL同样是一款优秀的流程描述语言,与CWL可以做类似的事情,但是WDL语法不够严格,拓展性较差,在构建复杂流程时可能难以胜任,不过,相比CWL,WDL语法较为简单,国内部分企业也在内部使用。