Comments (4)
This issue is related to the concept of experiment management. A typical workflow would be,
- (build mabe) compile code and get executable mabe.
- generate settings files via '-s'.
- modify settings files manually, or through the command line (so mabe modifies the settings file).
- run mabe.
During this workflow, mabe doesn't really have a way of knowing if a file is being overwritten intentionally, and if we loop to step 1, the semantics change, i.e we want files to be overwritten, and in fact, not even loaded, since they might no longer be valid.
I feel like the concept of "a complete experiment" should be distinct from "experimenting". What I mean is that the latter would be the workflow describe above, where you can write to files and load from files arbitrarily. Also easily, which means mabe doesn't warn about overwriting, or other potential user or end-user mistakes.
The former would be somewhat similar to what mq.py does, i.e. if mabe were passed the '-e' flag, say, then a new experiment directory (uniquely named) would be created, and all the settings files, or organism files, or tertiary data files(like spatial maps), etc, to be loaded, are placed into a subdir, and this would be a read-only dir. Then mabe would run and save all output files to another subdir, and at the end of the run, the entire exp directory would be made read-only. This means that the experiment is self-contained, and can be shared with others, without worrying about some parts of it being overwritten by another execution of mabe. If one needs the files from this experiment for another experiment, they can still be read, and copied out, but overwrite safety is no longer a concern.
The overwrite issue is broader than just settings files even, since e.g. mabe writes to LOD_data.csv every time, and I have to remember not to overwrite this file every time I run mabe. My personal fix is to move the files around, rename them, make them read-only etc. If mabe could do this with a couple of command line options, that would solve these problems to some extent.
Thoughts?
from mabe.
My workflow is to copy the executable and settings files and then modify settings files in the new location when I want to run a new experiment. It seems to me that there are 2 modes we need to support. Experiment mode - where one is running experiments that will result in publication and Development mode - where one is writing a new world/brain/etc. I'm not sure what is the correct behavior of Experiment mode, but In Development mode, I do not want to be encumbered by a plethora of directories and locked files.
from mabe.
That's an important question, deciding the correct behaviour of 'experiment' mode. At the moment, mabe supports only 'development' mode. So this issue is suggesting an additional feature, and not a change to existing features, correct?
from mabe.
Fixed by #220
from mabe.
Related Issues (20)
- MABE acronym HOT 4
- templates for modules HOT 1
- max readDouble value? HOT 1
- mbuild relies on being run from the mabe dir
- UPDATE_MTree::makeCopy() returns make_shared<RANDOM_MTree>
- Islands Optimizer requires Lexicase HOT 3
- mq.py CONSTANT doesn't handle quotes around parameters
- mq.py generated sbatch files fail when parenthesis are in un-quoted string parameters HOT 1
- Circular_Genome-mutationPointOffsetRange causes segfault HOT 7
- update MQ local mode to use parallel process scheduling
- new world template has wrong naming for existing parameters
- new brain template has vestigial 'CleanBrain' type causing build error
- fix brain API to be set/get or read/write, not set/read HOT 2
- regression compile error WireBrain
- Islands optimizer segfaults
- Lexicase injects newlines in output
- World Template broken (fails to compile)
- Brain Template also broken same way
- mq indevinate mode runs forever on short jobs
- mbuild -f overwrites the modules.txt file
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mabe.