Skip to content

Peer review 1 (Cade) #1

@caquigley

Description

@caquigley

Checklist

  • [x ] Adheres to PEP-8 formatting (or consistent and explained when deviating)
  • [x ] Commit history that reflects small and frequent commits since project assignment
  • [x ] Clear installation instructions, installation tested if available
  • Cade: The installation instructions are very clear. When I tried to create an environment using your demDiff.yml, it failed to solve the environment. It raised the following packages as the issue:
    Solving environment: failed

PackagesNotFoundError: The following packages are not available from current channels:

  • zstd==1.5.6=h138b38a_0

  • zlib==1.2.13=h4b97444_1

  • xz==5.6.4=h46256e1_1

  • xyzservices==2022.9.0=py311hecd8cb5_1

  • xerces-c==3.2.4=hcec6c5f_1

  • xarray==2025.4.0=py311hecd8cb5_0

  • wheel==0.45.1=py311hecd8cb5_0

  • urllib3==2.5.0=py311hecd8cb5_0

  • uriparser==0.9.8=h60e8073_0

  • unicodedata2==15.1.0=py311h46256e1_1

  • tk==8.6.15=h3a5a201_0

  • tiledb==2.3.3=h1b93210_3

  • tbb==2021.8.0=ha357a0b_0

  • sqlite==3.50.2=hc8b0dd6_1

  • six==1.17.0=py311hecd8cb5_0

  • shapely==2.1.1=py311h9c78e49_0

  • setuptools==78.1.1=py311hecd8cb5_0

  • scipy==1.13.0=py311h224febf_0

  • scikit-learn==1.2.2=py311hcec6c5f_0

  • rioxarray==0.18.1=py311hecd8cb5_0

  • requests==2.32.4=py311hecd8cb5_0

  • readline==8.3=h49f2429_0

  • rasterio==1.4.3=py311h43b108d_0

  • qhull==2020.2=ha357a0b_2

  • pytz==2025.2=py311hecd8cb5_0

  • python-dateutil==2.9.0post0=py311hecd8cb5_2

  • python==3.11.13=hbff2529_0

  • pysocks==1.7.1=py311hecd8cb5_0

  • pyproj==3.6.1=py311h5e63ee0_1

  • pyparsing==3.2.0=py311hecd8cb5_0

  • pyogrio==0.10.0=py311h8ffba06_0

  • proj==9.3.1=h2218de1_1

  • poppler-data==0.4.11=hecd8cb5_1

  • poppler==24.09.0=h1093dcf_3

  • pixman==0.46.4=hb254d66_0

  • pillow==11.3.0=py311h25d8182_0

  • pcre2==10.42=h9b97e30_1

  • pandas==2.3.1=py311hebe84f7_0

  • packaging==25.0=py311hecd8cb5_0

  • openssl==3.0.17=hee2dfae_0

  • openldap==2.6.10=h5897940_0

  • openjpeg==2.5.2=h2d09ccc_1

  • numpy-base==1.26.4=py311h53bf9ac_0

  • numpy==1.26.4=py311h728a8a3_0

  • numexpr==2.8.7=py311h728a8a3_0

  • nss==3.89.1=hcec6c5f_0

  • nspr==4.35=hcec6c5f_0

  • networkx==3.4.2=py311hecd8cb5_0

  • ncurses==6.5=h923df54_0

  • mkl_random==1.2.4=py311ha357a0b_0

  • mkl_fft==1.3.8=py311h6c40b1e_0

  • mkl-service==2.4.0=py311h46256e1_2

  • mkl==2023.1.0=h8e150cf_43560

  • minizip==4.0.3=h79ad51c_0

  • matplotlib-base==3.10.0=py311h919b35b_0

  • markupsafe==3.0.2=py311h46256e1_0

  • mapclassify==2.5.0=py311hecd8cb5_0

  • lz4-c==1.9.4=hcec6c5f_1

  • lmdb==0.9.31=hc8b0dd6_0

  • llvm-openmp==19.1.7=h5048363_2

  • libzip==1.8.0=h29ab7a1_1

  • libxml2==2.13.8=h6070cd6_0

  • libwebp-base==1.3.2=h46256e1_1

  • libtiff==4.7.0=h2dfa3ea_0

  • libssh2==1.11.1=h3a17b82_0

  • libspatialite==5.1.0=ha633967_2

  • libsodium==1.0.18=h1de35cc_0

  • libpq==17.4=h40f65ae_2

  • libpng==1.6.39=h6c40b1e_0

  • libnghttp2==1.57.0=h9beae6a_0

  • libnetcdf==4.8.1=hedf2ebd_5

  • libkrb5==1.21.3=h54be378_4

  • libkml==1.3.0=h85bf17e_7

  • libiconv==1.16=h6c40b1e_3

  • libglib==2.84.2=heb90364_0

  • libgfortran5==11.3.0=h9dfd629_28

  • libgfortran==5.0.0=11_3_0_hecd8cb5_28

  • libgdal==3.6.2=he467f5b_10

  • libffi==3.4.4=hecd8cb5_1

  • libevent==2.1.12=h04015c4_1

  • libev==4.33=h9ed2024_1

  • libdeflate==1.22=h46256e1_0

  • libcxx==19.1.7=haebbb44_3

  • libcurl==8.14.1=h1448931_1

  • libboost==1.82.0=hf53b9f2_2

  • libavif==1.1.1=h46256e1_0

  • lerc==4.0.0=h6d0c2b6_0

  • lcms2==2.16=h31d93a5_1

  • kiwisolver==1.4.8=py311h6d0c2b6_0

  • kealib==1.5.0=h003f39c_2

  • json-c==0.16=hca72f7f_0

  • jpeg==9e=h46256e1_3

  • joblib==1.5.1=py311hecd8cb5_0

  • jinja2==3.1.6=py311hecd8cb5_0

  • intel-openmp==2023.1.0=ha357a0b_43548

  • idna==3.7=py311hecd8cb5_0

  • icu==73.1=hcec6c5f_0

  • hdf5==1.14.5=h80586a8_2

  • hdf4==4.2.13=h39711bb_2

  • harfbuzz==10.2.0=h060d35a_1

  • graphite2==1.3.14=he9d5cce_1

  • giflib==5.2.2=h46256e1_0

  • gettext==0.21.0=h4e8c18a_2

  • geotiff==1.7.0=h2a015a5_4

  • geos==3.10.6=h6d0c2b6_0

  • geopandas-base==1.0.1=py311hecd8cb5_0

  • geopandas==1.0.1=py311hecd8cb5_0

  • fribidi==1.0.10=haf1e3a3_0

  • freexl==2.0.0=hce1ea5d_0

  • freetype==2.13.3=h02243ff_0

  • fonttools==4.55.3=py311h46256e1_0

  • fontconfig==2.14.1=h269ac6a_3

  • folium==0.14.0=py311hecd8cb5_0

  • expat==2.7.1=h6d0c2b6_0

  • dav1d==1.2.1=h6c40b1e_0

  • cyrus-sasl==2.1.28=hd1e62a0_3

  • contourpy==1.3.1=py311h1962661_0

  • click==8.1.8=py311hecd8cb5_0

  • cfitsio==3.470=hbd21bf8_7

  • cffi==1.17.1=py311h9205ec4_1

  • certifi==2025.8.3=py311hecd8cb5_0

  • cairo==1.16.0=h08824b9_6

  • ca-certificates==2025.7.15=hecd8cb5_0

  • c-ares==1.19.1=h6c40b1e_0

  • bzip2==1.0.8=h6c40b1e_6

  • brotlicffi==1.0.9.2=py311h6d0c2b6_1

  • brotli-python==1.0.9=py311h6d0c2b6_9

  • branca==0.6.0=py311hecd8cb5_0

  • bottleneck==1.4.2=py311h9b7fc35_0

  • boost-cpp==1.82.0=ha357a0b_2

  • blosc==1.21.6=h64ef47d_0

  • blas==1.0=mkl

  • attrs==24.3.0=py311hecd8cb5_0

  • aom==3.6.0=hcec6c5f_0

  • [ x] Current version number (note the current version number)

  • Example problem with required data either provided or with a data fetching script

  • Cade: example problem provided but I couldn't find the data directory, the directory is referenced in the code tho. Maybe the directory is private/stored locally?

  • [ x] Appropriate use of functions, tasks are broken into logical chunks

  • [ x] Readability, organization, accessibility: Code is well-commented where necessary, files are organized in a logical manner, naming is intuitive or explanatory

  • Cade: I think the code is logical and well written! The use of classes is very clean and makes it more readable.

  • [x ] Documentation is explanative of: what, why, how

  • Cade: The readme file/documentation is very well organized. Makes me realize I need to put some serious work into mine! I really like the table of repository contents that specifies the role of each file.

  • [ x] Task Peer review 1 (Cade) #1 Selected (note which task is selected)

  • Cade: task 1 is specified (classes) and is implemented

  • [ x] Task Removing prefix from demDiff.yml #2 Selected (note which task is selected)

  • Cade: task 2 is specified (addapting to chinook and parallelization), this is not implemented yet.

  1. What does this code do?
  • This code provides ways to do digital elevation model differencing. It has built in functionality that handles DEMs with different grids and grid pixel size, different reference systems, and varing extents. It also incorporates checks to see if the resulting DEM difference is physically reasonable.
  1. How does this code do it?
  • This code has 7 main steps: load in the data, preparing the DEM, reprojecting the DEM based on conversions, aligning the DEMs to a common grid, take the difference between the DEMs, and checks that the dem differencing is reasonable. It also has options to plot the data and save the data.
  1. What data does this code work with?
  • This code deals with DEM data (.tif files).
  1. What do you find cool/interesting/unique about this code?
  • I think it's pretty cool that the code is able to take DEMs with different grids/projections and convert it into a useable format. It also has checks within the code to make sure that the resulting DEM difference makes sense. This is done with flat ground that we don't expect to be any different. I also admire how clean using classes made the code.
  1. How can this code be improved (e.g., restructuring, optimization, improved examples, clearer explanation? - provide some input into how you could implement that)
  • The code is already quite good, great job! I know that you are planning to implement parallelization, I'm guessing that will help with speeding up the code. For me, the example DEMs that are in the bottom of the dem_diff.py file are good but I think could be more helpful if they were somewhere else. Maybe they could go into an example_parameters text file? I think this could also benefit from using a parameter file for running your code but I know that might be out of scope with your goals with this project.

I was also wondering if the DEM file needs to be organized in a certain way to be read by your script? I think a little more clarification on the file type/organization would be helpful to know if someone is trying to pull in their own data that is not one of the examples you provided.

Very good job!

Pull request:

I have also made a pull request to change part of the demDiff.yml, I'm still getting errors when I try to create an environment but I think the prefix might have been causing issues too (ask Bryant?).

Pull request: #2

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions