3

我正在从事一个机器人研究项目,并且想知道:在组织科学数据和代码时,是否有人对最佳实践有建议?有谁知道现有的科学图书馆有我可以检查的来源?

以下是我们“套件”的元素:

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

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

  • 如果仿真环境允许“快速原型设计”(脚本/交互式提示,用于简单的黑客攻击、快速数据检查等——绝对是难以整合的东西)——目前通过脚本语言(Python、MATLAB)满足
  • 多种编程语言
  • 分布式、协作设置 - 将使用 Git
  • 单元测试尚未合并,但希望稍后会合并
  • 跨平台(不幸的是)——我习惯于 Linux,但我的团队成员使用 Windows,我们的一些工具与该平台结合

看了这篇文章,书看起来很有趣,我订购了“编写科学软件”,但我觉得它将主要关注模拟代码的实现,而不是整体组织。

4

1 回答 1

2

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

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

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

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

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

于 2012-10-06T10:17:52.370 回答