组织科学数据和代码 - 实验,模型,模拟,实施

时间:2012-08-19 23:14:57

标签: code-organization scientific-computing project-organization suite scientific-software

我正在开展机器人研究项目,并且想知道:在组织科学数据和代码时,有没有人对最佳实践提出建议?有没有人知道我可以检查的现有科学图书馆?

以下是我们'套房'的要素:

  • 实验 - 两种类型:
       
    1. 从现有的“自然”系统收集数据。
    2.  
    3. 机器人系统上运行行为的数据。
  • 模型
       
    • 动态系统描述 - 动力学,运动学等
    •  
    • 所述系统的参数,其中一些来自1型实验
  • 模拟 - 试图模拟自然行为,模拟机器人上的行为
  • 实施 - 控制机器人的代码。当然,这是一项大型工程,拥有自己的大型基础设施。

我们'套房'的一些设计方面:

  • 如果模拟环境允许“快速原型制作”(脚本/交互式提示简单的黑客攻击,快速数据检查等等 - 肯定难以合并的话)会很好 - 目前通过脚本语言(Python,MATLAB)满意
  • 多种编程语言
  • 分布式协作设置 - 将使用Git
  • 单元测试尚未合并,但有望在稍后进行
  • 跨平台(不幸的是) - 我已经习惯了Linux,但是我的团队成员使用Windows,我们的一些工具已经融入了该平台

我看到this帖子,书籍看起来很有趣,我订购了“编写科学软件”,但我觉得它主要关注模拟代码的实现而不是整个组织。< / p>

1 个答案:

答案 0 :(得分:2)

您描述的情况与我们在表面动力学实验室中的情况非常相似。 一些工作涉及保存实时分析的测量数据,或保存以供后期分析。另一方面,其他一些工作涉及运行模拟并分析其结果。

实验室负责人在剑桥学习期间选择的数据管理方案以主服务器为中心,主服务器保存所有实验室成员的个人档案。每个成员通过使用NFS挂载相应的服务器文件夹来访问其工作站中的文件。这有其优点和缺点。备份所有内容更容易,但在通过网络处理大量数据时会出现问题。出于这个原因,我在实验室中是一个例外,因为我使用的模拟生成了大量数据。这些数据保存在我的工作站上,只有用于生成它的代码(模拟和配置文件的源代码)保存在服务器上。

我还将我的代码保存在在线SVN服务中,因为我无法从家中登录到实验室服务器。这是一种强制性的做法,其原因在于,如果出现一些模糊的错误,则需要能够根据需求重现较旧的结果并跟踪代码的更改。因此需要维护旧版本和配置文件。

我们还采用低技术方法,如实验室笔记本来记录结果,修改等。 这个内容有时可能更抽象(没有一点描述代码中的每一个更改的行 - 你有这方面的差异。只是改变的目的,也许是关于实现及其日期的一些注释)。

主要使用Matlab完成工作。我也是一个例外,因为我更喜欢Python。我还使用C进行数据生成模拟。测试主要是融合,因为我的项目现在关注与计算模型的比较。我只是生成具有不同配置的结果,保存在他们自己尊重的文件夹中(我在实验室日志中跟踪)。这样做的好处是能够完全按照我的意愿控制和连接数据,而不是符合其他人的想法和格式。