SMTG-Bham / ThermoParser

A tool for streamlining data analysis and visualisation for thermoelectrics and charge carrier transport in computational materials science.
https://smtg-bham.github.io/ThermoParser/
GNU Affero General Public License v3.0
46 stars 14 forks source link

[joss review] review from @enricgrau #71

Closed enricgrau closed 7 months ago

enricgrau commented 8 months ago

Regarding this JOSS review

Overall, the library shows a clear motivation and solution, along with comprehensive documentation, examples, and tutorials. I’d support for publication in JOSS after addressing my comments and concerns herein.

Manuscript The paper is well written and structured. It presents a clear motivation and solution with the library. The authors do a good job of describing the library, its structure, and its use. Here are some observations to improve the current state of the manuscript:

  1. The first sentence states that “thermoelectric materials could be an important renewable energy source to help slow the climate crisis”. Why? How? Examples of this? This feels like a random phrase without further context. However, I do not think it is necessary to include it in the manuscript as the identified problem is motivation and justification enough for the library. In other words, I suggest removing this line or developing a broader context on why and how these materials can help with the climate crisis.
  2. The authors claim the library has been used in the literature, however, explicit mention of the library is not present in the cited articles. There is mention of the library ThermoPlotter in Kavenagh (2021), Herring Rodriguez (2023), Brlec (2022), and Spooner (2021) which looks to be a previous version of ThermParser. Clarifying this in the manuscript would increase confidence in this claim. However, I did not find any mention in neither Spooner (2020) or Einhorn (2020). Even though I’m not specifically questioning the use of the library on those specific articles, I don’t think it corresponds to include them due to the lack of any explicit mention of it. Please correct me if there is any kind of mention of the library in said articles that I did not catch.
  3. I believe there is a typo at L.16: BoltzTrap(2), other mentions of the library are L.50: BoltzTraP, L.155: BoltzTraP…
  4. Phrasing could be better in L.95-97. Is the “;” a typo? Maybe a bullet point structure could improve the understanding of future directions of the library (if there are several)
  5. For Author Contribution I recommend using CRediT for a clearer and fair characterization of the authors’ contribution.

Documentation Gallery

Installation

Python Package

Repository

Tests Tests are good. They run smoothly with 98% and 89% coverage for calculate.py and settings.py, respectively. Good job.

kbspooner commented 8 months ago

Hi @enricgrau,

Thanks for the review!

Manuscript

Documentation

Gallery

Tutorials

Installation

Python Package

Repository

Tests

I hope this addresses your problems and concerns, of course if you spot anything else or have more comments, I'll be happy to address them!

For the record, this is in relation to this JOSS review.

enricgrau commented 7 months ago

Thank you for your comprehensive response. I’m quite satisfied with the changes you’ve made so far. I like the current state of the documentation and the manuscript. Here are some additional minor observations.

Installation This time I came across some minor issue with the commeand pip install . with this error:

ModuleNotFoundError: No module named 'matplotlib'
      [end of output]

  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for tp
Failed to build tp
ERROR: Could not build wheels for tp, which is required to install pyproject.toml-based projects

I fixed it with the following command before retrying: pip install setuptools wheel

I’m now in a different machine, so I’m not sure it’s a local issue but I tend to believe this. Because of this, and as it is an easy fix, I don’t think is a necessary fix for being accepted. You may have a quick look into this.

Data I was now able to download the data. However, I was only able to do so because you mentioned it here. I did not find any explicit mention on where or how to downloading the data in the documentation. I strongly recommend you include just a small instruction to do this (either manually or/and with the included in script). I might have missed this however, but it just was not clear to me.

Tutorials I only had problems with tutorial 2. The script keeps running infinitely and I get the following error every couple of seconds (this I was able to reproduce in both of my machines):

  File "C:\Users\User\AppData\Local\Programs\Python\Python311\Lib\multiprocessing\spawn.py", line 140, in _check_not_importing_main
    raise RuntimeError('''
RuntimeError:
        An attempt has been made to start a new process before the
        current process has finished its bootstrapping phase.

        This probably means that you are not using fork to start your
        child processes and you have forgotten to use the proper idiom
        in the main module:

            if __name__ == '__main__':
                freeze_support()
                ...

        The "freeze_support()" line can be omitted if the program
        is not going to be frozen to produce an executable.

        To fix this issue, refer to the "Safe importing of main module"
        section in https://docs.python.org/3/library/multiprocessing.html

Repository I understand there is nothing you can do retroactively. However, I insist that it would be great to keep this consistent in the future. I see now that the latest uploaded version is 3.1.2, which is great. I encourage you to make a new release matching the latest real version once the JOSS review is done. This so it incorporates all the changes and it accurately reflects your work and progress.

kbspooner commented 7 months ago

pre-script: I wrote this last week but evidently failed to post it. Sorry!

Glad to hear it!

Installation

I didn't realise in some cases setuptools and wheel weren't installed by default, but now I've added them to the requirements. This fix doesn't break the installation on my end, but if you could check if it works that would be great.

Data

I put that information in the files on github but forgot to also put it in the website docs, this is now corrected.

Tutorials

I can't reproduce this error, but another reviewer also had a (different) problem with the multiprocessing in this example on mac, which he found a solution for. I've implemented it in the latest version of the master branch, so perhaps you could try again?

Repository

I will certainly do this!

enricgrau commented 7 months ago

No problem! Thank you for your hard work. I'll close this issue and recommend for publication.