Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
The Python based solid Earth tides (PySolid) is a thin Python wrapper of the solid.for
program (by Dennis Milbert based on dehanttideinelMJD.f from V. Dehant, S. Mathews, J. Gipson and C. Bruyninx) to calculate solid Earth tides in east, north and up directions (section 7.1.1 in the 2010 IERS Conventions). Solid Earth tides introduce large offsets in SAR observations and long spatial wavelength ramps in InSAR observations, as shown in the Sentinel-1 data with regular acquisitions and large swaths (Yunjun et al., 2022).
This is research code provided to you "as is" with NO WARRANTIES OF CORRECTNESS. Use at your own risk.
PySolid is available on the conda-forge channel and the main archive of the Debian GNU/Linux OS. The released version can be installed via conda
as:
# run "conda update pysolid" to update the installed version
conda install -c conda-forge pysolid
or via apt
(or other package managers) for Debian-derivative OS users, including Ubuntu, as:
apt install python3-pysolid
PySolid relies on a few Python modules as described in requirements.txt and NumPy's f2py to build the Fortran source code. You could use conda
to install all the dependencies, including the Fortran compiler, or use your own installed Fortran compiler and pip
to install the rest.
# run "cd PySolid; git pull" to update to the latest development version
git clone https://github.com/insarlab/PySolid.git
# option 1: use conda to install dependencies into an existing, activated environment
conda install -c conda-forge fortran-compiler --file PySolid/requirements.txt --file PySolid/tests/requirements.txt
# option 2: use conda to install dependencies into a new environment, e.g. named "pysolid"
conda create --name pysolid fortran-compiler --file PySolid/requirements.txt --file PySolid/tests/requirements.txt
conda activate pysolid
# option 3: have a Fortran compiler already installed and use pip to install the rest dependencies
python -m pip install -r PySolid/requirements.txt -r PySolid/tests/requirements.txt
# option 1: use pip to install pysolid into the current environment
python -m pip install PySolid
# option 2: use pip to install pysolid in develop mode (editable) into the current environment
python -m pip install -e PySolid
# option 3: manually compile the Fortran code and setup environment variable
cd PySolid/src/pysolid
f2py -c -m solid solid.for
export PYTHONPATH=${PYTHONPATH}:~/tools/PySolid
To test the installation, run the following:
python -c "import pysolid; print(pysolid.__version__)"
python PySolid/tests/grid.py
python PySolid/tests/point.py
PySolid could compute solid Earth tides in two modes: point and grid. Both modes produce displacement in east, north and up directions.
import datetime as dt
import pysolid
# prepare inputs
lat, lon = 34.0, -118.0 # point of interest in degree, Los Angles, CA
step_sec = 60 * 5 # sample spacing in time domain in seconds
dt0 = dt.datetime(2020, 1, 1, 4, 0, 0) # start date and time
dt1 = dt.datetime(2021, 1, 1, 2, 0, 0) # end date and time
# compute SET via pysolid
dt_out, tide_e, tide_n, tide_u = pysolid.calc_solid_earth_tides_point(
lat, lon, dt0, dt1,
step_sec=step_sec,
display=False,
verbose=False,
)
# plot the power spectral density of SET up component
pysolid.plot_power_spectral_density4tides(tide_u, sample_spacing=step_sec)
import datetime as dt
import numpy as np
import pysolid
# prepare inputs
dt_obj = dt.datetime(2020, 12, 25, 14, 7, 44)
meta = {
'LENGTH' : 500, # number of rows
'WIDTH' : 450, # number of columns
'X_FIRST': -126, # min longitude in degree (upper left corner of the upper left pixel)
'Y_FIRST': 43, # max laitude in degree (upper left corner of the upper left pixel)
'X_STEP' : 0.000925926 * 30, # output resolution in degree
'Y_STEP' : -0.000925926 * 30, # output resolution in degree
}
# compute SET via pysolid
tide_e, tide_n, tide_u = pysolid.calc_solid_earth_tides_grid(
dt_obj, meta,
display=False,
verbose=True,
)
# project SET from ENU to satellite line-of-sight (LOS) direction with positive for motion towards the satellite
# inc_angle : incidence angle of the LOS vector (from ground to radar platform) measured from vertical.
# az_angle : azimuth angle of the LOS vector (from ground to radar platform) measured from the north, with anti-clockwirse as positive.
inc_angle = np.deg2rad(34) # radian, typical value for Sentinel-1
az_angle = np.deg2rad(-102) # radian, typical value for Sentinel-1 descending track
tide_los = ( tide_e * np.sin(inc_angle) * np.sin(az_angle) * -1
+ tide_n * np.sin(inc_angle) * np.cos(az_angle)
+ tide_u * np.cos(inc_angle))
FAQs
A Python wrapper for solid to compute solid Earth tides
We found that pysolid demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.