Joss-reviews: [REVIEW]: archetypal: A Python package for collecting, simulating, converting and analyzing building archetypes

Created on 23 Oct 2019  Β·  71Comments  Β·  Source: openjournals/joss-reviews

Submitting author: @samuelduchesne (Samuel Letellier-Duchesne)
Repository: https://github.com/samuelduchesne/archetypal
Version: v1.3
Editor: @kyleniemeyer
Reviewer: @brynpickering, @ThibaultMarzullo
Archive: 10.5281/zenodo.3885587

Status

status

Status badge code:

HTML: <a href="https://joss.theoj.org/papers/54bf8f9bac246d1e5e9a60f43647af07"><img src="https://joss.theoj.org/papers/54bf8f9bac246d1e5e9a60f43647af07/status.svg"></a>
Markdown: [![status](https://joss.theoj.org/papers/54bf8f9bac246d1e5e9a60f43647af07/status.svg)](https://joss.theoj.org/papers/54bf8f9bac246d1e5e9a60f43647af07)

Reviewers and authors:

Please avoid lengthy details of difficulties in the review thread. Instead, please create a new issue in the target repository and link to those issues (especially acceptance-blockers) by leaving comments in the review thread below. (For completists: if the target issue tracker is also on GitHub, linking the review thread in the issue or vice versa will create corresponding breadcrumb trails in the link target.)

Reviewer instructions & questions

@brynpickering & @ThibaultMarzullo, please carry out your review in this issue by updating the checklist below. If you cannot edit the checklist please:

  1. Make sure you're logged in to your GitHub account
  2. Be sure to accept the invite at this URL: https://github.com/openjournals/joss-reviews/invitations

The reviewer guidelines are available here: https://joss.readthedocs.io/en/latest/reviewer_guidelines.html. Any questions/concerns please let @kyleniemeyer know.

✨ Please try and complete your review in the next two weeks ✨

Review checklist for @brynpickering

Conflict of interest

  • [x] I confirm that I have read the JOSS conflict of interest (COI) policy and that: I have no COIs with reviewing this work or that any perceived COIs have been waived by JOSS for the purpose of this review.

Code of Conduct

General checks

  • [x] Repository: Is the source code for this software available at the repository url?
  • [x] License: Does the repository contain a plain-text LICENSE file with the contents of an OSI approved software license?
  • [x] Contribution and authorship: Has the submitting author (@samuelduchesne) made major contributions to the software? Does the full list of paper authors seem appropriate and complete?

Functionality

  • [x] Installation: Does installation proceed as outlined in the documentation?
  • [x] Functionality: Have the functional claims of the software been confirmed?
  • [ ] Performance: If there are any performance claims of the software, have they been confirmed? (If there are no claims, please check off this item.)

Documentation

  • [x] A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • [x] Installation instructions: Is there a clearly-stated list of dependencies? Ideally these should be handled with an automated package management solution.
  • [x] Example usage: Do the authors include examples of how to use the software (ideally to solve real-world analysis problems).
  • [x] Functionality documentation: Is the core functionality of the software documented to a satisfactory level (e.g., API method documentation)?
  • [x] Automated tests: Are there automated tests or manual steps described so that the functionality of the software can be verified?
  • [x] Community guidelines: Are there clear guidelines for third parties wishing to 1) Contribute to the software 2) Report issues or problems with the software 3) Seek support

Software paper

  • [x] Summary: Has a clear description of the high-level functionality and purpose of the software for a diverse, non-specialist audience been provided?
  • [x] A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • [x] State of the field: Do the authors describe how this software compares to other commonly-used packages?
  • [x] Quality of writing: Is the paper well written (i.e., it does not require editing for structure, language, or writing quality)?
  • [x] References: Is the list of references complete, and is everything cited appropriately that should be cited (e.g., papers, datasets, software)? Do references in the text use the proper citation syntax?

Review checklist for @ThibaultMarzullo

Conflict of interest

  • [x] I confirm that I have read the JOSS conflict of interest (COI) policy and that: I have no COIs with reviewing this work or that any perceived COIs have been waived by JOSS for the purpose of this review.

