LoginSignup
48
53

More than 5 years have passed since last update.

解析のためのフォルダ構成

Last updated at Posted at 2016-12-25

はじめに

卒論・修論のために解析する方、日頃から解析する方等いるんじゃないかと思います。そういう方向けの記事です。
3年越しに最適化してきたフォルダ構成を示しますので、参考にしてもらったり、いやこうした方が良いよとかフィードバックをいただけると幸いです。

2年前のものはこちら:
解析において僕の考える最強のフォルダ構成 - Qiita

環境

一応環境は、Windows10, 64bit, git bash, matlab 2015bを使っていますが、記事内容的には全然関係ないです。

フォルダ構成

tree.rb したものをある程度編集したのが下記のとおりです。役割ごとにフォルダを切り分ける、という当たり前のことをしてファイルが散らかるのを防ぎます。

pythonも、matlabもこんな感じでできる(僕は普段matlabです)と思いますが、R言語はどうなんでしょう。分かったら記事にします。

なお、拡張子があればファイルを、/があればフォルダを示します。

tree.rb
$ tree.rb
project-root
|-- README.md
|-- .gitignore
|-- data/
|   |-- data1/ # data保存フォルダ 1
|   `-- data2/ # data保存フォルダ 2
|-- experiments/
|   |-- category1/
|   `-- category2/
|       |-- experiment1.m
|       `-- experiment2.m
|-- libs/
|   |-- +common/
|   |   |-- FigureGenerator.m
|   |   `-- Utility.m
|   |-- +la/
|   |   |-- hessian.m
|   |   `-- jacobian.m
|   |-- tests/
|   |   `-- runtests.m # tests/unittest/*Test.m を実行してテスト結果を返す関数を置く。test-driven-developmentが可能になる。
|   `-- yaml/
|       `-- YAMLMatlab_0.4.3/ # 非常に有用な外部ライブラリ. res/以下にあるyamlファイルを読む
|-- output/
|   |-- docs/
|   |   |-- others/
|   |   |-- paper/
|   |   |   |-- yyyy-mm-dd-first-paper/
|   |   |   `-- yyyy-mm-dd-second-paper/
|   |   `-- thesis/
|   |       |-- bachelor/
|   |       `-- master/
|   |-- refs/
|   `-- slides/
|       |-- conference/
|       |   |-- yyyy-mm-dd-conference1/
|       |   |-- yyyy-mm-dd-conference2/
|       |   `-- yyyy-mm-dd-conference3/
|       |-- defense/
|       |   |-- bachelar-midterm/
|       |   |-- bachelar-final/
|       |   |-- master-midterm/
|       |   `-- master-final/
|       |-- discussion/
|       |   |-- yyyy-mm-dd-discussion.pptx
|       |   `-- yyyy-mm-dd-discussion.pptx
|       `-- others/
|-- res/ # yamlはlibs/yaml/*以下のYamlMatlabでmatlab変数にコンバートされる。その他プログラミングに関係するファイルを置く
|   |-- const.yaml
|   `-- litrconst.yaml
|-- results/ # experiments以下のフォルダ・ファイル名と対応するようにresults/以下にフォルダ等を作る
|   |-- category1/
|   `-- category2/
|       |-- experiment1/
|       `-- experiment2/
|           |-- data1/
|           `-- data2/
|-- scripts/ # 全スクリプトファイルから呼ぶような共通処理を置くフォルダ。
`-- tests/
    |-- implementation/ # 実装用のplaygroundフォルダ
    `-- unittest/ # unittestのtest suiteを置いておくフォルダ。
        |-- HelperTest.m # helper class' test class
        `-- LATest.m # linear algebra functions' test class

フォルダの説明

experiments, scripts, results, libs, data, res, testsがプログラミングに関係するフォルダです。役割は次の表のとおりです。

folder description
experiments 検証用スクリプトをたくさん置く
scripts 共通スクリプト
libs 関数ファイルをたくさん置く
data 解析に使う元データを置いておく
results 解析結果を保存するフォルダ。
experimentsと対応したフォルダ構成にすると良い
res プログラミングに使うけどソースコードでないもの、たとえばyamlファイルや、その他設定ファイルを置きましょう
tests test classをたくさん置いておきます

プログラムは置かないけど、研究上大事なフォルダはoutputとして切り分けます。

folder description
output 研究のアウトプット。slideと、docsと、refsとかに大別されるかなと。
発表スライドなどはslideに、論文や卒論・修論はdocsに置きましょう。

なお、フォルダ名に日本語を使うのは絶対にやめましょう。プログラミング出来ない人だと思われます。

結言

上記のファイル構成が全部なので、細かい解説は書かないです。読み取ってください。
質問があればコメントでお願いします。

2017/11/19追記

最近少し再読されているようなので追記します。
下記のPythonテンプレートジェネレータも有効だと思います。ご利用ください。
CookieCutter for DataScience in Python

私は未だ試したことないのでなんともコメントできませんが、data scienceにおけるrails, djangoの様になるかもしれません。

48
53
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
48
53