fimeval 0.1.47__tar.gz → 0.1.50__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.
- {fimeval-0.1.47 → fimeval-0.1.50}/PKG-INFO +1 -1
- {fimeval-0.1.47 → fimeval-0.1.50}/pyproject.toml +1 -1
- {fimeval-0.1.47 → fimeval-0.1.50}/src/fimeval/ContingencyMap/evaluationFIM.py +50 -8
- fimeval-0.1.50/src/fimeval/ContingencyMap/fix_permissions.sh +20 -0
- {fimeval-0.1.47 → fimeval-0.1.50}/LICENSE.txt +0 -0
- {fimeval-0.1.47 → fimeval-0.1.50}/README.md +0 -0
- {fimeval-0.1.47 → fimeval-0.1.50}/src/fimeval/BuildingFootprint/__init__.py +0 -0
- {fimeval-0.1.47 → fimeval-0.1.50}/src/fimeval/BuildingFootprint/evaluationwithBF.py +0 -0
- {fimeval-0.1.47 → fimeval-0.1.50}/src/fimeval/ContingencyMap/PWBs3.py +0 -0
- {fimeval-0.1.47 → fimeval-0.1.50}/src/fimeval/ContingencyMap/__init__.py +0 -0
- {fimeval-0.1.47 → fimeval-0.1.50}/src/fimeval/ContingencyMap/methods.py +0 -0
- {fimeval-0.1.47 → fimeval-0.1.50}/src/fimeval/ContingencyMap/metrics.py +0 -0
- {fimeval-0.1.47 → fimeval-0.1.50}/src/fimeval/ContingencyMap/plotevaluationmetrics.py +0 -0
- {fimeval-0.1.47 → fimeval-0.1.50}/src/fimeval/ContingencyMap/printcontingency.py +0 -0
- {fimeval-0.1.47 → fimeval-0.1.50}/src/fimeval/__init__.py +0 -0
- {fimeval-0.1.47 → fimeval-0.1.50}/src/fimeval/utilis.py +0 -0
|
@@ -4,6 +4,8 @@ from pathlib import Path
|
|
|
4
4
|
import geopandas as gpd
|
|
5
5
|
import rasterio
|
|
6
6
|
import shutil
|
|
7
|
+
import subprocess
|
|
8
|
+
import platform
|
|
7
9
|
import pandas as pd
|
|
8
10
|
from rasterio.warp import reproject, Resampling
|
|
9
11
|
from rasterio.io import MemoryFile
|
|
@@ -19,6 +21,30 @@ from .metrics import evaluationmetrics
|
|
|
19
21
|
from .PWBs3 import get_PWB
|
|
20
22
|
from ..utilis import MakeFIMsUniform
|
|
21
23
|
|
|
24
|
+
#giving the permission to the folder
|
|
25
|
+
def is_writable(path):
|
|
26
|
+
"""Check if the directory and its contents are writable."""
|
|
27
|
+
path = Path(path)
|
|
28
|
+
return os.access(path, os.W_OK)
|
|
29
|
+
|
|
30
|
+
def fix_permissions(path):
|
|
31
|
+
path = Path(path).resolve()
|
|
32
|
+
script_path = Path(__file__).parent / "fix_permissions.sh"
|
|
33
|
+
|
|
34
|
+
if not script_path.exists():
|
|
35
|
+
raise FileNotFoundError(f"Shell script not found: {script_path}")
|
|
36
|
+
|
|
37
|
+
if is_writable(path):
|
|
38
|
+
return
|
|
39
|
+
|
|
40
|
+
try:
|
|
41
|
+
result = subprocess.run(["bash", str(script_path), str(path)],
|
|
42
|
+
check=True, capture_output=True, text=True)
|
|
43
|
+
print(result.stdout)
|
|
44
|
+
except subprocess.CalledProcessError as e:
|
|
45
|
+
print(f"Shell script failed:\n{e.stderr}")
|
|
46
|
+
|
|
47
|
+
|
|
22
48
|
# Function for the evalution of the model
|
|
23
49
|
def evaluateFIM(
|
|
24
50
|
benchmark_path, candidate_paths, gdf, folder, method, output_dir, shapefile=None
|
|
@@ -49,6 +75,9 @@ def evaluateFIM(
|
|
|
49
75
|
# Save the smallest extent boundary and cliped FIMS
|
|
50
76
|
save_dir = os.path.join(output_dir, os.path.basename(folder), f"{method.__name__}")
|
|
51
77
|
os.makedirs(save_dir, exist_ok=True)
|
|
78
|
+
|
|
79
|
+
#Give the permission to the output directory
|
|
80
|
+
fix_permissions(save_dir)
|
|
52
81
|
|
|
53
82
|
# Get the smallest matched raster extent and make a boundary shapefile
|
|
54
83
|
smallest_raster_path = get_smallest_raster_path(benchmark_path, *candidate_paths)
|
|
@@ -333,7 +362,16 @@ def evaluateFIM(
|
|
|
333
362
|
print(f"Evaluation metrics saved to {csv_file}")
|
|
334
363
|
return results
|
|
335
364
|
|
|
336
|
-
|
|
365
|
+
#Safely deleting the folder
|
|
366
|
+
def safe_delete_folder(folder_path):
|
|
367
|
+
try:
|
|
368
|
+
shutil.rmtree(folder_path)
|
|
369
|
+
except PermissionError:
|
|
370
|
+
print(f"Permission denied: Could not delete {folder_path}")
|
|
371
|
+
except FileNotFoundError:
|
|
372
|
+
print(f"Folder not found: {folder_path}")
|
|
373
|
+
except Exception as e:
|
|
374
|
+
print(f"Error deleting {folder_path}: {e}")
|
|
337
375
|
|
|
338
376
|
def EvaluateFIM(main_dir, method_name, output_dir, PWB_dir=None, shapefile_dir=None, target_crs=None, target_resolution=None):
|
|
339
377
|
main_dir = Path(main_dir)
|
|
@@ -342,7 +380,12 @@ def EvaluateFIM(main_dir, method_name, output_dir, PWB_dir=None, shapefile_dir=N
|
|
|
342
380
|
gdf = get_PWB()
|
|
343
381
|
else:
|
|
344
382
|
gdf = gpd.read_file(PWB_dir)
|
|
383
|
+
|
|
384
|
+
#Grant the permission to the main directory
|
|
385
|
+
print(f"Fixing permissions for {main_dir}...")
|
|
386
|
+
fix_permissions(main_dir)
|
|
345
387
|
|
|
388
|
+
#runt the process
|
|
346
389
|
def process_TIFF(tif_files, folder_dir):
|
|
347
390
|
benchmark_path = None
|
|
348
391
|
candidate_path = []
|
|
@@ -384,12 +427,12 @@ def EvaluateFIM(main_dir, method_name, output_dir, PWB_dir=None, shapefile_dir=N
|
|
|
384
427
|
if TIFFfiles_main_dir:
|
|
385
428
|
MakeFIMsUniform(main_dir, target_crs=target_crs, target_resolution=target_resolution)
|
|
386
429
|
|
|
387
|
-
#processing folder
|
|
430
|
+
# processing folder
|
|
388
431
|
processing_folder = main_dir / "processing"
|
|
389
432
|
TIFFfiles = list(processing_folder.glob("*.tif"))
|
|
390
433
|
|
|
391
434
|
process_TIFF(TIFFfiles, main_dir)
|
|
392
|
-
|
|
435
|
+
safe_delete_folder(processing_folder)
|
|
393
436
|
else:
|
|
394
437
|
for folder in main_dir.iterdir():
|
|
395
438
|
if folder.is_dir():
|
|
@@ -397,13 +440,12 @@ def EvaluateFIM(main_dir, method_name, output_dir, PWB_dir=None, shapefile_dir=N
|
|
|
397
440
|
|
|
398
441
|
if tif_files:
|
|
399
442
|
MakeFIMsUniform(folder, target_crs=target_crs, target_resolution=target_resolution)
|
|
400
|
-
|
|
443
|
+
|
|
401
444
|
processing_folder = folder / "processing"
|
|
402
445
|
TIFFfiles = list(processing_folder.glob("*.tif"))
|
|
403
446
|
|
|
404
447
|
process_TIFF(TIFFfiles, folder)
|
|
405
|
-
|
|
448
|
+
safe_delete_folder(processing_folder)
|
|
406
449
|
else:
|
|
407
|
-
print(
|
|
408
|
-
|
|
409
|
-
)
|
|
450
|
+
print(f"Skipping {folder.name} as it doesn't contain any tif files.")
|
|
451
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
DIR="$1"
|
|
4
|
+
|
|
5
|
+
if [ -z "$DIR" ]; then
|
|
6
|
+
echo "No directory provided."
|
|
7
|
+
exit 1
|
|
8
|
+
fi
|
|
9
|
+
|
|
10
|
+
UNAME=$(uname)
|
|
11
|
+
if [[ "$UNAME" == "Darwin" || "$UNAME" == "Linux" ]]; then
|
|
12
|
+
chmod -R u+rwX "$DIR"
|
|
13
|
+
|
|
14
|
+
elif [[ "$UNAME" == *"MINGW"* || "$UNAME" == *"MSYS"* || "$UNAME" == *"CYGWIN"* ]]; then
|
|
15
|
+
icacls "$DIR" /grant Everyone:F /T > /dev/null
|
|
16
|
+
|
|
17
|
+
else
|
|
18
|
+
echo "Unsupported OS: $UNAME"
|
|
19
|
+
exit 1
|
|
20
|
+
fi
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|