pygnss 0.7.0__cp311-cp311-musllinux_1_2_x86_64.whl → 1.1.0__cp311-cp311-musllinux_1_2_x86_64.whl

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.

Potentially problematic release.


This version of pygnss might be problematic. Click here for more details.

pygnss/__init__.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.7.0"
1
+ __version__ = "1.1.0"
pygnss/geodetic.py CHANGED
@@ -969,15 +969,23 @@ def haversine(lon1_deg, lat1_deg, lon2_deg, lat2_deg, r=6371):
969
969
 
970
970
  >>> haversine(-86.67, 36.12, -118.40, 33.94, r=6371.8)
971
971
  2886.8068907353736
972
+
973
+ Arrays can also be used (for a vectorized computation)
974
+ >>> haversine([2, 2, 2], [89, 40, 0], [3, 3, 3], [89, 40, 0])
975
+ array([ 1.94059443, 85.17980895, 111.19492664])
972
976
  """
973
977
  # convert decimal degrees to radians
974
- lon1, lat1, lon2, lat2 = map(math.radians, [lon1_deg, lat1_deg, lon2_deg, lat2_deg])
978
+ lon1, lat1, lon2, lat2 = map(np.radians, [lon1_deg, lat1_deg, lon2_deg, lat2_deg])
975
979
 
976
980
  # haversine formula
977
981
  dlon = lon2 - lon1
978
982
  dlat = lat2 - lat1
979
- a = math.sin(dlat / 2) ** 2 + math.cos(lat1) * math.cos(lat2) * math.sin(dlon / 2) ** 2
980
- c = 2 * math.asin(math.sqrt(a))
983
+ a = np.sin(dlat / 2) ** 2 + np.cos(lat1) * np.cos(lat2) * np.sin(dlon / 2) ** 2
984
+ c = 2 * np.arcsin(np.sqrt(a))
985
+
986
+ # Return a float if input is a single float (to avoid test failures due to numpy float64)
987
+ if np.ndim(lon1_deg) == 0:
988
+ c = float(c)
981
989
 
982
990
  return c * r
983
991
 
pygnss/iono/chapman.py ADDED
@@ -0,0 +1,35 @@
1
+ """
2
+ Module to compute the Chapman ionospheric model.
3
+
4
+ This module provides functions to compute the Chapman ionospheric model,
5
+ which is used to estimate the electron density in the ionosphere based on
6
+ solar zenith angle and other parameters.
7
+ """
8
+
9
+ import numpy as np
10
+
11
+ HEIGHTS_KM = np.arange(60, 1000, 10)
12
+
13
+ def compute_profile(hmF2_km: float, NmF2: float, H_km: float, zenith_angle_deg: float, heights_km: float | np.ndarray =HEIGHTS_KM) -> float | np.ndarray:
14
+ """
15
+ Compute the Chapman ionospheric model.
16
+
17
+ Parameters:
18
+ zenith_angle (float or np.ndarray): Solar zenith angle, the angle between the vertical and the direction to the Sun.
19
+ hmF2_km (float): Height of the F2 layer in kilometers.
20
+ NmF2 (float): Peak electron density at hmF2 in electrons/m^3.
21
+ H_km (float): Scale height in kilometers (typical values between 30 and 50 km).
22
+ heights_km (np.ndarray, optional): Heights at which to compute the electron density.
23
+ If None, defaults to a range from 0 to 100 km.
24
+
25
+ Returns:
26
+ float or np.ndarray: Computed electron density based on the Chapman model.
27
+ """
28
+ # Convert zenith angle from degrees to radians
29
+ zenith_angle_rad = np.radians(zenith_angle_deg)
30
+
31
+ # Include scale height
32
+ z = (heights_km - hmF2_km) / H_km
33
+
34
+ # Compute the Chapman function
35
+ return NmF2 * np.exp( 0.5 * (1 - z - np.exp(-z) / np.cos(zenith_angle_rad)))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pygnss
3
- Version: 0.7.0
3
+ Version: 1.1.0
4
4
  Summary: Package with utilities and tools for GNSS data processing
5
5
  Author-email: Miquel Garcia-Fernandez <miquel@mgfernan.com>
6
6
  License: MIT
@@ -1,10 +1,10 @@
1
- pygnss/__init__.py,sha256=RaANGbRu5e-vehwXI1-Qe2ggPPfs1TQaZj072JdbLk4,22
2
- pygnss/_c_ext.cpython-311-x86_64-linux-musl.so,sha256=GKssFLbFGJ82ZKuhZ8ME6KG3XocBiWLrLoZOf5_pE5E,82984
1
+ pygnss/__init__.py,sha256=LGVQyDsWifdACo7qztwb8RWWHds1E7uQ-ZqD8SAjyw4,22
2
+ pygnss/_c_ext.cpython-311-x86_64-linux-musl.so,sha256=d29BZDsvWFnjanzqPaI-HUc_EKNzWc-CGkPjepsC8WY,82976
3
3
  pygnss/cl.py,sha256=ISmd2RjikUMmj3nLPN0VSjvQLG5rLizp2X2ajeBkoDE,4509
4
4
  pygnss/constants.py,sha256=1hF6K92X6E6Ofo0rAuCBCgrwln9jxio26RV2a6vyURk,133
5
5
  pygnss/decorator.py,sha256=qB-0jl2GTEHJdvmDruNll5X3RrdySssv94u9Hok5-lA,1438
6
6
  pygnss/file.py,sha256=kkMBWjoTPkxJD1UgH0mXJT2fxnhU8u7_l2Ph5Xz2-hY,933
7
- pygnss/geodetic.py,sha256=3q8Rpl4b5CxGlhdn1nQRBHHSW1v-0PBFz54zOeVyO74,33633
7
+ pygnss/geodetic.py,sha256=RCXD4_RlzQR2DxNIFGS4iODwZZcnxklMsCw9mohYcBg,33948
8
8
  pygnss/hatanaka.py,sha256=P9XG6bZwUzfAPYn--6-DXfFQIEefeimE7fMJm_DF5zE,1951
9
9
  pygnss/ionex.py,sha256=WcY6PVwjzATjqyC0Htc5Jh_cv2a7yz4TZIcD723TpsY,14325
10
10
  pygnss/logger.py,sha256=4kvcTWXPoiG-MlyP6B330l4Fu7MfCuDjuIlIiLA8f1Y,1479
@@ -27,14 +27,15 @@ pygnss/gnss/observables.py,sha256=0x0NLkTjxf8cO9F_f_Q1b-1hEeoNjWB2x-53ecUEv0M,16
27
27
  pygnss/gnss/residuals.py,sha256=8qKGNOYkrqxHGOSjIfH21K82PAqEh2068kf78j5usL8,1244
28
28
  pygnss/gnss/types.py,sha256=lmL15KRckRiTwVkYvGzF4c1BrojnQlegrYCXSz1hGaI,10377
29
29
  pygnss/iono/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
30
+ pygnss/iono/chapman.py,sha256=eyq2RaCkLpQJRzuHt_DSNaLjto1w_W1PdT_ys8A3Bjc,1388
30
31
  pygnss/iono/gim.py,sha256=khKzClxLf46mVO6BCDk9u9DgS_50d-sbWEyoUQu7Jng,3543
31
32
  pygnss/orbit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
32
33
  pygnss/orbit/kepler.py,sha256=QORTgg5yBtsQXxLWSzoZ1pmh-CwPiZlFdIYqhQhv1a0,1745
33
34
  pygnss/orbit/tle.py,sha256=6CIEielPgui3DXNv46XxOGlig31ROIwjH42xLGaeE5M,5905
34
35
  pygnss/parsers/rtklib/stats.py,sha256=YV6yadxMeQMQYZvsUCaSf4ZTpK8Bbv3f2xgu0l4PekA,5449
35
- pygnss-0.7.0.dist-info/METADATA,sha256=UGioECEGQJ7eQSa5yaZTnf3aNKvXG2dsiJVrhu0sPk0,1666
36
- pygnss-0.7.0.dist-info/WHEEL,sha256=3KlS4fjXmSH_tZmtgXZWnBbgytgKYhwpPQ7mdxt5Bus,112
37
- pygnss-0.7.0.dist-info/entry_points.txt,sha256=awWUCMfX3uMIAPPZqZfSUuw7Kd7defip8L7GtthKqgg,292
38
- pygnss-0.7.0.dist-info/top_level.txt,sha256=oZRSR-qOv98VW2PRRMGCVNCJmewcJjyJYmxzxfeimtg,7
39
- pygnss-0.7.0.dist-info/RECORD,,
40
- pygnss-0.7.0.dist-info/licenses/LICENSE,sha256=Wwany6RAAZ9vVHjFLA9KBJ0HE77d52s2NOUA1CPAEug,1067
36
+ pygnss-1.1.0.dist-info/METADATA,sha256=ddxRfkulzB_nsS6xbvrsLHzqzRmjNBiFZHtBoo6g0dk,1666
37
+ pygnss-1.1.0.dist-info/WHEEL,sha256=kA_iIvT-cxTFNl4I8QDfFHN1DAyqZDYakVXCaObxeLo,112
38
+ pygnss-1.1.0.dist-info/entry_points.txt,sha256=awWUCMfX3uMIAPPZqZfSUuw7Kd7defip8L7GtthKqgg,292
39
+ pygnss-1.1.0.dist-info/top_level.txt,sha256=oZRSR-qOv98VW2PRRMGCVNCJmewcJjyJYmxzxfeimtg,7
40
+ pygnss-1.1.0.dist-info/RECORD,,
41
+ pygnss-1.1.0.dist-info/licenses/LICENSE,sha256=Wwany6RAAZ9vVHjFLA9KBJ0HE77d52s2NOUA1CPAEug,1067
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (77.0.3)
2
+ Generator: setuptools (80.9.0)
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp311-cp311-musllinux_1_2_x86_64
5
5