aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--paper.tex1
-rw-r--r--tex/src/figure-file-architecture.tex290
-rw-r--r--tex/src/preamble-pgfplots.tex11
3 files changed, 109 insertions, 193 deletions
diff --git a/paper.tex b/paper.tex
index 7237876..f03bd5e 100644
--- a/paper.tex
+++ b/paper.tex
@@ -524,6 +524,7 @@ In short, its a version-controlled directory with many plain-text files, distrib
Directory and (plain-text) file structure in a hypothetical project using this solution.
Files are shown with thin, darker boxes that have a suffix in their names (for example `\texttt{*.mk}' or `\texttt{*.conf}').
Directories are shown as large, brighter boxes, where the name ends in a slash (\texttt{/}).
+ Directories with dashed lines are symbolic links that are created after building the project, pointing to commonly needed built directories.
Files and directories are shown within their parent directory.
For example the full address of \texttt{analysis-1.mk} from the top project directory is \texttt{reproduce/analysis/make/analysis-1.mk}.
}
diff --git a/tex/src/figure-file-architecture.tex b/tex/src/figure-file-architecture.tex
index 3a7b760..5c00e6e 100644
--- a/tex/src/figure-file-architecture.tex
+++ b/tex/src/figure-file-architecture.tex
@@ -7,217 +7,121 @@
%% Use small fonts
\footnotesize
- %% project
- \node [at={(0,4cm)}, anchor=north,
- rectangle,
- very thick,
- text centered,
- font=\ttfamily,
- minimum width=15cm,
- minimum height=7.5cm,
- draw=green!50!black!50,
- fill=black!10!green!2!white,
- label={[shift={(0,-5mm)}]\texttt{top-project-directory/}}] {};
- %% Its files
- \node [node-nonterminal-thin, at={(-6.0cm,-3cm)}] {COPYING};
- \node [node-nonterminal-thin, at={(-3.5cm,-3cm)}] {paper.tex};
- \node [node-nonterminal-thin, at={(-1.0cm,-3cm)}] {project};
- \node [node-nonterminal-thin, at={(+1.5cm,-3cm)}] {README.md};
- \node [node-nonterminal-thin, at={(+4.25cm,-3cm)},
+ %% project/
+ \node [dirbox, at={(0,4cm)}, minimum width=15cm, minimum height=9cm,
+ label={[shift={(0,-5mm)}]\texttt{project/}}] {};
+ \node [node-nonterminal-thin, at={(-6.0cm,3.3cm)}] {COPYING};
+ \node [node-nonterminal-thin, at={(-3.5cm,3.3cm)}] {paper.tex};
+ \node [node-nonterminal-thin, at={(-1.0cm,3.3cm)}] {project};
+ \node [node-nonterminal-thin, at={(+1.5cm,3.3cm)}] {README.md};
+ \node [node-nonterminal-thin, at={(+4.25cm,3.3cm)},
text width=2.5cm, text depth=-3pt] {README-hacking.md};
- %% reproduce
- \node [at={(-1.4cm,3.5cm)}, anchor=north,
- rectangle,
- very thick,
- text centered,
- font=\ttfamily,
- minimum height=6cm,
- minimum width=11.9cm,
- draw=green!50!black!50,
- fill=black!10!green!2!white,
- label={[shift={(0,-5mm)}]\texttt{reproduce/}}] {};
-
- %% reproduce/software
- \node [at={(-4.35cm,3cm)}, anchor=north,
- rectangle,
- very thick,
- text centered,
- font=\ttfamily,
- minimum height=5.3cm,
- minimum width=5.7cm,
- draw=green!50!black!50,
- fill=black!10!green!2!white,
- label={[shift={(0,-5mm)}]\texttt{software/}}] {};
-
- %% reproduce/analysis
- \node [at={(1.55cm,3cm)}, anchor=north,
- rectangle,
- very thick,
- text centered,
- font=\ttfamily,
- minimum height=5.3cm,
- minimum width=5.7cm,
- draw=green!50!black!50,
- fill=black!10!green!2!white,
- label={[shift={(0,-5mm)}]\texttt{analysis/}}] {};
+ %% reproduce/
+ \node [dirbox, at={(-1.4cm,2.6cm)}, minimum width=11.9cm, minimum height=6cm,
+ label={[shift={(0,-5mm)}]\texttt{reproduce/}}] {};
- %% reproduce/software/config
- \node [at={(-5.75cm,2.5cm)}, anchor=north,
- rectangle,
- very thick,
- text centered,
- font=\ttfamily,
- minimum height=2.1cm,
- minimum width=2.6cm,
- draw=green!50!black!50,
- fill=black!10!green!2!white,
- label={[shift={(0,-5mm)}]\texttt{config/}}] {};
- %% Its files
- \node [node-nonterminal-thin, at={(-5.75cm,1.8cm)}] {LOCAL.conf.in};
- \node [node-nonterminal-thin, at={(-5.75cm,1.3cm)}] {versions.conf};
- \node [node-nonterminal-thin, at={(-5.75cm,0.8cm)}] {checksums.conf};
+ %% reproduce/software/
+ \node [dirbox, at={(-4.35cm,2.1cm)}, minimum width=5.7cm, minimum height=5.3cm,
+ label={[shift={(0,-5mm)}]\texttt{software/}}] {};
+ %% reproduce/software/config
+ \node [dirbox, at={(-5.75cm,1.5cm)}, minimum width=2.6cm, minimum height=2.1cm,
+ label={[shift={(0,-5mm)}]\texttt{config/}}] {};
+ \node [node-nonterminal-thin, at={(-5.75cm,0.8cm)}] {LOCAL.conf.in};
+ \node [node-nonterminal-thin, at={(-5.75cm,0.3cm)}] {versions.conf};
+ \node [node-nonterminal-thin, at={(-5.75cm,-0.2cm)}] {checksums.conf};
%% reproduce/software/make
- \node [at={(-2.95cm,2.5cm)}, anchor=north,
- rectangle,
- very thick,
- text centered,
- font=\ttfamily,
- minimum height=2.1cm,
- minimum width=2.6cm,
- draw=green!50!black!50,
- fill=black!10!green!2!white,
- label={[shift={(0,-5mm)}]\texttt{make/}}] {};
- %% Its files
- \node [node-nonterminal-thin, at={(-2.95cm,1.8cm)}] {basic.mk};
- \node [node-nonterminal-thin, at={(-2.95cm,1.3cm)}] {high-level.mk};
- \node [node-nonterminal-thin, at={(-2.95cm,0.8cm)}] {python.mk};
+ \node [dirbox, at={(-2.95cm,1.5cm)}, minimum width=2.6cm, minimum height=2.1cm,
+ label={[shift={(0,-5mm)}]\texttt{make/}}] {};
+ \node [node-nonterminal-thin, at={(-2.95cm,0.8cm)}] {basic.mk};
+ \node [node-nonterminal-thin, at={(-2.95cm,0.3cm)}] {high-level.mk};
+ \node [node-nonterminal-thin, at={(-2.95cm,-0.2cm)}] {python.mk};
%% reproduce/software/bash
- \node [at={(-5.75cm,0.2cm)}, anchor=north,
- rectangle,
- very thick,
- text centered,
- font=\ttfamily,
- minimum height=2.1cm,
- minimum width=2.6cm,
- draw=green!50!black!50,
- fill=black!10!green!2!white,
- label={[shift={(0,-5mm)}]\texttt{bash/}}] {};
- %% Its files
- \node [node-nonterminal-thin, at={(-5.75cm,-0.5cm)}] {bashrc.sh};
- \node [node-nonterminal-thin, at={(-5.75cm,-1.0cm)}] {configure.sh};
- \node [node-nonterminal-thin, at={(-5.75cm,-1.5cm)}] {git-pre-comit};
+ \node [dirbox, at={(-5.75cm,-0.8cm)}, minimum width=2.6cm, minimum height=2.1cm,
+ label={[shift={(0,-5mm)}]\texttt{bash/}}] {};
+ \node [node-nonterminal-thin, at={(-5.75cm,-1.5cm)}] {bashrc.sh};
+ \node [node-nonterminal-thin, at={(-5.75cm,-2.0cm)}] {configure.sh};
+ \node [node-nonterminal-thin, at={(-5.75cm,-2.5cm)}] {git-pre-comit};
%% reproduce/software/bibtex
- \node [at={(-2.95cm,0.2cm)}, anchor=north,
- rectangle,
- very thick,
- text centered,
- font=\ttfamily,
- minimum height=2.1cm,
- minimum width=2.6cm,
- draw=green!50!black!50,
- fill=black!10!green!2!white,
- label={[shift={(0,-5mm)}]\texttt{bibtex/}}] {};
- %% Its files
- \node [node-nonterminal-thin, at={(-2.95cm,-0.5cm)}] {fftw.tex};
- \node [node-nonterminal-thin, at={(-2.95cm,-1.0cm)}] {numpy.tex};
- \node [node-nonterminal-thin, at={(-2.95cm,-1.5cm)}] {gnuastro.tex};
+ \node [dirbox, at={(-2.95cm,-0.8cm)}, minimum width=2.6cm, minimum height=2.1cm,
+ label={[shift={(0,-5mm)}]\texttt{bibtex/}}] {};
+ \node [node-nonterminal-thin, at={(-2.95cm,-1.5cm)}] {fftw.tex};
+ \node [node-nonterminal-thin, at={(-2.95cm,-2.0cm)}] {numpy.tex};
+ \node [node-nonterminal-thin, at={(-2.95cm,-2.5cm)}] {gnuastro.tex};
+
+ %% reproduce/analysis/
+ \node [dirbox, at={(1.55cm,2.1cm)}, minimum width=5.7cm, minimum height=5.3cm,
+ label={[shift={(0,-5mm)}]\texttt{analysis/}}] {};
%% reproduce/analysis/config
- \node [at={(0.15cm,2.5cm)}, anchor=north,
- rectangle,
- very thick,
- text centered,
- font=\ttfamily,
- minimum height=2.1cm,
- minimum width=2.6cm,
- draw=green!50!black!50,
- fill=black!10!green!2!white,
- label={[shift={(0,-5mm)}]\texttt{config/}}] {};
- %% Its files
- \node [node-nonterminal-thin, at={(0.15cm,1.8cm)}] {INPUTS.conf};
- \node [node-nonterminal-thin, at={(0.15cm,1.3cm)}] {param-1.conf};
- \node [node-nonterminal-thin, at={(0.15cm,0.8cm)}] {param-2.conf};
+ \node [dirbox, at={(0.15cm,1.5cm)}, minimum width=2.6cm, minimum height=2.1cm,
+ label={[shift={(0,-5mm)}]\texttt{config/}}] {};
+ \node [node-nonterminal-thin, at={(0.15cm,0.8cm)}] {INPUTS.conf};
+ \node [node-nonterminal-thin, at={(0.15cm,0.3cm)}] {param-1.conf};
+ \node [node-nonterminal-thin, at={(0.15cm,-0.2cm)}] {param-2.conf};
%% reproduce/analysis/make
- \node [at={(2.95cm,2.5cm)}, anchor=north,
- rectangle,
- very thick,
- text centered,
- font=\ttfamily,
- minimum height=2.1cm,
- minimum width=2.6cm,
- draw=green!50!black!50,
- fill=black!10!green!2!white,
- label={[shift={(0,-5mm)}]\texttt{make/}}] {};
- %% Its files
- \node [node-nonterminal-thin, at={(2.95cm,1.8cm)}] {initialize.mk};
- \node [node-nonterminal-thin, at={(2.95cm,1.3cm)}] {download.mk};
- \node [node-nonterminal-thin, at={(2.95cm,0.8cm)}] {analysis-1.mk};
+ \node [dirbox, at={(2.95cm,1.5cm)}, minimum width=2.6cm, minimum height=2.1cm,
+ label={[shift={(0,-5mm)}]\texttt{make/}}] {};
+ \node [node-nonterminal-thin, at={(2.95cm,0.8cm)}] {initialize.mk};
+ \node [node-nonterminal-thin, at={(2.95cm,0.3cm)}] {download.mk};
+ \node [node-nonterminal-thin, at={(2.95cm,-0.2cm)}] {analysis-1.mk};
%% reproduce/analysis/bash
- \node [at={(0.15cm,0.2cm)}, anchor=north,
- rectangle,
- very thick,
- text centered,
- font=\ttfamily,
- minimum height=2.1cm,
- minimum width=2.6cm,
- draw=green!50!black!50,
- fill=black!10!green!2!white,
- label={[shift={(0,-5mm)}]\texttt{bash/}}] {};
- %% Its files
- \node [node-nonterminal-thin, at={(0.15cm,-0.5cm)}] {process-1.sh};
- \node [node-nonterminal-thin, at={(0.15cm,-1.0cm)}] {process-2.sh};
- \node [node-nonterminal-thin, at={(0.15cm,-1.5cm)}] {process-3.sh};
+ \node [dirbox, at={(0.15cm,-0.8cm)}, minimum width=2.6cm, minimum height=2.1cm,
+ label={[shift={(0,-5mm)}]\texttt{bash/}}] {};
+ \node [node-nonterminal-thin, at={(0.15cm,-1.5cm)}] {process-1.sh};
+ \node [node-nonterminal-thin, at={(0.15cm,-2.0cm)}] {process-2.sh};
+ \node [node-nonterminal-thin, at={(0.15cm,-2.5cm)}] {process-3.sh};
%% reproduce/analysis/python
- \node [at={(2.95cm,0.2cm)}, anchor=north,
- rectangle,
- very thick,
- text centered,
- font=\ttfamily,
- minimum height=2.1cm,
- minimum width=2.6cm,
- draw=green!50!black!50,
- fill=black!10!green!2!white,
- label={[shift={(0,-5mm)}]\texttt{python/}}] {};
- %% Its files
- \node [node-nonterminal-thin, at={(2.95cm,-0.5cm)}] {operation-1.py};
- \node [node-nonterminal-thin, at={(2.95cm,-1.0cm)}] {operation-2.py};
- \node [node-nonterminal-thin, at={(2.95cm,-1.5cm)}] {fitting-plot.py};
-
- %% tex
- \node [at={(6cm,3.5cm)}, anchor=north,
- rectangle,
- very thick,
- text centered,
- font=\ttfamily,
- minimum height=6cm,
- minimum width=2.7cm,
- draw=green!50!black!50,
- fill=black!10!green!2!white,
- label={[shift={(0,-5mm)}]\texttt{tex/}}] {};
+ \node [dirbox, at={(2.95cm,-0.8cm)}, minimum width=2.6cm, minimum height=2.1cm,
+ label={[shift={(0,-5mm)}]\texttt{python/}}] {};
+ \node [node-nonterminal-thin, at={(2.95cm,-1.5cm)}] {operation-1.py};
+ \node [node-nonterminal-thin, at={(2.95cm,-2.0cm)}] {operation-2.py};
+ \node [node-nonterminal-thin, at={(2.95cm,-2.5cm)}] {fitting-plot.py};
- %% tex/src
- \node [at={(6cm,3cm)}, anchor=north,
- rectangle,
- very thick,
- text centered,
- font=\ttfamily,
- minimum width=2.5cm,
- minimum height=5.3cm,
- draw=green!50!black!50,
- fill=black!10!green!2!white,
- label={[shift={(0,-5mm)}]\texttt{src/}}] {};
- %% Its files
- \node [node-nonterminal-thin, at={(6cm,2.2cm)}] {preamble-1.tex};
- \node [node-nonterminal-thin, at={(6cm,1.7cm)}] {preamble-2.tex};
- \node [node-nonterminal-thin, at={(6cm,1.2cm)}] {figure-1.tex};
- \node [node-nonterminal-thin, at={(6cm,0.7cm)}] {figure-2.tex};
+ %% tex/
+ \node [dirbox, at={(6cm,2.6cm)}, minimum width=2.7cm, minimum height=6cm,
+ label={[shift={(0,-5mm)}]\texttt{tex/}}] {};
+ %% tex/src
+ \node [dirbox, at={(6cm,2.1cm)}, minimum width=2.5cm, minimum height=2.1cm,
+ label={[shift={(0,-5mm)}]\texttt{src/}}] {};
+ \node [node-nonterminal-thin, at={(6cm,1.4cm)}] {preamble-1.tex};
+ \node [node-nonterminal-thin, at={(6cm,0.9cm)}] {preamble-2.tex};
+ \node [node-nonterminal-thin, at={(6cm,0.4cm)}] {figure-1.tex};
+
+ %% tex/build
+ \node [dirbox, at={(6cm,-0.2cm)}, minimum width=2.5cm, minimum height=1.3cm,
+ label={[shift={(0,-5mm)}]\texttt{build/}}, dashed] {};
+ \node [anchor=west, at={(4.7cm,-1.0cm)}] {\scriptsize\sf Symbolic link to};
+ \node [anchor=west, at={(4.7cm,-1.3cm)}] {\scriptsize\sf \LaTeX{} build directory.};
+
+ %% tex/build
+ \node [dirbox, at={(6cm,-1.7cm)}, minimum width=2.5cm, minimum height=1.6cm,
+ label={[shift={(0,-5mm)}]\texttt{tikz/}}, dashed] {};
+ \node [anchor=west, at={(4.67cm,-2.5cm)}] {\scriptsize\sf Symbolic link to TikZ};
+ \node [anchor=west, at={(4.67cm,-2.8cm)}] {\scriptsize\sf directory (figures built};
+ \node [anchor=west, at={(4.67cm,-3.1cm)}] {\scriptsize\sf by \LaTeX).};
+
+ %% .local
+ \node [dirbox, at={(-3.6cm,-3.7cm)}, minimum width=7cm, minimum height=1.2cm,
+ label={[shift={(0,-5mm)}]\texttt{.local/}}, dashed] {};
+ \node [anchor=west, at={(-7.1cm,-4.4cm)}]
+ {\scriptsize\sf Symbolic link to project's software environment, e.g., };
+ \node [anchor=west, at={(-7.1cm,-4.7cm)}]
+ {\scriptsize\sf Python or R, run `\texttt{.local/bin/python}' or `\texttt{.local/bin/R}'};
+
+ %% .build
+ \node [dirbox, at={(3.6cm,-3.7cm)}, minimum width=7cm, minimum height=1.2cm,
+ label={[shift={(0,-5mm)}]\texttt{.build/}}, dashed] {};
+ \node [anchor=west, at={(0.1cm,-4.4cm)}]
+ {\scriptsize\sf Symbolic link to project's top-level build directory.};
+ \node [anchor=west, at={(0.1cm,-4.7cm)}]
+ {\scriptsize\sf Enabling easy access to built project components.};
\end{tikzpicture}
diff --git a/tex/src/preamble-pgfplots.tex b/tex/src/preamble-pgfplots.tex
index 57a0128..7f566b8 100644
--- a/tex/src/preamble-pgfplots.tex
+++ b/tex/src/preamble-pgfplots.tex
@@ -202,3 +202,14 @@
draw=green!50!black!50,
top color=white,
bottom color=green!50!black!20 } }
+
+\tikzset{ dirbox/.style={
+ thick,
+ rectangle,
+ anchor=north,
+ text centered,
+ font=\ttfamily,
+ minimum width=15cm,
+ minimum height=7.5cm,
+ draw=green!50!black!50,
+ fill=green!3!white }}