ECOv003-L2T-STARS 1.1.0__tar.gz → 1.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (98) hide show
  1. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/.github/workflows/ci.yml +6 -1
  2. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/ECOv003_DL.py +14 -14
  3. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/ECOv003_DL.xml +1 -1
  4. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/ECOv003_L2T_STARS.xml +1 -1
  5. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/L2TSTARSConfig.py +17 -15
  6. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/L2T_STARS.py +20 -6
  7. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/LPDAAC/LPDAACDataPool.py +43 -41
  8. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/VIIRS/VNP09GA.py +5 -3
  9. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/__init__.py +1 -1
  10. ecov003_l2t_stars-1.3.0/ECOv003_L2T_STARS/cksum.py +66 -0
  11. ecov003_l2t_stars-1.3.0/ECOv003_L2T_STARS/exceptions.py +2 -0
  12. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/generate_L2T_STARS_runconfig.py +1 -1
  13. ecov003_l2t_stars-1.1.0/ECOv003_L2T_STARS/install_STARS_jl.py → ecov003_l2t_stars-1.3.0/ECOv003_L2T_STARS/install_STARSDataFusion_jl.py +4 -4
  14. ecov003_l2t_stars-1.1.0/ECOv003_L2T_STARS/instantiate_STARS_jl.py → ecov003_l2t_stars-1.3.0/ECOv003_L2T_STARS/instantiate_STARSDataFusion_jl.py +3 -3
  15. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/load_prior.py +4 -2
  16. ecov003_l2t_stars-1.3.0/ECOv003_L2T_STARS/login.py +61 -0
  17. ecov003_l2t_stars-1.1.0/ECOv003_L2T_STARS/ECOv003_L2T_STARS.py → ecov003_l2t_stars-1.3.0/ECOv003_L2T_STARS/main.py +8 -1
  18. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/process_julia_data_fusion.py +2 -2
  19. ecov003_l2t_stars-1.3.0/ECOv003_L2T_STARS/version.txt +1 -0
  20. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS.egg-info/PKG-INFO +2 -3
  21. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS.egg-info/SOURCES.txt +7 -5
  22. ecov003_l2t_stars-1.3.0/ECOv003_L2T_STARS.egg-info/entry_points.txt +3 -0
  23. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS.egg-info/requires.txt +0 -1
  24. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/PKG-INFO +2 -3
  25. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/example_L2T_STARS_with_download.py +2 -10
  26. ecov003_l2t_stars-1.3.0/makefile +90 -0
  27. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/pyproject.toml +3 -4
  28. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/tests/test_import_dependencies.py +0 -1
  29. ecov003_l2t_stars-1.1.0/ECOv003_L2T_STARS/VIIRS/VIIRS_CMR_LOGIN.py +0 -36
  30. ecov003_l2t_stars-1.1.0/ECOv003_L2T_STARS/version.txt +0 -1
  31. ecov003_l2t_stars-1.1.0/ECOv003_L2T_STARS.egg-info/entry_points.txt +0 -3
  32. ecov003_l2t_stars-1.1.0/makefile +0 -74
  33. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/.github/workflows/python-publish.yml +0 -0
  34. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/.gitignore +0 -0
  35. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/Dockerfile +0 -0
  36. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOSTRESS Granule Download Bias.ipynb +0 -0
  37. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOSTRESS Granule Download.ipynb +0 -0
  38. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/BRDF/BRDF.py +0 -0
  39. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/BRDF/SZA.py +0 -0
  40. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/BRDF/__init__.py +0 -0
  41. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/BRDF/statistical_radiative_transport.txt +0 -0
  42. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/BRDF/version.txt +0 -0
  43. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/LPDAAC/__init__.py +0 -0
  44. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/LPDAAC/version.txt +0 -0
  45. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/Manifest.toml +0 -0
  46. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/Project.toml +0 -0
  47. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/VIIRS/VIIRSDataPool.py +0 -0
  48. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/VIIRS/VIIRSDownloader.py +0 -0
  49. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/VIIRS/VNP43IA4.py +0 -0
  50. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/VIIRS/VNP43MA3.py +0 -0
  51. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/VIIRS/__init__.py +0 -0
  52. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/VIIRS/version.txt +0 -0
  53. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/VNP43NRT/VNP43NRT.py +0 -0
  54. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/VNP43NRT/__init__.py +0 -0
  55. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/VNP43NRT/process_VNP43NRT.jl +0 -0
  56. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/VNP43NRT/version.txt +0 -0
  57. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/VNP43NRT_jl/Manifest.toml +0 -0
  58. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/VNP43NRT_jl/Project.toml +0 -0
  59. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/VNP43NRT_jl/__init__.py +0 -0
  60. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/VNP43NRT_jl/instantiate.jl +0 -0
  61. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/VNP43NRT_jl/instantiate.py +0 -0
  62. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/VNP43NRT_jl/src/VNP43NRT.jl +0 -0
  63. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/VNP43NRT_jl/src/__init__.py +0 -0
  64. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/calibrate_fine_to_coarse.py +0 -0
  65. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/constants.py +0 -0
  66. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/daterange/__init__.py +0 -0
  67. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/daterange/daterange.py +0 -0
  68. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/generate_NDVI_coarse_directory.py +0 -0
  69. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/generate_NDVI_coarse_image.py +0 -0
  70. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/generate_NDVI_fine_directory.py +0 -0
  71. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/generate_NDVI_fine_image.py +0 -0
  72. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/generate_STARS_inputs.py +0 -0
  73. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/generate_albedo_coarse_directory.py +0 -0
  74. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/generate_albedo_coarse_image.py +0 -0
  75. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/generate_albedo_fine_directory.py +0 -0
  76. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/generate_albedo_fine_image.py +0 -0
  77. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/generate_filename.py +0 -0
  78. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/generate_input_staging_directory.py +0 -0
  79. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/generate_model_state_tile_date_directory.py +0 -0
  80. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/generate_output_directory.py +0 -0
  81. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/prior.py +0 -0
  82. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/process_ECOSTRESS_data_fusion_distributed_bias.jl +0 -0
  83. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/process_STARS_product.py +0 -0
  84. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/retrieve_STARS_sources.py +0 -0
  85. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/runconfig.py +0 -0
  86. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/timer/__init__.py +0 -0
  87. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/timer/timer.py +0 -0
  88. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS/version.py +0 -0
  89. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS.egg-info/dependency_links.txt +0 -0
  90. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/ECOv003_L2T_STARS.egg-info/top_level.txt +0 -0
  91. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/LICENSE +0 -0
  92. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/README.md +0 -0
  93. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/STARS_memory_profile.jpeg +0 -0
  94. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/demo.py +0 -0
  95. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/mprofile_20241202193217.dat +0 -0
  96. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/mprofile_20241203112611.dat +0 -0
  97. {ecov003_l2t_stars-1.1.0 → ecov003_l2t_stars-1.3.0}/setup.cfg +0 -0
  98. /ecov003_l2t_stars-1.1.0/tests/test_import_ECOv003_L3T_L4T_JET.py → /ecov003_l2t_stars-1.3.0/tests/test_import_ECOv003_L2T_STARS.py +0 -0
