【问题标题】:Managing dependencies for data analysis project [closed]管理数据分析项目的依赖项[关闭]
【发布时间】:2016-02-15 18:10:50
【问题描述】:

编辑:管道工具可以提供帮助,请参阅awesome list

我正在寻找一种方法来组织一个项目的脚本,该项目涉及分析和转换几个相当大的数据集。脚本和数据依赖关系会随着时间的推移而发展,因此组织方案应该是灵活的。此外,我希望从多核架构中受益,并能够尽可能地并行执行代码。

我计划将分析拆分为单独的 R 脚本。每个 R 脚本都会将其工作区保存到同名的 .RData 文件中;此外,每个 R 脚本可以有任意数量的输入依赖项,这些依赖项对应于其他 R 脚本。

哪些工具可以帮助我解决这个问题?一般来说,处理此类数据驱动项目的良好做法是什么?

【问题讨论】:

标签: r dependencies dependency-management data-analysis


【解决方案1】:

我有类似的问题很长一段时间了。在互联网上搜索并阅读了几篇关于它的文章和博客文章。最后,简单地复制别人的想法对我来说效果不佳,所以我借鉴并整合了在不同地方找到的几个建议。我可以给出的一个一般建议是从小处着手,随着项目变得越来越复杂,从那里开始添加东西。但始终努力使整个工作空间尽可能模块化,这样您就可以在不影响系统其余部分的情况下修改结构的一个小角落。

根据您的描述,我将执行以下操作:

  • 单独的数据和分析。这将有几个优点,因为您可以拥有一个像 datasets 这样的文件夹,并简单地将其符号链接到所有相关项目。
  • 保存每个脚本的每个输出都值得商榷。我倾向于不这样做有几个原因:1)它会占用更多空间 2)有时您希望将其他工具(不仅是 R)包含在您的工作流程中,并且以“.RData”格式保存所有内容将成为一个障碍。保存为更方便的格式,仅保存可用/需要的部分。
  • 将代码的可重用部分与仅调用函数、加载输入和保存输出的“main()”部分分开。因此,您可以制作诸如“/src/”之类的受版本控制的东西。加载“数据集”和“src”函数的其他脚本应该放在别处。

这与我目前所做的类似:

  • 两个主要文件夹:DatasetsProjects

    • 数据集 每个数据集有一个文件夹。一个数据集的每个文件夹都包含几个子文件夹,例如:输入、输出、元(根据需要等)。
      • input 包含您最初收到的所有原始文件。此处未进行任何修改。
      • output 包含运行和预处理数据的所有输出。通常,对于我生成的每个输出,我在输出目录中都有一个单独的文件夹。像 output/foo1/ output/foo2/ .. 在其中我有生成它们的脚本、RData 文件等。
      • meta 包含所有可以描述数据集的附加文件(电子邮件、幻灯片、描述等)。
    • Projects 每个项目都有一个文件夹。每个项目依次具有以下子文件夹:指向数据集的链接、outputmetapress,其中包含:数据集、分析输出、元信息和可展示结果(如论文或幻灯片)。
      • output 是每个项目中的主文件夹。每个执行的分析都包含一个文件夹。在该文件夹中,我放置:Rmd (R-markdown) 脚本。这反过来又被 knitr 转化为降价和数字。然后由您选择的程序(pandoc、multimarkdown 等)依次转换为 pdf 和 html。
  • 主要功能 (src) 为分析和数据集共享并受版本控制。你可以用它做一个包,但我倾向于不这样做。
  • 我还有一个静态内容管理系统和一个简单的脚本,用于搜索 html 并根据我的项目目录树生成带有导航的静态网站,以便快速报告结果。

对于自动化和检查依赖关系,GNU Makefiles 可能仍然是最好的选择(我目前不使用它们但计划使用它们)。最后,您可能仍然不希望为整个结构拥有一个全局生成文件。每个分析都有一个(在相应的分析文件夹中)通常是一个更好的主意。


这里有一些人讨论相同的事情以供参考:

  1. https://stats.stackexchange.com/questions/2910/how-to-efficiently-manage-a-statistical-analysis-project 。这是 SE 的交叉验证部分中非常相似的讨论。

  2. http://www.bioinformaticszen.com/post/decomplected-workflows-makefiles/ 。关于如何将 makefile 合并到数据分析中的一些说明。

  3. http://www.ploscompbiol.org/article/info%3Adoi%2F10.1371%2Fjournal.pcbi.1000424 。关于项目组织的论文。

  4. http://arkitus.com/patterns-for-research-in-machine-learning/ 。关于组织项目结构的博文。

  5. https://news.ycombinator.com/item?id=4384317。黑客新闻讨论。

【讨论】:

    猜你喜欢
    • 2011-05-18
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    • 2011-10-04
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多