Skip to content

To do list

Zhang Yunjun edited this page Jun 30, 2025 · 104 revisions
  • refactor simulation module. Maybe ignore the compatibility (for an easier job and for better clarity), given that it's not actually used in any routine workflow, presumably only in Yunjun's 2019 paper?

  • installation:

    • add EarthData account description
    • use AUX_DIR to replace WEATHER_DIR, for ERA5, GNSS, GIM datasets; other default dir locations in the code need to be updated as well.
  • subset.py: support subsetting files in radar-coord using lat/lon. [Need to refactor the code first, for different scenarios, radar/geo files, radar/geo inputs, different input approaches]

  • sensor: use YAML or JSON file to store the sensor parameters, as shown here, instead of using pure Python currently, without showing much of the logic?

  • load_data.py updates:

    • split load_data.py into multiple smaller scripts, i.e. load_ifgram_stack.py, load_geometry.py, load_timeseries.py, with shared functions, for easier maintenance and more flexible usage.
    • drop the support of the custom config file, and allow the default config file smallbaselineApp.cfg only, to simplify the code. Users could use smallbaselineApp.py custom_config_file -g to generate the smallbaselineApp.cfg file as needed.
  • for isce2/stripmapStack, add a prepSlcTSX.py to uncompress the TSC data in *.tar.gz format.

  • load_data: replace the try/except call of prep_module with a more meaningful error catch:

    • If mintpy.load.* options exist and are valid, run as designed (with update mode turned ON)
    • If no or non-existent mintpy.load.* options, if the inputs folder exists and is valid, give a warning and continue; if the inputs folder does not exist, return error and exit.
  • overwrite the existing data.rsc file if the isce can be imported and the new metadata dict includes more metadata.

  • tsview: speedup by reading single pixel data on the fly while clicking

  • diff.py: support two time series with different resolutions, e.g., timeseries.h5 and ion.h5, 1) to avoid upsampling the low-resolution iono stack from isce2 during load_data, and 2) to save disk space.

  • support reading OPERA CSLC products in view.py and readfile.py.

  • leverage the numTriNonzeroIntAmbiguity.h5 info for unwrap_error_bridging as in Oliver-Cabrera et al. (2021).

  • merge legacy/load2hdf5.py into load_data.py as the former can be handy.

    • make -t and -f as mutually exclusive options, to switch between loading via template file and loading into a single HDF5 file.
  • use tqdm instead of mintpy.objects.progressBar object, because:

    • it's simpler to use: 0-2 lines vs. 3 lines
    • tqdm uses pure Python, while progressBar uses numpy
    • Start testing with ifgram_inversion.py for the overhead performance evaluation, then expand to the entire package.
  • view.py:

    • Support plotting common geometries (points, lines, polygons) in KML, GMT, and WKT format.
    • Auto-plot TS into one figure (for easy quality checking of error corrections) by fixing the width and auto-adjusting figure lengths, to be used in smallbaselineApp for the pic folder.
    • draw range/azimuth direction arrows via matplotlib AnchoredDirectionArrows
  • Apply to be a NumFOCUS-affiliated project.

  • merge unwrap_error_bridging.py and unwrap_error_phase_closure.py into unwrap_error.py.

  • move all the images from yunjunz's website to a GitHub repo (mintpy wiki, mintpy-tutorial, or create a new one just for images, or yunjunz's github page?), for better independency and more robust against the firewalls from countries to wordpress.com.

  • plate_motion:

    • support time-series as input
    • integrate into smallbaselineApp.py via template options as below, with the former having a higher than the latter one, to avoid potential conflicts. This is fed as plate_motion.py -t option.
      • mintpy.plateMotion.plate
      • mintpy.plateMotion.omegaCart
      • mintpy.plateMotion.omegaSph
      • mintpy.plateMotion.constVelo
    • support --update option to auto-skip via a run_or_skip().
  • replace print statements with python logging module

Technical features

  • Move the user forum from Google Group to Discourse for a better interactive experience.

  • timeseries2velocity.py:

    • save the output as velocity.h5 and velocityStd.h5. This would 1) eliminate the special "--nosearch" consideration of view.py velocity.h5 dset and 2) improve the visualization of the velocity file because velocity and velocityStd usually has very different color range.
  • view: support fault overlay for geocoded files from public available dataset.

  • save_kmz_timeseries:

    • customizable levels of steps/details
    • write a guide to related details to the "eye alt" on Google Earth to guide users
    • write a guide to find the memory limit of each computer and convert it to the setting of the script.
    • define the initial Y-axis range of the time-series plot for the whole image. This range is currently scaled to each point, thus difficult to have a comparable view among different points.
  • Add unit test for the most vulnerable functions

  • add mintpy.utils.print() for flexible printing and logging

    • bool argument print_msg to replace vprint() in view.py.
    • bool argument log to turn on/off logging to a local file mintpy.log in the current directory via rich.console
    • str argument syntax such as "python", "bash", "csh", "cfg", etc. to highlight output syntax via rich.syntax
  • Explore the GPU-speedup with cupy for ifgram_inversion.py

Documentation

  • add example datasets for ISCE-2/alosStack and ISCE-2/stripmapStack using AlosAT424 dataset on Kirishima.

  • use fastai/nbdev to re-write the documentation, including tutorials and APIs.

  • switch from readthedocs to the leafmap (https://leafmap.org/) style? It's more modern and cleaner, and supports embeding notebooks-converted html (https://leafmap.org/notebooks/00_key_features/).

  • add API document with usage extracted from code and with the source link, e.g. geocube

  • Add interactive jupyter notebook using Google Colab, so that one can run those example using a web browser only.

Algorithm features & functionalities

  • output uncertainty time-series

Design consideration for the next major version

  • use empty mintpy.objects.__init__.py file

  • replace objects and utils sub-module names with more meaningful group names, e.g., geometry, stdproc, etc.

Random stuff

  • convert the isce2 earthdef archive into github issues/discussions using redmine to github (suggested by Piyush).

Welcome

Software Design

Clone this wiki locally