Code of Conduct

General checks

  • [x] Repository: Is the source code for this software available at the repository url?
  • [x] License: Does the repository contain a plain-text LICENSE file with the contents of an OSI approved software license?
  • [x] Contribution and authorship: Has the submitting author (@samuelduchesne) made major contributions to the software? Does the full list of paper authors seem appropriate and complete?

Functionality

  • [x] Installation: Does installation proceed as outlined in the documentation?
  • [x] Functionality: Have the functional claims of the software been confirmed?
  • [x] Performance: If there are any performance claims of the software, have they been confirmed? (If there are no claims, please check off this item.)

Documentation

  • [x] A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • [x] Installation instructions: Is there a clearly-stated list of dependencies? Ideally these should be handled with an automated package management solution.
  • [x] Example usage: Do the authors include examples of how to use the software (ideally to solve real-world analysis problems).
  • [x] Functionality documentation: Is the core functionality of the software documented to a satisfactory level (e.g., API method documentation)?
  • [x] Automated tests: Are there automated tests or manual steps described so that the functionality of the software can be verified?
  • [x] Community guidelines: Are there clear guidelines for third parties wishing to 1) Contribute to the software 2) Report issues or problems with the software 3) Seek support

Software paper

  • [x] Summary: Has a clear description of the high-level functionality and purpose of the software for a diverse, non-specialist audience been provided?
  • [x] A statement of need: Do the authors clearly state what problems the software is designed to solve and who the target audience is?
  • [x] State of the field: Do the authors describe how this software compares to other commonly-used packages?
  • [x] Quality of writing: Is the paper well written (i.e., it does not require editing for structure, language, or writing quality)?
  • [x] References: Is the list of references complete, and is everything cited appropriately that should be cited (e.g., papers, datasets, software)? Do references in the text use the proper citation syntax?
accepted published recommend-accept review

Most helpful comment

I signed up to become a reviewer πŸ˜ƒ

All 71 comments

Hello human, I'm @whedon, a robot that can help you with some common editorial tasks. @brynpickering, @ThibaultMarzullo it looks like you're currently assigned to review this paper :tada:.

:star: Important :star:

If you haven't already, you should seriously consider unsubscribing from GitHub notifications for this (https://github.com/openjournals/joss-reviews) repository. As a reviewer, you're probably currently watching this repository which means for GitHub's default behaviour you will receive notifications (emails) for all reviews 😿

To fix this do the following two things:

  1. Set yourself as 'Not watching' https://github.com/openjournals/joss-reviews:

watching

  1. You may also like to change your default settings for this watching repositories in your GitHub profile here: https://github.com/settings/notifications

notifications

For a list of things I can do to help you, just type:

@whedon commands

For example, to regenerate the paper pdf after making changes in the paper's md or bib files, type:

@whedon generate pdf
Attempting PDF compilation. Reticulating splines etc...

πŸ‘‹ @samuelduchesne @brynpickering @ThibaultMarzullo the actual review takes place in here. Please see the instructions above. Thanks!

Hi @samuelduchesne, I'm going through the paper and the software now. It's an interesting idea and work.

Paper:
It would benefit from the addition of some context as well as a couple of clarifications, see this issue for more details.

Documentation:
Generally speaking it seems incomplete, the user is left to finding out on their own how to use _archetypal_ for any task other than converting models. See this issue for more details.

I'll get back to you as soon as I run the tests, the only issue is that I won't be able to test the TRNSYS model since I don't own a license.

Hey @samuelduchesne, just had a chance to go through this. A tool to help collate building archetypes and work on collections of models seems incredibly useful, but I've come across a few issues that would need addressing to make sure it is a sufficiently robust piece of software for general use. It looks like neither myself or @ThibaultMarzullo will be able to test the TRNSYS functionality, so some demonstration from your end might be necessary to convince us on that...?

MacOS compatibility

see https://github.com/samuelduchesne/archetypal/issues/42 and https://github.com/samuelduchesne/archetypal/issues/45

I'm not sure this has actually been tested on MacOS. The installation instructions do cover it, but I have hit a few roadblocks along the way, and some of the inbuilt tests fail. I would consider a conda forge version of archetype, where you can do OS-specific testing, for a more robust package.

