|
2 | 2 |
|
3 | 3 | | **Documentation** | **Travis** | **AppVeyor** | **Gitter** |
|
4 | 4 | |:--------:|:---------------:|:-----:|:-----:|
|
5 |
| -|[](https://JuliaDynamics.github.io/DrWatson.jl/dev)| | [](https://travis-ci.org/JuliaDynamics/DrWatson.jl) | [](https://ci.appveyor.com/project/JuliaDynamics/drwatson-jl/branch/master) | [](https://gitter.im/JuliaDynamics/Lobby) |
| 5 | +|[](https://JuliaDynamics.github.io/DrWatson.jl/dev)| [](https://travis-ci.org/JuliaDynamics/DrWatson.jl) | [](https://ci.appveyor.com/project/JuliaDynamics/drwatson-jl/branch/master) | [](https://gitter.im/JuliaDynamics/Lobby) |
6 | 6 |
|
7 | 7 | DrWatson is a Julia package created to help people "deal" with their simulations, simulation parameters, where are files saved, experimental data, scripts, existing simulations, project source code and in general their scientific projects.
|
8 | 8 |
|
9 | 9 | **DrWatson is in pre-alpha. Wanna help development? Get involed by checking the issues and opening your own feature requests and suggestions.**
|
10 | 10 |
|
11 |
| -Contents: |
12 |
| - |
13 |
| -* [Introduction](#introduction) |
14 |
| -* [Part 1](#part-1) |
15 |
| -* [Part 2](#part-2) |
16 |
| -* [Inspirations](#inspirations) |
17 |
| - |
18 |
| ---- |
19 |
| - |
20 |
| -## Introduction |
21 |
| - |
22 |
| -Have you thought things like: |
23 |
| - |
24 |
| -* Urgh, I moved my folders and now my `load` commands don't work anymore! |
25 |
| -* Maaaan, have I run this simulation already? |
26 |
| -* Do I have to produce a dataframe of my finished simulations AGAIN?! |
27 |
| -* Wait, are those experiments already processed? |
28 |
| -* PFfffff I am tired of typing `savename = "w=$w_f=$f_x=$x.jld2`, can't I do it automatically? |
29 |
| -* I wish I could just use Parameters.jl and just translate my simulations into a dataframe. |
30 |
| -* Yeah you've sent me your project but none of the scripts work... |
31 |
| - |
32 |
| -Then DrWatson will make you really happy. :D |
33 |
| - |
34 |
| - |
35 |
| -DrWatson tries to rely on the following simple principles: |
36 |
| - |
37 |
| -1. **Basic.** The functionality offered is something simple, a baseline from where you handle your project as you wish. |
38 |
| -2. **Consistent.** The functionality is identical across all projects and DrWatson offers (and parts of it assume) a universal base project structure. |
39 |
| -3. **Allows increments.** You didn't plan your project well enough? Want to add more folders, more files, more variables to your simulations? It's fine. |
40 |
| -4. **Helpful.** DrWatson has been beta tested in real-world scientific projects and has matured based on feedback from scientists. |
41 |
| -5. **Reproducible.** DrWatson aims to make your projects fully reproducible using Julia's package manager and consistent naming schemes. |
42 |
| - |
43 |
| - |
44 |
| -The functionality of DrWatson is composed of two main parts that are independent of each other (and you don't have to use both of them). |
45 |
| - |
46 |
| -* Part 1: A universal project structure and functions that allow you to consistently and robustly navigate through your project, no matter where it is located on your hard drive. |
47 |
| -* Part 2: A robust scheme for saving your data, naming files, finding out if a simulation already exists, producing tables of existing simulations/data. |
48 |
| - |
49 |
| -## Part 1 |
50 |
| - |
51 |
| -DrWatson creates a specific project structure through the function `makeproject(path, projectname)`. This project structure is always the same (see below) and is also a git repository. |
52 |
| - |
53 |
| -You scientific project is a ["Julia Environment"](https://julialang.github.io/Pkg.jl/v1/environments/), in the sense described in the documentation of the package manager. In short, your project is identified uniquely with a `Project.toml` file that contains your project's name and all the dependencies of your project (in the form of Julia packages). |
54 |
| - |
55 |
| -The project created from `makeproject` has the structure described in the `src/project_structure.txt` file of this repository. The #1 issue of this repo is discussing what is the optimal structure of this repository. |
56 |
| - |
57 |
| -**DrWatson's functionality of Part 1 assumes that all work related with your project is done with the project's directory activated.** Then the following functions are of use (exported by DrWatson): |
58 |
| - |
59 |
| -```julia |
60 |
| -projectdir() = dirname(Base.active_project())*"/" |
61 |
| -datadir() = projectdir()*"data/" |
62 |
| -srcdir() = projectdir()*"src/" |
63 |
| -projectname() = Pkg.REPLMode.promptf()[1:end-6] |
64 |
| -visdir() = projectdir()*"visualizations/" |
65 |
| -``` |
66 |
| - |
67 |
| -## Part 2 |
68 |
| -A robust naming scheme allows you to create quick names for simulations, create lists of simulations, check existing simulations, etc. It is currently work in progress, but see the following two functions of the source code: |
69 |
| -```julia |
70 |
| -savename, @dict |
71 |
| -``` |
72 |
| -The naming scheme integrates perfectly with Parameters.jl. |
73 |
| - |
74 |
| -This scheme also allows incrementing the parameters: Let's say you have a simulation setup but now you want to produce more simulations with one extra parameter. But you want to be able to create a list of the simulations both with and without the extra parameter. *You can.* |
75 |
| - |
76 |
| -THIS IS WIP, MORE STUFF/DOCS INCOMING. |
77 |
| - |
78 |
| -## Inspirations |
79 |
| - |
80 |
| -https://drivendata.github.io/cookiecutter-data-science/#cookiecutter-data-science |
81 |
| - |
82 |
| -https://discourse.julialang.org/t/computational-experiments-organising-different-algorithms-their-parameters-and-results/10774/7 |
83 |
| - |
84 |
| -http://neuralensemble.org/sumatra/ |
85 |
| - |
86 |
| -https://github.com/mohamed82008/ComputExp.jl |
87 |
| - |
88 |
| -https://sacred.readthedocs.io/en/latest/index.html |
89 |
| - |
90 |
| -https://experimentator.readthedocs.io/en/latest/ |
| 11 | +Please read the documentation page for more! |
0 commit comments