SurfaceTopography 0.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- surfacetopography-0.0.0/.check_mufft_capabilities.py +13 -0
- surfacetopography-0.0.0/.gitattributes +3 -0
- surfacetopography-0.0.0/.github/workflows/flake8.yml +31 -0
- surfacetopography-0.0.0/.github/workflows/publish.yml +80 -0
- surfacetopography-0.0.0/.github/workflows/test-code-functionality.yml +86 -0
- surfacetopography-0.0.0/.github/workflows/test-source-package.yml +43 -0
- surfacetopography-0.0.0/.github/workflows/wheels.yml +95 -0
- surfacetopography-0.0.0/.gitignore +29 -0
- surfacetopography-0.0.0/.pre-commit-config.yaml +11 -0
- surfacetopography-0.0.0/AUTHORS +14 -0
- surfacetopography-0.0.0/LICENSE.md +19 -0
- surfacetopography-0.0.0/MANIFEST.in +4 -0
- surfacetopography-0.0.0/PKG-INFO +99 -0
- surfacetopography-0.0.0/README.md +41 -0
- surfacetopography-0.0.0/SurfaceTopography/CLI/ShowTopography.py +17 -0
- surfacetopography-0.0.0/SurfaceTopography/CLI/__init__.py +0 -0
- surfacetopography-0.0.0/SurfaceTopography/CLI/meson.build +13 -0
- surfacetopography-0.0.0/SurfaceTopography/ChangeLog.md +1075 -0
- surfacetopography-0.0.0/SurfaceTopography/Container/Averaging.py +144 -0
- surfacetopography-0.0.0/SurfaceTopography/Container/IO/CE.py +324 -0
- surfacetopography-0.0.0/SurfaceTopography/Container/IO/Reader.py +129 -0
- surfacetopography-0.0.0/SurfaceTopography/Container/IO/ZAG.py +192 -0
- surfacetopography-0.0.0/SurfaceTopography/Container/IO/__init__.py +158 -0
- surfacetopography-0.0.0/SurfaceTopography/Container/IO/meson.build +13 -0
- surfacetopography-0.0.0/SurfaceTopography/Container/Integration.py +210 -0
- surfacetopography-0.0.0/SurfaceTopography/Container/ScaleDependentStatistics.py +217 -0
- surfacetopography-0.0.0/SurfaceTopography/Container/SurfaceContainer.py +107 -0
- surfacetopography-0.0.0/SurfaceTopography/Container/__init__.py +33 -0
- surfacetopography-0.0.0/SurfaceTopography/Container/common.py +90 -0
- surfacetopography-0.0.0/SurfaceTopography/Container/meson.build +17 -0
- surfacetopography-0.0.0/SurfaceTopography/Exceptions.py +130 -0
- surfacetopography-0.0.0/SurfaceTopography/FFTTricks.py +245 -0
- surfacetopography-0.0.0/SurfaceTopography/Generation.py +324 -0
- surfacetopography-0.0.0/SurfaceTopography/Generic/Curvature.py +121 -0
- surfacetopography-0.0.0/SurfaceTopography/Generic/Fractional.py +146 -0
- surfacetopography-0.0.0/SurfaceTopography/Generic/Moments.py +120 -0
- surfacetopography-0.0.0/SurfaceTopography/Generic/ReliabilityCutoff.py +79 -0
- surfacetopography-0.0.0/SurfaceTopography/Generic/RobustStatistics.py +169 -0
- surfacetopography-0.0.0/SurfaceTopography/Generic/ScaleDependentStatistics.py +181 -0
- surfacetopography-0.0.0/SurfaceTopography/Generic/ScanningProbe.py +99 -0
- surfacetopography-0.0.0/SurfaceTopography/Generic/Slope.py +107 -0
- surfacetopography-0.0.0/SurfaceTopography/Generic/__init__.py +29 -0
- surfacetopography-0.0.0/SurfaceTopography/Generic/meson.build +20 -0
- surfacetopography-0.0.0/SurfaceTopography/HeightContainer.py +356 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/AL3D.py +159 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/BCR.py +234 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/DATX.py +183 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/DI.py +325 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/DZI.py +390 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/EZD.py +255 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/FRT.py +618 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/FromFile.py +230 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/GWY.py +297 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/H5.py +87 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/IBW.py +179 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/JPK.py +357 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/LEXT.py +244 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/MI.py +314 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/Matlab.py +114 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/MetroPro.py +441 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/Mitutoyo.py +262 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/NC.py +554 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/NMM.py +341 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/NPY.py +173 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/OIR.py +629 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/OPD.py +215 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/OPDx.py +600 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/PLU.py +281 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/PLUX.py +215 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/PS.py +221 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/Reader.py +855 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/SUR.py +228 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/Text.py +526 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/VK.py +357 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/WSXM.py +241 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/X3P.py +310 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/XYZ.py +566 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/ZON.py +261 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/__init__.py +325 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/binary.py +434 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/common.py +168 -0
- surfacetopography-0.0.0/SurfaceTopography/IO/meson.build +48 -0
- surfacetopography-0.0.0/SurfaceTopography/Metadata.py +41 -0
- surfacetopography-0.0.0/SurfaceTopography/Models/SelfAffine.py +267 -0
- surfacetopography-0.0.0/SurfaceTopography/Models/__init__.py +0 -0
- surfacetopography-0.0.0/SurfaceTopography/Models/meson.build +13 -0
- surfacetopography-0.0.0/SurfaceTopography/Nonuniform/Autocorrelation.py +207 -0
- surfacetopography-0.0.0/SurfaceTopography/Nonuniform/BearingArea.py +151 -0
- surfacetopography-0.0.0/SurfaceTopography/Nonuniform/Converters.py +169 -0
- surfacetopography-0.0.0/SurfaceTopography/Nonuniform/Derivative.py +123 -0
- surfacetopography-0.0.0/SurfaceTopography/Nonuniform/Detrending.py +230 -0
- surfacetopography-0.0.0/SurfaceTopography/Nonuniform/Interpolation.py +54 -0
- surfacetopography-0.0.0/SurfaceTopography/Nonuniform/PowerSpectrum.py +237 -0
- surfacetopography-0.0.0/SurfaceTopography/Nonuniform/ScalarParameters.py +176 -0
- surfacetopography-0.0.0/SurfaceTopography/Nonuniform/VariableBandwidth.py +187 -0
- surfacetopography-0.0.0/SurfaceTopography/Nonuniform/__init__.py +28 -0
- surfacetopography-0.0.0/SurfaceTopography/Nonuniform/common.py +84 -0
- surfacetopography-0.0.0/SurfaceTopography/Nonuniform/meson.build +22 -0
- surfacetopography-0.0.0/SurfaceTopography/NonuniformLineScan.py +286 -0
- surfacetopography-0.0.0/SurfaceTopography/Pipeline.py +91 -0
- surfacetopography-0.0.0/SurfaceTopography/ScanningProbe/RigidScan.py +135 -0
- surfacetopography-0.0.0/SurfaceTopography/ScanningProbe/__init__.py +25 -0
- surfacetopography-0.0.0/SurfaceTopography/ScanningProbe/meson.build +13 -0
- surfacetopography-0.0.0/SurfaceTopography/Special.py +298 -0
- surfacetopography-0.0.0/SurfaceTopography/Support/Bibliography.py +85 -0
- surfacetopography-0.0.0/SurfaceTopography/Support/Deprecation.py +56 -0
- surfacetopography-0.0.0/SurfaceTopography/Support/Interpolation.py +30 -0
- surfacetopography-0.0.0/SurfaceTopography/Support/JSON.py +125 -0
- surfacetopography-0.0.0/SurfaceTopography/Support/Regression.py +464 -0
- surfacetopography-0.0.0/SurfaceTopography/Support/UnitConversion.py +247 -0
- surfacetopography-0.0.0/SurfaceTopography/Support/__init__.py +71 -0
- surfacetopography-0.0.0/SurfaceTopography/Support/meson.build +18 -0
- surfacetopography-0.0.0/SurfaceTopography/Uniform/Autocorrelation.py +279 -0
- surfacetopography-0.0.0/SurfaceTopography/Uniform/BearingArea.py +213 -0
- surfacetopography-0.0.0/SurfaceTopography/Uniform/Converters.py +106 -0
- surfacetopography-0.0.0/SurfaceTopography/Uniform/Derivative.py +611 -0
- surfacetopography-0.0.0/SurfaceTopography/Uniform/Detrending.py +394 -0
- surfacetopography-0.0.0/SurfaceTopography/Uniform/Filtering.py +428 -0
- surfacetopography-0.0.0/SurfaceTopography/Uniform/GeometryAnalysis.py +133 -0
- surfacetopography-0.0.0/SurfaceTopography/Uniform/Imputation.py +168 -0
- surfacetopography-0.0.0/SurfaceTopography/Uniform/Integration.py +200 -0
- surfacetopography-0.0.0/SurfaceTopography/Uniform/Interpolation.py +278 -0
- surfacetopography-0.0.0/SurfaceTopography/Uniform/PowerSpectrum.py +285 -0
- surfacetopography-0.0.0/SurfaceTopography/Uniform/ScalarParameters.py +377 -0
- surfacetopography-0.0.0/SurfaceTopography/Uniform/VariableBandwidth.py +363 -0
- surfacetopography-0.0.0/SurfaceTopography/Uniform/__init__.py +28 -0
- surfacetopography-0.0.0/SurfaceTopography/Uniform/common.py +179 -0
- surfacetopography-0.0.0/SurfaceTopography/Uniform/meson.build +26 -0
- surfacetopography-0.0.0/SurfaceTopography/UniformLineScanAndTopography.py +819 -0
- surfacetopography-0.0.0/SurfaceTopography/Version.py +27 -0
- surfacetopography-0.0.0/SurfaceTopography/__init__.py +76 -0
- surfacetopography-0.0.0/SurfaceTopography/meson.build +38 -0
- surfacetopography-0.0.0/c/autocorrelation.cpp +140 -0
- surfacetopography-0.0.0/c/autocorrelation.h +46 -0
- surfacetopography-0.0.0/c/bicubic.cpp +589 -0
- surfacetopography-0.0.0/c/bicubic.h +133 -0
- surfacetopography-0.0.0/c/meson.build +24 -0
- surfacetopography-0.0.0/c/module.cpp +87 -0
- surfacetopography-0.0.0/c/patchfinder.cpp +1091 -0
- surfacetopography-0.0.0/c/patchfinder.h +52 -0
- surfacetopography-0.0.0/c/stack.h +301 -0
- surfacetopography-0.0.0/c/test_stack.cpp +56 -0
- surfacetopography-0.0.0/cpp/bearing_area.cpp +167 -0
- surfacetopography-0.0.0/cpp/bearing_area.h +30 -0
- surfacetopography-0.0.0/cpp/eigen_helper.h +33 -0
- surfacetopography-0.0.0/cpp/meson.build +16 -0
- surfacetopography-0.0.0/cpp/module.cpp +66 -0
- surfacetopography-0.0.0/cpp/moments.h +211 -0
- surfacetopography-0.0.0/docs/Figures/geometry.svg +585 -0
- surfacetopography-0.0.0/docs/Figures/geometry_pdf_tex.svg +144 -0
- surfacetopography-0.0.0/docs/Makefile +20 -0
- surfacetopography-0.0.0/docs/_ext/edit_on_github.py +42 -0
- surfacetopography-0.0.0/docs/_templates/sourcelink.html +15 -0
- surfacetopography-0.0.0/docs/conf.py +183 -0
- surfacetopography-0.0.0/docs/contributing.rst +137 -0
- surfacetopography-0.0.0/docs/index.rst +49 -0
- surfacetopography-0.0.0/docs/installation.rst +163 -0
- surfacetopography-0.0.0/docs/make.bat +36 -0
- surfacetopography-0.0.0/docs/testing.rst +23 -0
- surfacetopography-0.0.0/docs/usage.rst +181 -0
- surfacetopography-0.0.0/env.sh +4 -0
- surfacetopography-0.0.0/examples/230207_scalar_parameters_from_PSD.ipynb.html +15034 -0
- surfacetopography-0.0.0/examples/bicubic_interpolation.py +107 -0
- surfacetopography-0.0.0/examples/files_xy_width_heights.ipynb +404 -0
- surfacetopography-0.0.0/examples/fourier_synthesis.ipynb +195 -0
- surfacetopography-0.0.0/examples/howto_plot_2D_data.ipynb +526 -0
- surfacetopography-0.0.0/examples/large_memory_tests/bicubic.py +52 -0
- surfacetopography-0.0.0/helpers/HurstEstimationNumerics.py +208 -0
- surfacetopography-0.0.0/helpers/HurstEstimationSymbolics.py +56 -0
- surfacetopography-0.0.0/helpers/PowerSpectrumSymbolics.py +75 -0
- surfacetopography-0.0.0/helpers/SurfaceExample.asc +1039 -0
- surfacetopography-0.0.0/helpers/SurfaceExampleUnfiltered.asc +1039 -0
- surfacetopography-0.0.0/helpers/WindowTest.py +154 -0
- surfacetopography-0.0.0/maintenance/copyright.py +101 -0
- surfacetopography-0.0.0/maintenance/replace_header.py +39 -0
- surfacetopography-0.0.0/maintenance/update_license_headers.sh +7 -0
- surfacetopography-0.0.0/meson.build +22 -0
- surfacetopography-0.0.0/pyproject.toml +79 -0
- surfacetopography-0.0.0/pytest.ini +3 -0
- surfacetopography-0.0.0/renovate.json +6 -0
- surfacetopography-0.0.0/run-tests.py +10 -0
- surfacetopography-0.0.0/setup.cfg +4 -0
- surfacetopography-0.0.0/singularity/SurfaceTopography_serial.def +62 -0
- surfacetopography-0.0.0/subprojects/eigen.wrap +13 -0
- surfacetopography-0.0.0/subprojects/pybind11.wrap +13 -0
- surfacetopography-0.0.0/test/IO/__init__.py +28 -0
- surfacetopography-0.0.0/test/IO/test_al3d.py +72 -0
- surfacetopography-0.0.0/test/IO/test_api.py +36 -0
- surfacetopography-0.0.0/test/IO/test_asc.py +162 -0
- surfacetopography-0.0.0/test/IO/test_bcr.py +76 -0
- surfacetopography-0.0.0/test/IO/test_container.py +212 -0
- surfacetopography-0.0.0/test/IO/test_csv.py +73 -0
- surfacetopography-0.0.0/test/IO/test_datx.py +79 -0
- surfacetopography-0.0.0/test/IO/test_di.py +63 -0
- surfacetopography-0.0.0/test/IO/test_dzi.py +399 -0
- surfacetopography-0.0.0/test/IO/test_ezd.py +84 -0
- surfacetopography-0.0.0/test/IO/test_frt.py +112 -0
- surfacetopography-0.0.0/test/IO/test_gwy.py +90 -0
- surfacetopography-0.0.0/test/IO/test_h5.py +74 -0
- surfacetopography-0.0.0/test/IO/test_hgt.py +42 -0
- surfacetopography-0.0.0/test/IO/test_ibw.py +206 -0
- surfacetopography-0.0.0/test/IO/test_io.py +861 -0
- surfacetopography-0.0.0/test/IO/test_jpk.py +106 -0
- surfacetopography-0.0.0/test/IO/test_lext.py +108 -0
- surfacetopography-0.0.0/test/IO/test_mat.py +50 -0
- surfacetopography-0.0.0/test/IO/test_metropro.py +75 -0
- surfacetopography-0.0.0/test/IO/test_mi.py +109 -0
- surfacetopography-0.0.0/test/IO/test_mitutoyo.py +279 -0
- surfacetopography-0.0.0/test/IO/test_nc.py +203 -0
- surfacetopography-0.0.0/test/IO/test_nmm.py +54 -0
- surfacetopography-0.0.0/test/IO/test_npy.py +175 -0
- surfacetopography-0.0.0/test/IO/test_oir.py +104 -0
- surfacetopography-0.0.0/test/IO/test_opd.py +62 -0
- surfacetopography-0.0.0/test/IO/test_opdx.py +172 -0
- surfacetopography-0.0.0/test/IO/test_plu.py +76 -0
- surfacetopography-0.0.0/test/IO/test_plux.py +78 -0
- surfacetopography-0.0.0/test/IO/test_ps.py +58 -0
- surfacetopography-0.0.0/test/IO/test_sur.py +148 -0
- surfacetopography-0.0.0/test/IO/test_vk.py +114 -0
- surfacetopography-0.0.0/test/IO/test_wsxm.py +90 -0
- surfacetopography-0.0.0/test/IO/test_x3p.py +103 -0
- surfacetopography-0.0.0/test/IO/test_xyz.py +130 -0
- surfacetopography-0.0.0/test/IO/test_zag.py +45 -0
- surfacetopography-0.0.0/test/IO/test_zon.py +75 -0
- surfacetopography-0.0.0/test/Models/__inits__.py +28 -0
- surfacetopography-0.0.0/test/Models/test_selfaffine.py +167 -0
- surfacetopography-0.0.0/test/__init__.py +26 -0
- surfacetopography-0.0.0/test/compare-orientation-with-gwyddion.py +102 -0
- surfacetopography-0.0.0/test/conftest.py +79 -0
- surfacetopography-0.0.0/test/contact_map.txt.gz +0 -0
- surfacetopography-0.0.0/test/test_api.py +267 -0
- surfacetopography-0.0.0/test/test_autocorrelation.py +404 -0
- surfacetopography-0.0.0/test/test_bearing_area.py +250 -0
- surfacetopography-0.0.0/test/test_bicubic_interpolation.py +190 -0
- surfacetopography-0.0.0/test/test_container.py +47 -0
- surfacetopography-0.0.0/test/test_derivatives.py +442 -0
- surfacetopography-0.0.0/test/test_filtering.py +219 -0
- surfacetopography-0.0.0/test/test_generation.py +326 -0
- surfacetopography-0.0.0/test/test_geometry_analysis.py +336 -0
- surfacetopography-0.0.0/test/test_import.py +49 -0
- surfacetopography-0.0.0/test/test_imputation.py +150 -0
- surfacetopography-0.0.0/test/test_linear_interpolation.py +100 -0
- surfacetopography-0.0.0/test/test_make_sphere.py +105 -0
- surfacetopography-0.0.0/test/test_make_topography_from_function.py +47 -0
- surfacetopography-0.0.0/test/test_missing_data.py +179 -0
- surfacetopography-0.0.0/test/test_nonuniform_line_scan.py +178 -0
- surfacetopography-0.0.0/test/test_parallel.py +82 -0
- surfacetopography-0.0.0/test/test_pipeline.py +334 -0
- surfacetopography-0.0.0/test/test_power_spectrum.py +456 -0
- surfacetopography-0.0.0/test/test_reentrant.py +42 -0
- surfacetopography-0.0.0/test/test_regression.py +88 -0
- surfacetopography-0.0.0/test/test_reliability_cutoff.py +492 -0
- surfacetopography-0.0.0/test/test_robust_statistics.py +131 -0
- surfacetopography-0.0.0/test/test_scalar_parameters.py +941 -0
- surfacetopography-0.0.0/test/test_scalar_parameters_container.py +558 -0
- surfacetopography-0.0.0/test/test_scale_dependent_statistics.py +444 -0
- surfacetopography-0.0.0/test/test_scanning_probe.py +70 -0
- surfacetopography-0.0.0/test/test_slope.py +70 -0
- surfacetopography-0.0.0/test/test_support.py +14 -0
- surfacetopography-0.0.0/test/test_topography.py +823 -0
- surfacetopography-0.0.0/test/test_uniform_line_scan.py +196 -0
- surfacetopography-0.0.0/test/test_unit_conversion.py +77 -0
- surfacetopography-0.0.0/test/test_usage_sample.py +55 -0
- surfacetopography-0.0.0/test/test_variable_bandwidth.py +204 -0
- surfacetopography-0.0.0/tools/wheels/README.md +3 -0
- surfacetopography-0.0.0/tools/wheels/cibw_before_all_cp38_macosx_arm64.sh +4 -0
- surfacetopography-0.0.0/tools/wheels/release-wheels.sh +36 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import sys
|
|
2
|
+
|
|
3
|
+
import muGrid
|
|
4
|
+
|
|
5
|
+
mpi_required = sys.argv[1] in ["yes", "1"]
|
|
6
|
+
|
|
7
|
+
print('`muGrid` imported successfully')
|
|
8
|
+
print(f'muGrid version: {muGrid.__version__}')
|
|
9
|
+
|
|
10
|
+
if mpi_required:
|
|
11
|
+
# Make sure that we have the parallel version running
|
|
12
|
+
assert muGrid.has_mpi, "MPI support is required but muGrid.has_mpi is False"
|
|
13
|
+
print('MPI support: enabled')
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
name: Check coding conventions with flake8
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- '**'
|
|
7
|
+
tags:
|
|
8
|
+
- '**'
|
|
9
|
+
pull_request:
|
|
10
|
+
branches:
|
|
11
|
+
- '**'
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
tests:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v6
|
|
19
|
+
with:
|
|
20
|
+
fetch-depth: 0
|
|
21
|
+
|
|
22
|
+
submodules: recursive
|
|
23
|
+
|
|
24
|
+
- name: Install dependencies
|
|
25
|
+
run: |
|
|
26
|
+
sudo apt-get update -qy
|
|
27
|
+
sudo apt-get install -y flake8
|
|
28
|
+
|
|
29
|
+
- name: Flake8
|
|
30
|
+
run: |
|
|
31
|
+
flake8 SurfaceTopography test
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
name: Publish
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- master
|
|
7
|
+
tags:
|
|
8
|
+
- '*'
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
build:
|
|
12
|
+
runs-on: ubuntu-24.04
|
|
13
|
+
|
|
14
|
+
steps:
|
|
15
|
+
- uses: actions/checkout@v6
|
|
16
|
+
with:
|
|
17
|
+
fetch-depth: 0
|
|
18
|
+
submodules: recursive
|
|
19
|
+
|
|
20
|
+
- name: Installing Python
|
|
21
|
+
run: |
|
|
22
|
+
sudo apt-get update -qy
|
|
23
|
+
sudo apt-get install -y \
|
|
24
|
+
python3-dev \
|
|
25
|
+
python3-pip \
|
|
26
|
+
python3-venv \
|
|
27
|
+
meson \
|
|
28
|
+
ninja-build
|
|
29
|
+
python3 -m venv ../venv
|
|
30
|
+
source ../venv/bin/activate
|
|
31
|
+
pip install build
|
|
32
|
+
|
|
33
|
+
- name: Build package
|
|
34
|
+
run: |
|
|
35
|
+
source ../venv/bin/activate
|
|
36
|
+
python3 -m build . -s
|
|
37
|
+
|
|
38
|
+
- name: Install extension module
|
|
39
|
+
run: |
|
|
40
|
+
source ../venv/bin/activate
|
|
41
|
+
pip install dist/*.tar.gz
|
|
42
|
+
|
|
43
|
+
- name: Install sphinx
|
|
44
|
+
run: |
|
|
45
|
+
source ../venv/bin/activate
|
|
46
|
+
pip install sphinx sphinx_rtd_theme
|
|
47
|
+
|
|
48
|
+
- name: Build documentation
|
|
49
|
+
run: |
|
|
50
|
+
source ../venv/bin/activate
|
|
51
|
+
cd docs
|
|
52
|
+
sphinx-apidoc -o source/ ../SurfaceTopography
|
|
53
|
+
make html
|
|
54
|
+
cd ..
|
|
55
|
+
|
|
56
|
+
- name: Commit documentation changes
|
|
57
|
+
run: |
|
|
58
|
+
git clone https://github.com/ContactEngineering/SurfaceTopography.git --branch gh-pages --single-branch gh-pages
|
|
59
|
+
cp -r docs/_build/html/* gh-pages/
|
|
60
|
+
cd gh-pages
|
|
61
|
+
git config --local user.email "action@github.com"
|
|
62
|
+
git config --local user.name "GitHub Action"
|
|
63
|
+
git add .
|
|
64
|
+
git commit -m "Update documentation" -a || true
|
|
65
|
+
# The above command will fail if no changes were present, so we ignore
|
|
66
|
+
# that.
|
|
67
|
+
|
|
68
|
+
- name: Push documentation changes
|
|
69
|
+
uses: ad-m/github-push-action@master
|
|
70
|
+
with:
|
|
71
|
+
branch: gh-pages
|
|
72
|
+
directory: gh-pages
|
|
73
|
+
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
74
|
+
|
|
75
|
+
- name: Publish package
|
|
76
|
+
if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags')
|
|
77
|
+
uses: pypa/gh-action-pypi-publish@master
|
|
78
|
+
with:
|
|
79
|
+
user: __token__
|
|
80
|
+
password: ${{ secrets.PYPI_PASSWORD }}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
name: Test code functionality
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- '**'
|
|
7
|
+
tags:
|
|
8
|
+
- '**'
|
|
9
|
+
pull_request:
|
|
10
|
+
branches:
|
|
11
|
+
- '**'
|
|
12
|
+
schedule:
|
|
13
|
+
- cron: "0 2 * * 5"
|
|
14
|
+
jobs:
|
|
15
|
+
tests:
|
|
16
|
+
runs-on: ubuntu-24.04
|
|
17
|
+
timeout-minutes: 45
|
|
18
|
+
|
|
19
|
+
strategy:
|
|
20
|
+
matrix:
|
|
21
|
+
mpi: ['no', 'mpi']
|
|
22
|
+
python-version: ['3.10', '3.11', '3.12', '3.13', '3.14']
|
|
23
|
+
mpi4py-version: [4.0.3]
|
|
24
|
+
|
|
25
|
+
steps:
|
|
26
|
+
- uses: actions/checkout@v6
|
|
27
|
+
with:
|
|
28
|
+
fetch-depth: 0
|
|
29
|
+
submodules: recursive
|
|
30
|
+
|
|
31
|
+
- name: Set up python3 ${{ matrix.python-version }}
|
|
32
|
+
uses: actions/setup-python@v6
|
|
33
|
+
with:
|
|
34
|
+
python-version: ${{ matrix.python-version }}
|
|
35
|
+
|
|
36
|
+
- name: Install dependencies
|
|
37
|
+
run: |
|
|
38
|
+
sudo apt-get update -qy
|
|
39
|
+
python3 -m venv venv
|
|
40
|
+
source venv/bin/activate
|
|
41
|
+
python3 -m pip install --upgrade pip pip-tools meson build
|
|
42
|
+
if [ "${{ matrix.mpi }}" == "yes" ]; then
|
|
43
|
+
sudo apt-get install -y \
|
|
44
|
+
openmpi-bin \
|
|
45
|
+
libopenmpi-dev \
|
|
46
|
+
libfftw3-dev \
|
|
47
|
+
libfftw3-mpi-dev \
|
|
48
|
+
libhdf5-mpi-dev \
|
|
49
|
+
libpnetcdf-dev \
|
|
50
|
+
libnetcdf-pnetcdf-dev \
|
|
51
|
+
meson \
|
|
52
|
+
ninja-build
|
|
53
|
+
# Compute mpi4py, numpy and muGrid versions
|
|
54
|
+
pip-compile pyproject.toml
|
|
55
|
+
NUMPY_VERSION=$(grep 'numpy==' requirements.txt)
|
|
56
|
+
MUGRID_VERSION=$(grep 'mugrid==' requirements.txt)
|
|
57
|
+
echo "numpy version: ${NUMPY_VERSION}"
|
|
58
|
+
echo "muGrid version: ${MUGRID_VERSION}"
|
|
59
|
+
# Install numpy
|
|
60
|
+
pip install -v ${NUMPY_VERSION}
|
|
61
|
+
# Install mpi4py
|
|
62
|
+
echo "Installing mpi4py==${{ matrix.mpi4py-version }}"
|
|
63
|
+
CC=mpicc python3 -m pip install -v \
|
|
64
|
+
--no-binary mpi4py \
|
|
65
|
+
mpi4py==${{ matrix.mpi4py-version }}
|
|
66
|
+
# Manually install muGrid with MPI enabled
|
|
67
|
+
echo "Installing ${MUGRID_VERSION}"
|
|
68
|
+
pip install -v --no-binary muGrid ${MUGRID_VERSION}
|
|
69
|
+
else
|
|
70
|
+
sudo apt-get install -y \
|
|
71
|
+
libfftw3-dev \
|
|
72
|
+
libhdf5-dev \
|
|
73
|
+
libnetcdf-dev
|
|
74
|
+
fi
|
|
75
|
+
python3 -m pip list
|
|
76
|
+
|
|
77
|
+
- name: Install extension module
|
|
78
|
+
run: |
|
|
79
|
+
source venv/bin/activate
|
|
80
|
+
python3 -m pip install .[test]
|
|
81
|
+
|
|
82
|
+
- name: Test with pytest
|
|
83
|
+
run: |
|
|
84
|
+
source venv/bin/activate
|
|
85
|
+
python3 .check_mufft_capabilities.py ${{ matrix.mpi }}
|
|
86
|
+
if [ "${{ matrix.mpi }}" == "yes" ]; then python3 run-tests.py --no-build --verbose --full-trace; else python3 -m pytest --verbose --full-trace -s; fi
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
name: Test build and install of source package
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- '**'
|
|
7
|
+
tags:
|
|
8
|
+
- '**'
|
|
9
|
+
pull_request:
|
|
10
|
+
branches:
|
|
11
|
+
- '**'
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
tests:
|
|
15
|
+
runs-on: ubuntu-24.04
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v6
|
|
19
|
+
with:
|
|
20
|
+
fetch-depth: 0
|
|
21
|
+
submodules: recursive
|
|
22
|
+
|
|
23
|
+
- name: Installing Python
|
|
24
|
+
run: |
|
|
25
|
+
sudo apt-get update -qy
|
|
26
|
+
sudo apt-get install -y \
|
|
27
|
+
python3-dev \
|
|
28
|
+
python3-pip \
|
|
29
|
+
python3-venv \
|
|
30
|
+
ninja-build
|
|
31
|
+
python3 -m venv ../venv
|
|
32
|
+
source ../venv/bin/activate
|
|
33
|
+
python3 -m pip install --upgrade pip pip-tools meson build
|
|
34
|
+
|
|
35
|
+
- name: Build package
|
|
36
|
+
run: |
|
|
37
|
+
source ../venv/bin/activate
|
|
38
|
+
python3 -m build . -s
|
|
39
|
+
|
|
40
|
+
- name: Install package
|
|
41
|
+
run: |
|
|
42
|
+
source ../venv/bin/activate
|
|
43
|
+
pip install -v dist/*.tar.gz
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
name: Wheels
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- '**'
|
|
7
|
+
tags:
|
|
8
|
+
- '**'
|
|
9
|
+
pull_request:
|
|
10
|
+
branches:
|
|
11
|
+
- '**'
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
build_wheels:
|
|
15
|
+
name: Build wheel for ${{ matrix.python }}-${{ matrix.buildplat[1] }} ${{ matrix.buildplat[2] }}
|
|
16
|
+
runs-on: ${{ matrix.buildplat[0] }}
|
|
17
|
+
strategy:
|
|
18
|
+
matrix:
|
|
19
|
+
buildplat:
|
|
20
|
+
- [ubuntu-22.04, manylinux, x86_64]
|
|
21
|
+
- [ubuntu-22.04, manylinux, aarch64]
|
|
22
|
+
- [macos-14, macosx, arm64]
|
|
23
|
+
- [windows-2022, win, AMD64]
|
|
24
|
+
- [windows-2022, win, ARM64]
|
|
25
|
+
python: ["cp310", "cp311", "cp312", "cp313", "cp314"]
|
|
26
|
+
fail-fast: false
|
|
27
|
+
|
|
28
|
+
env:
|
|
29
|
+
IS_32_BIT: ${{ matrix.buildplat[2] == 'x86' }}
|
|
30
|
+
MACOSX_DEPLOYMENT_TARGET: "14.0"
|
|
31
|
+
|
|
32
|
+
steps:
|
|
33
|
+
- if: matrix.buildplat[2] == 'aarch64'
|
|
34
|
+
uses: docker/setup-qemu-action@v3
|
|
35
|
+
with:
|
|
36
|
+
platforms: all
|
|
37
|
+
|
|
38
|
+
- uses: actions/checkout@v6
|
|
39
|
+
with:
|
|
40
|
+
fetch-depth: 0
|
|
41
|
+
submodules: recursive
|
|
42
|
+
|
|
43
|
+
- uses: actions/setup-python@v6
|
|
44
|
+
with:
|
|
45
|
+
python-version: '3.14'
|
|
46
|
+
|
|
47
|
+
- name: Get version from DiscoverVersion
|
|
48
|
+
id: get_version
|
|
49
|
+
run: |
|
|
50
|
+
pip install DiscoverVersion
|
|
51
|
+
echo "version=$(python -m DiscoverVersion)" >> $GITHUB_OUTPUT
|
|
52
|
+
shell: bash
|
|
53
|
+
|
|
54
|
+
- name: Build wheels
|
|
55
|
+
uses: pypa/cibuildwheel@v3.3.1
|
|
56
|
+
env:
|
|
57
|
+
CIBW_BUILD: ${{ matrix.python }}-${{ matrix.buildplat[1] }}*
|
|
58
|
+
CIBW_ARCHS: ${{ matrix.buildplat[2] }}
|
|
59
|
+
CIBW_ENVIRONMENT: DISCOVER_VERSION=${{ steps.get_version.outputs.version }}
|
|
60
|
+
CIBW_ENVIRONMENT_PASS_LINUX: RUNNER_OS DISCOVER_VERSION
|
|
61
|
+
CIBW_BEFORE_BUILD_WINDOWS: pip install delvewheel
|
|
62
|
+
CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: delvewheel repair -w {dest_dir} {wheel}
|
|
63
|
+
CIBW_TEST_COMMAND: python -c "import SurfaceTopography; print(SurfaceTopography.__version__)"
|
|
64
|
+
CIBW_TEST_SKIP: "*-*linux_{aarch64,ppc64le,s390x}"
|
|
65
|
+
|
|
66
|
+
- uses: actions/upload-artifact@v6
|
|
67
|
+
with:
|
|
68
|
+
path: ./wheelhouse/*.whl
|
|
69
|
+
name: ${{ matrix.python }}-${{ matrix.buildplat[1] }}-${{ matrix.buildplat[2] }}
|
|
70
|
+
|
|
71
|
+
- name: Release wheels
|
|
72
|
+
uses: softprops/action-gh-release@v2
|
|
73
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
74
|
+
with:
|
|
75
|
+
files: wheelhouse/*.whl
|
|
76
|
+
env:
|
|
77
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
78
|
+
|
|
79
|
+
- name: Check tag
|
|
80
|
+
id: check-tag
|
|
81
|
+
run: |
|
|
82
|
+
if [[ ${{ github.ref }} =~ ^refs/tags/[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
|
83
|
+
echo ::set-output name=match::true
|
|
84
|
+
fi
|
|
85
|
+
shell: bash
|
|
86
|
+
|
|
87
|
+
- name: Deploy to PyPI
|
|
88
|
+
if: steps.check-tag.outputs.match == 'true'
|
|
89
|
+
run: |
|
|
90
|
+
pip install twine
|
|
91
|
+
twine upload wheelhouse/*.whl
|
|
92
|
+
env:
|
|
93
|
+
TWINE_USERNAME: __token__
|
|
94
|
+
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
|
|
95
|
+
shell: bash
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
*~
|
|
2
|
+
*.pyc
|
|
3
|
+
*.cpython*.so
|
|
4
|
+
__pycache__
|
|
5
|
+
../build
|
|
6
|
+
dist
|
|
7
|
+
*egg-info
|
|
8
|
+
/tests/*.png
|
|
9
|
+
/helpers/*.png
|
|
10
|
+
/helpers/*.png.pdf
|
|
11
|
+
/helpers/figs.pdf
|
|
12
|
+
/notes/*/_region_*
|
|
13
|
+
/notes/*/auto
|
|
14
|
+
/notes/*/*.aux
|
|
15
|
+
/notes/*/*.bbl
|
|
16
|
+
/notes/*/*.blg
|
|
17
|
+
/notes/*/*.log
|
|
18
|
+
/notes/power_spectrum/power_spectrum.pdf
|
|
19
|
+
/notes/power_spectrum/prv*
|
|
20
|
+
/notes/auto/biblio.el
|
|
21
|
+
/helpers/.ipynb_checkpoints/
|
|
22
|
+
*.pyc
|
|
23
|
+
.eggs
|
|
24
|
+
.idea
|
|
25
|
+
.vscode
|
|
26
|
+
build
|
|
27
|
+
docs/_build
|
|
28
|
+
/subprojects/*
|
|
29
|
+
!/subprojects/*.wrap
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
Lintao Fang <michaelfanglt@gmail.com>
|
|
2
|
+
Kai Haase <k.o.haase@googlemail.com>
|
|
3
|
+
Johannes Hörmann <johannes.hoermann@imtek.uni-freiburg.de>
|
|
4
|
+
Till Junge <till.junge@altermail.ch>
|
|
5
|
+
Till Junge <till.junge@kit.edu>
|
|
6
|
+
Till Junge <junge@Festwemse-3>
|
|
7
|
+
Till Junge <junge@cmsjunge>
|
|
8
|
+
Lars Pastewka <lars.pastewka@kit.edu>
|
|
9
|
+
Lars Pastewka <lars.pastewka@imtek.uni-freiburg.de>
|
|
10
|
+
Lars Pastewka <lars.pastewka@surface.design>
|
|
11
|
+
Michael Röttger <info@michael-roettger.de>
|
|
12
|
+
Antoine Sanner <antoine.sanner@imtek.uni-freiburg.de>
|
|
13
|
+
Antoine Sanner <asanner@ethz.ch>
|
|
14
|
+
Paul Strauch <paul-strauch@gmx.de>
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
### MIT license
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
5
|
+
in the Software without restriction, including without limitation the rights
|
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
8
|
+
furnished to do so, subject to the following conditions:
|
|
9
|
+
|
|
10
|
+
The above copyright notice and this permission notice shall be included in
|
|
11
|
+
all copies or substantial portions of the Software.
|
|
12
|
+
|
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
19
|
+
SOFTWARE.
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: SurfaceTopography
|
|
3
|
+
Version: 0.0.0
|
|
4
|
+
Summary: Read and analyze surface topographies
|
|
5
|
+
Author-Email: Lars Pastewka <lars.pastewka@imtek.uni-freiburg.de>, Kai Haase <k.o.haase@googlemail.com>, =?utf-8?q?Johannes_H=C3=B6rmann?= <johannes.hoermann@imtek.uni-freiburg.de>, Till Junge <till.junge@altermail.ch>, =?utf-8?q?Michael_R=C3=B6ttger?= <info@michael-roettger.de>, Antoine Sanner <antoine.sanner@imtek.uni-freiburg.de>
|
|
6
|
+
License: ### MIT license
|
|
7
|
+
|
|
8
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
9
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
10
|
+
in the Software without restriction, including without limitation the rights
|
|
11
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
12
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
13
|
+
furnished to do so, subject to the following conditions:
|
|
14
|
+
|
|
15
|
+
The above copyright notice and this permission notice shall be included in
|
|
16
|
+
all copies or substantial portions of the Software.
|
|
17
|
+
|
|
18
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
19
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
20
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
21
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
22
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
23
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
24
|
+
SOFTWARE.
|
|
25
|
+
|
|
26
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
27
|
+
Classifier: Programming Language :: Python
|
|
28
|
+
Project-URL: documentation, https://contactengineering.github.io/SurfaceTopography/
|
|
29
|
+
Project-URL: repository, https://github.com/ContactEngineering/SurfaceTopography
|
|
30
|
+
Project-URL: changelog, https://github.com/ContactEngineering/SurfaceTopography/blob/master/SurfaceTopography/ChangeLog.md
|
|
31
|
+
Requires-Python: >=3.10.0
|
|
32
|
+
Requires-Dist: numpy>=2.0.0
|
|
33
|
+
Requires-Dist: scipy>=1.9.0
|
|
34
|
+
Requires-Dist: defusedxml
|
|
35
|
+
Requires-Dist: h5py
|
|
36
|
+
Requires-Dist: igor2
|
|
37
|
+
Requires-Dist: matplotlib>=1.0.0
|
|
38
|
+
Requires-Dist: muGrid>=0.103.0
|
|
39
|
+
Requires-Dist: NuMPI>=0.9.0
|
|
40
|
+
Requires-Dist: numpyencoder
|
|
41
|
+
Requires-Dist: openpyxl
|
|
42
|
+
Requires-Dist: Pillow
|
|
43
|
+
Requires-Dist: python-dateutil
|
|
44
|
+
Requires-Dist: pyyaml
|
|
45
|
+
Requires-Dist: requests
|
|
46
|
+
Requires-Dist: tiffile
|
|
47
|
+
Requires-Dist: xmltodict
|
|
48
|
+
Requires-Dist: pandas
|
|
49
|
+
Requires-Dist: pydantic
|
|
50
|
+
Requires-Dist: zstandard
|
|
51
|
+
Provides-Extra: test
|
|
52
|
+
Requires-Dist: flake8<8; extra == "test"
|
|
53
|
+
Requires-Dist: pytest; extra == "test"
|
|
54
|
+
Requires-Dist: pytest-cov; extra == "test"
|
|
55
|
+
Requires-Dist: pytest-flake8; extra == "test"
|
|
56
|
+
Requires-Dist: runtests; extra == "test"
|
|
57
|
+
Description-Content-Type: text/markdown
|
|
58
|
+
|
|
59
|
+
[](https://github.com/ContactEngineering/SurfaceTopography/actions/workflows/tests.yml)
|
|
60
|
+
|
|
61
|
+
[](https://deepwiki.com/ContactEngineering/SurfaceTopography)
|
|
62
|
+
|
|
63
|
+
SurfaceTopography
|
|
64
|
+
=================
|
|
65
|
+
|
|
66
|
+
*Read and analyze surface topographies with Python.* This code implements basic classes for handling uniform and
|
|
67
|
+
nonuniform surface topography data. It contains a rich set of import filters for experimental surface topography data.
|
|
68
|
+
Surface topographies can be easily analyzed using standard (rms height, power spectrum, ...) and some special purpose
|
|
69
|
+
(autocorrelation function, variable bandwidth analysis, ...) statistical techniques.
|
|
70
|
+
|
|
71
|
+
If you use this code, please cite:
|
|
72
|
+
* [Jacobs, Junge, Pastewka, Surf. Topogr. Metrol. Prop. 1, 013001 (2017)](https://doi.org/10.1088/2051-672X/aa51f8)
|
|
73
|
+
* [Röttger el al., Surf. Topogr. Metrol. Prop. 10, 035032 (2022)](https://doi.org/10.1088/2051-672X/ac860a)
|
|
74
|
+
|
|
75
|
+
Documentation
|
|
76
|
+
-------------
|
|
77
|
+
|
|
78
|
+
This README file contains a brief introduction into the code. The full documentation can be found at https://contactengineering.github.io/SurfaceTopography/.
|
|
79
|
+
|
|
80
|
+
Installation
|
|
81
|
+
------------
|
|
82
|
+
|
|
83
|
+
Detailed instruction for the installation are provided in the [documentation](https://contactengineering.github.io/SurfaceTopography/installation.html?highlight=installation). If you want to install from source
|
|
84
|
+
you need to run `git submodule update --init` after a fresh checkout.
|
|
85
|
+
|
|
86
|
+
The most basic configuration of SurfaceTopography installs all requirements autonomously `python3 -m pip install SurfaceTopgography`
|
|
87
|
+
|
|
88
|
+
If you need an editable install (e.g. for development purposes), make sure you disable build isolation:
|
|
89
|
+
|
|
90
|
+
python3 -m pip install --no-build-isolation -e .
|
|
91
|
+
|
|
92
|
+
You need to manually install `ninja`, `meson-python`, `pytest`, `runtests`, `DiscoverVersion` and `numpy` before:
|
|
93
|
+
|
|
94
|
+
python3 -m pip install ninja meson-python pytest runtests DiscoverVersion numpy
|
|
95
|
+
|
|
96
|
+
Funding
|
|
97
|
+
-------
|
|
98
|
+
|
|
99
|
+
Development of this project is funded by the [European Research Council](https://erc.europa.eu) within [Starting Grant 757343](https://cordis.europa.eu/project/id/757343) and by the [Deutsche Forschungsgemeinschaft](https://www.dfg.de/en) within projects [PA 2023/2](https://gepris.dfg.de/gepris/projekt/258153560) and [EXC 2193](https://gepris.dfg.de/gepris/projekt/390951807).
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
[](https://github.com/ContactEngineering/SurfaceTopography/actions/workflows/tests.yml)
|
|
2
|
+
|
|
3
|
+
[](https://deepwiki.com/ContactEngineering/SurfaceTopography)
|
|
4
|
+
|
|
5
|
+
SurfaceTopography
|
|
6
|
+
=================
|
|
7
|
+
|
|
8
|
+
*Read and analyze surface topographies with Python.* This code implements basic classes for handling uniform and
|
|
9
|
+
nonuniform surface topography data. It contains a rich set of import filters for experimental surface topography data.
|
|
10
|
+
Surface topographies can be easily analyzed using standard (rms height, power spectrum, ...) and some special purpose
|
|
11
|
+
(autocorrelation function, variable bandwidth analysis, ...) statistical techniques.
|
|
12
|
+
|
|
13
|
+
If you use this code, please cite:
|
|
14
|
+
* [Jacobs, Junge, Pastewka, Surf. Topogr. Metrol. Prop. 1, 013001 (2017)](https://doi.org/10.1088/2051-672X/aa51f8)
|
|
15
|
+
* [Röttger el al., Surf. Topogr. Metrol. Prop. 10, 035032 (2022)](https://doi.org/10.1088/2051-672X/ac860a)
|
|
16
|
+
|
|
17
|
+
Documentation
|
|
18
|
+
-------------
|
|
19
|
+
|
|
20
|
+
This README file contains a brief introduction into the code. The full documentation can be found at https://contactengineering.github.io/SurfaceTopography/.
|
|
21
|
+
|
|
22
|
+
Installation
|
|
23
|
+
------------
|
|
24
|
+
|
|
25
|
+
Detailed instruction for the installation are provided in the [documentation](https://contactengineering.github.io/SurfaceTopography/installation.html?highlight=installation). If you want to install from source
|
|
26
|
+
you need to run `git submodule update --init` after a fresh checkout.
|
|
27
|
+
|
|
28
|
+
The most basic configuration of SurfaceTopography installs all requirements autonomously `python3 -m pip install SurfaceTopgography`
|
|
29
|
+
|
|
30
|
+
If you need an editable install (e.g. for development purposes), make sure you disable build isolation:
|
|
31
|
+
|
|
32
|
+
python3 -m pip install --no-build-isolation -e .
|
|
33
|
+
|
|
34
|
+
You need to manually install `ninja`, `meson-python`, `pytest`, `runtests`, `DiscoverVersion` and `numpy` before:
|
|
35
|
+
|
|
36
|
+
python3 -m pip install ninja meson-python pytest runtests DiscoverVersion numpy
|
|
37
|
+
|
|
38
|
+
Funding
|
|
39
|
+
-------
|
|
40
|
+
|
|
41
|
+
Development of this project is funded by the [European Research Council](https://erc.europa.eu) within [Starting Grant 757343](https://cordis.europa.eu/project/id/757343) and by the [Deutsche Forschungsgemeinschaft](https://www.dfg.de/en) within projects [PA 2023/2](https://gepris.dfg.de/gepris/projekt/258153560) and [EXC 2193](https://gepris.dfg.de/gepris/projekt/390951807).
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import argparse
|
|
2
|
+
|
|
3
|
+
from matplotlib import pyplot as plt
|
|
4
|
+
|
|
5
|
+
from SurfaceTopography.IO import read_topography
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
def main():
|
|
9
|
+
parser = argparse.ArgumentParser(
|
|
10
|
+
prog="show-topography", description="Visualize a surface topography"
|
|
11
|
+
)
|
|
12
|
+
parser.add_argument('filename')
|
|
13
|
+
args = parser.parse_args()
|
|
14
|
+
|
|
15
|
+
t = read_topography(args.filename)
|
|
16
|
+
t.plot()
|
|
17
|
+
plt.show()
|
|
File without changes
|