EnergyPlus compatibility

see https://github.com/samuelduchesne/archetypal/issues/43

Given that E+ is such an integral part of your software, it would be good to have a better handle on allowed E+ versions and dealing with a. IDF files without explicit versions and b. use of v.9.2.0 (current latest E+ version, currently fails).

Documentation

see https://github.com/samuelduchesne/archetypal/issues/44

This is currently seriously lacking, with errors in the little example code that there is. There seems to be a lot of functionality in the software, but it is all lost due to lack of tutorial documentation, and limited API method documentation. Using e.g. in-built E+ example models / DOE benchmark models to show off loading in multiple files, comparing DataFrames, comparing solve times, etc. is really necessary to help users understand the software and its benefits. As is, I don't feel able to really play around with the software as I don't know what most of the possibilities are without delving into each function in the core code.

Tests and graceful failure

see https://github.com/samuelduchesne/archetypal/issues/46, https://github.com/samuelduchesne/archetypal/issues/43 and https://github.com/samuelduchesne/archetypal/issues/45

I think tests are currently lacking, since I've seemingly broken the software already on multiple occasions (some of which is MacOS-specific). In some instances, I would expect to see a much clearer error message (e.g. E+ version issues), which requires catching and processing some of the more likely strange ways a user could abuse the software. But in other cases, the package fails when following the documentation...

Paper

see https://github.com/samuelduchesne/archetypal/issues/47
I'm happy with the paper, I get a good grasp of what I could do with archetypal, and you cite sources for the methods which underpin what you do. It might be nice to see a table of performance metrics to compare running a new E+ model, cached E+ model, and 'shoeboxed' E+ model, to show the relevant benefits of key archetypal functionality.

Hi @brynpickering and @ThibaultMarzullo! Sorry for the late reply on my end. I have been quite busy with the submission of my thesis this week. Now it is done! so I can commit to this review process! πŸ’ͺ

You have provided valuable comments and uncovered issues we weren't able to pick even with our CI integration. If you do not mind letting us some time to get over all the issues, we will try to address them as soon as possible.

For the issue of TRNSYS, how about we show a proof of use as a screencast video maybe? @louisleroy5, do you have some thoughts? Could be included in the documentation πŸ€”

@whedon generate pdf

Attempting PDF compilation. Reticulating splines etc...

Hi @samuelduchesne, just wanted to check in and see how your work was going.

Hi @kyleniemeyer, we are making good progress! We received valuable comments and are addressing them. Thanks for checking with us!

@whedon generate pdf from branch develop

Attempting PDF compilation from custom branch develop. Reticulating splines etc...

@whedon generate pdf from branch develop

Attempting PDF compilation from custom branch develop. Reticulating splines etc...

@samuelduchesne @kyleniemeyer β€” what is the next action on this submission?

@labarba β€” still a few things to address. With my thesis defense just last week, things were pretty hectic. I’ll finish the review right after the holidays. Sorry if it takes so long; I want this to be right.

πŸ‘‹ @samuelduchesne β€” Checking in again on this JOSS submission. What is your timeline now?

Hi! Working on this now. I will publish some changes this week and check-in with the reviewers. Should be able to finish up by the end of next week.

...It looks like neither myself or @ThibaultMarzullo will be able to test the TRNSYS functionality, so some demonstration from your end might be necessary to convince us on that...?

Hi @ThibaultMarzullo and @brynpickering, regarding the TRNSYS functionality, I recorded the archetypal convert method that translates an IDF file to a TRNSYS model: https://youtu.be/jB5PhQ2YzKg.

The command has the --trnsidf_exe option pointing to the path of the executable which was located in the docker folder (the executable itself is not pushed to GitHub since it is a proprietary software). The two other arguments are the IDF file path and the weather file path. The output folder is not provided (which defaults to the current directory).

@whedon generate pdf from branch develop

Attempting PDF compilation from custom branch develop. Reticulating splines etc...

PDF failed to compile for issue #1833 with the following error:

sh: 0: getcwd() failed: No such file or directory
pandoc: 10.21105.joss.01833.pdf: openBinaryFile: does not exist (No such file or directory)
Looks like we failed to compile the PDF

@whedon generate pdf from branch develop

Attempting PDF compilation from custom branch develop. Reticulating splines etc...

PDF failed to compile for issue #1833 with the following error:

sh: 0: getcwd() failed: No such file or directory
sh: 0: getcwd() failed: No such file or directory
pandoc: 10.21105.joss.01833.pdf: openBinaryFile: does not exist (No such file or directory)
Looks like we failed to compile the PDF

@whedon generate pdf from branch develop

Attempting PDF compilation from custom branch develop. Reticulating splines etc...

Hi @labarba @ThibaultMarzullo @brynpickering! What are the next steps here?

Hi @brynpickering and @ThibaultMarzullo, it looks like @samuelduchesne has done some work in response to your review comments. Can you take another look now?

Hi @samuelduchesne, thanks for taking the time to address our issues and update archetypal. It looks to have changed markedly since the first set of reviews.
I've checked off most of the items on my review checklist, here are the outstanding items that I'd like some clarification on:

Installation

I'd like to re-do this, since I had issues the first time around. But it would be best on a stable release, which there doesn't seem to have been since July last year. Do you have an idea of your release schedule?

Performance

You talk about speed gain possibilities (inc. from caching) in your paper, but I don't see anything in the paper or the documentation to back up this claim.

I've also created a minor issue on the paper on your repo.

Hi @brynpickering! Regarding the release schedule, I was thinking of scraping older releases and reissuing a version 1.0 once the review process is complete. I take it that the first public-ready version of a package is typically version 1.0.0. I could release the current state of the develop branch as version 0.9, which I would then upload to PyPI. Then you could try the install procedure using pip install archetypal. Is that a good a plan?

As for the caching capabilities, archetypal caches the IDF file as well as simulation results. For the IDF file, this means that if you run an "older than 9.2" IDF file, archetypal will transition a copy of that file to version 9.2 (essentially making a copy beforehand) before running the simulation. The next time the run_eplus or the load_idf method is called, the cached (transitioned) file will be readily available and used; This helps to save some time with reproducible workflows as transitioning files can take quite some time.

As for simulation results. After run_eplus is called, the EnergyPlus outputs (.csv, sqlite, .mtd, .mdd, etc.) are cached in a folder structure than is identified according to the simulation parameters; those parameters include the IDF file itself (if the file content has changed, new simulation is required), whether an annual or design day simulation is executed, and a bunch of other parameters. This means that if run_eplus is called a second time (let us say after you reopen an old Jupyter Notebook), the run_eplus will bypass the EnergyPlus executable and retrieved the cached simulation results instead. This has two advantages, the first one being a quicker workflow and the second one making sure that whatever run_eplus returns fits the parameters used with the executable. Let me give you a real world example.

Let us say you are using a jupyter notebook, you would typically do the following:

import archetypal as ar
ar.config(use_cache=True, log_console=True)

ar.run_eplus(
    eplus_file="/Applications/EnergyPlus-8-9-0/ExampleFiles/BasicsFiles/AdultEducationCenter.idf",
    weather_file="/Applications/EnergyPlus-8-9-0/WeatherData/USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw",
    design_day=True,
    return_files=True,
    annual=False,
    return_idf=True,
    expandobjects=True,
    prep_outputs=True,
)

Since the file is a version 8.0 IDF file, archetypal is going to transition the file to EnergyPlus 9.2 (or any other version specified with the ep_version parameter) and execute EnergyPlus for the design_day only.

The above command yields a list of output files thanks to the return_files=True parameter. These will be located in a cache folder specified by the settings.cache_folder variable (this folder can be changed in using the ar.config() method).