@@ -13,7 +13,7 @@ jobs:
13
13
  runs-on: ubuntu-latest
14
14
  strategy:
15
15
  matrix:
16
- python-version: ["3.10"]
16
+ python-version: ["3.10", "3.11", "3.12", "3.13"]
17
17
 
18
18
  steps:
19
19
  - name: Checkout repository
@@ -32,3 +32,8 @@ jobs:
32
32
  - name: Run tests
33
33
  run: |
34
34
  pytest
35
+ env:
36
+ PYTHONPATH: .
37
+ EARTHDATA_USERNAME: ${{ secrets.EARTHDATA_USERNAME }}
38
+ EARTHDATA_PASSWORD: ${{ secrets.EARTHDATA_PASSWORD }}
39
+ SKIP_EARTHDATA_LOGIN: "true"
@@ -265,33 +265,33 @@ class ECOv003DLConfig(ECOSTRESSRunConfig):
265
265
  runconfig = read_runconfig(filename)
266
266
 
267
267
  # Validate and extract working directory
268
- if "StaticAuxiliaryFileGroup" not in runconfig:
269
- raise MissingRunConfigValue(f"missing StaticAuxiliaryFileGroup in ECOv003_DL run-config: {filename}")
270
- if "ECOv003_DL_WORKING" not in runconfig["StaticAuxiliaryFileGroup"]:
268
+ if "StaticAncillaryFileGroup" not in runconfig:
269
+ raise MissingRunConfigValue(f"missing StaticAncillaryFileGroup in ECOv003_DL run-config: {filename}")
270
+ if "ECOv003_DL_WORKING" not in runconfig["StaticAncillaryFileGroup"]:
271
271
  raise MissingRunConfigValue(
272
- f"missing StaticAuxiliaryFileGroup/ECOv003_DL_WORKING in ECOv003_DL run-config: {filename}")
273
- working_directory = abspath(runconfig["StaticAuxiliaryFileGroup"]["ECOv003_DL_WORKING"])
272
+ f"missing StaticAncillaryFileGroup/ECOv003_DL_WORKING in ECOv003_DL run-config: {filename}")
273
+ working_directory = abspath(runconfig["StaticAncillaryFileGroup"]["ECOv003_DL_WORKING"])
274
274
  logger.info(f"working directory: {cl.dir(working_directory)}")
275
275
 
276
276
  # Validate and extract L2T STARS sources directory
277
- if "L2T_STARS_SOURCES" not in runconfig["StaticAuxiliaryFileGroup"]:
277
+ if "L2T_STARS_SOURCES" not in runconfig["StaticAncillaryFileGroup"]:
278
278
  raise MissingRunConfigValue(
279
- f"missing StaticAuxiliaryFileGroup/L2T_STARS_SOURCES in ECOv003_DL run-config: {filename}")
280
- L2T_STARS_sources_directory = abspath(runconfig["StaticAuxiliaryFileGroup"]["L2T_STARS_SOURCES"])
279
+ f"missing StaticAncillaryFileGroup/L2T_STARS_SOURCES in ECOv003_DL run-config: {filename}")
280
+ L2T_STARS_sources_directory = abspath(runconfig["StaticAncillaryFileGroup"]["L2T_STARS_SOURCES"])
281
281
  logger.info(f"L2T STARS sources directory: {cl.dir(L2T_STARS_sources_directory)}")
