Skip to content

Commit 2cbeeb1

Browse files
committed
Update documentation in several README files
1 parent c52ed03 commit 2cbeeb1

File tree

3 files changed

+99
-46
lines changed

3 files changed

+99
-46
lines changed

Manuscript/0_README.md

Lines changed: 18 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,21 @@
22

33
<u>*Explanation*</u>:
44

5-
*This file contains basic information about the manuscript(s) corresponding to this computational project. It also contains publications about ENCORE that provide further information about its approach*.
5+
*This file contains basic information about project manuscript(s) corresponding to the computational project.*
66

77

88

9-
**Note:** this directory contains the ENCORE manuscript that were submitted to MetaArXiv pre-print server to provide further information about ENCORE. It can be removed
9+
***Note:** this directory contains the ENCORE manuscript that were submitted to MetaArXiv pre-print server to provide further information about ENCORE.*
1010

11-
* ENCORE_v22_MetaArXiv
11+
* *ENCORE_v22_MetaArXiv*
1212

13-
​ preprint DOI: https://doi.org/10.31222/osf.io/m9yqz
13+
*preprint DOI: https://doi.org/10.31222/osf.io/m9yqz*
1414

15-
​ Supplementary materials: https://osf.io/j9hmw/
15+
*Supplementary materials: https://osf.io/j9hmw/*
1616

17-
​ License: CC-BY Attribution-NonCommercial 4.0 International
17+
*License: CC-BY Attribution-NonCommercial 4.0 International*
1818

19-
This directory may be removed at your discretion.
19+
*A revised version of this manuscript is currently under review. This directory may be removed at your discretion.*
2020

2121

2222

@@ -25,27 +25,22 @@ This directory may be removed at your discretion.
2525
* *Remove all Instructions and the Explanation once you have completed the template.*
2626
* *Level of detail: Information provided should be sufficient for someone who was not involved in the project and/or has limited knowledge about the topic, to understand and reproduce the project.*
2727

28-
29-
3028
* *This directory may include:*
31-
32-
* *Draft manuscript and revised versions after review*
33-
34-
* *Final publication + full reference*
35-
36-
* *Figures + Tables*
37-
38-
* *Supplementary data*
39-
40-
* *Reference library (e.g., EndNote, Mendeley, BibTeX, rtf)*
41-
42-
* *Review reports + rebuttals*
29+
* *Draft manuscript and revised versions after review*
30+
31+
* *Final publication + full reference*
32+
33+
* *Figures + Tables*
34+
35+
* *Supplementary data*
36+
37+
* *Reference library (e.g., EndNote, Mendeley, BibTeX, rtf)*
38+
39+
* *Review reports + rebuttals*
4340

4441

4542
* *All tables and figures that are required for the publication should be duplicated from the \Results directories to the \Manuscript directory to ensure this directory is self-contained.*
4643

47-
48-
4944
* *Alternatively/in addition, this directory may include reports from e.g., student internships, or abstracts submitted for oral/poster presentations.*
5045
* *You can remove the ENCORE publications if these are not further required*
5146

Processing/NameOfComputation_1/0_README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242

4343
***Avoid** manual data manipulation steps. Instead of manually changing data (e.g., format conversion, filtering), aim to make use of small custom scripts. Manual steps are a main cause for irreproducible results.*
4444