[None,
 <archetypal.idfclass.IDF at 0x10fb9f4a8>,
 [Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/d04795a50b4ff172da72fec54c6991e4/d04795a50b4ff172da72fec54c6991e4tbl.csv'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/d04795a50b4ff172da72fec54c6991e4/d04795a50b4ff172da72fec54c6991e4out.end'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/d04795a50b4ff172da72fec54c6991e4/AdultEducationCenter.idf'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/d04795a50b4ff172da72fec54c6991e4/d04795a50b4ff172da72fec54c6991e4out.dxf'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/d04795a50b4ff172da72fec54c6991e4/d04795a50b4ff172da72fec54c6991e4out.eso'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/d04795a50b4ff172da72fec54c6991e4/d04795a50b4ff172da72fec54c6991e4out.mtd'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/d04795a50b4ff172da72fec54c6991e4/d04795a50b4ff172da72fec54c6991e4out.bnd'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/d04795a50b4ff172da72fec54c6991e4/d04795a50b4ff172da72fec54c6991e4out.sql'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/d04795a50b4ff172da72fec54c6991e4/d04795a50b4ff172da72fec54c6991e4out.mdd'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/d04795a50b4ff172da72fec54c6991e4/d04795a50b4ff172da72fec54c6991e4tbl.htm'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/d04795a50b4ff172da72fec54c6991e4/d04795a50b4ff172da72fec54c6991e4out.shd'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/d04795a50b4ff172da72fec54c6991e4/d04795a50b4ff172da72fec54c6991e4out.expidf'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/d04795a50b4ff172da72fec54c6991e4/d04795a50b4ff172da72fec54c6991e4out.err'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/d04795a50b4ff172da72fec54c6991e4/eplus_run_AdultEducationCenter.idf_2020_02_27.log'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/d04795a50b4ff172da72fec54c6991e4/d04795a50b4ff172da72fec54c6991e4out.mtr'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/d04795a50b4ff172da72fec54c6991e4/sqlite.err'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/d04795a50b4ff172da72fec54c6991e4/d04795a50b4ff172da72fec54c6991e4out.audit'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/d04795a50b4ff172da72fec54c6991e4/USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/d04795a50b4ff172da72fec54c6991e4/d04795a50b4ff172da72fec54c6991e4out.eio'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/d04795a50b4ff172da72fec54c6991e4/d04795a50b4ff172da72fec54c6991e4out.rdd')]]

Now, if I change the command above to annual=True and set design_day=False, then run_eplus should return the annual simulation results (which do not exist yet).

ar.run_eplus(
    eplus_file="/Applications/EnergyPlus-8-9-0/ExampleFiles/BasicsFiles/AdultEducationCenter.idf",
    weather_file="/Applications/EnergyPlus-8-9-0/WeatherData/USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw",
    design_day=False,
    return_files=True,
    annual=True,
    return_idf=True,
    expandobjects=True,
    prep_outputs=True,
)

Now, since the original IDF file (the version 8.9 one) has not changed, archetypal is going to look for the transitioned file that resides in the cache folder and use that one instead of retransitioning the original file a second time. On the other hand, since the parameters of run_eplus have changed (annual instead of design_day), it is going to execute EnergyPlus using the annual method and return the annual results (see that the second-level folder id has changed from d04795a50b4ff172da72fec54c6991e4 to 9efc05f6e6cde990685b8ef61e326d94):

[None,
 <archetypal.idfclass.IDF at 0x1a2c7e0128>,
 [Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/9efc05f6e6cde990685b8ef61e326d94/AdultEducationCenter.idf'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/9efc05f6e6cde990685b8ef61e326d94/9efc05f6e6cde990685b8ef61e326d94out.mdd'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/9efc05f6e6cde990685b8ef61e326d94/9efc05f6e6cde990685b8ef61e326d94out.shd'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/9efc05f6e6cde990685b8ef61e326d94/9efc05f6e6cde990685b8ef61e326d94tbl.htm'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/9efc05f6e6cde990685b8ef61e326d94/9efc05f6e6cde990685b8ef61e326d94out.audit'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/9efc05f6e6cde990685b8ef61e326d94/9efc05f6e6cde990685b8ef61e326d94out.mtr'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/9efc05f6e6cde990685b8ef61e326d94/9efc05f6e6cde990685b8ef61e326d94out.err'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/9efc05f6e6cde990685b8ef61e326d94/9efc05f6e6cde990685b8ef61e326d94out.rdd'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/9efc05f6e6cde990685b8ef61e326d94/9efc05f6e6cde990685b8ef61e326d94out.expidf'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/9efc05f6e6cde990685b8ef61e326d94/9efc05f6e6cde990685b8ef61e326d94out.eio'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/9efc05f6e6cde990685b8ef61e326d94/9efc05f6e6cde990685b8ef61e326d94out.dxf'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/9efc05f6e6cde990685b8ef61e326d94/9efc05f6e6cde990685b8ef61e326d94out.end'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/9efc05f6e6cde990685b8ef61e326d94/9efc05f6e6cde990685b8ef61e326d94tbl.csv'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/9efc05f6e6cde990685b8ef61e326d94/9efc05f6e6cde990685b8ef61e326d94out.eso'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/9efc05f6e6cde990685b8ef61e326d94/9efc05f6e6cde990685b8ef61e326d94out.bnd'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/9efc05f6e6cde990685b8ef61e326d94/9efc05f6e6cde990685b8ef61e326d94out.mtd'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/9efc05f6e6cde990685b8ef61e326d94/sqlite.err'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/9efc05f6e6cde990685b8ef61e326d94/9efc05f6e6cde990685b8ef61e326d94out.sql'),
  Path('cache/e8f4fb7e50ecaaf2cf2c9d4e4d159605/9efc05f6e6cde990685b8ef61e326d94/USA_IL_Chicago-OHare.Intl.AP.725300_TMY3.epw')]]

If I were to rerun the first code block (annual simulation) then it returns the cached results very quickly:

Successfully parsed cached idf run in 0.00 seconds

Hopefully, this makes a little bit more sense!

EDIT: noticed that you started on v1.0, not v0.1, at start of your project, so updated comments on versioning accordingly.

RE versioning: there's no reason to be on version 1.0 once it's ready for a public release; Pandas only released their version 1.0 this year, having reached v0.25! There's a lot of advice online about versioning (e.g. here) and I'm only an anecdotal source of wisdom on it. First off, you shouldn't delete historical versions, as it could cause all sorts of downstream issues (e.g. if some other package depends on an existing version of archetypal, everything will break). As to how to version your next release, I would consider how much of your API has updated since July last year. If the API hasn't changed, then you could just increment a minor version following the publishing of the JOSS paper. If it has changed (i.e. the methods are different, require different arguments, or return different objects), then I'd opt for version 2.0.

For the time being I can also just install archetypal from a local clone of your repository, if you'd prefer to release your next version only after the completion of the JOSS review.

RE caching: it does make sense. I would even add your detailed response to your documentation, to communicate it with potential users. What I was hoping for for this paper was some quantification of the performance increase. I.e. what is the difference in run-time thanks to caching. This could be mentioned in the paper and tabulated in the documentation. It should just be a matter of running the real world example you give here and recording time/memory consumption at each step.

Dear authors and reviewers

We wanted to notify you that in light of the current COVID-19 pandemic, JOSS has decided to suspend submission of new manuscripts and to handle existing manuscripts (such as this one) on a "best efforts basis". We understand that you may need to attend to more pressing issues than completing a review or updating a repository in response to a review. If this is the case, a quick note indicating that you need to put a "pause" on your involvement with a review would be appreciated but is not required.

Thanks in advance for your understanding.

_Arfon Smith, Editor in Chief, on behalf of the JOSS editorial team._

:wave: all, just a friendly check-in to see how things are going with this review?

I believe we are ready to move forward with the publication of the code?

@samuelduchesne sorry to lose track of this a bitβ€”I didn't see a response to @brynpickering's last comments.

Also, it looks like @ThibaultMarzullo also had some missing items in the checklist.

I've updated the checklist, I'm happy with this.

Would appreciate seeing an update to the paper / docs on cache performance, otherwise happy with everything πŸ‘

Hi @samuelduchesne, looks like we just need a few edits to the paper. Please let me know when you've done that, and I'll do my final checks.

:wave: @samuelduchesne - JOSS is now open again for submissions and we're actively trying to wrap up existing reviews.

Do you think you might be able to complete these last few items soon?

Yes I’ll try to wrap things up by the end of the month. Happy to see JOSS is fully back online!

@brynpickering, I have addressed the caching in https://github.com/samuelduchesne/archetypal/pull/87

@whedon generate pdf

Hi @samuelduchesne, I think we're ready to wrap things up here.

Can you make these final small edits to the paper?

  • In the summary paragraph, the sentence

archetypal is a Python package that helps handling collections of such archetypes and to enabling the interoperability between these energy simulation platforms to accelerate the creation of reliable urban building energy models.
seems incorrect, because of the "and to enabling" (it's also a bit long and complicated). I think changing that to "to enable" helps fix it, but you might consider revising the sentence overall for clarify.

  • in the paragraph about caching, I think API should be capitalized.

Once you've made those changes, please archive your repository on Zenodo and provide the DOI here.

Hi @kyleniemeyer, thanks for the feedback. Paper updated with https://github.com/samuelduchesne/archetypal/commit/e9232f26c83247249b7d12d228e53480bcf4cf19 and following DOI for zenodo files: 10.5281/zenodo.3885587

@whedon generate pdf

@whedon set 10.5281/zenodo.3885587 as archive

OK. 10.5281/zenodo.3885587 is the archive.

@whedon accept

Attempting dry run of processing paper acceptance...
Reference check summary:

OK DOIs

- 10.1016/j.enbuild.2017.01.030 is OK
- 10.1016/j.buildenv.2015.12.001 is OK
- 10.2172/90674 is OK

MISSING DOIs

- None

INVALID DOIs

- None

:wave: @openjournals/joss-eics, this paper is ready to be accepted and published.

Check final proof :point_right: https://github.com/openjournals/joss-papers/pull/1471

If the paper PDF and Crossref deposit XML look good in https://github.com/openjournals/joss-papers/pull/1471, then you can now move forward with accepting the submission by compiling again with the flag deposit=true e.g.
@whedon accept deposit=true

@whedon accept deposit=true

Doing it live! Attempting automated processing of paper acceptance...

🐦🐦🐦 πŸ‘‰ Tweet for this paper πŸ‘ˆ 🐦🐦🐦

🚨🚨🚨 THIS IS NOT A DRILL, YOU HAVE JUST ACCEPTED A PAPER INTO JOSS! 🚨🚨🚨

Here's what you must now do:

  1. Check final PDF and Crossref metadata that was deposited :point_right: https://github.com/openjournals/joss-papers/pull/1472
  2. Wait a couple of minutes to verify that the paper DOI resolves https://doi.org/10.21105/joss.01833
  3. If everything looks good, then close this review issue.
  4. Party like you just published a paper! πŸŽ‰πŸŒˆπŸ¦„πŸ’ƒπŸ‘»πŸ€˜

    Any issues? notify your editorial technical team...

πŸŽ‰πŸŽ‰πŸŽ‰!

Congrats @samuelduchesne on your article's publication in JOSS!

Many thanks to @brynpickering and @ThibaultMarzullo for reviewing this submission.

:tada::tada::tada: Congratulations on your paper acceptance! :tada::tada::tada:

If you would like to include a link to your paper from your README use the following code snippets:

Markdown:
[![DOI](https://joss.theoj.org/papers/10.21105/joss.01833/status.svg)](https://doi.org/10.21105/joss.01833)

HTML:
<a style="border-width:0" href="https://doi.org/10.21105/joss.01833">
  <img src="https://joss.theoj.org/papers/10.21105/joss.01833/status.svg" alt="DOI badge" >
</a>

reStructuredText:
.. image:: https://joss.theoj.org/papers/10.21105/joss.01833/status.svg
   :target: https://doi.org/10.21105/joss.01833

This is how it will look in your documentation:

DOI

We need your help!

Journal of Open Source Software is a community-run journal and relies upon volunteer effort. If you'd like to support us please consider doing either one (or both) of the the following:

@samuelduchesne FYI, it looks like the PDF isn't yet showing up on the journalβ€”that should just be a temporary issue

It's there for me

Same here. Thank you everyone!

I signed up to become a reviewer πŸ˜ƒ

Was this page helpful?
0 / 5 - 0 ratings