282
282
 
283
283
  # Validate and extract L2T STARS indices directory
284
- if "L2T_STARS_INDICES" not in runconfig["StaticAuxiliaryFileGroup"]:
284
+ if "L2T_STARS_INDICES" not in runconfig["StaticAncillaryFileGroup"]:
285
285
  raise MissingRunConfigValue(
286
- f"missing StaticAuxiliaryFileGroup/L2T_STARS_INDICES in ECOv003_DL run-config: {filename}")
287
- L2T_STARS_indices_directory = abspath(runconfig["StaticAuxiliaryFileGroup"]["L2T_STARS_INDICES"])
286
+ f"missing StaticAncillaryFileGroup/L2T_STARS_INDICES in ECOv003_DL run-config: {filename}")
287
+ L2T_STARS_indices_directory = abspath(runconfig["StaticAncillaryFileGroup"]["L2T_STARS_INDICES"])
288
288
  logger.info(f"L2T STARS indices directory: {cl.dir(L2T_STARS_indices_directory)}")
289
289
 
290
290
  # Validate and extract L2T STARS model directory
291
- if "L2T_STARS_MODEL" not in runconfig["StaticAuxiliaryFileGroup"]:
291
+ if "L2T_STARS_MODEL" not in runconfig["StaticAncillaryFileGroup"]:
292
292
  raise MissingRunConfigValue(
293
- f"missing StaticAuxiliaryFileGroup/L2T_STARS_MODEL in ECOv003_DL run-config: {filename}")
294
- L2T_STARS_model_directory = abspath(runconfig["StaticAuxiliaryFileGroup"]["L2T_STARS_MODEL"])
293
+ f"missing StaticAncillaryFileGroup/L2T_STARS_MODEL in ECOv003_DL run-config: {filename}")
294
+ L2T_STARS_model_directory = abspath(runconfig["StaticAncillaryFileGroup"]["L2T_STARS_MODEL"])
295
295
  logger.info(f"L2T STARS model directory: {cl.dir(L2T_STARS_model_directory)}")
296
296
 
297
297
  # Validate ProductPathGroup
@@ -28,7 +28,7 @@
28
28
  <element>L2T_LSTE_filename1</element>
29
29
  </vector>
30
30
  </group>
31
- <group name="StaticAuxiliaryFileGroup">
31
+ <group name="StaticAncillaryFileGroup">
32
32
  <scalar name="ECOv003_DL_WORKING">working_directory</scalar>
33
33
  <scalar name="L2T_STARS_SOURCES">L2T_STARS_sources_directory</scalar>
34
34
  <scalar name="L2T_STARS_INDICES">L2T_STARS_indices_directory</scalar>
@@ -22,7 +22,7 @@
22
22
  <scalar name="L2T_LSTE">L2T_LSTE_filename</scalar>
23
23
  <scalar name="L2T_STARS_PRIOR">prior_L2T_STARS_filename</scalar>
24
24
  </group>
25
- <group name="StaticAuxiliaryFileGroup">
25
+ <group name="StaticAncillaryFileGroup">
26
26
  <scalar name="L2T_STARS_MODEL">model_directory</scalar>
27
27
  <scalar name="L2T_STARS_INDICES">indices_directory</scalar>
28
28
  <scalar name="L2T_STARS_SOURCES">sources_directory</scalar>
@@ -37,48 +37,50 @@ class L2TSTARSConfig(ECOSTRESSRunConfig):
37
37
  # Read the run-config XML into a dictionary
38
38
  runconfig = self.read_runconfig(filename)
39
39
 
40
+ # reverting to StaticAncillaryFileGroup for now instead of StaticAuxiliaryFileGroup
41
+
40
42
  try:
41
- # Validate and extract working directory from StaticAuxiliaryFileGroup
42
- if "StaticAuxiliaryFileGroup" not in runconfig:
43
+ # Validate and extract working directory from StaticAncillaryFileGroup
44
+ if "StaticAncillaryFileGroup" not in runconfig:
43
45
  raise MissingRunConfigValue(
44
- f"Missing StaticAuxiliaryFileGroup in L2T_STARS run-config: {filename}"
46
+ f"Missing StaticAncillaryFileGroup in L2T_STARS run-config: {filename}"
45
47
  )
46
- if "L2T_STARS_WORKING" not in runconfig["StaticAuxiliaryFileGroup"]:
48
+ if "L2T_STARS_WORKING" not in runconfig["StaticAncillaryFileGroup"]:
47
49
  raise MissingRunConfigValue(
48
- f"Missing StaticAuxiliaryFileGroup/L2T_STARS_WORKING in L2T_STARS run-config: {filename}"
50
+ f"Missing StaticAncillaryFileGroup/L2T_STARS_WORKING in L2T_STARS run-config: {filename}"
49
51
  )
50
52
  self.working_directory = abspath(
51
- runconfig["StaticAuxiliaryFileGroup"]["L2T_STARS_WORKING"]
53
+ runconfig["StaticAncillaryFileGroup"]["L2T_STARS_WORKING"]
52
54
  )
53
55
  logger.info(f"Working directory: {cl.dir(self.working_directory)}")
54
56
 
55
57
  # Validate and extract sources directory
56
- if "L2T_STARS_SOURCES" not in runconfig["StaticAuxiliaryFileGroup"]:
58
+ if "L2T_STARS_SOURCES" not in runconfig["StaticAncillaryFileGroup"]:
57
59
  raise MissingRunConfigValue(
58
- f"Missing StaticAuxiliaryFileGroup/L2T_STARS_SOURCES in L2T_STARS run-config: {filename}"
60
+ f"Missing StaticAncillaryFileGroup/L2T_STARS_SOURCES in L2T_STARS run-config: {filename}"
59
61
  )
60
62
  self.sources_directory = abspath(
61
- runconfig["StaticAuxiliaryFileGroup"]["L2T_STARS_SOURCES"]
63
+ runconfig["StaticAncillaryFileGroup"]["L2T_STARS_SOURCES"]
62
64
  )
63
65
  logger.info(f"Sources directory: {cl.dir(self.sources_directory)}")
64
66
 
65
67
  # Validate and extract indices directory
66
- if "L2T_STARS_INDICES" not in runconfig["StaticAuxiliaryFileGroup"]:
68
+ if "L2T_STARS_INDICES" not in runconfig["StaticAncillaryFileGroup"]:
67
69
  raise MissingRunConfigValue(
68
- f"Missing StaticAuxiliaryFileGroup/L2T_STARS_INDICES in L2T_STARS run-config: {filename}"
70
+ f"Missing StaticAncillaryFileGroup/L2T_STARS_INDICES in L2T_STARS run-config: {filename}"
69
71
  )
70
72
  self.indices_directory = abspath(
71
- runconfig["StaticAuxiliaryFileGroup"]["L2T_STARS_INDICES"]
73
+ runconfig["StaticAncillaryFileGroup"]["L2T_STARS_INDICES"]
72
74
  )
73
75
  logger.info(f"Indices directory: {cl.dir(self.indices_directory)}")
74
76
 
75
77
  # Validate and extract model directory
76
- if "L2T_STARS_MODEL" not in runconfig["StaticAuxiliaryFileGroup"]:
78
+ if "L2T_STARS_MODEL" not in runconfig["StaticAncillaryFileGroup"]:
77
79
  raise MissingRunConfigValue(
78
- f"Missing StaticAuxiliaryFileGroup/L2T_STARS_MODEL in L2T_STARS run-config: {filename}"
80
+ f"Missing StaticAncillaryFileGroup/L2T_STARS_MODEL in L2T_STARS run-config: {filename}"
79
81
  )
80
82
  self.model_directory = abspath(
81
- runconfig["StaticAuxiliaryFileGroup"]["L2T_STARS_MODEL"]
83
+ runconfig["StaticAncillaryFileGroup"]["L2T_STARS_MODEL"]
82
84
  )
83
85
  logger.info(f"Model directory: {cl.dir(self.model_directory)}")
84
86
 
@@ -60,6 +60,7 @@ def L2T_STARS(
60
60
  remove_posterior: bool = True,
61
61
  threads: Union[int, str] = "auto",
62
62
  num_workers: int = 4,
63
+ overwrite: bool = False, # New parameter for overwriting existing files
63
64
  ) -> int:
