aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMohammad Akhlaghi <mohammad@akhlaghi.org>2020-01-20 19:45:24 +0000
committerMohammad Akhlaghi <mohammad@akhlaghi.org>2020-01-20 20:22:10 +0000
commit2ed0c82eff6af8aecd34b3e697b0e392ab129cd3 (patch)
treeea5e1cc7855c978550724d2c8a9211c3d0e73498
parent01dd812b7b828982b7d36e2967f0d9f558780e78 (diff)
New rendering of the file architecture plot
Until now the file architecture plot at the directories ontop of the top-level files. This made it hard to visually identify the top-level files. They are not placed ontop of the sub-directories and some space is added to highlight the files in the top-level directory and those in the subdirectories. Two other changes were made: - The symbolic links created in the top source directory are also shown. - The coding of this figure was made much more elegant by defining a PGFPlots node class and just changing the things that are direrent between each directory.
-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 }}