Hi @Dima-Faraji —thank you very much for your contributions to the iTEM Open Data code! We appreciate that members of the community, such as yourself, make efforts to expand the scope and quality of the data included in this shared resource.
In this review, I will do a few things:
Summarize what I think is being added by the commits on this branch. (This is information that should go in the description of the pull request. If I am guessing incorrectly, please correct me by providing the correct explanation.)
Identify TODOs to merge this branch/PR.
Identify TODOs for further clean-up (after the branch is merged).
To be clear, I understand from you and @soniayeh that the course in which you did this work is coming to an end, so you may not have dedicated time to do (2) or (3). So those TODOs are mentioned without saying who will do them or when—it could be you, me, or someone else; sooner or later.
What is added
Four data-cleaning modules, each cleaning one data flow from the Asian Development Bank (ADB) Asian Transport Outlook (ATO); I guess the 2023 edition:
sources.yaml —appears to contain entries corresponding to the 4 added modules, plus the original contents of this file.
Files like T011.py that appear similar to the above.
Jupyter notebook versions of the above files.
TODOs to merge the branch
[ ] Choose a new name for T012. Notice that this file already exists on the main branch here, and the changes on this branch delete its original contents.
[ ] Deduplicate the code in the 4 added modules. For instance, the files T011.py and T012.py are about 350 lines, but >250 of these lines are identical in both files; this makes it difficult to identify which steps are common versus specific to each input data flow. One way to achieve this would be to define the class AtoWorkbook in a single file, then import it in each of the 4 modules, setting some different parameters or creating a subclass.
[ ] Provide a single entry-point in each module. Existing data modules like T000 do not execute any code when they are imported; they instead provide a function like process() that triggers processing of the data. Looking at your current code, this could call the method atoWorkBook.process_input_data().
[ ] Create a pull request in transportenergy/metadata that makes the necessary additions to sources.yaml, currently contained on this branch, and any other metadata that is needed by your code. Remove all other files from the dima/ folder; you can provide them as attachments to this PR if they are records of the development process.
[ ] Add documentation, for instance in the docstring at the top of each module. Explain, at least, which specific data are used: at what URL can the original input data be found?
[ ] Ensure the tests pass. This can be started by rebasing the branch on transportenergy:main.
TODOs for follow-up
[ ] Consider overlap with the transport_data.adb code maintained by the Transport Data Commons, here; make use of the TDC code where possible, and keep the features specific to iTEM Open Data.
[ ] Consider overlap with e.g. the class AtoWorkbook added in #78 / ItemTransformer in #80; merge common actions to common code.
[ ] Add the new modules to the test suite. item.tests.test_historical contains tests of the existing (T000–T010, T012) data modules, and these tests should be expanded to test the modules added in this PR.
Hi @Dima-Faraji —thank you very much for your contributions to the iTEM Open Data code! We appreciate that members of the community, such as yourself, make efforts to expand the scope and quality of the data included in this shared resource.
In this review, I will do a few things:
To be clear, I understand from you and @soniayeh that the course in which you did this work is coming to an end, so you may not have dedicated time to do (2) or (3). So those TODOs are mentioned without saying who will do them or when—it could be you, me, or someone else; sooner or later.
What is added
item.historical.T011
→ TAS-PAT-017(1)item.historical.T012
→ TAS-FRA-005(2)item.historical.T013
→ TAS-PAG-005(2)item.historical.T014
→ TAS-VEP-005(2)TODOs to merge the branch
main
branch here, and the changes on this branch delete its original contents.class AtoWorkbook
in a single file, then import it in each of the 4 modules, setting some different parameters or creating a subclass.T000
do not execute any code when they are imported; they instead provide a function likeprocess()
that triggers processing of the data. Looking at your current code, this could call the methodatoWorkBook.process_input_data()
.dima/
folder; you can provide them as attachments to this PR if they are records of the development process.transportenergy:main
.TODOs for follow-up
transport_data.adb
code maintained by the Transport Data Commons, here; make use of the TDC code where possible, and keep the features specific to iTEM Open Data.class AtoWorkbook
added in #78 /ItemTransformer
in #80; merge common actions to common code.item.tests.test_historical
contains tests of the existing (T000–T010, T012) data modules, and these tests should be expanded to test the modules added in this PR.