When we browse literature on first-principle study, we see they usually report the methodology, used program with the version number and the results. In some cases, people share their input files, intermediate data files, workflow and even custom scripts (for example, see Giulia Galli's research group's publications here). However, this is not always the case and in some cases, authors cannot provide the data after 5-10 years of publication due to the data being lost. Now, in order to ensure reproducibility (and to back up our results when confronted/asked), which data files should we store after we have done a calculation?

I am doing DFT calculations using Quantum ESPRESSO code. Aside from the input files, versions, scripts, workflows, which data is important to store? QE (and to the best of my knowledge, any other DFT codes too) produce charge density files, and wavefunctions. So far I am backing up all the data in an external drive. But the wavefunctions are really large and often a publication (which might have 100s of DFT calculation) costs several TB of storage. If we delete them and then someone claims our results are wrong or we find something wrong in our post-processing scripts, then we have to rerun the calculations, generate the wavefunctions from the scratch and then do the post-processing. The positive aspect of storing all the data is that in case of post-processing, it is readily doable (band structure, dos, charge density analysis, etc.) and no calculation needs to be repeated.

So, I am conflicted about what to store. My current strategy is to store everything except the wavefunctions for all the calculations (very small size) and only the SCF wavefunctions which is produced inside the outdir/PREFIX.save/ directory in the format wfcup**.hdf5 or wfcdw**.hdf5 where ** ranges over the number of k-points. I am asking this question to know from other researchers who are publishing in the field of DFT calculation. Which files are you storing forever?

  • 5
    $\begingroup$ I usually prefer to save as much as possible, especially things that will use large amounts of time/resources to reproduce. You have access to our resources at HPQC Labs, in which we have had more than 1 petabyte available in total (this includes /nearline storage, which is meant for "archiving" the data for long-term storage (this is different from /project storage which is for fast I/O and fast calculations, so it is more expensive and one could have, for example, 100TB of /project space for every 300 GB of /nearline space). $\endgroup$ Commented Apr 29 at 4:47
  • 5
    $\begingroup$ There is a reproducibility crisis in science (en.wikipedia.org/wiki/Replication_crisis) and theoretical condensed matter physics and quantum chemistry are also affected by this. So I suggest you store everything that is needed to reproduce your results. If a file is just temporarily needed by the calculation and not needed in terms of an output or input, it is probably not that important. Quantum Espresso offers an interface to the AiiDA framework, which tracks the complete provenance of your calculations. Using that may be the most convenient answer to your question. $\endgroup$ Commented May 1 at 15:47

1 Answer 1


Gregor Michalicek noted above in a comment, "I suggest you store everything that is needed to reproduce your results. If a file is just temporarily needed by the calculation and not needed in terms of an output or input, it is probably not that important."

I agree with Gregor. The goal of a scientific study is to have reproducible results. If you have inputs and outputs, this is already sufficient to enable (dis)verification of the standard properties computed by the program.

If, on the other hand, you have implemented some new methods or complicated analyses, then you should also publish the code you used, since this is necessary to reproduce the results; everything else can just be recomputed if necessary. It is just not practicable to store large data files in the long term.

Importantly, for full reproducibility, you should use scripts to run the calculations and analysis, and include these in the supporting information / data repository: reproducing the data should be as simple as pressing a button (assuming infinite computational resources).

  • $\begingroup$ I would like to add that, one way to check that other people can reproduce your results is to ask someone to reproduce your calculations to make sure that they would get the results, before publishing a manuscript. $\endgroup$ Commented May 2 at 10:13
  • $\begingroup$ @HighPerformanceRangsiman it is not always practical though. For some calculation, I used upto 50 nodes each equipped with 112 CPU. It has been in the queue for hours, if not days, before running and takes a couple of hours to finish. Now, imagine this type of calculation but 100 times more since we are testing different dopant atoms one-by-one, there is also relaxation calculation and band structure calculation, etc. $\endgroup$ Commented May 2 at 14:19
  • $\begingroup$ @SusiLehtola thank you. Actually the comments from Nike and Gregor were very helpful. In my case, these are some routine DFT calculations using QE. So no new method or modification of the source code. So it all boil downs to feasibility I guess. I will continue storing as much as I can but at the very least, all the input & output files, custom scripts, source code of the program used, etc. $\endgroup$ Commented May 2 at 14:24
  • 2
    $\begingroup$ Actually, you can also create a data publication at Materials Cloud (materialscloud.org/home) or some other data repository. Then you don't have to store it for years and the data is also way more open and in accordance to the FAIR principles. $\endgroup$ Commented May 2 at 18:13
  • $\begingroup$ @GregorMichalicek perfect! I was looking for something like this. So far the best I could find is Qresp with using Zenodo as my data repository. Thanks again. Need to spend some time on learning aiida! $\endgroup$ Commented May 3 at 12:34

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .