From 5d2e574ffa283ea645b2708c6fe9ee0cd54401cd Mon Sep 17 00:00:00 2001 From: Ross Beyer Date: Mon, 20 Nov 2023 09:57:28 -0800 Subject: [PATCH 01/21] feat(age.py): Limited age estimating to ages in millions of years. --- src/python/synthterrain/crater/age.py | 11 +++++++++-- tests/python/crater/test_age.py | 11 +++++------ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/python/synthterrain/crater/age.py b/src/python/synthterrain/crater/age.py index 4a9475d..006eef3 100644 --- a/src/python/synthterrain/crater/age.py +++ b/src/python/synthterrain/crater/age.py @@ -47,6 +47,9 @@ def estimate_age(diameter, dd, max_age): d/D value by attempting to match the given d/D value to the diffusion shape of a crater of the given *diameter* and the *max_age* of that crater, which could be estimated via the equilibrium_ages() function. + + This function returns estimated ages in multiples of a million years. More + precision than that is not accurate for this approach. """ fresh_dd = stopar_fresh_dd(diameter) @@ -65,7 +68,9 @@ def estimate_age(diameter, dd, max_age): years_per_step = max_age / nsteps - return (nsteps - age_step) * years_per_step + age = (nsteps - age_step) * years_per_step + + return round(age / 1e6) * 1e6 def estimate_age_by_bin( @@ -148,7 +153,7 @@ def estimate_age_by_bin( def guess_age(dd): age_step = bisect.bisect_left(dd_rev_list, dd) - return int((nsteps - age_step) * years_per_step) + return round(int((nsteps - age_step) * years_per_step) / 1e6) * 1e6 df.loc[df["diameter_bin"] == interval, "age"] = df.loc[ df["diameter_bin"] == interval @@ -157,6 +162,8 @@ def guess_age(dd): axis=1 ) + df["age"] = df["age"].astype("int64") + logger.info("estimate_age_by_bin complete.") return df diff --git a/tests/python/crater/test_age.py b/tests/python/crater/test_age.py index 0311744..63436b3 100644 --- a/tests/python/crater/test_age.py +++ b/tests/python/crater/test_age.py @@ -32,7 +32,7 @@ def test_equilibrium_age(self): def test_estimate_age(self): a = age.estimate_age(10, 0.09, 5e7) - self.assertAlmostEqual(a, 25322581, places=0) + self.assertAlmostEqual(a, 25000000, places=0) def test_estimate_age_by_bin(self): pd_func = fns.GNPF(a=1, b=1000) @@ -56,13 +56,12 @@ def test_estimate_age_by_bin(self): ) age_series = pd.Series([ - 1511054, 3538, 5768173, 12861, 12054097, 26876, 25171337, 56123, 35854662, - 0, 63160550, 294454, 137994962, 12513397, 424194730, 68788334, 702317463, - 8072614], name="age") + 2000000, 0, 6000000, 0, 12000000, 0, 25000000, 0, 36000000, 0, 63000000, 0, + 138000000, 12000000, 424000000, 68000000, 702000000, 8000000 + ], name="age") pd.testing.assert_series_equal(age_series, df_out["age"]) - df2 = pd.DataFrame(data={ 'diameter': [100., 100., 100., 100.], 'd/D': [0.01, 0.06, 0.10, 0.17] @@ -73,6 +72,6 @@ def test_estimate_age_by_bin(self): 50, # With only one diameter, num is irrelevant ) - age2_series = pd.Series([4500000000, 4500000000, 1388888888, 0], name="age") + age2_series = pd.Series([4500000000, 4500000000, 1388000000, 0], name="age") pd.testing.assert_series_equal(age2_series, df2_out["age"]) \ No newline at end of file From 0f677b1f0d11e155b34cef5fe55a40af33a699a5 Mon Sep 17 00:00:00 2001 From: Ross Beyer Date: Mon, 20 Nov 2023 10:49:42 -0800 Subject: [PATCH 02/21] feat(diffusion.py): Added the ability to store and write merged crater terrain. --- environment.yml | 1 + requirements.txt | 1 + src/python/synthterrain/crater/__init__.py | 54 ++-- src/python/synthterrain/crater/cli.py | 45 +++- src/python/synthterrain/crater/diffusion.py | 262 +++++++++++++++----- 5 files changed, 281 insertions(+), 82 deletions(-) diff --git a/environment.yml b/environment.yml index cefb2fb..867d311 100644 --- a/environment.yml +++ b/environment.yml @@ -13,5 +13,6 @@ dependencies: - numpy - pandas - rasterio + - scikit-image - scipy - shapely diff --git a/requirements.txt b/requirements.txt index 6c2c1d5..557a68f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -3,5 +3,6 @@ numpy opensimplex pandas rasterio +scikit-image scipy shapely diff --git a/src/python/synthterrain/crater/__init__.py b/src/python/synthterrain/crater/__init__.py index e3bfbfe..2f44161 100644 --- a/src/python/synthterrain/crater/__init__.py +++ b/src/python/synthterrain/crater/__init__.py @@ -37,9 +37,10 @@ def synthesize( by_bin=True, min_d=None, max_d=None, + return_surfaces=False, ): """Return a pandas DataFrame which contains craters and their properties - synthesized from the input parameters. + synthesized from the input parameters. """ if production_fn is None: production_fn = determine_production_function(crater_dist.a, crater_dist.b) @@ -64,15 +65,6 @@ def synthesize( f"{math.ceil(df['age'].max()):,} years." ) - # Generate depth to diameter ratio - if by_bin: - df = diffuse_d_over_D_by_bin(df, start_dd_mean="Stopar step") - else: - df["d/D"] = df.apply( - lambda crater: diffuse_d_over_D(crater["diameter"], crater["age"]), - axis=1, - ) - # Randomly generate positions within the polygon for the locations of # the craters. logger.info("Generating center positions.") @@ -82,6 +74,28 @@ def synthesize( df["x"] = xlist df["y"] = ylist + # Generate depth to diameter ratio + if by_bin: + df = diffuse_d_over_D_by_bin( + df, start_dd_mean="Stopar step", return_surfaces=return_surfaces + ) + else: + if return_surfaces: + df["surface"] = None + df["surface"].astype(object) + df["d/D", "surface"] = df.apply( + lambda crater: diffuse_d_over_D( + crater["diameter"], crater["age"], return_surface=True + ), + axis=1, + result_type="expand", + ) + else: + df["d/D"] = df.apply( + lambda crater: diffuse_d_over_D(crater["diameter"], crater["age"]), + axis=1, + ) + return df @@ -96,8 +110,8 @@ def determine_production_function(a: float, b: float): def random_points(poly: Polygon, num_points: int): """Returns two lists, the first being the x coordinates, and the second - being the y coordinates, each *num_points* long that represent - random locations within the provided *poly*. + being the y coordinates, each *num_points* long that represent + random locations within the provided *poly*. """ # We could have returned a list of shapely Point objects, but that's # not how we need the data later. @@ -130,9 +144,7 @@ def generate_diameters(crater_dist, area, min, max): while len(diameters) != size: d = crater_dist.rvs(size=(size - len(diameters))) - diameters += d[ - np.logical_and(min <= d, d <= max) - ].tolist() + diameters += d[np.logical_and(min <= d, d <= max)].tolist() return np.array(diameters) @@ -177,13 +189,13 @@ def plot(df): cumulative=-1, log=True, bins=50, - histtype='stepfilled', - label="Craters" + histtype="stepfilled", + label="Craters", ) ax_csfd.set_ylabel("Count") ax_csfd.yaxis.set_major_formatter(ScalarFormatter()) ax_csfd.set_xlabel("Diameter (m)") - ax_csfd.legend(loc='best', frameon=False) + ax_csfd.legend(loc="best", frameon=False) ax_age.scatter(df["diameter"], df["age"], alpha=0.2, edgecolors="none", s=10) ax_age.set_xscale("log") @@ -199,9 +211,8 @@ def plot(df): ax_dd.set_xlabel("Diameter (m)") patches = [ - Circle((x_, y_), s_) for x_, y_, s_ in np.broadcast( - df["x"], df["y"], df["diameter"] / 2 - ) + Circle((x_, y_), s_) + for x_, y_, s_ in np.broadcast(df["x"], df["y"], df["diameter"] / 2) ] collection = PatchCollection(patches) collection.set_array(df["d/D"]) # Sets circle color to this data property. @@ -215,7 +226,6 @@ def plot(df): def to_file(df: pd.DataFrame, outfile: Path, xml=False): - if xml: # Write out the dataframe in the XML style of the old MATLAB # program. diff --git a/src/python/synthterrain/crater/cli.py b/src/python/synthterrain/crater/cli.py index c9a2062..0981e0a 100644 --- a/src/python/synthterrain/crater/cli.py +++ b/src/python/synthterrain/crater/cli.py @@ -10,13 +10,19 @@ # top level of this library. import logging +import math from pathlib import Path import sys +import numpy as np +import rasterio +from rasterio.transform import from_origin +from rasterio.windows import from_bounds from shapely.geometry import box import synthterrain.crater as crater from synthterrain.crater import functions +from synthterrain.crater.diffusion import make_crater_field import synthterrain.util as util @@ -76,6 +82,11 @@ def arg_parser(): help="This will cause a matplotlib window to open with some summary " "plots after the program has generated the data." ) + parser.add_argument( + "-proj", + help="If -t is given this is needed to determine the proj string for the " + "output GeoTIFF. e.g. '+proj=eqc +R=1737400 +units=m'" + ) parser.add_argument( "--run_individual", # Inverted the action to typically be set to true as it will be @@ -89,6 +100,14 @@ def arg_parser(): "and only run a few representative diffusion models to span the " "parameter space." ) + parser.add_argument( + "-t", "--terrain_gsd", + type=float, + help="If provided, will trigger creation of a terrain model based on bbox, and " + "the value given here will set the ground sample distance (GSD) of that model. " + "The terrain model output file will be the same as --outfile, but with a .tif " + "ending." + ) parser.add_argument( "-x", "--xml", action="store_true", @@ -132,7 +151,8 @@ def main(): polygon=poly, by_bin=args.run_individual, min_d=args.mind, - max_d=args.maxd + max_d=args.maxd, + return_surfaces=bool(args.terrain_gsd) ) if args.plot: @@ -141,6 +161,29 @@ def main(): # Write out results. crater.to_file(df, args.outfile, args.xml) + if args.terrain_gsd is not None: + transform = from_origin( + poly.bounds[0], poly.bounds[3], args.terrain_gsd, args.terrain_gsd + ) + window = from_bounds(*poly.bounds, transform=transform) + + tm = make_crater_field( + df, np.zeros((math.ceil(window.height), math.ceil(window.width))), transform + ) + + with rasterio.open( + args.outfile.with_suffix(".tif"), + 'w', + driver='GTiff', + height=tm.shape[0], + width=tm.shape[1], + count=1, + dtype=tm.dtype, + crs=args.proj, + transform=transform, + ) as dst: + dst.write(tm, 1) + return diff --git a/src/python/synthterrain/crater/diffusion.py b/src/python/synthterrain/crater/diffusion.py index 5124c39..de7920f 100644 --- a/src/python/synthterrain/crater/diffusion.py +++ b/src/python/synthterrain/crater/diffusion.py @@ -19,10 +19,15 @@ import logging import math import statistics +from typing import Union import numpy as np +import numpy.typing as npt from numpy.polynomial import Polynomial import pandas as pd +from rasterio.transform import rowcol +from rasterio.windows import Window, get_data_window, intersect +from skimage.transform import rescale from synthterrain.crater.profile import FTmod_Crater, stopar_fresh_dd @@ -100,7 +105,7 @@ def diffuse_d_over_D( start_dd_mean=0.15, start_dd_std=0.02, return_steps=False, - return_surface=False, + return_surface: Union[bool, str] = False, crater_cls=FTmod_Crater ): """ @@ -132,7 +137,8 @@ def diffuse_d_over_D( will be returned, where the nature of the zeroth element is based on *return_steps* and the final element is the numpy array of elevations which represents the final diffused surface relative to a starting flat - surface of zero. + surface of zero. If "all" is given for *return_surface*, the final tuple + element will be a list of numpy arrays, one for each time step. If a different crater profile is desired, pass a subclass (not an instance) of crater.profile.Crater to *crater_cls* that takes a depth parameter, @@ -196,7 +202,8 @@ def diffuse_d_over_D( # D * dt appears in the Hill (2020) diffusion calculation, but # we have formulated dls, such that D * dt = dls - dd_for_each_step = list() + dd_for_each_step = [(np.max(u) - np.min(u)) / diameter, ] + u_for_each_step = [u, ] un = np.copy(u) for step in range(nsteps): un[1:-1, 1:-1] = u[1:-1, 1:-1] + dls * ( @@ -206,8 +213,9 @@ def diffuse_d_over_D( u[1:-1, 2:] - 2 * u[1:-1, 1:-1] + u[1:-1, :-2] ) / dx2 ) - dd_for_each_step.append((np.max(u) - np.min(u)) / diameter) + dd_for_each_step.append((np.max(un) - np.min(un)) / diameter) u = np.copy(un) + u_for_each_step.append(u) # Final depth to diameter: if return_steps: @@ -215,8 +223,10 @@ def diffuse_d_over_D( else: dd = dd_for_each_step[-1] - if return_surface: - return dd, u + if return_surface == "all": + return dd, u_for_each_step + elif return_surface: + return dd, u_for_each_step[-1] else: return dd @@ -227,6 +237,7 @@ def diffuse_d_over_D_by_bin( domain_size=200, start_dd_mean=0.15, start_dd_std=0.02, + return_surfaces=False, ) -> pd.DataFrame: """ Returns a pandas DataFrame identical to the input *df* but with the @@ -255,6 +266,10 @@ def diffuse_d_over_D_by_bin( by the "mean" d/D ratio curve, and a standard deviation specified by the mean of the difference of the "high" and "low" diffiusion model values with the "mean" d/D model value at that time step. + + If *return_surfaces* is True, there will be an additional column, "surface", in the + returned dataframe that contains a 2D numpy array which represents the height field + of the crater in each row. """ logger.info("diffuse_d_over_D_by_bin start.") @@ -314,8 +329,10 @@ def start_dd(diameter): def start_std(diameter): return start_dd_std - df["diameter_bin"] = pd.cut(df["diameter"], bins=bin_edges) + df["diameter_bin"] = pd.cut(df["diameter"], bins=bin_edges, include_lowest=True) df["d/D"] = 0.0 + df["surface"] = None + df["surface"].astype(object) # Need to convert this loop to multiprocessing. for i, (interval, count) in enumerate( @@ -329,70 +346,197 @@ def start_std(diameter): continue elif 0 < count <= 3: # Run individual models for each crater. - df.loc[df["diameter_bin"] == interval, "d/D"] = df.loc[ - df["diameter_bin"] == interval - ].apply( - lambda row: diffuse_d_over_D( - row["diameter"], - row["age"], - domain_size=domain_size, - start_dd_adjust=True, - start_dd_mean=start_dd(row["diameter"]), - start_dd_std=start_dd(row["diameter"]), - ), - axis=1 - ) + if return_surfaces: + df.loc[df["diameter_bin"] == interval, ["d/D", "surface"]] = df.loc[ + df["diameter_bin"] == interval + ].apply( + lambda row: pd.Series( + diffuse_d_over_D( + row["diameter"], + row["age"], + domain_size=domain_size, + start_dd_adjust=True, + start_dd_mean=start_dd(row["diameter"]), + start_dd_std=start_std(row["diameter"]), + return_surface=True, + ), + index=["d/D", "surface"] + ), + axis=1, + result_type="expand", + ) + else: + df.loc[df["diameter_bin"] == interval, "d/D"] = df.loc[ + df["diameter_bin"] == interval + ].apply( + lambda row: diffuse_d_over_D( + row["diameter"], + row["age"], + domain_size=domain_size, + start_dd_adjust=True, + start_dd_mean=start_dd(row["diameter"]), + start_dd_std=start_std(row["diameter"]), + ), + axis=1, + ) else: # Run three representative models for this "bin" oldest_age = df.loc[df["diameter_bin"] == interval, "age"].max() + kappa = kappa_diffusivity(interval.mid) + dls = diffusion_length_scale(interval.mid, domain_size) + start = start_dd(interval.mid) std = start_std(interval.mid) - middle_dds = diffuse_d_over_D( - interval.mid, - oldest_age, - domain_size=domain_size, - start_dd_adjust=start, - return_steps=True - ) - high_dds = diffuse_d_over_D( - interval.mid, - oldest_age, - domain_size=domain_size, - start_dd_adjust=start + std, - return_steps=True - ) - low_dds = diffuse_d_over_D( - interval.mid, - oldest_age, + all_args = [interval.mid, oldest_age] + all_kwargs = dict( domain_size=domain_size, - start_dd_adjust=start - std, - return_steps=True + return_steps=True, ) - - kappa = kappa_diffusivity(interval.mid) - dls = diffusion_length_scale(interval.mid, domain_size) - - # Defining this in-place since it really isn't needed outside - # this function. - def dd_from_rep(age): - age_step = math.floor(age * kappa / dls) - return np.random.normal( - middle_dds[age_step], - statistics.mean([ - middle_dds[age_step] - low_dds[age_step], - high_dds[age_step] - middle_dds[age_step] - ]) + mid_kwargs = all_kwargs.copy() + mid_kwargs["start_dd_adjust"] = start + + high_kwargs = all_kwargs.copy() + high_kwargs["start_dd_adjust"] = start + std + + low_kwargs = all_kwargs.copy() + low_kwargs["start_dd_adjust"] = start - std + + if return_surfaces: + mid_kwargs["return_surface"] = "all" + + middle_dds, middle_surfs = diffuse_d_over_D(*all_args, **mid_kwargs) + high_dds = diffuse_d_over_D(*all_args, **high_kwargs) + low_dds = diffuse_d_over_D(*all_args, **low_kwargs) + + # Defining this in-place since it really isn't needed outside + # this function. + def dd_surf_from_rep(age, diam): + age_step = math.floor(age * kappa / dls) + dd = np.random.normal( + middle_dds[age_step], + statistics.mean([ + middle_dds[age_step] - low_dds[age_step], + high_dds[age_step] - middle_dds[age_step] + ]) + ) + surf = middle_surfs[age_step] + surf_depth = np.max(surf) - np.min(surf) + d_mult = dd * diam / surf_depth + + return dd, surf * d_mult + + df.loc[df["diameter_bin"] == interval, ["d/D", "surface"]] = df.loc[ + df["diameter_bin"] == interval + ].apply( + lambda row: pd.Series( + dd_surf_from_rep(row["age"], row["diameter"]), + index=["d/D", "surface"] + ), + axis=1, + result_type="expand", ) - df.loc[df["diameter_bin"] == interval, "d/D"] = df.loc[ - df["diameter_bin"] == interval - ].apply( - lambda row: dd_from_rep(row["age"]), - axis=1 - ) + else: + middle_dds = diffuse_d_over_D(*all_args, **mid_kwargs) + high_dds = diffuse_d_over_D(*all_args, **high_kwargs) + low_dds = diffuse_d_over_D(*all_args, **low_kwargs) + + # Defining this in-place since it really isn't needed outside + # this function. + def dd_from_rep(age): + age_step = math.floor(age * kappa / dls) + return np.random.normal( + middle_dds[age_step], + statistics.mean([ + middle_dds[age_step] - low_dds[age_step], + high_dds[age_step] - middle_dds[age_step] + ]) + ) + + df.loc[df["diameter_bin"] == interval, "d/D"] = df.loc[ + df["diameter_bin"] == interval + ].apply( + lambda row: dd_from_rep(row["age"]), + axis=1 + ) logger.info("diffuse_d_over_D_by_bin complete.") return df + + +def make_crater_field( + df, + terrain_model, + transform, +) -> npt.NDArray: + """ + Returns a 2D numpy array whose values are heights. + + The *df* should have a "surface" column which contains 2D numpy arrays, + presumably the output of diffuse_d_over_D_by_bin() with return_surfaces=True. + + The *terrain_model* argument can either be an initial 2D Numpy Array which + contains elevation values for a surface which the craters in *df* will be + applied to and diffused over, or it can be a two-element sequence that contains + the number of rows and columns that an initial flat 2D Numpy Array will be + generated from. + + """ + logger.info("make_crater_field start.") + + # # Establish initial height field: + # if len(terrain_model.shape) == 2: + # u = terrain_model + # else: + # u = np.zeros(terrain_model) + + if abs(transform.a) != abs(transform.e): + raise ValueError("The transform does not have even spacing in X and Y.") + else: + gsd = transform.a + + tm_window = get_data_window(terrain_model) + + for row in df.itertuples(index=False): + surf = row.surface + if surf is None: + logger.info(f"There is no surface for this row: {row}") + continue + # So the below assumes that surf is square, and that it was built with + # diffuse_d_over_D(): + surf_gsd = row.diameter * 2 / surf.shape[0] + + new_surf = rescale(surf, surf_gsd / gsd, preserve_range=True, anti_aliasing=True) + + r, c = rowcol(transform, row.x, row.y) + + surf_window = Window( + c - int(new_surf.shape[1] / 2), + r - int(new_surf.shape[0] / 2), + new_surf.shape[1], + new_surf.shape[0] + ) + tm_slices, surf_slices = to_relative_slices(tm_window, surf_window) + terrain_model[tm_slices] += new_surf[surf_slices] + + return terrain_model + + +def to_relative_slices(w1: Window, w2: Window): + if not intersect(w1, w2): + raise ValueError("The two windows do not intersect.") + + w1_r1 = Window(0, 0, w1.width, w1.height) + w2_r1 = Window( + w2.col_off - w1.col_off, w2.row_off - w1.row_off, w2.width, w2.height + ) + + w1_r2 = Window( + w1.col_off - w2.col_off, w1.row_off - w2.row_off, w1.width, w1.height + ) + w2_r2 = Window(0, 0, w2.width, w2.height) + + return w1_r1.intersection(w2_r1).toslices(), w2_r2.intersection(w1_r2).toslices() From 27aba8976b0ab55c1d9622e59996085aeb3a87a7 Mon Sep 17 00:00:00 2001 From: Ross Beyer Date: Mon, 20 Nov 2023 11:13:49 -0800 Subject: [PATCH 03/21] refactor(many): Ran a thorough flake8 and black-ing of the codebase. --- Makefile | 9 +- environment_dev.yml | 1 + requirements_dev.txt | 1 + src/python/synthterrain/cli.py | 60 ++-- src/python/synthterrain/crater/age.py | 37 +-- src/python/synthterrain/crater/cli.py | 73 +++-- src/python/synthterrain/crater/cli_convert.py | 32 +- src/python/synthterrain/crater/cli_plot.py | 2 +- src/python/synthterrain/crater/diffusion.py | 71 ++--- src/python/synthterrain/crater/functions.py | 284 +++++++++--------- src/python/synthterrain/crater/profile.py | 174 ++++++----- src/python/synthterrain/rock/__init__.py | 1 - src/python/synthterrain/util.py | 22 +- tests/python/crater/test_age.py | 113 +++++-- tests/python/crater/test_functions.py | 63 +++- tests/python/crater/test_init.py | 5 +- tests/python/test_util.py | 8 +- 17 files changed, 530 insertions(+), 426 deletions(-) diff --git a/Makefile b/Makefile index 006b80d..ad86828 100644 --- a/Makefile +++ b/Makefile @@ -56,8 +56,13 @@ clean-test: ## remove test and coverage artifacts rm -fr .pytest_cache rm -fr test-resources -lint: ## check style with flake8 - flake8 --max-complexity 10 --ignore E203,E501,W503 hiproc tests +lint/flake8: ## check style with flake8 + flake8 --max-complexity 10 --ignore E203,E501,W503 src/python/synthterrain tests + +lint/black: ## check style with black + black --check src/python/synthterrain tests + +lint: lint/flake8 lint/black test: ## run tests quickly with the default Python pytest -s diff --git a/environment_dev.yml b/environment_dev.yml index fe8c2ec..622f3ca 100644 --- a/environment_dev.yml +++ b/environment_dev.yml @@ -3,6 +3,7 @@ channels: - conda-forge - defaults dependencies: + - black - bump2version - cookiecutter - flake8 diff --git a/requirements_dev.txt b/requirements_dev.txt index 2a80230..fa71688 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -1,3 +1,4 @@ +black pip==19.2.3 bump2version==0.5.11 wheel==0.33.6 diff --git a/src/python/synthterrain/cli.py b/src/python/synthterrain/cli.py index 8e6bc51..73e88fb 100644 --- a/src/python/synthterrain/cli.py +++ b/src/python/synthterrain/cli.py @@ -37,73 +37,76 @@ def arg_parser(): nargs=4, type=float, default=[0, 1000, 1000, 0], - metavar=('MINX', 'MAXY', 'MAXX', 'MINY'), + metavar=("MINX", "MAXY", "MAXX", "MINY"), help="The coordinates of the bounding box, expressed in meters, to " - "evaluate in min-x, max-y, max-x, min-y order (which is ulx, " - "uly, lrx, lry, the GDAL pattern). " - "Default: %(default)s" + "evaluate in min-x, max-y, max-x, min-y order (which is ulx, " + "uly, lrx, lry, the GDAL pattern). " + "Default: %(default)s", ) parser.add_argument( - "-c", "--craters", + "-c", + "--craters", type=Path, help="Crater CSV or XML file of pre-existing craters. This option is usually " - "used as follows: A set of 'real' craters are identified from a target " - "area above a certain diameter (say 5 m/pixel) and given to this option. " - "Then --cr-mind and --cr_maxd are set to some range less than 5 m/pixel. " - "This generates synthetic craters in the specified range, and then uses " - "those synthetic craters in addition to the craters from --craters when " - "building the rock probability map." + "used as follows: A set of 'real' craters are identified from a target " + "area above a certain diameter (say 5 m/pixel) and given to this option. " + "Then --cr-mind and --cr_maxd are set to some range less than 5 m/pixel. " + "This generates synthetic craters in the specified range, and then uses " + "those synthetic craters in addition to the craters from --craters when " + "building the rock probability map.", ) parser.add_argument( "--csfd", default="VIPER_Env_Spec", choices=csfd_dict.keys(), help="The name of the crater size-frequency distribution to use. " - f"Options are: {', '.join(csfd_dict.keys())}. " - "Default: %(default)s" + f"Options are: {', '.join(csfd_dict.keys())}. " + "Default: %(default)s", ) parser.add_argument( "--cr_maxd", default=1000, type=float, - help="Maximum crater diameter in meters. Default: %(default)s" + help="Maximum crater diameter in meters. Default: %(default)s", ) parser.add_argument( "--cr_mind", default=1, type=float, - help="Minimum crater diameter in meters. Default: %(default)s" + help="Minimum crater diameter in meters. Default: %(default)s", ) parser.add_argument( "--rk_maxd", default=2, type=float, - help="Maximum crater diameter in meters. Default: %(default)s" + help="Maximum crater diameter in meters. Default: %(default)s", ) parser.add_argument( "--rk_mind", default=0.1, type=float, - help="Minimum crater diameter in meters. Default: %(default)s" + help="Minimum crater diameter in meters. Default: %(default)s", ) parser.add_argument( - "-p", "--plot", + "-p", + "--plot", action="store_true", help="This will cause a matplotlib windows to open with some summary " - "plots after the program has generated craters and then rocks." + "plots after the program has generated craters and then rocks.", ) parser.add_argument( - "-x", "--xml", + "-x", + "--xml", action="store_true", help="Default output is in CSV format, but if given this will result " - "in XML output that conforms to the old MATLAB code." + "in XML output that conforms to the old MATLAB code.", ) parser.add_argument( "--probability_map_gsd", type=float, default=1, help="This program builds a probability map to generate locations, and this " - "sets the ground sample distance in the units of --bbox for that map.", + "sets the ground sample distance in the units of --bbox for that map.", ) group = parser.add_mutually_exclusive_group(required=True) group.add_argument( @@ -111,18 +114,11 @@ def arg_parser(): action=util.PrintDictAction, dict=csfd_dict, help="If given, will list detailed information about each of the " - "available CSFDs and exit." - ) - group.add_argument( - "--cr_outfile", - type=Path, - help="Path to crater output file." + "available CSFDs and exit.", ) + group.add_argument("--cr_outfile", type=Path, help="Path to crater output file.") parser.add_argument( - "--rk_outfile", - type=Path, - required=True, - help="Path to crater output file." + "--rk_outfile", type=Path, required=True, help="Path to crater output file." ) return parser diff --git a/src/python/synthterrain/crater/age.py b/src/python/synthterrain/crater/age.py index 006eef3..af8a7b7 100644 --- a/src/python/synthterrain/crater/age.py +++ b/src/python/synthterrain/crater/age.py @@ -56,12 +56,13 @@ def estimate_age(diameter, dd, max_age): if dd > fresh_dd: return 0 - dd_rev_list = list(reversed(diffuse_d_over_D( - diameter, - max_age, - start_dd_adjust=fresh_dd, - return_steps=True - ))) + dd_rev_list = list( + reversed( + diffuse_d_over_D( + diameter, max_age, start_dd_adjust=fresh_dd, return_steps=True + ) + ) + ) nsteps = len(dd_rev_list) age_step = bisect.bisect_left(dd_rev_list, dd) @@ -119,14 +120,16 @@ def estimate_age_by_bin( ) df["diameter_bin"] = pd.cut( - df["diameter"], bins=bin_edges, include_lowest=True, + df["diameter"], + bins=bin_edges, + include_lowest=True, ) # df["equilibrium_age"] = equilibrium_ages(df["diameter"], pd_csfd, eq_csfd) df["age"] = 0 for i, (interval, count) in enumerate( - df["diameter_bin"].value_counts(sort=False).items() + df["diameter_bin"].value_counts(sort=False).items() ): logger.info( f"Processing bin {i + 1}/{total_bins}, interval: {interval}, count: {count}" @@ -142,12 +145,13 @@ def estimate_age_by_bin( else: age = 4.5e9 - dd_rev_list = list(reversed(diffuse_d_over_D( - interval.mid, - age, - start_dd_adjust=fresh_dd, - return_steps=True - ))) + dd_rev_list = list( + reversed( + diffuse_d_over_D( + interval.mid, age, start_dd_adjust=fresh_dd, return_steps=True + ) + ) + ) nsteps = len(dd_rev_list) years_per_step = age / nsteps @@ -157,10 +161,7 @@ def guess_age(dd): df.loc[df["diameter_bin"] == interval, "age"] = df.loc[ df["diameter_bin"] == interval - ].apply( - lambda row: guess_age(row["d/D"]), - axis=1 - ) + ].apply(lambda row: guess_age(row["d/D"]), axis=1) df["age"] = df["age"].astype("int64") diff --git a/src/python/synthterrain/crater/cli.py b/src/python/synthterrain/crater/cli.py index 0981e0a..0baee1a 100644 --- a/src/python/synthterrain/crater/cli.py +++ b/src/python/synthterrain/crater/cli.py @@ -50,42 +50,43 @@ def arg_parser(): nargs=4, type=float, default=[0, 1000, 1000, 0], - metavar=('MINX', 'MAXY', 'MAXX', 'MINY'), + metavar=("MINX", "MAXY", "MAXX", "MINY"), help="The coordinates of the bounding box, expressed in meters, to " - "evaluate in min-x, max-y, max-x, min-y order (which is ulx, " - "uly, lrx, lry, the GDAL pattern). " - "Default: %(default)s" + "evaluate in min-x, max-y, max-x, min-y order (which is ulx, " + "uly, lrx, lry, the GDAL pattern). " + "Default: %(default)s", ) parser.add_argument( "--csfd", default="VIPER_Env_Spec", choices=csfd_dict.keys(), help="The name of the crater size-frequency distribution to use. " - f"Options are: {', '.join(csfd_dict.keys())}. " - "Default: %(default)s" + f"Options are: {', '.join(csfd_dict.keys())}. " + "Default: %(default)s", ) parser.add_argument( "--maxd", default=1000, type=float, - help="Maximum crater diameter in meters. Default: %(default)s" + help="Maximum crater diameter in meters. Default: %(default)s", ) parser.add_argument( "--mind", default=1, type=float, - help="Minimum crater diameter in meters. Default: %(default)s" + help="Minimum crater diameter in meters. Default: %(default)s", ) parser.add_argument( - "-p", "--plot", + "-p", + "--plot", action="store_true", help="This will cause a matplotlib window to open with some summary " - "plots after the program has generated the data." + "plots after the program has generated the data.", ) parser.add_argument( "-proj", help="If -t is given this is needed to determine the proj string for the " - "output GeoTIFF. e.g. '+proj=eqc +R=1737400 +units=m'" + "output GeoTIFF. e.g. '+proj=eqc +R=1737400 +units=m'", ) parser.add_argument( "--run_individual", @@ -93,26 +94,28 @@ def arg_parser(): # given to the by_bin parameter of synthesize. action="store_false", help="If given, this will run a diffusion model for each synthetic " - "crater individually and depending on the area provided and the " - "crater range could cause this program to run for many hours as " - "it tried to calculate tens of thousands of diffusion models. " - "The default behavior is to gather the craters into diameter bins " - "and only run a few representative diffusion models to span the " - "parameter space." + "crater individually and depending on the area provided and the " + "crater range could cause this program to run for many hours as " + "it tried to calculate tens of thousands of diffusion models. " + "The default behavior is to gather the craters into diameter bins " + "and only run a few representative diffusion models to span the " + "parameter space.", ) parser.add_argument( - "-t", "--terrain_gsd", + "-t", + "--terrain_gsd", type=float, help="If provided, will trigger creation of a terrain model based on bbox, and " "the value given here will set the ground sample distance (GSD) of that model. " "The terrain model output file will be the same as --outfile, but with a .tif " - "ending." + "ending.", ) parser.add_argument( - "-x", "--xml", + "-x", + "--xml", action="store_true", help="Default output is in CSV format, but if given this will result " - "in XML output that conforms to the old MATLAB code." + "in XML output that conforms to the old MATLAB code.", ) group = parser.add_mutually_exclusive_group(required=True) group.add_argument( @@ -120,13 +123,9 @@ def arg_parser(): action=util.PrintDictAction, dict=csfd_dict, help="If given, will list detailed information about each of the " - "available CSFDs and exit." - ) - group.add_argument( - "-o", "--outfile", - type=Path, - help="Path to output file." + "available CSFDs and exit.", ) + group.add_argument("-o", "--outfile", type=Path, help="Path to output file.") return parser @@ -152,7 +151,7 @@ def main(): by_bin=args.run_individual, min_d=args.mind, max_d=args.maxd, - return_surfaces=bool(args.terrain_gsd) + return_surfaces=bool(args.terrain_gsd), ) if args.plot: @@ -172,15 +171,15 @@ def main(): ) with rasterio.open( - args.outfile.with_suffix(".tif"), - 'w', - driver='GTiff', - height=tm.shape[0], - width=tm.shape[1], - count=1, - dtype=tm.dtype, - crs=args.proj, - transform=transform, + args.outfile.with_suffix(".tif"), + "w", + driver="GTiff", + height=tm.shape[0], + width=tm.shape[1], + count=1, + dtype=tm.dtype, + crs=args.proj, + transform=transform, ) as dst: dst.write(tm, 1) diff --git a/src/python/synthterrain/crater/cli_convert.py b/src/python/synthterrain/crater/cli_convert.py index 12271c5..ce6354f 100644 --- a/src/python/synthterrain/crater/cli_convert.py +++ b/src/python/synthterrain/crater/cli_convert.py @@ -34,31 +34,29 @@ def arg_parser(): "--estimate_ages", action="store_true", help="When given, craters in the input file with no age specified, or an age " - "of zero, will have an age estimated based on their diameter and d/D " - "ratio using the Grun/Neukum production function and the VIPER " - "Environmental Specification equilibrium crater function. Some resulting " - "craters may still yield a zero age if the d/D ratio was large relative " - "to the diameter, indicating a very fresh crater." + "of zero, will have an age estimated based on their diameter and d/D " + "ratio using the Grun/Neukum production function and the VIPER " + "Environmental Specification equilibrium crater function. Some resulting " + "craters may still yield a zero age if the d/D ratio was large relative " + "to the diameter, indicating a very fresh crater.", ) parser.add_argument( "--full_age", action="store_true", help="Ignored unless --estimate_ages is also given. When provided, it will " - "cause the diffusion calculation to run for the age of the solar system " - "instead of just the equilibrium age for each crater size. This may " - "provide improved age estimates, but could also cause longer run times. " - "Please use with caution." + "cause the diffusion calculation to run for the age of the solar system " + "instead of just the equilibrium age for each crater size. This may " + "provide improved age estimates, but could also cause longer run times. " + "Please use with caution.", ) parser.add_argument( - "infile", - type=Path, - help="A CSV or XML file produced by synthcraters." + "infile", type=Path, help="A CSV or XML file produced by synthcraters." ) parser.add_argument( "outfile", type=Path, help="The output file an XML or CSV file (whatever the opposite of the " - "first argument is)." + "first argument is).", ) return parser @@ -81,9 +79,7 @@ def main(): df["age"] = 0 # No age information from XML file format. else: - parser.error( - f"The input file {args.infile} did not end in .csv or .xml." - ) + parser.error(f"The input file {args.infile} did not end in .csv or .xml.") if args.estimate_ages: if args.full_age: @@ -103,9 +99,7 @@ def main(): else: df = estimate_age_by_bin(df, 50, pd_csfd, eq_csfd) except ValueError: - logger.error( - "The provided file has no craters with an age of zero." - ) + logger.error("The provided file has no craters with an age of zero.") return 1 crater.to_file(df, args.outfile, xml=(args.outfile.suffix.casefold() == ".xml")) diff --git a/src/python/synthterrain/crater/cli_plot.py b/src/python/synthterrain/crater/cli_plot.py index 26504a3..56fe133 100644 --- a/src/python/synthterrain/crater/cli_plot.py +++ b/src/python/synthterrain/crater/cli_plot.py @@ -32,7 +32,7 @@ def arg_parser(): "csv", type=Path, help="A CSV file with a header row, and the following columns: " - "x, y, diameter, age, d/D." + "x, y, diameter, age, d/D.", ) return parser diff --git a/src/python/synthterrain/crater/diffusion.py b/src/python/synthterrain/crater/diffusion.py index de7920f..efdd018 100644 --- a/src/python/synthterrain/crater/diffusion.py +++ b/src/python/synthterrain/crater/diffusion.py @@ -106,7 +106,7 @@ def diffuse_d_over_D( start_dd_std=0.02, return_steps=False, return_surface: Union[bool, str] = False, - crater_cls=FTmod_Crater + crater_cls=FTmod_Crater, ): """ Returns a depth to diameter ratio of a crater of *diameter* in meters @@ -202,16 +202,17 @@ def diffuse_d_over_D( # D * dt appears in the Hill (2020) diffusion calculation, but # we have formulated dls, such that D * dt = dls - dd_for_each_step = [(np.max(u) - np.min(u)) / diameter, ] - u_for_each_step = [u, ] + dd_for_each_step = [ + (np.max(u) - np.min(u)) / diameter, + ] + u_for_each_step = [ + u, + ] un = np.copy(u) for step in range(nsteps): un[1:-1, 1:-1] = u[1:-1, 1:-1] + dls * ( - ( - u[2:, 1:-1] - 2 * u[1:-1, 1:-1] + u[:-2, 1:-1] - ) / dx2 + ( - u[1:-1, 2:] - 2 * u[1:-1, 1:-1] + u[1:-1, :-2] - ) / dx2 + (u[2:, 1:-1] - 2 * u[1:-1, 1:-1] + u[:-2, 1:-1]) / dx2 + + (u[1:-1, 2:] - 2 * u[1:-1, 1:-1] + u[1:-1, :-2]) / dx2 ) dd_for_each_step.append((np.max(un) - np.min(un)) / diameter) u = np.copy(un) @@ -273,9 +274,7 @@ def diffuse_d_over_D_by_bin( """ logger.info("diffuse_d_over_D_by_bin start.") - bin_edges = np.geomspace( - df["diameter"].min(), df["diameter"].max(), num=num + 1 - ) + bin_edges = np.geomspace(df["diameter"].min(), df["diameter"].max(), num=num + 1) # logger.info(f"{df.shape[0]} craters") logger.info( f"Divided the craters into {num} diameter bins (not all bins may have " @@ -286,9 +285,9 @@ def diffuse_d_over_D_by_bin( # This is a 3-degree fit to the data from Stopar et al. (2017) # The resulting function, stopar_dD() will return d/D ratios when # given a diameter in meters. - stopar_poly = Polynomial([ - 1.23447427e-01, 1.49135061e-04, -6.16681361e-08, 7.08449143e-12 - ]) + stopar_poly = Polynomial( + [1.23447427e-01, 1.49135061e-04, -6.16681361e-08, 7.08449143e-12] + ) def start_dd(diameter): if diameter < 850: @@ -323,6 +322,7 @@ def start_std(diameter): return start_dd_std else: + def start_dd(diameter): return start_dd_mean @@ -338,9 +338,7 @@ def start_std(diameter): for i, (interval, count) in enumerate( df["diameter_bin"].value_counts(sort=False).items() ): - logger.info( - f"Processing bin {i}/{num}, interval: {interval}, count: {count}" - ) + logger.info(f"Processing bin {i}/{num}, interval: {interval}, count: {count}") if count == 0: continue @@ -360,7 +358,7 @@ def start_std(diameter): start_dd_std=start_std(row["diameter"]), return_surface=True, ), - index=["d/D", "surface"] + index=["d/D", "surface"], ), axis=1, result_type="expand", @@ -416,10 +414,12 @@ def dd_surf_from_rep(age, diam): age_step = math.floor(age * kappa / dls) dd = np.random.normal( middle_dds[age_step], - statistics.mean([ - middle_dds[age_step] - low_dds[age_step], - high_dds[age_step] - middle_dds[age_step] - ]) + statistics.mean( + [ + middle_dds[age_step] - low_dds[age_step], + high_dds[age_step] - middle_dds[age_step], + ] + ), ) surf = middle_surfs[age_step] surf_depth = np.max(surf) - np.min(surf) @@ -428,11 +428,11 @@ def dd_surf_from_rep(age, diam): return dd, surf * d_mult df.loc[df["diameter_bin"] == interval, ["d/D", "surface"]] = df.loc[ - df["diameter_bin"] == interval - ].apply( + df["diameter_bin"] == interval + ].apply( lambda row: pd.Series( dd_surf_from_rep(row["age"], row["diameter"]), - index=["d/D", "surface"] + index=["d/D", "surface"], ), axis=1, result_type="expand", @@ -449,18 +449,17 @@ def dd_from_rep(age): age_step = math.floor(age * kappa / dls) return np.random.normal( middle_dds[age_step], - statistics.mean([ - middle_dds[age_step] - low_dds[age_step], - high_dds[age_step] - middle_dds[age_step] - ]) + statistics.mean( + [ + middle_dds[age_step] - low_dds[age_step], + high_dds[age_step] - middle_dds[age_step], + ] + ), ) df.loc[df["diameter_bin"] == interval, "d/D"] = df.loc[ df["diameter_bin"] == interval - ].apply( - lambda row: dd_from_rep(row["age"]), - axis=1 - ) + ].apply(lambda row: dd_from_rep(row["age"]), axis=1) logger.info("diffuse_d_over_D_by_bin complete.") @@ -509,7 +508,9 @@ def make_crater_field( # diffuse_d_over_D(): surf_gsd = row.diameter * 2 / surf.shape[0] - new_surf = rescale(surf, surf_gsd / gsd, preserve_range=True, anti_aliasing=True) + new_surf = rescale( + surf, surf_gsd / gsd, preserve_range=True, anti_aliasing=True + ) r, c = rowcol(transform, row.x, row.y) @@ -517,7 +518,7 @@ def make_crater_field( c - int(new_surf.shape[1] / 2), r - int(new_surf.shape[0] / 2), new_surf.shape[1], - new_surf.shape[0] + new_surf.shape[0], ) tm_slices, surf_slices = to_relative_slices(tm_window, surf_window) terrain_model[tm_slices] += new_surf[surf_slices] diff --git a/src/python/synthterrain/crater/functions.py b/src/python/synthterrain/crater/functions.py index 92a0ff2..b4e47c5 100644 --- a/src/python/synthterrain/crater/functions.py +++ b/src/python/synthterrain/crater/functions.py @@ -27,48 +27,47 @@ class Crater_rv_continuous(ABC, rv_continuous): """Base class for crater continuous distributions. Provides - some convenience functions common to all crater distributions. + some convenience functions common to all crater distributions. - Crater distribution terminology can be reviewed in Robbins, et al. (2018, - https://doi.org/10.1111/maps.12990), which in its - terminology section states "In crater work, the CSFD can be thought - of as a scaled version of "1−CDF." + Crater distribution terminology can be reviewed in Robbins, et al. (2018, + https://doi.org/10.1111/maps.12990), which in its + terminology section states "In crater work, the CSFD can be thought + of as a scaled version of "1−CDF." - CSFD is the crater size-frequency distribution, a widely used - representation in the scientific literature. CDF is the statistical - cumulative distribution function. + CSFD is the crater size-frequency distribution, a widely used + representation in the scientific literature. CDF is the statistical + cumulative distribution function. - Both the CSFD and the CDF are functions of d (the diameter of craters), - and are related thusly, according to Robbins et al.: + Both the CSFD and the CDF are functions of d (the diameter of craters), + and are related thusly, according to Robbins et al.: - CSFD(d) ~ 1 - CDF(d) + CSFD(d) ~ 1 - CDF(d) - For any particular count of craters, the smallest crater value - measured (d_min) gives the total number of craters in the set per - unit area, CSFD(d_min). Which implies this relation + For any particular count of craters, the smallest crater value + measured (d_min) gives the total number of craters in the set per + unit area, CSFD(d_min). Which implies this relation - CDF(d) = 1 - (CSFD(d) / CSFD(d_min)) + CDF(d) = 1 - (CSFD(d) / CSFD(d_min)) - If you scale by CSFC(d_min) which is the total number of craters, - then you get a statistical CDF. + If you scale by CSFC(d_min) which is the total number of craters, + then you get a statistical CDF. - When creating concrete classes that descend from Crater_rv_continuous, - the csfd() function must be implemented. There is a default - implementation of ._cdf(), but it is advised that it be implemented - directly for speed and efficiency. It is also heavily advised - (echoing the advice from scipy.stats.rv_continuous itself) that _ppf() - also be directly implemented. + When creating concrete classes that descend from Crater_rv_continuous, + the csfd() function must be implemented. There is a default + implementation of ._cdf(), but it is advised that it be implemented + directly for speed and efficiency. It is also heavily advised + (echoing the advice from scipy.stats.rv_continuous itself) that _ppf() + also be directly implemented. - It is assumed that the units of diameters (d) are in meters, and - that the resulting CSFD(d) is in units of number per square meter. - Implementing functions should support this. + It is assumed that the units of diameters (d) are in meters, and + that the resulting CSFD(d) is in units of number per square meter. + Implementing functions should support this. """ def __init__(self, a, **kwargs): if a <= 0: raise ValueError( - "The lower bound of the support of the distribution, a, must " - "be > 0." + "The lower bound of the support of the distribution, a, must " "be > 0." ) else: kwargs["a"] = a @@ -109,22 +108,24 @@ def csfd(self, d): def _cdf(self, d): """Returns an array-like which is the result of applying the - cumulative density function to *d*, the input array-like of - diameters. + cumulative density function to *d*, the input array-like of + diameters. - If the crater size-frequency distribution (CSFD) is C(d) (typically - also expressed as N_cumulative(d) ), then + If the crater size-frequency distribution (CSFD) is C(d) (typically + also expressed as N_cumulative(d) ), then - cdf(d) = 1 - (C(d) / C(d_min)) + cdf(d) = 1 - (C(d) / C(d_min)) - In the context of this class, d_min is a, the lower bound of the - support of the distribution when this class is instantiated. + In the context of this class, d_min is a, the lower bound of the + support of the distribution when this class is instantiated. - As with the parent class, rv_continuous, implementers of derived - classes are strongly encouraged to override this with more - efficient implementations, also possibly implementing _ppf(). + As with the parent class, rv_continuous, implementers of derived + classes are strongly encouraged to override this with more + efficient implementations, also possibly implementing _ppf(). """ - return np.ones_like(d, dtype=np.dtype(float)) - (self.csfd(d) / self.csfd(self.a)) + return np.ones_like(d, dtype=np.dtype(float)) - ( + self.csfd(d) / self.csfd(self.a) + ) def count(self, area, diameter=None) -> int: """Returns the number of craters based on the *area* provided @@ -142,21 +143,21 @@ def count(self, area, diameter=None) -> int: def rvs(self, *args, **kwargs): """Overrides the parent rvs() function by adding an *area* - parameter, all other arguments are identical. + parameter, all other arguments are identical. - If an *area* parameter is provided, it is interpreted as the - area in square meters which has accumulated craters. + If an *area* parameter is provided, it is interpreted as the + area in square meters which has accumulated craters. - Specifying it will cause the *size* parameter (if given) to - be overridden such that + Specifying it will cause the *size* parameter (if given) to + be overridden such that - size = CSDF(d_min) * area + size = CSDF(d_min) * area - and then the parent rvs() function will be called. + and then the parent rvs() function will be called. - Since the CSDF interpreted at the minimum crater size is - the total number of craters per square meter, multiplying - it by the desired area results in the desired number of craters. + Since the CSDF interpreted at the minimum crater size is + the total number of craters per square meter, multiplying + it by the desired area results in the desired number of craters. """ if "area" in kwargs: kwargs["size"] = self.count(kwargs["area"]) @@ -166,19 +167,18 @@ def rvs(self, *args, **kwargs): class Test_Distribution(Crater_rv_continuous): - """This is testing a simple function. - """ + """This is testing a simple function.""" def csfd(self, d): """Returns the crater cumulative size frequency distribution function - such that - CSFD(d) = N_cum(d) = 29174 / d^(1.92) + such that + CSFD(d) = N_cum(d) = 29174 / d^(1.92) """ return 29174 * np.float_power(d, -1.92) def _cdf(self, d): """Override of parent function to eliminate unnecessary division - of 29174 by itself. + of 29174 by itself. """ return np.ones_like(d, dtype=np.dtype(float)) - ( np.float_power(d, -1.92) / np.float_power(self.a, -1.92) @@ -198,13 +198,17 @@ class VIPER_Env_Spec(Crater_rv_continuous): def csfd(self, d): """ - CSFD( d <= 80 ) = (29174 / d^(1.92)) / (1000^2) - CSFD( d > 80 ) = (156228 / d^(2.389)) / (1000^2) + CSFD( d <= 80 ) = (29174 / d^(1.92)) / (1000^2) + CSFD( d > 80 ) = (156228 / d^(2.389)) / (1000^2) """ if isinstance(d, Number): # Convert to numpy array, if needed. - diam = np.array([d, ]) + diam = np.array( + [ + d, + ] + ) else: diam = d c = np.empty_like(diam, dtype=np.dtype(float)) @@ -231,7 +235,7 @@ def csfd(self, d): def _cdf(self, d): """Override parent function to eliminate unnecessary division - by constants. + by constants. """ c = np.empty_like(d, dtype=np.dtype(float)) c[d <= 80] = np.float_power(d[d <= 80], -1.92) / np.float_power(self.a, -1.92) @@ -240,16 +244,22 @@ def _cdf(self, d): def _ppf(self, q): """Override parent function to make things faster for .rvs().""" - q80 = float(self._cdf(np.array([80, ]))) + q80 = float( + self._cdf( + np.array( + [ + 80, + ] + ) + ) + ) ones = np.ones_like(q, dtype=np.dtype(float)) p = np.empty_like(q, dtype=np.dtype(float)) p[q <= q80] = np.float_power( - (ones[q <= q80] / (ones[q <= q80] - q[q <= q80])), - (1 / 1.92) + (ones[q <= q80] / (ones[q <= q80] - q[q <= q80])), (1 / 1.92) ) p[q > q80] = np.float_power( - (ones[q > q80] / (ones[q > q80] - q[q > q80])), - (1 / 2.389) + (ones[q > q80] / (ones[q > q80] - q[q > q80])), (1 / 2.389) ) return self.a * p @@ -314,15 +324,15 @@ def csfd(self, d): class Coef_Distribution(Crater_rv_continuous): """This class instantiates a continuous crater distribution based - on a polynomial. This notation for a crater distribution is - used by Neukum et al. (2001, https://doi.org/10.1023/A:1011989004263) - and in the craterstats package. - - The coefficients generally assume that the diameter values are in - kilometers, and the math here is based on that, but only matters for - the specification of the coefficients. The diameter values passed - to csfd() are expected to be in meters, and the returned value - is number per square meter. + on a polynomial. This notation for a crater distribution is + used by Neukum et al. (2001, https://doi.org/10.1023/A:1011989004263) + and in the craterstats package. + + The coefficients generally assume that the diameter values are in + kilometers, and the math here is based on that, but only matters for + the specification of the coefficients. The diameter values passed + to csfd() are expected to be in meters, and the returned value + is number per square meter. """ def __init__(self, *args, coef=None, poly=None, **kwargs): @@ -342,19 +352,19 @@ def __init__(self, *args, coef=None, poly=None, **kwargs): def csfd(self, d): """Returns the crater cumulative size frequency distribution function - such that - CSFD(d) = N_cum(d) = 10^x / (1000 * 1000) + such that + CSFD(d) = N_cum(d) = 10^x / (1000 * 1000) - where x is the summation of j from zero to n (typically ~ 11) of - a_j * ( lg(d/1000) )^j + where x is the summation of j from zero to n (typically ~ 11) of + a_j * ( lg(d/1000) )^j - where lg() is the base 10 logarithm, and the values a_j are the - coefficients provided via the constructor. + where lg() is the base 10 logarithm, and the values a_j are the + coefficients provided via the constructor. - Since published coefficients are typically provided for diameter - values in kilometers and areas in square kilometers, the equation - for CSFD(d) is adjusted so that diameters can be provided in units - of meters, and CSFD(d) is returned in counts per square meter. + Since published coefficients are typically provided for diameter + values in kilometers and areas in square kilometers, the equation + for CSFD(d) is adjusted so that diameters can be provided in units + of meters, and CSFD(d) is returned in counts per square meter. """ # The 1000s are to take diameters in meters, convert to kilometers # for application by the polynomial, and then division by a square @@ -430,8 +440,7 @@ def csfd(self, d): def _cdf(self, d): """Override parent function to speed up.""" return np.ones_like(d, dtype=np.dtype(float)) - np.float_power( - 10, - self.poly(np.log10(d / 1000)) - self.poly(np.log10(self.a / 1000)) + 10, self.poly(np.log10(d / 1000)) - self.poly(np.log10(self.a / 1000)) ) @@ -454,7 +463,6 @@ class NPF(Coef_Distribution): """ def __init__(self, a, b, **kwargs): - if a < 10: raise ValueError( "The lower bound of the support of the distribution, a, must " @@ -470,20 +478,30 @@ def __init__(self, a, b, **kwargs): kwargs["b"] = b super().__init__( coef=[ - -3.0768, -3.557528, 0.781027, 1.021521, -0.156012, -0.444058, - 0.019977, 0.086850, -0.005874, -0.006809, 8.25e-04, 5.54e-05 + -3.0768, + -3.557528, + 0.781027, + 1.021521, + -0.156012, + -0.444058, + 0.019977, + 0.086850, + -0.005874, + -0.006809, + 8.25e-04, + 5.54e-05, ], - **kwargs + **kwargs, ) class Interp_Distribution(Crater_rv_continuous): """This class instantiates a continuous crater distribution based - on interpolation of a set of data points. + on interpolation of a set of data points. - The input arrays assume that the diameter values are in meters - and the cumulative size frequency distribution values are in - counts per square meter. + The input arrays assume that the diameter values are in meters + and the cumulative size frequency distribution values are in + counts per square meter. """ def __init__(self, *args, diameters=None, csfds=None, func=None, **kwargs): @@ -504,15 +522,14 @@ def __init__(self, *args, diameters=None, csfds=None, func=None, **kwargs): def csfd(self, d): """Returns the crater cumulative size frequency distribution function - value for *d*. + value for *d*. """ return np.float_power(10, self.func(np.log10(d))) def _cdf(self, d): """Override parent function to speed up.""" return np.ones_like(d, dtype=np.dtype(float)) - np.float_power( - 10, - self.func(np.log10(d)) - self.func(np.log10(self.a)) + 10, self.func(np.log10(d)) - self.func(np.log10(self.a)) ) @@ -579,7 +596,7 @@ def parameters(): # Constants indicated below equation A2 from Grun et al. (1985) # First element here is arbitrarily zero so that indexes match # with printed A2 equation for easier comparison. - c = (0, 4e+29, 1.5e+44, 1.1e-2, 2.2e+3, 15.) + c = (0, 4e29, 1.5e44, 1.1e-2, 2.2e3, 15.0) gamma = (0, 1.85, 3.7, -0.52, 0.306, -4.38) def a_elem(mass, i): @@ -587,12 +604,9 @@ def a_elem(mass, i): def a2(mass): # Returns flux in m^-2 s^-1 - return ( - np.float_power( - a_elem(mass, 1) + a_elem(mass, 2) + c[3], gamma[3] - ) + - np.float_power(a_elem(mass, 4) + c[5], gamma[5]) - ) + return np.float_power( + a_elem(mass, 1) + a_elem(mass, 2) + c[3], gamma[3] + ) + np.float_power(a_elem(mass, 4) + c[5], gamma[5]) # fluxes = a2(masses) * 86400.0 * 365.25 # convert to m^-2 yr^-1 # fluxes = a2(masses) * 86400.0 * 365.25 * 1e6 # convert to km^-2 yr^-1 @@ -607,10 +621,9 @@ def a2(mass): # # r = [ (3 * m) / (4 * pi * rho) ] ^(1/3) # - rho = 2.5e+6 # g/m^-3 + rho = 2.5e6 # g/m^-3 radii = np.float_power( - (3 * masses) / (4 * math.pi * rho), - 1 / 3 + (3 * masses) / (4 * math.pi * rho), 1 / 3 ) # should be radii in meters. # Now these "impactor" radii need to be converted to crater size via @@ -645,7 +658,7 @@ def hoho_diameter( mu=0.43, # ~0.4 to 0.55 K1=0.132, K2=0.26, - Kr=(1.1 * 1.3) # Kr and KrRim + Kr=(1.1 * 1.3), # Kr and KrRim ): # This function is adapted from Caleb's research code, but is based # on Holsapple (1993, @@ -655,7 +668,7 @@ def hoho_diameter( # and a discontinuity with Neukum effvelocity = velocity * math.sin(math.radians(alpha)) - densityratio = (targdensity / rho) + densityratio = targdensity / rho # impmass=((4.0*math.pi)/3.0)*impdensity*(impradius**3.0) #impactormass pi2 = (gravity * radii) / math.pow(effvelocity, 2.0) @@ -667,12 +680,9 @@ def hoho_diameter( expthree = (2.0 + mu) / 2.0 expfour = (-3.0 * mu) / (2.0 + mu) piV = K1 * np.float_power( - (pi2 * np.float_power(densityratio, expone)) + - np.float_power( - K2 * pi3 * np.float_power(densityratio, exptwo), - expthree - ), - expfour + (pi2 * np.float_power(densityratio, expone)) + + np.float_power(K2 * pi3 * np.float_power(densityratio, exptwo), expthree), + expfour, ) V = (masses * piV) / targdensity # m3 for crater rim_radius = Kr * np.float_power(V, (1 / 3)) @@ -703,8 +713,7 @@ def __init__(self, a, b, interp="extendGrun", **kwargs): self.interp = interp else: raise ValueError( - f"The interpolation method, {interp} " - f"is not one of {interp_types}." + f"The interpolation method, {interp} " f"is not one of {interp_types}." ) # Will now construct *this* as an NPF with a Grun hidden inside. @@ -729,9 +738,7 @@ def __init__(self, a, b, interp="extendGrun", **kwargs): diameters = np.append(grun_d, n_diams) fluxes = np.append(grun_f, n_fluxes) - p = Polynomial.fit( - np.log10(diameters / 1000), np.log10(fluxes * 1e6), 11 - ) + p = Polynomial.fit(np.log10(diameters / 1000), np.log10(fluxes * 1e6), 11) self.grun = Coef_Distribution(poly=p, **grun_kwargs) elif self.interp == "interp": @@ -754,7 +761,11 @@ def __init__(self, a, b, interp="extendGrun", **kwargs): def csfd(self, d): if isinstance(d, Number): # Convert to numpy array, if needed. - diam = np.array([float(d), ]) + diam = np.array( + [ + float(d), + ] + ) else: diam = d c = np.empty_like(diam, dtype=np.dtype(float)) @@ -765,9 +776,7 @@ def csfd(self, d): c[diam < 10] = self.grun.csfd(diam[diam < 10]) elif self.interp == "linear": d_interp = np.log10((self.grunstop, 10)) - c_interp = np.log10(( - self.grun.csfd(self.grunstop), super().csfd(10) - )) + c_interp = np.log10((self.grun.csfd(self.grunstop), super().csfd(10))) # cs = CubicSpline(d_interp, c_interp) f = interp1d(d_interp, c_interp) @@ -805,7 +814,11 @@ def csfd(self, d): def _cdf(self, d): if isinstance(d, Number): # Convert to numpy array, if needed. - diam = np.array([d, ]) + diam = np.array( + [ + d, + ] + ) else: diam = d c = np.empty_like(diam, dtype=np.dtype(float)) @@ -815,9 +828,7 @@ def _cdf(self, d): c[diam < 10] = self.grun._cdf(diam[diam < 10]) elif self.interp == "linear": d_interp = np.log10((self.grunstop, 10)) - c_interp = np.log10(( - self.grun._cdf(self.grunstop), super()._cdf(10) - )) + c_interp = np.log10((self.grun._cdf(self.grunstop), super()._cdf(10))) # cs = CubicSpline(d_interp, c_interp) f = interp1d(d_interp, c_interp) @@ -883,7 +894,11 @@ def __init__(self, a, b, **kwargs): def csfd(self, d): if isinstance(d, Number): # Convert to numpy array, if needed. - diam = np.array([float(d), ]) + diam = np.array( + [ + float(d), + ] + ) else: diam = d c = np.empty_like(diam, dtype=np.dtype(float)) @@ -899,7 +914,11 @@ def csfd(self, d): def _cdf(self, d): if isinstance(d, Number): # Convert to numpy array, if needed. - diam = np.array([d, ]) + diam = np.array( + [ + d, + ] + ) else: diam = d c = np.empty_like(diam, dtype=np.dtype(float)) @@ -959,16 +978,11 @@ def __init__(self, a, b, **kwargs): # print(np.log10(fluxes)) # np.set_printoptions(threshold=False) - p = Polynomial.fit( - np.log10(diameters), np.log10(fluxes), 11 - ) + p = Polynomial.fit(np.log10(diameters), np.log10(fluxes), 11) kwargs["a"] = a kwargs["b"] = b - super().__init__( - poly=p, - **kwargs - ) + super().__init__(poly=p, **kwargs) # If new equilibrium functions are added, add them to this list to expose them diff --git a/src/python/synthterrain/crater/profile.py b/src/python/synthterrain/crater/profile.py index 9514bc9..02ebad3 100644 --- a/src/python/synthterrain/crater/profile.py +++ b/src/python/synthterrain/crater/profile.py @@ -19,7 +19,7 @@ from numpy.polynomial import Polynomial -class Crater(): +class Crater: """A base class for establishing characteristics for a crater, in order to query its elevation at particular radial distances.""" @@ -34,46 +34,45 @@ def r(self): def profile(self, r): """Implementing classes must override this function. - This function returns a numpy array of the same shape as - *r*. - This function returns the elevation of the crater profile - at the radial distance *r* where *r* is a fraction of the - crater radius. Such that *r* = 0 is at the center, *r* = 1 - is at the crater diameter, and values of *r* greater than 1 - are distances outside the crater rim. - - Values returned in the numpy array are elevation values - in the distance units of whatever units the self.diameter - parameter is in. Values of zero are considered pre-existing - surface elevations. + This function returns a numpy array of the same shape as + *r*. + This function returns the elevation of the crater profile + at the radial distance *r* where *r* is a fraction of the + crater radius. Such that *r* = 0 is at the center, *r* = 1 + is at the crater diameter, and values of *r* greater than 1 + are distances outside the crater rim. + + Values returned in the numpy array are elevation values + in the distance units of whatever units the self.diameter + parameter is in. Values of zero are considered pre-existing + surface elevations. """ raise NotImplementedError( - f"The class {self.__name__} has not implemented elevation() as " - "required." + f"The class {self.__name__} has not implemented elevation() as " "required." ) class FT_Crater(Crater): """A crater whose profile is defined by functions described in - Fassett and Thomson (2014, https://doi.org/10.1002/2014JE004698), - equation 4. + Fassett and Thomson (2014, https://doi.org/10.1002/2014JE004698), + equation 4. """ def profile(self, r, radius_fix=True): """Returns a numpy array of elevation values based in the input numpy - array of radius fraction values, such that a radius fraction value - of 1 is at the rim, less than that interior to the crater, etc. - - A ValueError will be thrown if any values in r are < 0. - - The Fassett and Thomson (2014) paper defined equations which - placed the rim point at a radius fraction of 0.98, but that - results in a crater with a smaller diameter than specifed. - If radius_fix is True (the default) the returned profile will - extend the interior slope and place the rim at radius fraction - 1.0, but this may cause a discontinuity at the rim. If you - would like a profile with the original behavior, set radius_fix - to False. + array of radius fraction values, such that a radius fraction value + of 1 is at the rim, less than that interior to the crater, etc. + + A ValueError will be thrown if any values in r are < 0. + + The Fassett and Thomson (2014) paper defined equations which + placed the rim point at a radius fraction of 0.98, but that + results in a crater with a smaller diameter than specifed. + If radius_fix is True (the default) the returned profile will + extend the interior slope and place the rim at radius fraction + 1.0, but this may cause a discontinuity at the rim. If you + would like a profile with the original behavior, set radius_fix + to False. """ if not isinstance(r, np.ndarray): @@ -82,9 +81,7 @@ def profile(self, r, radius_fix=True): out_arr = np.zeros_like(r) if np.any(r < 0): - raise ValueError( - "The radius fraction value can't be less than zero." - ) + raise ValueError("The radius fraction value can't be less than zero.") # In F&T (2014) the boundary between inner and outer was at 0.98 # which put the rim not at r=1, Caleb's subsequent code revised @@ -98,12 +95,8 @@ def profile(self, r, radius_fix=True): inner_idx = np.logical_and(0.2 < r, r <= rim) outer_idx = np.logical_and(rim < r, r <= 1.5) - inner_poly = Polynomial( - [-0.228809953, 0.227533882, 0.083116795, -0.039499407] - ) - outer_poly = Polynomial( - [0.188253307, -0.187050452, 0.01844746, 0.01505647] - ) + inner_poly = Polynomial([-0.228809953, 0.227533882, 0.083116795, -0.039499407]) + outer_poly = Polynomial([0.188253307, -0.187050452, 0.01844746, 0.01505647]) out_arr[flat_idx] = self.diameter * -0.181 out_arr[inner_idx] = self.diameter * inner_poly(r[inner_idx]) @@ -134,11 +127,7 @@ class FTmod_Crater(Crater): thus shallower, thus larger (relative) flat floors. """ - def __init__( - self, - diameter, - depth=None - ): + def __init__(self, diameter, depth=None): super().__init__(diameter) if depth is None: self.depth = stopar_fresh_dd(self.diameter) * self.diameter @@ -147,10 +136,10 @@ def __init__( def profile(self, r): """Returns a numpy array of elevation values based in the input numpy - array of radius fraction values, such that a radius fraction value - of 1 is at the rim, less than that interior to the crater, etc. + array of radius fraction values, such that a radius fraction value + of 1 is at the rim, less than that interior to the crater, etc. - A ValueError will be thrown if any values in r are < 0. + A ValueError will be thrown if any values in r are < 0. """ if not isinstance(r, np.ndarray): @@ -159,20 +148,14 @@ def profile(self, r): out_arr = np.zeros_like(r) if np.any(r < 0): - raise ValueError( - "The radius fraction value can't be less than zero." - ) + raise ValueError("The radius fraction value can't be less than zero.") inner_idx = np.logical_and(0 <= r, r <= 0.98) rim_idx = np.logical_and(0.98 < r, r <= 1.02) outer_idx = np.logical_and(1.02 < r, r <= 1.5) - inner_poly = Polynomial( - [-0.228809953, 0.227533882, 0.083116795, -0.039499407] - ) - outer_poly = Polynomial( - [0.188253307, -0.187050452, 0.01844746, 0.01505647] - ) + inner_poly = Polynomial([-0.228809953, 0.227533882, 0.083116795, -0.039499407]) + outer_poly = Polynomial([0.188253307, -0.187050452, 0.01844746, 0.01505647]) rim_hoverd = 0.036822095 @@ -188,14 +171,14 @@ def profile(self, r): class MPD_Crater(Crater): """A crater whose profile is defined by functions described in - Martin, Parkes, and Dunstan (2014, - https:doi.org/10.1109/TAES.2014.120282). The published equations - for beta and h3 result in non-realistic profiles. For this class, - the definition of beta has been adjusted so that it is a positive value - (which we think was intended). We have also replaced the published - function for h3, with a cubic that actually matches up with h2 and h4, - although the matching with h4 is imperfect, so there is likely a better - representation for h3. + Martin, Parkes, and Dunstan (2014, + https:doi.org/10.1109/TAES.2014.120282). The published equations + for beta and h3 result in non-realistic profiles. For this class, + the definition of beta has been adjusted so that it is a positive value + (which we think was intended). We have also replaced the published + function for h3, with a cubic that actually matches up with h2 and h4, + although the matching with h4 is imperfect, so there is likely a better + representation for h3. """ def __init__( @@ -205,7 +188,7 @@ def __init__( rim_height=None, emin=0, # height of the ejecta at x = D/2 pre_rim_elevation=0, - plane_elevation=0 + plane_elevation=0, ): self.h0 = self.height_naught(diameter) self.hr0 = self.height_r_naught(diameter) @@ -246,20 +229,23 @@ def profile_x(self, x: float): return self.h1(x, self.hr, self.h, self.hr0) elif alpha <= x <= 0: - return self.h2( - x, self.hr, self.h, self.hr0, alpha, self.tr, self.pr - ) + return self.h2(x, self.hr, self.h, self.hr0, alpha, self.tr, self.pr) elif 0 <= x <= beta: # return self.h3( return self.h3_alt( - self.diameter, self.emin, - x, self.hr, self.h, self.hr0, alpha, beta, - self.tr, self.pr + self.diameter, + self.emin, + x, + self.hr, + self.h, + self.hr0, + alpha, + beta, + self.tr, + self.pr, ) elif beta <= x: - return self.h4( - x, self.diameter, self.fc(x, self.emin, self.tr, self.pr) - ) + return self.h4(x, self.diameter, self.fc(x, self.emin, self.tr, self.pr)) else: # Really should not be able to get here. @@ -279,16 +265,13 @@ def height_r_naught(diameter: float): @staticmethod def h1(x: float, hr: float, h: float, hr_naught: float): """Eqn 4 in Martin, Parkes, and Dunstan.""" - h_ = (hr_naught - hr + h) + h_ = hr_naught - hr + h return (h_ * math.pow(x, 2)) + (2 * h_ * x) + hr_naught @staticmethod - def h2( - x: float, hr: float, h: float, hr_naught: float, alpha: float, - tr=0, pr=0 - ): + def h2(x: float, hr: float, h: float, hr_naught: float, alpha: float, tr=0, pr=0): """Eqn 5 in Martin, Parkes, and Dunstan.""" - h_ = (hr_naught - hr + h) + h_ = hr_naught - hr + h return ((h_ * (alpha + 1)) / alpha) * math.pow(x, 2) + hr + tr - pr @staticmethod @@ -299,20 +282,33 @@ def alpha(hr: float, h: float, hr_naught: float, tr=0, pr=0): @staticmethod def h3( - x: float, hr: float, h: float, hr_naught: float, - alpha: float, beta: float, tr=0, pr=0 + x: float, + hr: float, + h: float, + hr_naught: float, + alpha: float, + beta: float, + tr=0, + pr=0, ): """Eqn 7 in Martin, Parkes, and Dunstan.""" - h_ = (hr_naught - hr + h) + h_ = hr_naught - hr + h t1 = -1 * ((2 * h_) / (3 * math.pow(beta, 2))) * math.pow(x, 3) t2 = (h_ + ((2 * h_) / beta)) * math.pow(x, 2) return t1 + t2 + hr + tr - pr @staticmethod def h3_alt( - diameter, emin, - x: float, hr: float, h: float, hr_naught: float, - alpha: float, beta: float, tr=0, pr=0 + diameter, + emin, + x: float, + hr: float, + h: float, + hr_naught: float, + alpha: float, + beta: float, + tr=0, + pr=0, ): """Improved cubic form.""" # ax^3 + bx ^ 2 + cx + d = elevation @@ -321,9 +317,7 @@ def h3_alt( # implies that c = 0. # The inflection point should be where this function meets up # with h4, so that means that the inflection point is at x = beta - h4_at_beta = MPD_Crater.h4( - beta, diameter, MPD_Crater.fc(beta, emin, tr, pr) - ) + h4_at_beta = MPD_Crater.h4(beta, diameter, MPD_Crater.fc(beta, emin, tr, pr)) a = (hr - h4_at_beta) / (2 * math.pow(beta, 3)) b = -3 * a * beta cubic = Polynomial([hr, 0, b, a]) @@ -332,7 +326,7 @@ def h3_alt( @staticmethod def beta(hr: float, h: float, hr_naught: float, tr=0, pr=0): """Eqn 8 in Martin, Parkes, and Dunstan.""" - h_ = (hr_naught - hr + h) + h_ = hr_naught - hr + h # This changes the order of hr_naught and hr from the # paper, as this ensures that this term will be positive. return (3 * (hr_naught - hr + tr - pr)) / (2 * h_) diff --git a/src/python/synthterrain/rock/__init__.py b/src/python/synthterrain/rock/__init__.py index 6a7cc83..8c70607 100644 --- a/src/python/synthterrain/rock/__init__.py +++ b/src/python/synthterrain/rock/__init__.py @@ -346,7 +346,6 @@ def plot(df, pmap=None, extent=None): def to_file(df: pd.DataFrame, outfile: Path, xml=False): - if xml: # Write out the dataframe in the XML style of the old MATLAB # program. diff --git a/src/python/synthterrain/util.py b/src/python/synthterrain/util.py index af7c322..bf41df6 100644 --- a/src/python/synthterrain/util.py +++ b/src/python/synthterrain/util.py @@ -17,8 +17,8 @@ class FileArgumentParser(argparse.ArgumentParser): """This argument parser sets the fromfile_prefix_chars to the - at-symbol (@), treats lines that begin with the octothorpe (#) - as comments, and allows multiple argument elements per line. + at-symbol (@), treats lines that begin with the octothorpe (#) + as comments, and allows multiple argument elements per line. """ def __init__(self, *args, **kwargs): @@ -50,12 +50,12 @@ def convert_arg_line_to_args(self, arg_line): class PrintDictAction(argparse.Action): """A custom action that interrupts argument processing, prints - the contents of the *dict* argument, and then exits the - program. + the contents of the *dict* argument, and then exits the + program. - It may need to be placed in a mutually exclusive argument - group (see argparse documentation) with any required arguments - that your program should have. + It may need to be placed in a mutually exclusive argument + group (see argparse documentation) with any required arguments + that your program should have. """ def __init__(self, *args, dict=None, **kwargs): @@ -82,13 +82,13 @@ def parent_parser() -> argparse.ArgumentParser: "--verbose", action="count", default=0, - help="Displays additional information." + help="Displays additional information.", ) parent.add_argument( - '--version', - action='version', + "--version", + action="version", version=f"synthterrain Software version {synthterrain.__version__}", - help="Show library version number." + help="Show library version number.", ) return parent diff --git a/tests/python/crater/test_age.py b/tests/python/crater/test_age.py index 63436b3..b3570e6 100644 --- a/tests/python/crater/test_age.py +++ b/tests/python/crater/test_age.py @@ -15,7 +15,6 @@ class Test_Ages(unittest.TestCase): - def test_equilibrium_age(self): diameters = np.array([1, 2, 3, 4, 5, 10, 20, 50, 100]) a = 1 @@ -24,11 +23,22 @@ def test_equilibrium_age(self): eq_func = fns.VIPER_Env_Spec(a=a, b=b) eq_ages = age.equilibrium_age(diameters, pd_func.csfd, eq_func.csfd) - np.testing.assert_allclose(eq_ages, np.array([ - 1.35931206e+06, 6.91870352e+06, 2.21362552e+07, 2.89919160e+07, - 3.57407099e+07, 6.55084979e+07, 1.38188561e+08, 4.22354647e+08, - 7.26330624e+08 - ])) + np.testing.assert_allclose( + eq_ages, + np.array( + [ + 1.35931206e06, + 6.91870352e06, + 2.21362552e07, + 2.89919160e07, + 3.57407099e07, + 6.55084979e07, + 1.38188561e08, + 4.22354647e08, + 7.26330624e08, + ] + ), + ) def test_estimate_age(self): a = age.estimate_age(10, 0.09, 5e7) @@ -38,15 +48,49 @@ def test_estimate_age_by_bin(self): pd_func = fns.GNPF(a=1, b=1000) eq_func = fns.VIPER_Env_Spec(a=1, b=1000) - df = pd.DataFrame(data={ - 'diameter': [ - 1., 1., 2., 2., 3., 3., 4., 4., 5., 5., 10., 10., - 20., 20., 50., 50., 100., 100. - ], - 'd/D': [ - 0.05, 0.1, 0.05, 0.1, 0.05, 0.1, 0.05, 0.1, 0.05, 0.1, 0.05, 0.1, - 0.05, 0.1, 0.05, 0.12, 0.05, 0.13 - ]} + df = pd.DataFrame( + data={ + "diameter": [ + 1.0, + 1.0, + 2.0, + 2.0, + 3.0, + 3.0, + 4.0, + 4.0, + 5.0, + 5.0, + 10.0, + 10.0, + 20.0, + 20.0, + 50.0, + 50.0, + 100.0, + 100.0, + ], + "d/D": [ + 0.05, + 0.1, + 0.05, + 0.1, + 0.05, + 0.1, + 0.05, + 0.1, + 0.05, + 0.1, + 0.05, + 0.1, + 0.05, + 0.1, + 0.05, + 0.12, + 0.05, + 0.13, + ], + } ) df_out = age.estimate_age_by_bin( df, @@ -55,17 +99,38 @@ def test_estimate_age_by_bin(self): eq_func.csfd, ) - age_series = pd.Series([ - 2000000, 0, 6000000, 0, 12000000, 0, 25000000, 0, 36000000, 0, 63000000, 0, - 138000000, 12000000, 424000000, 68000000, 702000000, 8000000 - ], name="age") + age_series = pd.Series( + [ + 2000000, + 0, + 6000000, + 0, + 12000000, + 0, + 25000000, + 0, + 36000000, + 0, + 63000000, + 0, + 138000000, + 12000000, + 424000000, + 68000000, + 702000000, + 8000000, + ], + name="age", + ) pd.testing.assert_series_equal(age_series, df_out["age"]) - df2 = pd.DataFrame(data={ - 'diameter': [100., 100., 100., 100.], - 'd/D': [0.01, 0.06, 0.10, 0.17] - }) + df2 = pd.DataFrame( + data={ + "diameter": [100.0, 100.0, 100.0, 100.0], + "d/D": [0.01, 0.06, 0.10, 0.17], + } + ) df2_out = age.estimate_age_by_bin( df2, @@ -74,4 +139,4 @@ def test_estimate_age_by_bin(self): age2_series = pd.Series([4500000000, 4500000000, 1388000000, 0], name="age") - pd.testing.assert_series_equal(age2_series, df2_out["age"]) \ No newline at end of file + pd.testing.assert_series_equal(age2_series, df2_out["age"]) diff --git a/tests/python/crater/test_functions.py b/tests/python/crater/test_functions.py index f7b9522..2409346 100644 --- a/tests/python/crater/test_functions.py +++ b/tests/python/crater/test_functions.py @@ -16,12 +16,10 @@ class Test_Crater_rv_continuous(unittest.TestCase): - def test_abstract(self): self.assertRaises(TypeError, fns.Crater_rv_continuous) class Test_Dist(fns.Crater_rv_continuous): - def csfd(self, d): return np.power(d, -2.0) @@ -35,10 +33,27 @@ def csfd(self, d): def test_VIPER_Env_Spec(self): rv = fns.VIPER_Env_Spec(a=1, b=100) self.assertAlmostEqual(rv.csfd(10), 0.0003507) - np.testing.assert_allclose(rv._cdf(np.array([10,])), np.array([0.98797736])) + np.testing.assert_allclose( + rv._cdf( + np.array( + [ + 10, + ] + ) + ), + np.array([0.98797736]), + ) np.testing.assert_allclose( - rv._ppf(np.array([0.5, 0.99,])), np.array([1.43478377, 11.00694171]) + rv._ppf( + np.array( + [ + 0.5, + 0.99, + ] + ) + ), + np.array([1.43478377, 11.00694171]), ) def test_Trask(self): @@ -48,13 +63,41 @@ def test_Trask(self): def test_Coef_Distribution(self): self.assertRaises(ValueError, fns.Coef_Distribution, a=10, b=300000) - rv = fns.Coef_Distribution(a=10, b=300000, poly=Polynomial( - [ - -3.0768, -3.557528, 0.781027, 1.021521, -0.156012, -0.444058, - 0.019977, 0.086850, -0.005874, -0.006809, 8.25e-04, 5.54e-05 - ])) + rv = fns.Coef_Distribution( + a=10, + b=300000, + poly=Polynomial( + [ + -3.0768, + -3.557528, + 0.781027, + 1.021521, + -0.156012, + -0.444058, + 0.019977, + 0.086850, + -0.005874, + -0.006809, + 8.25e-04, + 5.54e-05, + ] + ), + ) self.assertEqual(rv.csfd(10), 0.003796582136635746) - self.assertEqual(rv._cdf(np.array([10, ])), np.array([0,])) + self.assertEqual( + rv._cdf( + np.array( + [ + 10, + ] + ) + ), + np.array( + [ + 0, + ] + ), + ) def test_NPF(self): self.assertRaises(ValueError, fns.NPF, a=10, b=300001) diff --git a/tests/python/crater/test_init.py b/tests/python/crater/test_init.py index 89b30a6..33c1a40 100644 --- a/tests/python/crater/test_init.py +++ b/tests/python/crater/test_init.py @@ -9,14 +9,13 @@ import unittest -from shapely.geometry import Point, Polygon +from shapely.geometry import Polygon import synthterrain.crater as cr import synthterrain.crater.functions as fns class Test_Init(unittest.TestCase): - def test_generate_diameters(self): min_d = 10 max_d = 11 @@ -31,8 +30,6 @@ def test_generate_diameters(self): self.assertEqual(0, d[d > max_d].size) def test_random_points(self): - poly = Polygon(((0, 0), (1, 0), (0, 1), (0, 0))) xs, ys = cr.random_points(poly, 5) - diff --git a/tests/python/test_util.py b/tests/python/test_util.py index 5ea1c71..782ba36 100644 --- a/tests/python/test_util.py +++ b/tests/python/test_util.py @@ -17,7 +17,6 @@ class TestUtil(unittest.TestCase): - def test_FileArgumentParser(self): p = util.FileArgumentParser() @@ -41,12 +40,7 @@ def test_PrintDictAction(self, m_print, m_exit): a("dummy", "dummy", "dummy") self.assertEqual( m_print.call_args_list, - [ - call("a"), - call(" a value"), - call("b"), - call(" b value") - ] + [call("a"), call(" a value"), call("b"), call(" b value")], ) m_exit.assert_called_once() From 443d2ec6a3ff6b52a9b36fa3c9f35e8fe4794b5b Mon Sep 17 00:00:00 2001 From: Ross Beyer Date: Wed, 26 Jun 2024 20:08:04 -0700 Subject: [PATCH 04/21] feat(functions.py): Minor change to constants in NPF(). --- src/python/synthterrain/crater/functions.py | 33 ++++++++++----------- tests/python/crater/test_age.py | 21 ++++++------- tests/python/crater/test_functions.py | 4 +-- 3 files changed, 29 insertions(+), 29 deletions(-) diff --git a/src/python/synthterrain/crater/functions.py b/src/python/synthterrain/crater/functions.py index b4e47c5..2bbc87d 100644 --- a/src/python/synthterrain/crater/functions.py +++ b/src/python/synthterrain/crater/functions.py @@ -4,14 +4,14 @@ crater size-frequency distributions as probability distributions. """ -# Copyright 2022, United States Government as represented by the +# Copyright 2022-2024, United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All rights reserved. -from abc import ABC, abstractmethod import copy import logging import math +from abc import ABC, abstractmethod from numbers import Number import numpy as np @@ -67,11 +67,11 @@ class Crater_rv_continuous(ABC, rv_continuous): def __init__(self, a, **kwargs): if a <= 0: raise ValueError( - "The lower bound of the support of the distribution, a, must " "be > 0." + "The lower bound of the support of the distribution, a, must be > 0." ) - else: - kwargs["a"] = a - super().__init__(**kwargs) + + kwargs["a"] = a + super().__init__(**kwargs) @abstractmethod def csfd(self, d): @@ -217,8 +217,8 @@ def csfd(self, d): out = c / (1000 * 1000) if isinstance(d, Number): return out.item() - else: - return out + + return out # See comment on commented out parent isfd() function. # def isfd(self, d): @@ -478,7 +478,8 @@ def __init__(self, a, b, **kwargs): kwargs["b"] = b super().__init__( coef=[ - -3.0768, + -3.076756, + # -3.0768, -3.557528, 0.781027, 1.021521, @@ -799,8 +800,8 @@ def csfd(self, d): if isinstance(d, Number): return c.item() - else: - return c + + return c # def isfd(self, d): # if isinstance(d, Number): @@ -846,8 +847,8 @@ def _cdf(self, d): if isinstance(d, Number): return c.item() - else: - return c + + return c class GNPF(NPF): @@ -889,8 +890,6 @@ def __init__(self, a, b, **kwargs): grun_kwargs["csfds"] = fluxes self.grun = Interp_Distribution(**grun_kwargs) - return - def csfd(self, d): if isinstance(d, Number): # Convert to numpy array, if needed. @@ -908,8 +907,8 @@ def csfd(self, d): if isinstance(d, Number): return c.item() - else: - return c + + return c def _cdf(self, d): if isinstance(d, Number): diff --git a/tests/python/crater/test_age.py b/tests/python/crater/test_age.py index b3570e6..0aaa1a3 100644 --- a/tests/python/crater/test_age.py +++ b/tests/python/crater/test_age.py @@ -1,7 +1,7 @@ #!/usr/bin/env python """This module has tests for the synthterrain crater age functions.""" -# Copyright 2023, United States Government as represented by the +# Copyright 2023-2024, United States Government as represented by the # Administrator of the National Aeronautics and Space Administration. # All rights reserved. @@ -27,17 +27,18 @@ def test_equilibrium_age(self): eq_ages, np.array( [ - 1.35931206e06, - 6.91870352e06, - 2.21362552e07, - 2.89919160e07, - 3.57407099e07, - 6.55084979e07, - 1.38188561e08, - 4.22354647e08, - 7.26330624e08, + 1.359312e06, + 6.918704e06, + 2.213654e07, + 2.899164e07, + 3.573974e07, + 6.550186e07, + 1.381746e08, + 4.223119e08, + 7.262570e08, ] ), + rtol=1e-6, ) def test_estimate_age(self): diff --git a/tests/python/crater/test_functions.py b/tests/python/crater/test_functions.py index 2409346..e6201b7 100644 --- a/tests/python/crater/test_functions.py +++ b/tests/python/crater/test_functions.py @@ -1,7 +1,7 @@ #!/usr/bin/env python """This module has tests for the synthterrain crater distribution functions.""" -# Copyright 2022, synthterrain developers. +# Copyright 2022-2024, synthterrain developers. # # Reuse is permitted under the terms of the license. # The AUTHORS file and the LICENSE file are at the @@ -103,4 +103,4 @@ def test_NPF(self): self.assertRaises(ValueError, fns.NPF, a=10, b=300001) self.assertRaises(ValueError, fns.NPF, a=9, b=300) rv = fns.NPF(a=10, b=300000) - self.assertEqual(rv.csfd(10), 0.003796582136635746) + self.assertEqual(rv.csfd(10), 0.0037969668020723783) From 773a8dd4070c43108f0cf86fbe6d1e3a8e7f2a78 Mon Sep 17 00:00:00 2001 From: Ross Beyer Date: Wed, 26 Jun 2024 22:43:18 -0700 Subject: [PATCH 05/21] build(pyproject.toml, setup.py, setup.cfg): Overhauled these files to eliminate setup.py, and to consolidate material into pyproject.toml. --- pyproject.toml | 70 +++++++++++++++++++++++++++++++++++++++++++++++--- setup.cfg | 64 ++------------------------------------------- setup.py | 48 ---------------------------------- 3 files changed, 68 insertions(+), 114 deletions(-) delete mode 100644 setup.py diff --git a/pyproject.toml b/pyproject.toml index 374b58c..4f74e52 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,68 @@ [build-system] -requires = [ - "setuptools>=42", - "wheel" -] +requires = ["setuptools >= 61.0"] build-backend = "setuptools.build_meta" + +[project] +name = "synthterrain" +version = "0.1.0" +# dynamic = ["version", "dependencies"] +dynamic = ["dependencies"] +description = "The synthterrain package is software to support the creation of synthetic terrain in the solar system." +maintainers = [ + {name = "Ross Beyer", email = "Ross.A.Beyer@nasa.gov"} +] +readme = "README.rst" +requires-python = ">=3.8" + +classifiers = [ + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Intended Audience :: Science/Research", + "License :: OSI Approved :: Apache Software License", + "Development Status :: 2 - Pre-Alpha", + "Natural Language :: English", +] + +[project.scripts] +synthcraters = "synthterrain.crater.cli:main" +synthrocks = "synthterrain.rock.cli:main" +synthterrain = "synthterrain.cli:main" +synthcraterplot = "synthterrain.crater.cli_plot:main" +synthcraterconvert = "synthterrain.crater.cli_convert:main" + +[project.urls] +Repository = "https://github.com/NeoGeographyToolkit/synthterrain" + +[tools.setup.dynamic] +# version = {attr = "synthterrain.__version__"} +dependencies = {file = ["requirements.txt"]} + +[tool.setuptools] +package-dir = {"" = "src/python"} + +[tool.bumpversion] +current_version = "0.1.0" +parse = "(?P\\d+)\\.(?P\\d+)\\.(?P\\d+)(?:-(?P[a-z]+))?" +serialize = ["{major}.{minor}.{patch}-{release}", "{major}.{minor}.{patch}"] +search = "{current_version}" +replace = "{new_version}" +regex = false +ignore_missing_version = false +ignore_missing_files = false +tag = false +sign_tags = false +tag_name = "v{new_version}" +tag_message = "Bump version: {current_version} → {new_version}" +allow_dirty = false +commit = false +message = "Bump version: {current_version} → {new_version}" +commit_args = "" + +[tool.bumpversion.parts.release] +values = ["dev", "released"] +optional_value = "released" + +[[tool.bumpversion.files]] +filename = "src/python/synthterrain/__init__.py" +search = "__version__ = {current_version}" +replace = "__version__ = {new_version}" diff --git a/setup.cfg b/setup.cfg index d66b532..fd9ce8f 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,64 +1,4 @@ -[bumpversion] -current_version = 0.1.0 -commit = True -tag = False -parse = (?P\d+)\.(?P\d+)\.(?P\d+)(\-(?P[a-z]+))? -serialize = - {major}.{minor}.{patch}-{release} - {major}.{minor}.{patch} - -[bumpversion:part:release] -optional_value = production -values = - dev - production - -[bumpversion:file:setup.py] -search = version="{current_version}" -replace = version="{new_version}" - -[bumpversion:file:src/vipersci/__init__.py] -search = __version__ = "{current_version}" -replace = __version__ = "{new_version}" - -[metadata] -name = synthterrain -version = attr:synthterrain.__version__ -author = attr:synthterrain.__version__ -author_email = rbeyer@seti.org -description = The synthterrain package is software to support the creation of synthetic terrain in the solar system. -long_description = file: README.rst, CHANGELOG.rst -url = https://github.com/NeoGeographyToolkit/synthterrain -classifiers = - Programming Language :: Python :: 3.7 - Programming Language :: Python :: 3.8 - Programming Language :: Python :: 3.9 - License :: OSI Approved :: BSD License - Operating System :: OS Independent - Development Status :: 2 - Pre-Alpha - Natural Language :: English - -[options] -include_package_data = True -package_dir = src/python -packages = find: -# python_requires = >=3.7 - -[bdist_wheel] -universal = 1 - [flake8] exclude = docs - -[aliases] -# Define setup.py command aliases here -test = pytest - -[tool:pytest] -addopts = --ignore=setup.py - -[develop] -script_dir=$base/lib/synthterrain - -[install] -install_scripts=$base/lib/synthterrain \ No newline at end of file +max_line_length = 88 +ignore = E203,E701 diff --git a/setup.py b/setup.py deleted file mode 100644 index 104325e..0000000 --- a/setup.py +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env python - -"""The setup script.""" - -from setuptools import setup, find_packages - -package_name = 'synthterrain' -author = 'Ross Beyer' -author_email = 'ross.a.beyer@nasa.gov' - -requirements = [ - "setuptools" -] - -setup( - name=package_name, - version='0.1.0', - author=author, - author_email=author_email, - maintainer=author, - maintainer_email=author_email, - entry_points={ - 'console_scripts': [ - 'synthcraters=synthterrain.crater.cli:main', - 'synthrocks=synthterrain.rock.cli:main', - 'synthterrain=synthterrain.cli:main', - 'craterplot=synthterrain.crater.cli_plot:main', - 'craterconvert=synthterrain.crater.cli_convert:main', - ], - }, - data_files=[ - ('share/ament_index/resource_index/packages', - ['resource/' + package_name]), - ('share/' + package_name, ['package.xml']), - ], - install_requires=requirements, - include_package_data=True, - # package_data={ - # "vipersci": ["data/*"], - # }, - packages=find_packages( - where="src/python", - ), - test_suite="tests/python", - zip_safe=False, - package_dir={"": "src/python"}, - tests_require=["pytest"], -) From 77c49a2bf13f948b9a3f01722f546aecc5a2a844 Mon Sep 17 00:00:00 2001 From: Ross Beyer Date: Wed, 26 Jun 2024 22:44:31 -0700 Subject: [PATCH 06/21] build(Makefile): Updated the dist and install targets and added a develop target. --- Makefile | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index ad86828..e9260d1 100644 --- a/Makefile +++ b/Makefile @@ -91,9 +91,11 @@ release: dist ## package and upload a release twine upload dist/* dist: clean ## builds source and wheel package - python setup.py sdist - python setup.py bdist_wheel + python -m build ls -l dist +develop: clean ## install the package in an editable format for development + pip install --no-deps -e . + install: clean ## install the package to the active Python's site-packages - python setup.py install + pip install From 47dbdba90b6a1a70a33add8d1b045a0d6028bbd4 Mon Sep 17 00:00:00 2001 From: Ross Beyer Date: Wed, 26 Jun 2024 22:59:49 -0700 Subject: [PATCH 07/21] docs(README.rst & LICENSE): Updated license for NASA Open Source release. --- LICENSE | 207 +++++++++++++++++++++++++++++++++++++++++++++++++++-- README.rst | 37 +++++++++- 2 files changed, 236 insertions(+), 8 deletions(-) diff --git a/LICENSE b/LICENSE index 0508b75..d645695 100644 --- a/LICENSE +++ b/LICENSE @@ -1,7 +1,202 @@ -This package is currently in development and is copyright (C) 2022 -by the authors and the United States Government as represented by -the Administrator of the National Aeronautics and Space Administration. -All rights reserved. -We anticipate release under an open source license when this software -reaches its 1.0 milestone. + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.rst b/README.rst index abbd168..d0dab1a 100644 --- a/README.rst +++ b/README.rst @@ -33,10 +33,10 @@ can be found by running any program with a ``-h`` flag. ``synthrocks``. Also allows a set of pre-existing craters to be added to the probabiliy maps that ``synthrocks`` uses to place rocks. -``craterconvert`` +``synthcraterconvert`` Converts between the current crater CSV and old XML MATLAB formats. -``craterplot`` +``synthcraterplot`` Generates a set of plots from the CSV output of ``synthcraters``. @@ -63,6 +63,11 @@ And then you could call ``synthterrain`` like this:: You can mix regular arguments and ampersand-arguments if you wish. +Installation +------------ +TBD. + + Contributing ------------ @@ -71,3 +76,31 @@ contributing guide for details on how to help and setup a development environment. +Credits +------- + +synthterrain was developed in the open at NASA's Ames Research Center. + +See the `AUTHORS ` +file for a complete list of developers. + + +License +------- +Copyright © 2024, United States Government, as represented by the +Administrator of the National Aeronautics and Space Administration. +All rights reserved. + +The "synthterrain" software is licensed under the Apache License, +Version 2.0 (the "License"); you may not use this file except in +compliance with the License. You may obtain a copy of the License +at http://www.apache.org/licenses/LICENSE-2.0. + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +implied. See the License for the specific language governing +permissions and limitations under the License. + + + From e8543f0f93212187d2fafab9b34cc47b7ababc76 Mon Sep 17 00:00:00 2001 From: Ross Beyer Date: Fri, 28 Jun 2024 15:50:05 -0700 Subject: [PATCH 08/21] docs(THIRDPARTYLICENSES.rst): Added to repo. --- THIRDPARTYLICENSES.rst | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 THIRDPARTYLICENSES.rst diff --git a/THIRDPARTYLICENSES.rst b/THIRDPARTYLICENSES.rst new file mode 100644 index 0000000..375c6ae --- /dev/null +++ b/THIRDPARTYLICENSES.rst @@ -0,0 +1,16 @@ +The synthterrain module would not be possible with out the +use of third party software that is also open source. The following +software is used by synthterrain when run on your system, but is not distributed +with it: + +======================== ============== ===== + Title License URL +======================== ============== ===== +matplotlib custom https://matplotlib.org/stable/users/project/license.html +numpy BSD-3-Clause https://github.com/numpy/numpy/blob/main/LICENSE.txt +opensimplex MIT https://github.com/lmas/opensimplex/blob/master/LICENSE +pandas BSD-3-Clause https://github.com/pandas-dev/pandas/blob/main/LICENSE +rasterio BSD-3-Clause https://github.com/rasterio/rasterio/blob/main/LICENSE.txt +scipy BSD-3-Clause https://github.com/scipy/scipy/blob/main/LICENSE.txt +shapely BSD-3-Clause https://github.com/shapely/shapely/blob/main/LICENSE.txt +======================== ============== ===== From d8a3c119235ad089f1e8320f40017bd6376312a1 Mon Sep 17 00:00:00 2001 From: Ross Beyer Date: Fri, 28 Jun 2024 15:56:44 -0700 Subject: [PATCH 09/21] build(environment.yml): Added the opensimplex, which is only installable via pip. --- environment.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/environment.yml b/environment.yml index 867d311..ebcc101 100644 --- a/environment.yml +++ b/environment.yml @@ -16,3 +16,6 @@ dependencies: - scikit-image - scipy - shapely + - pip + - pip: + - opensimplex From 7678937a866cafe0639bbbf96f5b3581fac65cb1 Mon Sep 17 00:00:00 2001 From: Ross Beyer Date: Fri, 28 Jun 2024 16:02:08 -0700 Subject: [PATCH 10/21] build(environment_dev.yml and requirements_dev.txt): Updated and synchronized. --- environment_dev.yml | 8 +++++--- requirements_dev.txt | 20 ++++++++------------ 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/environment_dev.yml b/environment_dev.yml index 622f3ca..fc4865f 100644 --- a/environment_dev.yml +++ b/environment_dev.yml @@ -4,9 +4,9 @@ channels: - defaults dependencies: - black - - bump2version - - cookiecutter + - bump-my-version - flake8 + - icecream - ipympl - jupyterlab - pytest @@ -15,5 +15,7 @@ dependencies: - sphinxcontrib - sphinxcontrib-apidoc - sphinxcontrib-autoprogram - - tox - twine + - pip + - pip: + - ufmt diff --git a/requirements_dev.txt b/requirements_dev.txt index fa71688..360ed0d 100644 --- a/requirements_dev.txt +++ b/requirements_dev.txt @@ -1,13 +1,9 @@ black -pip==19.2.3 -bump2version==0.5.11 -wheel==0.33.6 -watchdog==0.9.0 -flake8==3.7.8 -tox==3.14.0 -coverage==4.5.4 -Sphinx==1.8.5 -twine==1.14.0 - -pytest==4.6.5 - +coverage +pip +bump-my-version +flake8 +pytest +Sphinx +twine +ufmt From bd3c1d76036e12c7c9e8aa378a6c93fcef5772e7 Mon Sep 17 00:00:00 2001 From: Ross Beyer Date: Fri, 28 Jun 2024 16:10:04 -0700 Subject: [PATCH 11/21] docs(CONTRIBUTING and CLAs): Updated CONTRIBUTING and added the CLAs. --- CONTRIBUTING.rst | 114 ++++++++++++++++-- ...synthterrain_ARC-18971-1_Corporate_CLA.pdf | Bin 0 -> 231500 bytes ...ynthterrain_ARC-18971-1_Individual_CLA.pdf | Bin 0 -> 240115 bytes 3 files changed, 102 insertions(+), 12 deletions(-) create mode 100644 docs/synthterrain_ARC-18971-1_Corporate_CLA.pdf create mode 100644 docs/synthterrain_ARC-18971-1_Individual_CLA.pdf diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index 0a21438..dc111b3 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -111,17 +111,107 @@ Before you submit a pull request, check that it meets these guidelines: 2. If the pull request adds functionality, the docs should be updated. Put your new functionality into a function with a docstring, and add the feature to the list in CHANGELOG.rst. -3. The pull request should work for Python 3.7, 3.8, and 3.9 and optionally for PyPy. +3. The pull request should work for Python 3.8, 3.9, 3.10, 3.11 and optionally for PyPy. And make sure that the tests pass for all supported Python versions. - -Deploying ---------- - -A reminder for the maintainers on how to deploy. -Make sure all your changes are committed (including an entry in HISTORY.rst). -Then run:: - -$ bump2version patch # possible: major / minor / patch -$ git push -$ git push --tags +What to expect +-------------- + +Our development of synthterrain is not particularly continuous, +and it is entirely possible that when you submit a PR +(pull request), none of us will have the time to evaluate or integrate +your PR. If we don't, we'll try and communicate that with you via the +PR. + +For large contributions, it is likely that you, or your employer, +will be retaining your copyrights, but releasing the contributions +via an open-source license. It must be compatible with the Apache-2 +license that synthterrain is distributed with, so that we can redistribute +that contribution with synthterrain, give you credit, and make synthterrain even +better! Please contact us if you have a contribution of that nature, +so we can be sure to get all of the details right. + +For smaller contributions, where you (or your employer) are not +concerned about retaining copyright (but we will give you credit!), +you will need to fill out a Contributor License Agreement (CLA) +before we can accept your PR. The CLA assigns your copyright in +your contribution to NASA, so that our NASA copyright statement +remains true: + + Copyright (c) YEAR, United States Government as represented by the + Administrator of the National Aeronautics and Space Administration. + All rights reserved. + +There is an `Individual CLA +`_ and a +`Corporate CLA +`_. + +synthterrain People +------------------- + +- A synthterrain **Contributor** is any individual creating or commenting + on an issue or pull request. Anyone who has authored a PR that was + merged should be listed in the AUTHORS.rst file. + +- A synthterrain **Committer** is a subset of contributors, typically NASA + employees or contractors, who have been given write access to the + repository. + +Rules for Merging Pull Requests +------------------------------- + +Any change to resources in this repository must be through pull +requests (PRs). This applies to all changes to documentation, code, +binary files, etc. Even long term committers must use pull requests. + +In general, the submitter of a PR is responsible for making changes +to the PR. Any changes to the PR can be suggested by others in the +PR thread (or via PRs to the PR), but changes to the primary PR +should be made by the PR author (unless they indicate otherwise in +their comments). In order to merge a PR, it must satisfy these conditions: + +1. Have been open for 24 hours. +2. Have one approval. +3. If the PR has been open for 2 days without approval or comment, then it + may be merged without any approvals. + +Pull requests should sit for at least 24 hours to ensure that +contributors in other timezones have time to review. Consideration +should also be given to weekends and other holiday periods to ensure +active committers all have reasonable time to become involved in +the discussion and review process if they wish. + +In order to encourage involvement and review, we encourage at least +one explicit approval from committers that are not the PR author. + +However, in order to keep development moving along with our low number of +active contributors, if a PR has been open for 2 days without comment, then +it could be committed without an approval. + +The default for each contribution is that it is accepted once no +committer has an objection, and the above requirements are +satisfied. + +In the case of an objection being raised in a pull request by another +committer, all involved committers should seek to arrive at a +consensus by way of addressing concerns being expressed by discussion, +compromise on the proposed change, or withdrawal of the proposed +change. + +Exceptions to the above are minor typo fixes or cosmetic changes +that don't alter the meaning of a document. Those edits can be made +via a PR and the requirement for being open 24 h is waived in this +case. + + +.. Deploying + --------- + + A reminder for the maintainers on how to deploy. + Make sure all your changes are committed (including an entry in CHANGELOG.rst). + Then run:: + + $ bump2version patch # possible: major / minor / patch + $ git push + $ git push --tags diff --git a/docs/synthterrain_ARC-18971-1_Corporate_CLA.pdf b/docs/synthterrain_ARC-18971-1_Corporate_CLA.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c221f0b453d270aebb8defe5dc5617e943215086 GIT binary patch literal 231500 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

@Uqt12}iUY^1+c%E(|t=`^bvJj$D(U-^wUUNNR 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 literal 0 HcmV?d00001 diff --git a/docs/synthterrain_ARC-18971-1_Individual_CLA.pdf b/docs/synthterrain_ARC-18971-1_Individual_CLA.pdf new file mode 100644 index 0000000000000000000000000000000000000000..35fc5628eddb5d9adf4c0f8f6d2d50491c7952a9 GIT binary patch literal 240115 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 W`hSxAU*Fe+os6)xYBu{5oBt2Vu&PV| literal 0 HcmV?d00001 From b75bb08e8435a2a2984c94b9ccb6cf095ccdd83d Mon Sep 17 00:00:00 2001 From: Ross Beyer Date: Mon, 1 Jul 2024 15:48:48 -0700 Subject: [PATCH 12/21] docs(various): Added proper NASA copyright boilerplate and applied ufmt. --- src/python/synthterrain/__init__.py | 2 +- src/python/synthterrain/cli.py | 26 +++++++----- src/python/synthterrain/crater/__init__.py | 42 +++++++++++-------- src/python/synthterrain/crater/age.py | 14 ++++++- src/python/synthterrain/crater/cli.py | 27 +++++++----- src/python/synthterrain/crater/cli_convert.py | 28 ++++++++----- src/python/synthterrain/crater/cli_plot.py | 25 ++++++----- src/python/synthterrain/crater/diffusion.py | 42 +++++++++++-------- src/python/synthterrain/crater/functions.py | 14 ++++++- src/python/synthterrain/crater/profile.py | 30 ++++++++----- src/python/synthterrain/rock/__init__.py | 30 ++++++++----- src/python/synthterrain/rock/cli.py | 26 +++++++----- src/python/synthterrain/rock/functions.py | 18 +++++--- src/python/synthterrain/util.py | 30 +++++++------ tests/python/crater/test_age.py | 14 ++++++- tests/python/crater/test_functions.py | 20 ++++++--- tests/python/crater/test_init.py | 20 ++++++--- tests/python/test_util.py | 18 +++++--- 18 files changed, 277 insertions(+), 149 deletions(-) diff --git a/src/python/synthterrain/__init__.py b/src/python/synthterrain/__init__.py index c5d0c76..9d202f8 100644 --- a/src/python/synthterrain/__init__.py +++ b/src/python/synthterrain/__init__.py @@ -1,5 +1,5 @@ """Top-level package for synthterrain.""" __author__ = """synthterrain Developers""" -__email__ = "rbeyer@seti.org" +__email__ = "Ross.A.Beyer@nasa.gov" __version__ = "0.1.0" diff --git a/src/python/synthterrain/cli.py b/src/python/synthterrain/cli.py index 73e88fb..eaf31f1 100644 --- a/src/python/synthterrain/cli.py +++ b/src/python/synthterrain/cli.py @@ -1,27 +1,35 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- """Generates synthetic crater and rock populations. """ -# Copyright 2022, synthterrain developers. +# Copyright © 2024, United States Government, as represented by the +# Administrator of the National Aeronautics and Space Administration. +# All rights reserved. # -# Reuse is permitted under the terms of the license. -# The AUTHORS file and the LICENSE file are at the -# top level of this library. +# The “synthterrain” software is licensed under the Apache License, +# Version 2.0 (the "License"); you may not use this file except in +# compliance with the License. You may obtain a copy of the License +# at http://www.apache.org/licenses/LICENSE-2.0. + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. See the License for the specific language governing +# permissions and limitations under the License. import logging -from pathlib import Path import sys +from pathlib import Path import pandas as pd from shapely.geometry import box import synthterrain.crater as cr +import synthterrain.rock as rk +from synthterrain import util from synthterrain.crater import functions as cr_dist from synthterrain.crater.cli import csfd_dict -import synthterrain.rock as rk from synthterrain.rock import functions as rk_func -import synthterrain.util as util logger = logging.getLogger(__name__) @@ -161,8 +169,6 @@ def main(): df, pmap, [poly.bounds[0], poly.bounds[2], poly.bounds[1], poly.bounds[3]] ) - return - if __name__ == "__main__": sys.exit(main()) diff --git a/src/python/synthterrain/crater/__init__.py b/src/python/synthterrain/crater/__init__.py index 2f44161..78fffd7 100644 --- a/src/python/synthterrain/crater/__init__.py +++ b/src/python/synthterrain/crater/__init__.py @@ -1,25 +1,34 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- """Generates synthetic crater populations. """ -# Copyright 2022-2023, synthterrain developers. +# Copyright © 2024, United States Government, as represented by the +# Administrator of the National Aeronautics and Space Administration. +# All rights reserved. # -# Reuse is permitted under the terms of the license. -# The AUTHORS file and the LICENSE file are at the -# top level of this library. +# The “synthterrain” software is licensed under the Apache License, +# Version 2.0 (the "License"); you may not use this file except in +# compliance with the License. You may obtain a copy of the License +# at http://www.apache.org/licenses/LICENSE-2.0. + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. See the License for the specific language governing +# permissions and limitations under the License. import logging import math -from pathlib import Path import random +from pathlib import Path -from matplotlib.collections import PatchCollection -from matplotlib.patches import Circle import matplotlib.pyplot as plt -from matplotlib.ticker import ScalarFormatter import numpy as np import pandas as pd + +from matplotlib.collections import PatchCollection +from matplotlib.patches import Circle +from matplotlib.ticker import ScalarFormatter from shapely.geometry import Point, Polygon from synthterrain.crater import functions @@ -102,10 +111,10 @@ def synthesize( def determine_production_function(a: float, b: float): if a >= 10: return functions.NPF(a, b) - elif b <= 2.76: + if b <= 2.76: return functions.Grun(a, b) - else: - return functions.GNPF(a, b) + + return functions.GNPF(a, b) def random_points(poly: Polygon, num_points: int): @@ -117,8 +126,8 @@ def random_points(poly: Polygon, num_points: int): # not how we need the data later. min_x, min_y, max_x, max_y = poly.bounds # points = [] - x_list = list() - y_list = list() + x_list = [] + y_list = [] # while len(points) < num_points: while len(x_list) < num_points: random_point = Point( @@ -140,7 +149,7 @@ def generate_diameters(crater_dist, area, min, max): larger than *max* will be returned. """ size = crater_dist.count(area, min) - crater_dist.count(area, max) - diameters = list() + diameters = [] while len(diameters) != size: d = crater_dist.rvs(size=(size - len(diameters))) @@ -222,7 +231,6 @@ def plot(df): fig.colorbar(collection, ax=ax_location) plt.show() - return def to_file(df: pd.DataFrame, outfile: Path, xml=False): @@ -255,8 +263,6 @@ def to_file(df: pd.DataFrame, outfile: Path, xml=False): columns=["x", "y", "diameter", "age", "d/D"], ) - return - def from_file(infile: Path): """Load previously written crater information from disk""" diff --git a/src/python/synthterrain/crater/age.py b/src/python/synthterrain/crater/age.py index af8a7b7..98487da 100644 --- a/src/python/synthterrain/crater/age.py +++ b/src/python/synthterrain/crater/age.py @@ -1,12 +1,22 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- """ Functions for estimating crater ages. """ -# Copyright 2022-2023, United States Government as represented by the +# Copyright © 2024, United States Government, as represented by the # Administrator of the National Aeronautics and Space Administration. # All rights reserved. +# +# The “synthterrain” software is licensed under the Apache License, +# Version 2.0 (the "License"); you may not use this file except in +# compliance with the License. You may obtain a copy of the License +# at http://www.apache.org/licenses/LICENSE-2.0. + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. See the License for the specific language governing +# permissions and limitations under the License. import bisect import logging diff --git a/src/python/synthterrain/crater/cli.py b/src/python/synthterrain/crater/cli.py index 0baee1a..80934ef 100644 --- a/src/python/synthterrain/crater/cli.py +++ b/src/python/synthterrain/crater/cli.py @@ -1,18 +1,26 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- """Generates synthetic crater populations. """ -# Copyright 2022, synthterrain developers. +# Copyright © 2024, United States Government, as represented by the +# Administrator of the National Aeronautics and Space Administration. +# All rights reserved. # -# Reuse is permitted under the terms of the license. -# The AUTHORS file and the LICENSE file are at the -# top level of this library. +# The “synthterrain” software is licensed under the Apache License, +# Version 2.0 (the "License"); you may not use this file except in +# compliance with the License. You may obtain a copy of the License +# at http://www.apache.org/licenses/LICENSE-2.0. + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. See the License for the specific language governing +# permissions and limitations under the License. import logging import math -from pathlib import Path import sys +from pathlib import Path import numpy as np import rasterio @@ -20,16 +28,15 @@ from rasterio.windows import from_bounds from shapely.geometry import box -import synthterrain.crater as crater +from synthterrain import crater, util from synthterrain.crater import functions from synthterrain.crater.diffusion import make_crater_field -import synthterrain.util as util logger = logging.getLogger(__name__) # Assemble this global variable value. -csfd_dict = dict() +csfd_dict = {} for fn in functions.equilibrium_functions: csfd_dict[fn.__name__] = fn.__doc__ @@ -183,8 +190,6 @@ def main(): ) as dst: dst.write(tm, 1) - return - if __name__ == "__main__": sys.exit(main()) diff --git a/src/python/synthterrain/crater/cli_convert.py b/src/python/synthterrain/crater/cli_convert.py index ce6354f..256a029 100644 --- a/src/python/synthterrain/crater/cli_convert.py +++ b/src/python/synthterrain/crater/cli_convert.py @@ -1,25 +1,33 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- """Converts between the crater CSV and XML formats. """ -# Copyright 2022, synthterrain developers. +# Copyright © 2024, United States Government, as represented by the +# Administrator of the National Aeronautics and Space Administration. +# All rights reserved. # -# Reuse is permitted under the terms of the license. -# The AUTHORS file and the LICENSE file are at the -# top level of this library. +# The “synthterrain” software is licensed under the Apache License, +# Version 2.0 (the "License"); you may not use this file except in +# compliance with the License. You may obtain a copy of the License +# at http://www.apache.org/licenses/LICENSE-2.0. + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. See the License for the specific language governing +# permissions and limitations under the License. import argparse import logging -from pathlib import Path import sys +from pathlib import Path import pandas as pd -import synthterrain.crater as crater -from synthterrain.crater.age import estimate_age_by_bin import synthterrain.crater.functions as crater_func -import synthterrain.util as util + +from synthterrain import crater, util +from synthterrain.crater.age import estimate_age_by_bin logger = logging.getLogger(__name__) @@ -104,7 +112,7 @@ def main(): crater.to_file(df, args.outfile, xml=(args.outfile.suffix.casefold() == ".xml")) - return + return None if __name__ == "__main__": diff --git a/src/python/synthterrain/crater/cli_plot.py b/src/python/synthterrain/crater/cli_plot.py index 56fe133..32f59b3 100644 --- a/src/python/synthterrain/crater/cli_plot.py +++ b/src/python/synthterrain/crater/cli_plot.py @@ -1,23 +1,30 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- """Generates plots from .csv files. """ -# Copyright 2022, synthterrain developers. +# Copyright © 2024, United States Government, as represented by the +# Administrator of the National Aeronautics and Space Administration. +# All rights reserved. # -# Reuse is permitted under the terms of the license. -# The AUTHORS file and the LICENSE file are at the -# top level of this library. +# The “synthterrain” software is licensed under the Apache License, +# Version 2.0 (the "License"); you may not use this file except in +# compliance with the License. You may obtain a copy of the License +# at http://www.apache.org/licenses/LICENSE-2.0. + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. See the License for the specific language governing +# permissions and limitations under the License. import argparse import logging -from pathlib import Path import sys +from pathlib import Path import pandas as pd -import synthterrain.crater as crater -import synthterrain.util as util +from synthterrain import crater, util logger = logging.getLogger(__name__) @@ -46,8 +53,6 @@ def main(): crater.plot(df) - return - if __name__ == "__main__": sys.exit(main()) diff --git a/src/python/synthterrain/crater/diffusion.py b/src/python/synthterrain/crater/diffusion.py index efdd018..aebe902 100644 --- a/src/python/synthterrain/crater/diffusion.py +++ b/src/python/synthterrain/crater/diffusion.py @@ -1,4 +1,3 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- """ Performs diffusion of a crater shape. @@ -10,11 +9,20 @@ https://scipython.com/book2/chapter-7-matplotlib/examples/the-two-dimensional-diffusion-equation/ """ -# Copyright 2022, synthterrain developers. +# Copyright © 2024, United States Government, as represented by the +# Administrator of the National Aeronautics and Space Administration. +# All rights reserved. # -# Reuse is permitted under the terms of the license. -# The AUTHORS file and the LICENSE file are at the -# top level of this library. +# The “synthterrain” software is licensed under the Apache License, +# Version 2.0 (the "License"); you may not use this file except in +# compliance with the License. You may obtain a copy of the License +# at http://www.apache.org/licenses/LICENSE-2.0. + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. See the License for the specific language governing +# permissions and limitations under the License. import logging import math @@ -23,10 +31,10 @@ import numpy as np import numpy.typing as npt -from numpy.polynomial import Polynomial import pandas as pd +from numpy.polynomial import Polynomial from rasterio.transform import rowcol -from rasterio.windows import Window, get_data_window, intersect +from rasterio.windows import get_data_window, intersect, Window from skimage.transform import rescale from synthterrain.crater.profile import FTmod_Crater, stopar_fresh_dd @@ -226,10 +234,11 @@ def diffuse_d_over_D( if return_surface == "all": return dd, u_for_each_step - elif return_surface: + + if return_surface: return dd, u_for_each_step[-1] - else: - return dd + + return dd def diffuse_d_over_D_by_bin( @@ -292,14 +301,12 @@ def diffuse_d_over_D_by_bin( def start_dd(diameter): if diameter < 850: return stopar_poly(diameter) - else: - return 0.2 + return 0.2 def start_std(diameter): if diameter < 10: return start_dd_std + 0.01 - else: - return start_dd_std + return start_dd_std elif start_dd_mean == "Stopar step": # Stopar et al. (2017) define a set of graduate d/D categories @@ -342,7 +349,8 @@ def start_std(diameter): if count == 0: continue - elif 0 < count <= 3: + + if 0 < count <= 3: # Run individual models for each crater. if return_surfaces: df.loc[df["diameter_bin"] == interval, ["d/D", "surface"]] = df.loc[ @@ -494,8 +502,8 @@ def make_crater_field( if abs(transform.a) != abs(transform.e): raise ValueError("The transform does not have even spacing in X and Y.") - else: - gsd = transform.a + + gsd = transform.a tm_window = get_data_window(terrain_model) diff --git a/src/python/synthterrain/crater/functions.py b/src/python/synthterrain/crater/functions.py index 2bbc87d..394ec78 100644 --- a/src/python/synthterrain/crater/functions.py +++ b/src/python/synthterrain/crater/functions.py @@ -1,12 +1,22 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- """This module contains abstract and concrete classes for representing crater size-frequency distributions as probability distributions. """ -# Copyright 2022-2024, United States Government as represented by the +# Copyright © 2024, United States Government, as represented by the # Administrator of the National Aeronautics and Space Administration. # All rights reserved. +# +# The “synthterrain” software is licensed under the Apache License, +# Version 2.0 (the "License"); you may not use this file except in +# compliance with the License. You may obtain a copy of the License +# at http://www.apache.org/licenses/LICENSE-2.0. + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. See the License for the specific language governing +# permissions and limitations under the License. import copy import logging diff --git a/src/python/synthterrain/crater/profile.py b/src/python/synthterrain/crater/profile.py index 02ebad3..993937b 100644 --- a/src/python/synthterrain/crater/profile.py +++ b/src/python/synthterrain/crater/profile.py @@ -3,11 +3,20 @@ https:doi.org/10.1109/TAES.2014.120282 .""" -# Copyright 2022, synthterrain developers. +# Copyright © 2024, United States Government, as represented by the +# Administrator of the National Aeronautics and Space Administration. +# All rights reserved. # -# Reuse is permitted under the terms of the license. -# The AUTHORS file and the LICENSE file are at the -# top level of this library. +# The “synthterrain” software is licensed under the Apache License, +# Version 2.0 (the "License"); you may not use this file except in +# compliance with the License. You may obtain a copy of the License +# at http://www.apache.org/licenses/LICENSE-2.0. + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. See the License for the specific language governing +# permissions and limitations under the License. # Consider attempting to implement the Mahanti et al. (2014, # https://doi.org/10.1016/j.icarus.2014.06.023) Chebyshev polynomial approach. @@ -228,9 +237,10 @@ def profile_x(self, x: float): if -1 <= x <= alpha: return self.h1(x, self.hr, self.h, self.hr0) - elif alpha <= x <= 0: + if alpha <= x <= 0: return self.h2(x, self.hr, self.h, self.hr0, alpha, self.tr, self.pr) - elif 0 <= x <= beta: + + if 0 <= x <= beta: # return self.h3( return self.h3_alt( self.diameter, @@ -244,12 +254,12 @@ def profile_x(self, x: float): self.tr, self.pr, ) - elif beta <= x: + + if beta <= x: return self.h4(x, self.diameter, self.fc(x, self.emin, self.tr, self.pr)) - else: - # Really should not be able to get here. - raise ValueError(err_msg) + # Really should not be able to get here. + raise ValueError(err_msg) @staticmethod def height_naught(diameter: float): diff --git a/src/python/synthterrain/rock/__init__.py b/src/python/synthterrain/rock/__init__.py index 8c70607..1868689 100644 --- a/src/python/synthterrain/rock/__init__.py +++ b/src/python/synthterrain/rock/__init__.py @@ -1,32 +1,40 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- """Generates synthetic rock populations. """ -# Copyright 2022, synthterrain developers. +# Copyright © 2024, United States Government, as represented by the +# Administrator of the National Aeronautics and Space Administration. +# All rights reserved. # -# Reuse is permitted under the terms of the license. -# The AUTHORS file and the LICENSE file are at the -# top level of this library. +# The “synthterrain” software is licensed under the Apache License, +# Version 2.0 (the "License"); you may not use this file except in +# compliance with the License. You may obtain a copy of the License +# at http://www.apache.org/licenses/LICENSE-2.0. + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. See the License for the specific language governing +# permissions and limitations under the License. import logging import math -from pathlib import Path import time +from pathlib import Path + +import matplotlib.pyplot as plt +import numpy as np import opensimplex +import pandas as pd from matplotlib.collections import PatchCollection from matplotlib.patches import Circle -import matplotlib.pyplot as plt from matplotlib.ticker import ScalarFormatter -import numpy as np from rasterio.features import geometry_mask from rasterio.transform import from_origin, rowcol, xy -from rasterio.windows import Window, from_bounds, intersect, shape -import pandas as pd +from rasterio.windows import from_bounds, intersect, shape, Window from shapely.geometry import Polygon - from synthterrain.crater import generate_diameters from synthterrain.crater.functions import Crater_rv_continuous diff --git a/src/python/synthterrain/rock/cli.py b/src/python/synthterrain/rock/cli.py index 7ea2606..fc80b1a 100644 --- a/src/python/synthterrain/rock/cli.py +++ b/src/python/synthterrain/rock/cli.py @@ -1,24 +1,30 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- """Generates synthetic rock populations. """ -# Copyright 2022, synthterrain developers. +# Copyright © 2024, United States Government, as represented by the +# Administrator of the National Aeronautics and Space Administration. +# All rights reserved. # -# Reuse is permitted under the terms of the license. -# The AUTHORS file and the LICENSE file are at the -# top level of this library. +# The “synthterrain” software is licensed under the Apache License, +# Version 2.0 (the "License"); you may not use this file except in +# compliance with the License. You may obtain a copy of the License +# at http://www.apache.org/licenses/LICENSE-2.0. + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. See the License for the specific language governing +# permissions and limitations under the License. import logging -from pathlib import Path import sys +from pathlib import Path from shapely.geometry import box -import synthterrain.crater as crater -import synthterrain.rock as rock +from synthterrain import crater, rock, util from synthterrain.rock import functions -import synthterrain.util as util logger = logging.getLogger(__name__) @@ -121,8 +127,6 @@ def main(): # Write out results. rock.to_file(df, args.outfile, args.xml) - return - if __name__ == "__main__": sys.exit(main()) diff --git a/src/python/synthterrain/rock/functions.py b/src/python/synthterrain/rock/functions.py index e4dbf60..1d7c82a 100644 --- a/src/python/synthterrain/rock/functions.py +++ b/src/python/synthterrain/rock/functions.py @@ -1,14 +1,22 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- """This module contains abstract and concrete classes for representing rock size-frequency distributions as probability distributions. """ -# Copyright 2022, synthterrain developers. +# Copyright © 2024, United States Government, as represented by the +# Administrator of the National Aeronautics and Space Administration. +# All rights reserved. # -# Reuse is permitted under the terms of the license. -# The AUTHORS file and the LICENSE file are at the -# top level of this library. +# The “synthterrain” software is licensed under the Apache License, +# Version 2.0 (the "License"); you may not use this file except in +# compliance with the License. You may obtain a copy of the License +# at http://www.apache.org/licenses/LICENSE-2.0. + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. See the License for the specific language governing +# permissions and limitations under the License. import logging diff --git a/src/python/synthterrain/util.py b/src/python/synthterrain/util.py index bf41df6..ac968ff 100644 --- a/src/python/synthterrain/util.py +++ b/src/python/synthterrain/util.py @@ -1,16 +1,24 @@ -#!/usr/bin/env python """This module contains viss utility functions.""" -# Copyright 2022, synthterrain developers. +# Copyright © 2024, United States Government, as represented by the +# Administrator of the National Aeronautics and Space Administration. +# All rights reserved. # -# Reuse is permitted under the terms of the license. -# The AUTHORS file and the LICENSE file are at the -# top level of this library. +# The “synthterrain” software is licensed under the Apache License, +# Version 2.0 (the "License"); you may not use this file except in +# compliance with the License. You may obtain a copy of the License +# at http://www.apache.org/licenses/LICENSE-2.0. + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. See the License for the specific language governing +# permissions and limitations under the License. import argparse import logging -import textwrap import sys +import textwrap import synthterrain @@ -43,9 +51,9 @@ def __init__(self, *args, **kwargs): def convert_arg_line_to_args(self, arg_line): if arg_line.startswith("#"): - return list() - else: - return arg_line.split() + return [] + + return arg_line.split() class PrintDictAction(argparse.Action): @@ -95,7 +103,7 @@ def parent_parser() -> argparse.ArgumentParser: def set_logger(verblvl=None) -> None: """Sets the log level and configuration for applications.""" - logger = logging.getLogger(__name__.split(".")[0]) + logger = logging.getLogger(__name__.split(".", maxsplit=1)[0]) lvl_dict = {0: logging.WARNING, 1: logging.INFO, 2: logging.DEBUG} if verblvl in lvl_dict: lvl = lvl_dict[verblvl] @@ -114,5 +122,3 @@ def set_logger(verblvl=None) -> None: ch.setFormatter(formatter) logger.addHandler(ch) - - return diff --git a/tests/python/crater/test_age.py b/tests/python/crater/test_age.py index 0aaa1a3..9d3c754 100644 --- a/tests/python/crater/test_age.py +++ b/tests/python/crater/test_age.py @@ -1,9 +1,19 @@ -#!/usr/bin/env python """This module has tests for the synthterrain crater age functions.""" -# Copyright 2023-2024, United States Government as represented by the +# Copyright © 2024, United States Government, as represented by the # Administrator of the National Aeronautics and Space Administration. # All rights reserved. +# +# The “synthterrain” software is licensed under the Apache License, +# Version 2.0 (the "License"); you may not use this file except in +# compliance with the License. You may obtain a copy of the License +# at http://www.apache.org/licenses/LICENSE-2.0. + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. See the License for the specific language governing +# permissions and limitations under the License. import unittest diff --git a/tests/python/crater/test_functions.py b/tests/python/crater/test_functions.py index e6201b7..a16297c 100644 --- a/tests/python/crater/test_functions.py +++ b/tests/python/crater/test_functions.py @@ -1,18 +1,26 @@ -#!/usr/bin/env python """This module has tests for the synthterrain crater distribution functions.""" -# Copyright 2022-2024, synthterrain developers. +# Copyright © 2024, United States Government, as represented by the +# Administrator of the National Aeronautics and Space Administration. +# All rights reserved. # -# Reuse is permitted under the terms of the license. -# The AUTHORS file and the LICENSE file are at the -# top level of this library. +# The “synthterrain” software is licensed under the Apache License, +# Version 2.0 (the "License"); you may not use this file except in +# compliance with the License. You may obtain a copy of the License +# at http://www.apache.org/licenses/LICENSE-2.0. + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. See the License for the specific language governing +# permissions and limitations under the License. import unittest import numpy as np from numpy.polynomial import Polynomial -import synthterrain.crater.functions as fns +import synthterrain.crater.functions as fns # usort: skip class Test_Crater_rv_continuous(unittest.TestCase): diff --git a/tests/python/crater/test_init.py b/tests/python/crater/test_init.py index 33c1a40..715b68c 100644 --- a/tests/python/crater/test_init.py +++ b/tests/python/crater/test_init.py @@ -1,17 +1,25 @@ -#!/usr/bin/env python """This module has tests for the synthterrain crater init functions.""" -# Copyright 2022, synthterrain developers. +# Copyright © 2024, United States Government, as represented by the +# Administrator of the National Aeronautics and Space Administration. +# All rights reserved. # -# Reuse is permitted under the terms of the license. -# The AUTHORS file and the LICENSE file are at the -# top level of this library. +# The “synthterrain” software is licensed under the Apache License, +# Version 2.0 (the "License"); you may not use this file except in +# compliance with the License. You may obtain a copy of the License +# at http://www.apache.org/licenses/LICENSE-2.0. + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. See the License for the specific language governing +# permissions and limitations under the License. import unittest from shapely.geometry import Polygon -import synthterrain.crater as cr +import synthterrain.crater as cr # usort: skip import synthterrain.crater.functions as fns diff --git a/tests/python/test_util.py b/tests/python/test_util.py index 782ba36..adbacd9 100644 --- a/tests/python/test_util.py +++ b/tests/python/test_util.py @@ -1,12 +1,20 @@ -#!/usr/bin/env python # -*- coding: utf-8 -*- """This module has tests for the util module.""" -# Copyright 2022, synthterrain developers. +# Copyright © 2024, United States Government, as represented by the +# Administrator of the National Aeronautics and Space Administration. +# All rights reserved. # -# Reuse is permitted under the terms of the license. -# The AUTHORS file and the LICENSE file are at the -# top level of this library. +# The “synthterrain” software is licensed under the Apache License, +# Version 2.0 (the "License"); you may not use this file except in +# compliance with the License. You may obtain a copy of the License +# at http://www.apache.org/licenses/LICENSE-2.0. + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. See the License for the specific language governing +# permissions and limitations under the License. import argparse import logging From f24810a4d88084119a84f6b82227f84ac1d36ef9 Mon Sep 17 00:00:00 2001 From: Ross Beyer Date: Mon, 1 Jul 2024 15:49:30 -0700 Subject: [PATCH 13/21] build(Makefile): Added line/ufmt and the release-check target. --- Makefile | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/Makefile b/Makefile index e9260d1..3505216 100644 --- a/Makefile +++ b/Makefile @@ -62,6 +62,10 @@ lint/flake8: ## check style with flake8 lint/black: ## check style with black black --check src/python/synthterrain tests +lint/ufmt: ## check format with ufmt + ufmt check src/python/synthterrain + ufmt check tests + lint: lint/flake8 lint/black test: ## run tests quickly with the default Python @@ -87,6 +91,9 @@ coverage: ## check code coverage quickly with the default Python # servedocs: docs ## compile the docs watching for changes # watchmedo shell-command -p '*.rst' -c '$(MAKE) -C docs html' -R -D . +release-check: dist ## check state of distribution + twine check dist/* + release: dist ## package and upload a release twine upload dist/* From 2584bd2beb077ed9ed15cb116a8dc6d8b54de6dc Mon Sep 17 00:00:00 2001 From: Ross Beyer Date: Tue, 2 Jul 2024 16:27:14 -0700 Subject: [PATCH 14/21] docs: Added initial Sphinx documentation structure. --- docs/Makefile | 20 +++++++++++ docs/authors.rst | 1 + docs/changelog.rst | 1 + docs/conf.py | 36 +++++++++++++++++++ docs/contributing.rst | 1 + docs/index.rst | 25 +++++++++++++ docs/modules.rst | 7 ++++ docs/readme.rst | 1 + docs/synthterrain.crater.rst | 69 ++++++++++++++++++++++++++++++++++++ docs/synthterrain.rock.rst | 29 +++++++++++++++ docs/synthterrain.rst | 38 ++++++++++++++++++++ 11 files changed, 228 insertions(+) create mode 100644 docs/Makefile create mode 100644 docs/authors.rst create mode 100644 docs/changelog.rst create mode 100644 docs/conf.py create mode 100644 docs/contributing.rst create mode 100644 docs/index.rst create mode 100644 docs/modules.rst create mode 100644 docs/readme.rst create mode 100644 docs/synthterrain.crater.rst create mode 100644 docs/synthterrain.rock.rst create mode 100644 docs/synthterrain.rst diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000..d4bb2cb --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,20 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line, and also +# from the environment for the first two. +SPHINXOPTS ?= +SPHINXBUILD ?= sphinx-build +SOURCEDIR = . +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/authors.rst b/docs/authors.rst new file mode 100644 index 0000000..e122f91 --- /dev/null +++ b/docs/authors.rst @@ -0,0 +1 @@ +.. include:: ../AUTHORS.rst diff --git a/docs/changelog.rst b/docs/changelog.rst new file mode 100644 index 0000000..565b052 --- /dev/null +++ b/docs/changelog.rst @@ -0,0 +1 @@ +.. include:: ../CHANGELOG.rst diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 0000000..fa098d6 --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,36 @@ +# Configuration file for the Sphinx documentation builder. +# +# For the full list of built-in configuration values, see the documentation: +# https://www.sphinx-doc.org/en/master/usage/configuration.html + +import os +import sys + +sys.path.insert(0, os.path.abspath("../src/python")) + +# -- Project information ----------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information + +project = "synthterrain" +copyright = "2024, United States Government, as represented by the Administrator of " +" the National Aeronautics and Space Administration." +author = "Ross Beyer" + +# -- General configuration --------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration + +extensions = ["sphinx.ext.autodoc", "sphinxcontrib.apidoc"] + +apidoc_module_dir = "../src/python/synthterrain" +apidoc_output_dir = "." +apidoc_excluded_paths = ["tests"] + +templates_path = ["_templates"] +exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"] + + +# -- Options for HTML output ------------------------------------------------- +# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output + +html_theme = "alabaster" +html_static_path = ["_static"] diff --git a/docs/contributing.rst b/docs/contributing.rst new file mode 100644 index 0000000..e582053 --- /dev/null +++ b/docs/contributing.rst @@ -0,0 +1 @@ +.. include:: ../CONTRIBUTING.rst diff --git a/docs/index.rst b/docs/index.rst new file mode 100644 index 0000000..41e6025 --- /dev/null +++ b/docs/index.rst @@ -0,0 +1,25 @@ +.. synthterrain documentation master file, created by + sphinx-quickstart on Mon Jul 1 15:58:03 2024. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +Welcome to synthterrain's documentation! +======================================== + +.. toctree:: + :maxdepth: 2 + :caption: Contents: + + readme + modules + contributing + authors + changelog + + +Indices and tables +================== + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/docs/modules.rst b/docs/modules.rst new file mode 100644 index 0000000..bca8ad3 --- /dev/null +++ b/docs/modules.rst @@ -0,0 +1,7 @@ +synthterrain +============ + +.. toctree:: + :maxdepth: 4 + + synthterrain diff --git a/docs/readme.rst b/docs/readme.rst new file mode 100644 index 0000000..72a3355 --- /dev/null +++ b/docs/readme.rst @@ -0,0 +1 @@ +.. include:: ../README.rst diff --git a/docs/synthterrain.crater.rst b/docs/synthterrain.crater.rst new file mode 100644 index 0000000..c3f35dd --- /dev/null +++ b/docs/synthterrain.crater.rst @@ -0,0 +1,69 @@ +synthterrain.crater package +=========================== + +Submodules +---------- + +synthterrain.crater.age module +------------------------------ + +.. automodule:: synthterrain.crater.age + :members: + :undoc-members: + :show-inheritance: + +synthterrain.crater.cli module +------------------------------ + +.. automodule:: synthterrain.crater.cli + :members: + :undoc-members: + :show-inheritance: + +synthterrain.crater.cli\_convert module +--------------------------------------- + +.. automodule:: synthterrain.crater.cli_convert + :members: + :undoc-members: + :show-inheritance: + +synthterrain.crater.cli\_plot module +------------------------------------ + +.. automodule:: synthterrain.crater.cli_plot + :members: + :undoc-members: + :show-inheritance: + +synthterrain.crater.diffusion module +------------------------------------ + +.. automodule:: synthterrain.crater.diffusion + :members: + :undoc-members: + :show-inheritance: + +synthterrain.crater.functions module +------------------------------------ + +.. automodule:: synthterrain.crater.functions + :members: + :undoc-members: + :show-inheritance: + +synthterrain.crater.profile module +---------------------------------- + +.. automodule:: synthterrain.crater.profile + :members: + :undoc-members: + :show-inheritance: + +Module contents +--------------- + +.. automodule:: synthterrain.crater + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/synthterrain.rock.rst b/docs/synthterrain.rock.rst new file mode 100644 index 0000000..a60245a --- /dev/null +++ b/docs/synthterrain.rock.rst @@ -0,0 +1,29 @@ +synthterrain.rock package +========================= + +Submodules +---------- + +synthterrain.rock.cli module +---------------------------- + +.. automodule:: synthterrain.rock.cli + :members: + :undoc-members: + :show-inheritance: + +synthterrain.rock.functions module +---------------------------------- + +.. automodule:: synthterrain.rock.functions + :members: + :undoc-members: + :show-inheritance: + +Module contents +--------------- + +.. automodule:: synthterrain.rock + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/synthterrain.rst b/docs/synthterrain.rst new file mode 100644 index 0000000..e6c69ff --- /dev/null +++ b/docs/synthterrain.rst @@ -0,0 +1,38 @@ +synthterrain package +==================== + +Subpackages +----------- + +.. toctree:: + :maxdepth: 4 + + synthterrain.crater + synthterrain.rock + +Submodules +---------- + +synthterrain.cli module +----------------------- + +.. automodule:: synthterrain.cli + :members: + :undoc-members: + :show-inheritance: + +synthterrain.util module +------------------------ + +.. automodule:: synthterrain.util + :members: + :undoc-members: + :show-inheritance: + +Module contents +--------------- + +.. automodule:: synthterrain + :members: + :undoc-members: + :show-inheritance: From 2faa1c4dd26127e0e43303696f79e4da89e80276 Mon Sep 17 00:00:00 2001 From: Ross Beyer Date: Tue, 2 Jul 2024 16:42:38 -0700 Subject: [PATCH 15/21] docs(README.rst): Added installation instructions. --- README.rst | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/README.rst b/README.rst index d0dab1a..12d9154 100644 --- a/README.rst +++ b/README.rst @@ -17,7 +17,7 @@ Features -------- The synthterrain package currently offers these command-line programs -when it is installed (see the CONTRIBUTING document). Arguments +when it is installed (see below). Arguments can be found by running any program with a ``-h`` flag. ``synthcraters`` @@ -65,7 +65,27 @@ You can mix regular arguments and ampersand-arguments if you wish. Installation ------------ -TBD. + +Clone or download this repository. + +It is highly suggested to install this into a virtual Python environment. + +Change directory to where you have downloaded this repository after you have +set up your virtual environment, just do this:: + +$> pip install + + +or:: + +$> make install + +If you use conda for your virtual environment, you can do this:: + +$> conda create -n synthterrain +$> conda activate synthterrain +$> conda env update --file environment.yml + Contributing From 5e70bc671449e9f4da080ea45e885a4951f3ed8e Mon Sep 17 00:00:00 2001 From: Ross Beyer Date: Tue, 2 Jul 2024 16:45:58 -0700 Subject: [PATCH 16/21] docs(CONRIBUTING): Minor wording changes. --- CONTRIBUTING.rst | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst index dc111b3..6eea187 100644 --- a/CONTRIBUTING.rst +++ b/CONTRIBUTING.rst @@ -65,40 +65,37 @@ Ready to contribute? Here's how to set up `synthterrain` for local development. 1. Fork the `synthterrain` repo on GitHub. 2. Clone your fork locally:: - $ git clone git@github.com:your_name_here/synthterrain.git + $> git clone git@github.com:your_name_here/synthterrain.git 3. Install your local copy into a virtual environment of your choice (there are many to choose from like conda, etc.). We will assume conda here, but any should work:: - $ cd synthterrain/ - $ conda env create -n synthterrain - $ conda activate synthterrain - $ mamba env update --file environment_dev.yml - $ mamba env update --file environment.yml - $ pip install opensimplex - $ pip install --no-deps -e . + $> cd synthterrain/ + $> conda env create -n synthterrain + $> conda activate synthterrain + $> mamba env update --file environment_dev.yml + $> mamba env update --file environment.yml + $> pip install --no-deps -e . The last ``pip install`` installs synthterrain in "editable" mode which facilitates using the programs and testing. 4. Create a branch for local development:: - $ git checkout -b name-of-your-bugfix-or-feature + $> git checkout -b name-of-your-bugfix-or-feature Now you can make your changes locally. 5. When you're done making changes, check that your changes pass flake8 and the - tests, including testing other Python versions with tox:: + tests. - $ flake8 src/synthterrain tests - $ python setup.py test or pytest - $ tox + $> make lint + $> make test - To get flake8 and tox, just pip install them into your virtual environment. 6. Commit your changes and push your branch to GitHub:: - $ git add . - $ git commit -m "Your detailed description of your changes." - $ git push origin name-of-your-bugfix-or-feature + $> git add . + $> git commit -m "Your detailed description of your changes." + $> git push origin name-of-your-bugfix-or-feature 7. Submit a pull request through the GitHub website. From 856d790a835437fc8a26abf9bacd2ab8db80e9fc Mon Sep 17 00:00:00 2001 From: Ross Beyer Date: Tue, 2 Jul 2024 17:08:53 -0700 Subject: [PATCH 17/21] build(.github): Added Issue and PR templates, and some workflows. --- .github/ISSUE_TEMPLATE.md | 15 ++++++++++ .github/pull_request_template.md | 46 +++++++++++++++++++++++++++++++ .github/workflows/lint.yml | 30 ++++++++++++++++++++ .github/workflows/python-test.yml | 44 +++++++++++++++++++++++++++++ 4 files changed, 135 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE.md create mode 100644 .github/pull_request_template.md create mode 100644 .github/workflows/lint.yml create mode 100644 .github/workflows/python-test.yml diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..bd01eeb --- /dev/null +++ b/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,15 @@ +* synthterrain version: +* Python version: +* Operating System: + +### Description + +Describe what you were trying to get done. +Tell us what happened, what went wrong, and what you expected to happen. + +### What I Did + +``` +Paste the command(s) you ran and the output. +If there was a crash, please include the traceback here. +``` diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..5d4da34 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,46 @@ + + +## Description + + +## Related Issue + + + + +## Motivation and Context + + + +## How Has This Been Tested? + + + + + +## Types of changes + +- Bug fix (non-breaking change which fixes an issue) +- New feature (non-breaking change which adds functionality) +- Breaking change (fix or feature that would cause existing functionality to change) + +## Checklist: + + +- My change requires a change to the documentation. +- I have updated the documentation accordingly. +- I have added tests to cover my changes. +- All new and existing tests passed. + +## Licensing: + +This project is released under the [LICENSE](https://github.com/NeoGeographyToolkit/synthterrain/blob/master/LICENSE). + + +- I claim copyrights on my contributions in this pull request, and I provide those contributions via this pull request under the same license terms that the synthterrain project uses, and I have submitted a CLA. +- I dedicate any and all copyright interest in my contributions in this pull request to the public domain. I make this dedication for the benefit of the public at large and to the detriment of my heirs and successors. I intend this dedication to be an overt act of relinquishment in perpetuity of all present and future rights to this contribution under copyright law. + + + + diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000..e5e2292 --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,30 @@ +name: Lint + +on: [push] + +jobs: + black: + runs-on: ubuntu-latest + steps: + - name: Check out source repository + uses: actions/checkout@v4 + - name: Black Version + uses: psf/black@stable + with: + options: "--version" + - name: Black Check + uses: psf/black@stable + + flake8: + runs-on: ubuntu-latest + steps: + - name: Check out source repository + uses: actions/checkout@v4 + - name: Set up Python environment + uses: actions/setup-python@v5 + with: + python-version: "3.8" + - name: flake8 Lint + uses: py-actions/flake8@v2 + with: + path: "src/python/synthterrain tests/python" diff --git a/.github/workflows/python-test.yml b/.github/workflows/python-test.yml new file mode 100644 index 0000000..3023d0e --- /dev/null +++ b/.github/workflows/python-test.yml @@ -0,0 +1,44 @@ +# This workflow will install Python dependencies, run tests and lint with a variety of Python versions +# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions + +name: Python Testing + +on: [push] + +jobs: + build: + + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ['3.8', '3.9', '3.10', '3.11'] + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.sha }} + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + - name: Display Python version + run: python -c "import sys; print(sys.version)" + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install pytest-cov + python -m pip install -r requirements.txt + - name: Install + # run: python -m pip install -e ${{ matrix.install-target }} + run: python -m pip install -e . + - name: Test with pytest and generate coverage report + run: | + pytest --cov=./src/python/synthterrain --cov-report=xml + + # - name: Upload coverage to Codecov + # uses: codecov/codecov-action@v4 + # with: + # verbose: true + # env: + # CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} From 240cf6356974ebd92c146671992372fa65d6b779 Mon Sep 17 00:00:00 2001 From: Ross Beyer Date: Tue, 2 Jul 2024 17:14:52 -0700 Subject: [PATCH 18/21] docs(CHANGELOG.rst): Updated for first release. --- CHANGELOG.rst | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 6d184f0..9da950e 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -27,6 +27,9 @@ and the release date, in year-month-day format (see examples below). Unreleased ---------- -0.1.0 (2022-??-??) -* First release. + +0.1.0 (2024-07-02) +------------------ + +- First release. From 8cc9d916b495e9b56a443d0eeebbe553ae06f627 Mon Sep 17 00:00:00 2001 From: Ross Beyer Date: Tue, 2 Jul 2024 17:24:44 -0700 Subject: [PATCH 19/21] build(setup.cfg): Add ignore for W503 --- setup.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.cfg b/setup.cfg index fd9ce8f..dbe8990 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,4 +1,4 @@ [flake8] exclude = docs max_line_length = 88 -ignore = E203,E701 +ignore = E203,E701,W503 From 09f51d98764f4875b3dc270ff57ba55c0778e2d1 Mon Sep 17 00:00:00 2001 From: Ross Beyer Date: Tue, 2 Jul 2024 17:25:09 -0700 Subject: [PATCH 20/21] build(Makefile): Added ufmt to lint target. --- Makefile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 3505216..17f7127 100644 --- a/Makefile +++ b/Makefile @@ -57,16 +57,16 @@ clean-test: ## remove test and coverage artifacts rm -fr test-resources lint/flake8: ## check style with flake8 - flake8 --max-complexity 10 --ignore E203,E501,W503 src/python/synthterrain tests + flake8 src/python/synthterrain tests/python/ lint/black: ## check style with black black --check src/python/synthterrain tests lint/ufmt: ## check format with ufmt ufmt check src/python/synthterrain - ufmt check tests + ufmt check tests/python -lint: lint/flake8 lint/black +lint: lint/flake8 lint/black lint/ufmt test: ## run tests quickly with the default Python pytest -s From d9b8d311754f197dfe3bfa20edd0ccec7309c867 Mon Sep 17 00:00:00 2001 From: Ross Beyer Date: Wed, 3 Jul 2024 10:37:19 -0700 Subject: [PATCH 21/21] docs(AUTHORS): Added Scott. --- AUTHORS.rst | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/AUTHORS.rst b/AUTHORS.rst index 46b9bba..2b04497 100644 --- a/AUTHORS.rst +++ b/AUTHORS.rst @@ -5,11 +5,12 @@ Credits Development Lead ---------------- -* Ross Beyer +* Ross Beyer , SETI Institute & NASA Ames Contributors ------------ * Mark Allan, NASA Ames & KBR +* Scott McMichael, NASA Ames & KBR * Audrow Nash, NASA Ames & KBR -* Jennifer Nguyen, NASA Ames & KBR \ No newline at end of file +* Jennifer Nguyen, NASA Ames & KBR