Current situation
My scientific project contains mainly different analytical and numerical calculations with physics purpose, i.e. I work with Mathematica, MATLAB, Fortran. Of course it is a good idea to commit the progress with a version control program like git.
I was asking some friends what would be the best way to structure my files. Beside the simple and well-known programmer's file structure (/bin/
,/dat/
,/doc/
,/src/
,...), I found no satisfying but similar answers:
- What is the best project structure for a Python application?
- Directory structure for a C++ library
- Web Application (Django) typical project folder structure
- Proper folder structure for lots of source files
- https://stackoverflow.com/q/7715704/2062965
I hope this issue is not getting closed as it is asked by a physicist ;) as I guess many scientists are facing the same question at some point in more or less extension. By knowing that programmers have faced such issues before, I do not ask this question at Physics Stack Exchange, where it could probably be marked as off-topic
or too broad
.
Example
In my last project I had the following global structure where I had some interaction between the different project items:
/External_Code_Contribution/
/Experimental_Data/
/Analytical_Calculations/
/Project_Issue_1/
/Project_Issue_5/
/Documentations/
/Thesis/
/Papers/
/Talks/
/Literature/
/Project_Organization/
/Numerical_Calculations/
/Project_Issue_1/
/SubIssue_A/
/SubIssue_B/
/SubIssue_C/
/Project_Issue_2/
/Project_Issue_3/
/Project_Issue_4/
/Project_Issue_6/
Description: In this project I divided the files according their functionality (external contribution, exp. data, numerics, documentation,...) and then subdivided them according to their issue (what was calculated at that step) where each issue again contained subissues (e.g. for analogous calculations with a different data set) with source code, binaries and processed data (for simplicity all in the same directory).
Unfortunately in this approach I ether had to:
- refer to the source code in the corresponding issue (danger of changing anything can lead to incompatibilities), or
- copy the source code to each new issue (each source code file with same name but in a different folder could be different).
Question
Who faced this issue of structuring projects in directories? Please tell me your approach and the arguments that brought you to this structure!
(Possible addition: What should I keep in mind when I set up a file structure for a project as described above?)
If you do not completely understand the answer, please do not hesitate to ask instead of flagging. Thank you!