Helping hand regarding software

Preamble

The Deutsche Forschungsgemeinschaft (DFG, German Research Foundation) has approved a code of conduct Guidelines for Safeguarding Good Research Practice which also applies to all CRCs. In Guideline 13 this code states:

[...] Software programmed by researchers themselves is made publicly available along with the source code. [...]

This means, if you used software or your coauthors programmed yourself in a preprint, paper, or doctoral thesis, then you have to make it publicly available on repositories like KITopen, GitHub or Zenodo, see https://wissenschaftliche-integritaet.de/en/comments/software-development-and-handling-research-data-in-mathematics/ for details.

Best practice standards

  • Deliver a driver file for each figure or table content (e.g. run times, error estimates) that is based on numerical computations. This means something like a file called for example "run_figure_1.m" (in case the code is MATLAB based) that produces figure 1 of the corresponding preprint/publication. Remark: the outcome need not be an exact match, but it has to be a qualitative match. So it does not matter if you did some cropping afterwards or made other manual changes to the labeling for example.
  • Provide your reference solution (especially when its computation takes long), but make it somehow optional (with an optional argument, a special driver file, a switch within the driver file) to recompute it also. Please annotate these possibilities in a readme file.
  • Provide a readme file, which contains
    • title and authors of the corresponding preprint/publication
    • software requirements and versions that were used
    • instructions for usage (optional)
    • explanatory remarks

Useful hints

Note: In the following we refer to tables or figures (where we do need the code) as numerical results.

Publications with co-authors

Guideline 14 of the DFG code of conduct states: All authors agree on the final version of the work to be published. Unless explicitly stated otherwise, they share responsibility for the publication.

This means that you have to provide the code and show how you produced the results if, for instance, somebody has difficulties reproducing your numerical results and your co-author is no longer available (for instance a PhD student who went to industry). If you are not able to do so, this might already lead to scientific misconduct.
You can avoid such a situation by clearly stating in the manuscript who takes the responsibility for the numerical results or by convincing yourself that you are able to run the code and to provide the software if necessary.

Randomness
When you have randomness in your simulations, make sure you initialize the random number generator (e.g., by setting a seed in MATLAB) for being able to reproduce your results.