45-
* *It is strongly recommended to implement an executable description of the sequence of steps taken helps to reproduce results (e.g., Snakemake, https://snakemake.github.io; pytask, https://github.com/pytask-dev/pytask; any other workflow system)*
45+
* *It is recommended to implement an executable description of the sequence of steps taken helps to reproduce results (e.g., Snakemake, https://snakemake.github.io; pytask, https://github.com/pytask-dev/pytask; any other workflow system)*
4646

4747

4848

Processing/NameOfComputation_1/Code/0_README.md

Lines changed: 80 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,27 @@
88

99

1010

11-
***Clean code***
11+
***Software Engineering***
12+
13+
*Over the past two decades, an increasing number of researchers have become involved in computational research. Many of these researchers have never received formal training in software engineering. Software engineering is a discipline in its own and includes the design, implementation, documentation, testing and deployment of software.*
14+
15+
*The lack of good software engineering practices can negatively affect the reliability and transparency of software, and consequently, its transparency and reproducibility. Poorly designed and documented software can be difficult for peers to understand, use, modify, and debug.*
16+
17+
*Additionally, inadequate software engineering practices can lead to a situation where there is no way to verify if the code used to generate computational results is functioning as the researcher intends.*
18+
19+
*It is important to recognize that there is a vast field dedicated to software engineering, encompassing a wide range of tools and best practices that can be utilized to enhance software development.*
20+
21+
*Below we very briefly provide a few pointers to improve your software engineering practices.*
22+
23+
24+
25+
***Coding***
26+
27+
*Following best practices for scripting, functional programming, or objective-oriented programming may significantly improve the quality of the code but requires training and experience.*
28+
29+
30+
31+
*<u>Clean code</u>*
1232

1333
*Write programs for people, not computers (code should be easily read and understood). Adopting clean code practices helps to standardize and organize software code in order to enhance readability. This allows developers to concentrate on core functionality and reduce errors.* *Readability helps reproducibility and transparency*.
1434

@@ -28,49 +48,56 @@
2848

2949

3050

31-
***Code testing***
32-
33-
*Interrogate specific and isolated coding behaviour to reduce coding errors and ensure intended functionality, especially as code increases in complexity. Describe if software tests have been performed and how to re-run these tests.*
34-
35-
36-
37-
***Integrated development environment** (IDE)*
51+
**Code versioning**
3852

39-
*Consider using an IDE, e.g., PyCharm and DataSpell from JetBrains (https://www.jetbrains.com/), RStudio (https://www.rstudio.com/)*
53+
*ENCORE is based on Git/GitHub for versioning of code and code documentation. It may be worthwhile to dive into the Git/GitHub world at greater detail. For example:*
4054

55+
* *[Understanding the Staging Area](https://www.developernation.net/blog/git-internals-part-3-understanding-the-staging-area-in-git/)*
56+
* *[Git branching strategies](https://tilburgsciencehub.com/topics/automation/version-control/advanced-git/git-branching-strategies/#:~:text=A%20Git%20branching%20strategy%20allows,set%20of%20advantages%20and%20disadvantages.)*
57+
* *Perez-Riverol, Y., Gatto, L., Wang, R., Sachsenberg, T., Uszkoreit, J., Leprevost Fda, V., Fufezan, C., Ternent, T., Eglen, S. J., Katz, D. S., Pollard, T. J., Konovalov, A., Flight, R. M., Blin, K., & Vizcaino, J. A. (2016). [Ten Simple Rules for Taking Advantage of Git and GitHub](https://doi.org/10.1371/journal.pcbi.1004947). PLoS Comput Biol, 12(7), e1004947.*
58+
* *[Comprehensive Guide to Version Control](https://medium.com/@liberatoreanita/mastering-git-a-comprehensive-guide-to-version-control-7624dbb88a94)*
4159

4260

43-
***Write comments as you code (not afterwards).** Modern IDEs will often automatically generate documentation strings as you write code, which removes the burden of having to remember to write comments. (e.g., PyCharm, DataSpell).*
44-
4561

62+
***Code testing***
4663

47-
***Automated documentation tools***
64+
*Interrogate specific and isolated coding behaviour to reduce coding errors and ensure intended functionality, especially as code increases in complexity. Describe if software tests have been performed and how to re-run these tests.*
4865

49-
*Consider the use of documentation tools to partially automate the generation of documentation. For example, using Python docstrings (https://realpython.com/documenting-python-code/) together with Sphinx https://www.sphinx-doc.or) to automatically generate documentation.*
66+
*From [IBM](https://www.ibm.com/topics/software-testing): There are many different types of software tests, each with specific objectives and strategies:*
5067

68+
- ***Acceptance testing:** Verifying whether the whole system works as intended.*
69+
- ***Code review:** Confirming that new and modified software is following an organization’s coding standards and adheres to its best practices.*
70+
- ***Integration testing:** Ensuring that software components or functions operate together.*
71+
- ***[Unit testing](https://en.wikipedia.org/wiki/Unit_testing):** Validating that each software unit runs as expected. A unit is the smallest testable component of an application.*
72+
- ***Functional testing:** Checking functions by emulating business scenarios, based on functional requirements.*
73+
- ***Performance testing:** Testing how the software runs under different workloads. Load testing, for example, is used to evaluate performance under real-life load conditions.*
74+
- ***Regression testing:** Checking whether new features break or degrade functionality. Sanity testing can be used to verify menus, functions and commands at the surface level, when there is no time for a full regression test.*
75+
- ***Security testing:** Validating that your software is not open to hackers or other malicious types of vulnerabilities that might be exploited to deny access to your services or cause them to perform incorrectly.*
76+
- ***Stress testing:** Testing how much strain the system can take before it fails. Stress testing is considered to be a type of non-functional testing.*
77+
- ***Usability testing:** Validating how well a customer can use a system or web application to complete a task.*
5178

79+
*Not all of these tests are equally important when it comes to scientific software.*
5280

53-
*<u>Instructions</u>:*
5481

55-
* *Remove all Instructions and the Explanation once you have completed the template.*
56-
* *Level of detail: Information provided should be sufficient for someone who was not involved in the project and/or has limited knowledge about the topic, to understand and reproduce the project.*
5782

83+
***Code documentation***
5884

85+
*Write comments as you code (not afterwards). Modern IDEs can assist in to automatically generate documentation strings as you write code, which removes the burden of having to remember to write comments. (e.g., PyCharm, DataSpell from [JetBrains](https://www.jetbrains.com/)).*
5986

60-
***Software documentation***
87+
*Be aware of guidelines and tools to (automatically) generate documentation such as [Sphinx](https://www.sphinx-doc.org) using Python [docstrings](https://www.geeksforgeeks.org/python-docstrings/), and r2readthedocs, and [roxygen2](https://cran.r-project.org/web/packages/roxygen2/index.html) for R, will also help to improve reproducibility. We used Sphinx for the documentation of the sFSS Navigator.*
6188

62-
*Ensure that you have properly documented your code.* *Not all types of software documentation on this list need to be written for a single research or support project but a combination of several should be selected depending on the nature of the project. Whether more or less documentation is needed for your project will depend on its scale and complexity. For a research project you need at least to write (external) source code documentation and user documentation.*
89+
*There are different types of documentation:*
6390

6491
- *Requirements Specification*
6592

6693
- *Software Design*
6794

6895
- ***(External) source code documentation***
6996
- *Place a brief explanatory comment at the start of every program.*
70-
97+
7198
- *Document the input and output of your script/functions.*
7299
- *Describe what the code is doing and why.*
73-
100+
74101
- *Testing Requirements*
75102
- ***End-User Instructions (including a quick-start guide)***
76103
- *How to install and configure the software.*
@@ -79,11 +106,29 @@
79106
- *Under what license it’s released.*
80107
- *Include a help command for command line interfaces*
81108

109+
In bold the documentation that should be provided at a minimum in the context of ENCORE.
110+
111+
112+
113+
***Integrated development environment** (IDE)*
114+
115+
*Integrated Development Environments help to improve software. Consider using an IDE, e.g., [Visual Studio Code](https://code.visualstudio.com/), PyCharm and DataSpell from JetBrains (https://www.jetbrains.com/), RStudio (https://www.rstudio.com/).*
116+
117+
*IDEs offer a various advantages:*
82118

119+
* *Build in compilation and build tools*
120+
* *Code editing features (e.g., syntax highlighting, code completion, code refactoring)*
121+
* *Code debugging and testing*
122+
* *Code documentation*
123+
* *Integration with versioning systems*
124+
* *Integration with AI-based tools such as Copilot*
125+
* *Extensibility (plugins) and Customization (workflow)*
83126

84-
***Version control your documentation.***
85127

86-
*Keep your documentation inside your Git repository along with the rest of your files. In addition/alternatively ‘Read the Docs’ (https://readthedocs.org/) provides an approach for hosting and automatically building documentation.*
128+
129+
***AI-based tools***
130+
131+
*Large Language Models (LLMs) increasingly play a role in software development, testing, and documentation (e.g., Copilot, ChatGPT). Copilot is also integrated with GitHub Codespaces. It is worthwhile to try out these new tools.*
87132

88133

89134

@@ -93,6 +138,19 @@
93138

94139

95140

141+
*<u>Instructions</u>:*
142+
143+
* *Remove all Instructions and the Explanation once you have completed the template.*
144+
* *Level of detail: Information provided should be sufficient for someone who was not involved in the project and/or has limited knowledge about the topic, to understand and reproduce the project.*
145+
146+
147+
148+
***Software documentation***
149+
150+
*Ensure that you have properly documented your code.* *Not all types of software documentation of the list above need to be written for a single research or support project but a combination of several should be selected depending on the nature of the project. Whether more or less documentation is needed for your project will depend on its scale and complexity. For a research project you need at least to write (external) source code documentation and user documentation.*
151+
152+
153+
96154
====== TEMPLATE STARTS HERE ======
97155

98156

0 commit comments

Comments
 (0)