64
65
  """
65
66
  ECOSTRESS Collection 3 L2T_STARS PGE (Product Generation Executive).
@@ -98,6 +99,8 @@ def L2T_STARS(
98
99
  Defaults to "auto".
99
100
  num_workers (int, optional): Number of Julia workers for distributed processing.
100
101
  Defaults to 4.
102
+ overwrite (bool, optional): If True, existing output files will be overwritten.
103
+ Defaults to False.
101
104
 
102
105
  Returns:
103
106
  int: An exit code indicating the success or failure of the PGE execution.
@@ -127,11 +130,17 @@ def L2T_STARS(
127
130
  L2T_STARS_browse_filename = runconfig.L2T_STARS_browse_filename
128
131
  logger.info(f"Browse filename: " + cl.file(L2T_STARS_browse_filename))
129
132
 
130
- # Check if the final product already exists to avoid reprocessing
131
- if exists(L2T_STARS_zip_filename) and exists(L2T_STARS_browse_filename):
133
+ # Check if the final product already exists and 'overwrite' is not enabled
134
+ if not overwrite and exists(L2T_STARS_zip_filename) and exists(L2T_STARS_browse_filename):
132
135
  logger.info(f"Found existing L2T STARS file: {L2T_STARS_zip_filename}")
133
136
  logger.info(f"Found existing L2T STARS preview: {L2T_STARS_browse_filename}")
137
+ logger.info("Overwrite option is not enabled, skipping reprocessing.")
134
138
  return SUCCESS_EXIT_CODE
139
+ elif overwrite and exists(L2T_STARS_zip_filename) and exists(L2T_STARS_browse_filename):
140
+ logger.info(f"Found existing L2T STARS file: {L2T_STARS_zip_filename}")
141
+ logger.info(f"Found existing L2T STARS preview: {L2T_STARS_browse_filename}")
142
+ logger.info("Overwrite option is enabled, proceeding with reprocessing.")
143
+
135
144
 
136
145
  logger.info(f"Working directory: {cl.dir(working_directory)}")
137
146
  logger.info(f"Log file: {cl.file(log_filename)}")
@@ -232,12 +241,17 @@ def L2T_STARS(
232
241
  VNP43NRT_products_directory = join(sources_directory, DEFAULT_VNP43NRT_PRODUCTS_DIRECTORY)
233
242
  logger.info(f"VNP43NRT products directory: {cl.dir(VNP43NRT_products_directory)}")
234
243
 
235
- # Re-check for existing product (double-check in case another process created it)
236
- if exists(L2T_STARS_zip_filename):
244
+ # Re-check for existing product (double-check in case another process created it) with overwrite option
245
+ if not overwrite and exists(L2T_STARS_zip_filename):
237
246
  logger.info(
238
- f"Found L2T STARS product zip: {cl.file(L2T_STARS_zip_filename)}"
247
+ f"Found L2T STARS product zip: {cl.file(L2T_STARS_zip_filename)}. Overwrite is False, returning."
239
248
  )
240
249
  return exit_code
250
+ elif overwrite and exists(L2T_STARS_zip_filename):
251
+ logger.info(
252
+ f"Found L2T STARS product zip: {cl.file(L2T_STARS_zip_filename)}. Overwrite is True, proceeding."
253
+ )
254
+
241
255
 
242
256
  # Initialize HLS data connection
243
257
  logger.info(f"Connecting to CMR Search server: {CMR_SEARCH_URL}")
@@ -245,7 +259,7 @@ def L2T_STARS(
245
259
  HLS_connection = HLS2CMR(
246
260
  working_directory=working_directory,
247
261
  download_directory=HLS_download_directory,
248
- products_directory=HLS_products_directory,
262
+ # products_directory=HLS_products_directory,
249
263
  target_resolution=target_resolution,
250
264
  )
251
265
  except CMRServerUnreachable as e:
@@ -1,6 +1,5 @@
1
- import base64
1
+ import netrc
2
2
  import hashlib
3
- import json
4
3
  import logging
5
4
  import os
6
5
  import posixpath
@@ -11,24 +10,27 @@ from datetime import date
11
10
  from fnmatch import fnmatch
12
11
  from http.cookiejar import CookieJar
13
12
  from os import makedirs, remove
14
- from os.path import abspath
15
13
  from os.path import dirname
16
14
  from os.path import exists
17
15
  from os.path import getsize
18
16
  from os.path import isdir
19
17
  from os.path import join
18
+ from os.path import abspath
19
+ from os.path import expanduser
20
20
  from time import sleep
21
21
  from typing import List, OrderedDict
22
- import netrc
22
+
23
23
  import requests
24
24
  import xmltodict
25
25
  from bs4 import BeautifulSoup
26
26
  from dateutil import parser
27
- from pycksum import cksum
27
+ from ..cksum import cksum
28
28
 
29
29
  import colored_logging as cl
30
30
 
31
- from ECOv003_exit_codes import *
31
+
32
+ class DownloadFailed(Exception):
33
+ pass
32
34
 
33
35
  CONNECTION_CLOSE = {
34
36
  "Connection": "close",
@@ -54,10 +56,10 @@ class LPDAACServerUnreachable(ConnectionError):
54
56
  class LPDAACDataPool:
55
57
  logger = logging.getLogger(__name__)
56
58
  DEFAULT_CHUNK_SIZE = 2 ** 20
57
- DATE_REGEX = re.compile('^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$')
59
+ DATE_REGEX = re.compile(r'^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$')
58
60
  DEFAULT_REMOTE = DEFAULT_REMOTE
59
61
 
60
- def __init__(self, username: str = None, password: str = None, remote: str = None, offline_ok: bool = False):
62
+ def __init__(self, username: str = None, password: str = None, remote: str = None, offline_ok: bool = True):
61
63
  if remote is None:
62
64
  remote = DEFAULT_REMOTE
63
65
 
@@ -66,15 +68,14 @@ class LPDAACDataPool:
66
68
  netrc_file = netrc.netrc()
67
69
  username, _, password = netrc_file.authenticators("urs.earthdata.nasa.gov")
68
70
  except Exception as e:
69
- logger.exception(e)
70
71
  logger.warning("netrc credentials not found for urs.earthdata.nasa.gov")
71
72
 
72
73
  if username is None or password is None:
73
74
  if not "LPDAAC_USERNAME" in os.environ or not "LPDAAC_PASSWORD" in os.environ:
74
- raise RuntimeError("Missing environment variable 'LPDAAC_USERNAME' or 'LPDAAC_PASSWORD'")
75
-
76
- username = os.environ["LPDAAC_USERNAME"]
77
- password = os.environ["LPDAAC_PASSWORD"]
75
+ logger.warning("missing environment variable 'LPDAAC_USERNAME' or 'LPDAAC_PASSWORD'")
76
+ else:
77
+ username = os.environ["LPDAAC_USERNAME"]
78
+ password = os.environ["LPDAAC_PASSWORD"]
78
79
 
79
80
  self._remote = remote
80
81
  self._username = username
@@ -86,14 +87,15 @@ class LPDAACDataPool:
86
87
 
87
88
  self._listings = {}
88
89
 
89
- try:
90
- self._authenticate()
91
- self._check_remote()
92
- except Exception as e:
93
- if self.offline_ok:
94
- logger.warning("unable to connect to LP-DAAC data pool")
95
- else:
96
- raise e
90
+ if not self.offline_ok:
91
+ try:
92
+ self._authenticate()
93
+ self._check_remote()
94
+ except Exception as e:
95
+ if self.offline_ok:
96
+ logger.warning("unable to connect to LP-DAAC data pool")
97
+ else:
98
+ raise e
97
99
 
98
100
  def _authenticate(self):
99
101
  try:
@@ -128,7 +130,7 @@ class LPDAACDataPool:
128
130
  raise ConnectionError(message)
129
131
 
130
132
  def _check_remote(self):
131
- logger.info(f"checking URL: {cl.URL(self.remote)}")
133
+ logger.debug(f"checking URL: {cl.URL(self.remote)}")
132
134
 
133
135
  try:
134
136
  response = requests.head(self.remote, headers=CONNECTION_CLOSE)
@@ -145,7 +147,7 @@ class LPDAACDataPool:
145
147
  raise LPDAACServerUnreachable(message)
146
148
 
147
149
  if status == 200:
148
- logger.info(
150
+ logger.debug(
149
151
  "remote verified with status " + cl.val(200) +
150
152
  " in " + cl.time(f"{duration:0.2f}") +
151
153
  " seconds: " + cl.URL(self.remote))
@@ -307,7 +309,7 @@ class LPDAACDataPool:
307
309
  else:
308
310
  metadata_filename = f"{download_location}.xml"
309
311
 
310
- makedirs(dirname(metadata_filename), exist_ok=True)
312
+ makedirs(abspath(dirname(expanduser(metadata_filename))), exist_ok=True)
311
313
 
312
314
  if XML_retries is None:
313
315
  XML_retries = XML_RETRIES
@@ -325,8 +327,8 @@ class LPDAACDataPool:
325
327
 
326
328
  while XML_retries > 0:
327
329
  XML_retries -= 1
328
- command = f"wget -nc -c --user {self._username} --password {self._password} -O {metadata_filename} {metadata_URL}"
329
- logger.info(command)
330
+ command = f"wget -nc -c --user {self._username} --password {self._password} -O {abspath(expanduser(metadata_filename))} {metadata_URL}"
331
+ # logger.info(command)
330
332
  os.system(command)
331
333
 
332
334
  if not exists(metadata_filename):
@@ -350,12 +352,12 @@ class LPDAACDataPool:
350
352
  continue
351
353
 
352
354
  try:
353
- with open(metadata_filename, "r") as file:
355
+ with open(abspath(expanduser(metadata_filename)), "r") as file:
354
356
  metadata = xmltodict.parse(file.read())
355
357
  except Exception as e:
356
358
  logger.warning(e)
357
359
  logger.warning(f"unable to parse metadata file: {metadata_filename}")
358
- os.remove(metadata_filename)
360
+ os.remove(abspath(expanduser(metadata_filename)))
359
361
  logger.warning(f"waiting {XML_timeout_seconds} for retry")
360
362
  sleep(XML_timeout_seconds)
361
363
  continue
@@ -372,7 +374,7 @@ class LPDAACDataPool:
372
374
 
373
375
  logger.info(
374
376
  f"metadata retrieved {checksum_type} checksum: {cl.val(remote_checksum)} size: {cl.val(remote_filesize)} URL: {cl.URL(metadata_URL)}")
375
- makedirs(dirname(filename), exist_ok=True)
377
+ makedirs(abspath(dirname(expanduser(filename))), exist_ok=True)
376
378
  logger.info(f"downloading {cl.URL(URL)} -> {cl.file(filename)}")
377
379
 
378
380
  # Use a temporary file for downloading
@@ -382,8 +384,8 @@ class LPDAACDataPool:
382
384
  download_retries -=1
383
385
 
384
386
  try:
385
- if exists(temporary_filename):
386
- temporary_filesize = self.get_local_filesize(temporary_filename)
387
+ if exists(abspath(expanduser(temporary_filename))):
388
+ temporary_filesize = self.get_local_filesize(abspath(expanduser(temporary_filename)))
387
389
 
388
390
  if temporary_filesize > remote_filesize:
389
391
  logger.warning(
@@ -391,11 +393,11 @@ class LPDAACDataPool:
391
393
  remove(temporary_filename)
392
394
 
393
395
  elif temporary_filesize == remote_filesize:
394
- local_checksum = self.get_local_checksum(temporary_filename, checksum_type=checksum_type)
396
+ local_checksum = self.get_local_checksum(abspath(expanduser(temporary_filename)), checksum_type=checksum_type)
395
397
 
396
398
  if local_checksum == remote_checksum:
397
399
  try:
398
- shutil.move(temporary_filename, filename)
400
+ shutil.move(abspath(expanduser(temporary_filename)), abspath(expanduser(filename)))
399
401
  except Exception as e:
400
402
  if exists(filename):
401
403
  logger.warning(f"unable to move temporary file: {temporary_filename}")
@@ -408,27 +410,27 @@ class LPDAACDataPool:
408
410
  else:
409
411
  logger.warning(
410
412
  f"removing corrupted file with local checksum {local_checksum} and remote checksum {remote_checksum}: {temporary_filename}")
411
- remove(temporary_filename)
413
+ remove(abspath(expanduser(temporary_filename)))
412
414
  else:
413
415
  logger.info(f"resuming incomplete download: {cl.file(temporary_filename)}")
414
416
 
415
- command = f"wget -nc -c --user {self._username} --password {self._password} -O {temporary_filename} {URL}"
416
- logger.info(command)
417
+ command = f"wget -nc -c --user {self._username} --password {self._password} -O {abspath(expanduser(temporary_filename))} {URL}"
418
+ # logger.info(command)
417
419
  os.system(command)
418
420
 
419
- if not exists(temporary_filename):
421
+ if not exists(abspath(expanduser(temporary_filename))):
420
422
  raise ConnectionError(f"unable to download URL: {URL}")
421
423
 
422
- local_filesize = self.get_local_filesize(temporary_filename)
423
- local_checksum = self.get_local_checksum(temporary_filename, checksum_type=checksum_type)
424
+ local_filesize = self.get_local_filesize(abspath(expanduser(temporary_filename)))
425
+ local_checksum = self.get_local_checksum(abspath(expanduser(temporary_filename)), checksum_type=checksum_type)
424
426
 
425
427
  if local_filesize != remote_filesize or local_checksum != remote_checksum:
426
- os.remove(temporary_filename)
428
+ os.remove(abspath(expanduser(temporary_filename)))
427
429
  raise ConnectionError(
428
430
  f"removing corrupted file with local filesize {local_filesize} remote filesize {remote_filesize} local checksum {local_checksum} remote checksum {remote_checksum}: {temporary_filename}")
429
431
 
430
432
  # Download successful, rename the temporary file to its proper name
431
- shutil.move(temporary_filename, filename)
433
+ shutil.move(abspath(expanduser(temporary_filename)), abspath(expanduser(filename)))
432
434
 
433
435
  logger.info(
434
436
  f"successful download with filesize {cl.val(local_filesize)} checksum {cl.val(local_checksum)}: {cl.file(filename)}")
@@ -24,10 +24,11 @@ from modland import generate_modland_grid
24
24
 
25
25
  from ECOv003_exit_codes import *
26
26
 
27
+ from ..login import login
27
28
  from ..daterange import get_date
28
29
  from ..LPDAAC.LPDAACDataPool import RETRIES
29
30
  from .VIIRSDataPool import VIIRSGranule
30
- from .VIIRS_CMR_LOGIN import CMRServerUnreachable, VIIRS_CMR_login
31
+ from ..exceptions import *
31
32
 
32
33
  NDVI_COLORMAP = LinearSegmentedColormap.from_list(
33
34
  name="NDVI",
@@ -1019,7 +1020,8 @@ def latest_datetime(date_in: Union[date, str]) -> datetime:
1019
1020
  return parser.parse(f"{date_string}T23:59:59Z")
1020
1021
 
1021
1022
 
1022
- VIIRS_FILENAME_REGEX = re.compile("^VNP09GA\.[^.]+\.([^.]+)\.002\.\d+\.h5$")
1023
+ VIIRS_FILENAME_REGEX = re.compile(r"^VNP09GA\.[^.]+\.([^.]+)\.002\.\d+\.h5$")
1024
+
1023
1025
  def modland_tile_from_filename(filename: str) -> str:
1024
1026
  match = VIIRS_FILENAME_REGEX.match(filename)
1025
1027
  if match is None:
@@ -1121,7 +1123,7 @@ class VNP09GA:
1121
1123
  self.products_directory = products_directory
1122
1124
  self.mosaic_directory = mosaic_directory
1123
1125
 
1124
- self.auth = VIIRS_CMR_login()
1126
+ self.auth = login()
1125
1127
 
1126
1128
  def add_granules(self, granules: List[earthaccess.search.DataGranule]):
1127
1129
  data = pd.DataFrame([
@@ -1,3 +1,3 @@
1
1
  from .version import __version__, __author__
2
- from .ECOv003_L2T_STARS import *
2
+ from .main import *
3
3
  from .ECOv003_DL import *
@@ -0,0 +1,66 @@
1
+ """
2
+ Pure Python implementation of POSIX cksum algorithm.
3
+
4
+ This module provides a replacement for the pycksum package that is compatible
5
+ with Python 3.12 and later versions.
6
+ """
7
+
8
+
9
+ def cksum(data_or_file):
10
+ """
11
+ Calculate POSIX cksum checksum for data or file-like object.
12
+
13
+ Args:
14
+ data_or_file: Either bytes data or a file-like object opened in binary mode
15
+
16
+ Returns:
17
+ int: The POSIX cksum checksum value
18
+ """
19
+ # Handle file-like objects
20
+ if hasattr(data_or_file, 'read'):
21
+ data = data_or_file.read()
22
+ else:
23
+ data = data_or_file
24
+
25
+ # Ensure we have bytes
26
+ if isinstance(data, str):
27
+ data = data.encode('utf-8')
28
+
29
+ # Initialize CRC with 0
30
+ crc = 0
31
+
32
+ # Process each byte of data
33
+ for byte in data:
34
+ # XOR the byte with the current CRC (shifted left 8 bits)
35
+ crc ^= byte << 24
36
+
37
+ # Process 8 bits
38
+ for _ in range(8):
39
+ if crc & 0x80000000: # If MSB is set
40
+ crc = (crc << 1) ^ 0x04c11db7 # CRC-32 polynomial
41
+ else:
42
+ crc = crc << 1
43
+ crc &= 0xffffffff # Keep it 32-bit
44
+
45
+ # Append the length in bytes as a big-endian value
46
+ length = len(data)
47
+ length_bytes = []
48
+ while length > 0:
49
+ length_bytes.insert(0, length & 0xff)
50
+ length >>= 8
51
+
52
+ # Process the length bytes
53
+ for byte in length_bytes:
54
+ crc ^= byte << 24
55
+ for _ in range(8):
56
+ if crc & 0x80000000:
57
+ crc = (crc << 1) ^ 0x04c11db7
58
+ else:
59
+ crc = crc << 1
60
+ crc &= 0xffffffff
61
+
62
+ # Final XOR and return as signed 32-bit integer equivalent
63
+ result = crc ^ 0xffffffff
64
+
65
+ # Convert to match expected return type (unsigned 32-bit integer)
66
+ return result
@@ -0,0 +1,2 @@
1
+ class CMRServerUnreachable(Exception):
2
+ pass
@@ -246,4 +246,4 @@ def generate_L2T_STARS_runconfig(
246
246
  f"Finished generating L2T_STARS run-config for orbit {cl.val(orbit)} scene {cl.val(scene)} ({timer.tocvalue():.2f} seconds)"
247
247
  )
248
248
 
249
- return
249
+ return runconfig_filename
@@ -3,11 +3,11 @@ import logging
3
3
 
4
4
  logger = logging.getLogger(__name__)
5
5
 
6
- def install_STARS_jl(
7
- github_URL: str = "https://github.com/STARS-Data-Fusion/STARS.jl",
6
+ def install_STARSDataFusion_jl(
7
+ github_URL: str = "https://github.com/STARS-Data-Fusion/STARSDataFusion.jl",
8
8
  environment_name: str = "@ECOv003-L2T-STARS") -> subprocess.CompletedProcess:
9
9
  """
10
- Installs the STARS.jl Julia package from GitHub into a specified Julia environment.
10
+ Installs the STARSDataFusion.jl Julia package from GitHub into a specified Julia environment.
11
11
 
12
12
  This function executes a Julia command to activate a given environment and
13
13
  then develops (installs in editable mode) the STARS.jl package from its
@@ -35,7 +35,7 @@ def install_STARS_jl(
35
35
 
36
36
  if result.returncode == 0:
37
37
  logger.info(
38
- f"STARS.jl installed successfully in environment '{environment_name}'!"
38
+ f"STARSDataFusion.jl installed successfully in environment '{environment_name}'!"
39
39
  )
40
40
  else:
41
41
  logger.error("Error installing STARS.jl:")
@@ -3,11 +3,11 @@ import logging
3
3
 
4
4
  logger = logging.getLogger(__name__)
5
5
 
6
- def instantiate_STARS_jl(package_location: str) -> subprocess.CompletedProcess:
6
+ def instantiate_STARSDataFusion_jl(package_location: str) -> subprocess.CompletedProcess:
7
7
  """
8
8
  Activates a Julia project at a given location and instantiates its dependencies.
9
9
 
10
- This is necessary to ensure all required Julia packages for STARS.jl are
10
+ This is necessary to ensure all required Julia packages for STARSDataFusion.jl are
11
11
  downloaded and ready for use within the specified project environment.
12
12
 
13
13
  Args:
@@ -30,7 +30,7 @@ def instantiate_STARS_jl(package_location: str) -> subprocess.CompletedProcess:
30
30
 
31
31
  if result.returncode == 0:
32
32
  logger.info(
33
- f"STARS.jl instantiated successfully in directory '{package_location}'!"
33
+ f"STARSDataFusion.jl instantiated successfully in directory '{package_location}'!"
34
34
  )
35
35
  else:
36
36
  logger.error("Error instantiating STARS.jl:")
@@ -1,6 +1,8 @@
1
1
  from os.path import exists
2
2
  import logging
3
3
 
4
+ import colored_logging as cl
5
+
4
6
  from ECOv003_granules import L2TSTARS
5
7
 
6
8
  from .prior import Prior
@@ -235,12 +237,12 @@ def load_prior(
235
237
  L2T_STARS_prior_filename=L2T_STARS_prior_filename,
236
238
  prior_NDVI_filename=prior_NDVI_filename,
237
239
  prior_NDVI_UQ_filename=prior_NDVI_UQ_filename,
238
- prior_NDVI_flag_filename=prior_NDVI_flag_filename,
240
+ # prior_NDVI_flag_filename=prior_NDVI_flag_filename,
239
241
  prior_NDVI_bias_filename=prior_NDVI_bias_filename,
240
242
  prior_NDVI_bias_UQ_filename=prior_NDVI_bias_UQ_filename,
241
243
  prior_albedo_filename=prior_albedo_filename,
242
244
  prior_albedo_UQ_filename=prior_albedo_UQ_filename,
243
- prior_albedo_flag_filename=prior_albedo_flag_filename,
245
+ # prior_albedo_flag_filename=prior_albedo_flag_filename,
244
246
  prior_albedo_bias_filename=prior_albedo_bias_filename,
245
247
  prior_albedo_bias_UQ_filename=prior_albedo_bias_UQ_filename,
246
248
  )