Coverage for pyguymer3/geo/min_dist.py: 78%

18 statements  

« prev     ^ index     » next       coverage.py v7.9.2, created at 2025-07-08 18:47 +0000

1#!/usr/bin/env python3 

2 

3# Define function ... 

4def min_dist( 

5 lons, 

6 lats, 

7 midLon, 

8 midLat, 

9 /, 

10 *, 

11 eps = 1.0e-12, 

12 nIter = 100, 

13 space = "EuclideanSpace", 

14): 

15 # Import special modules ... 

16 try: 

17 import numpy 

18 except: 

19 raise Exception("\"numpy\" is not installed; run \"pip install --user numpy\"") from None 

20 

21 # Import sub-functions ... 

22 from .min_distSrc import min_dist_euclidean 

23 from .min_distSrc import min_dist_geodesic 

24 

25 # ************************************************************************** 

26 

27 # Check arguments ... 

28 assert isinstance(lons, numpy.ndarray), "\"lons\" is not a NumPy array" 

29 assert isinstance(lats, numpy.ndarray), "\"lats\" is not a NumPy array" 

30 

31 # ************************************************************************** 

32 

33 # Check what space the user wants to measure in ... 

34 match space: 

35 case "EuclideanSpace": 

36 # Check arguments ... 

37 assert eps is None, "\"eps\" is not None but \"space\" is \"EuclideanSpace\"" 

38 assert nIter is None, "\"nIter\" is not None but \"space\" is \"EuclideanSpace\"" 

39 

40 # Return answer ... 

41 return min_dist_euclidean( 

42 lons, 

43 lats, 

44 midLon, 

45 midLat, 

46 ) 

47 case "GeodesicSpace": 

48 # Return answer ... 

49 return min_dist_geodesic( 

50 lons, 

51 lats, 

52 midLon, 

53 midLat, 

54 eps = eps, 

55 nIter = nIter, 

56 ) 

57 case _: 

58 # Crash ... 

59 raise ValueError(f"\"space\" is an unexpected value ({repr(space)})") from None