{"id":19270640,"url":"https://github.com/emanuelhuber/rgpr","last_synced_at":"2025-04-13T05:06:00.902Z","repository":{"id":33786648,"uuid":"37463448","full_name":"emanuelhuber/RGPR","owner":"emanuelhuber","description":"Ground-penetrating radar (GPR) data processing and visualisation: a free and open-source software package (R language)","archived":false,"fork":false,"pushed_at":"2025-03-16T21:07:11.000Z","size":172200,"stargazers_count":177,"open_issues_count":3,"forks_count":53,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-04-13T05:05:44.390Z","etag":null,"topics":["dsp","geophysics","gpr","gpr-data","ground-penetrating-radar","open-source","package","process","processing","r","signal","signal-processing","software"],"latest_commit_sha":null,"homepage":"http://emanuelhuber.github.io/RGPR/","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/emanuelhuber.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2015-06-15T12:23:05.000Z","updated_at":"2025-04-12T10:39:24.000Z","dependencies_parsed_at":"2023-02-15T12:31:27.272Z","dependency_job_id":"38c42767-ffeb-4c7c-907c-2f988e69df26","html_url":"https://github.com/emanuelhuber/RGPR","commit_stats":{"total_commits":1050,"total_committers":7,"mean_commits":150.0,"dds":0.07333333333333336,"last_synced_commit":"64c7c2e60441cd0e0a24b1b2033b6a0a13a1465f"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emanuelhuber%2FRGPR","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emanuelhuber%2FRGPR/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emanuelhuber%2FRGPR/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/emanuelhuber%2FRGPR/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/emanuelhuber","download_url":"https://codeload.github.com/emanuelhuber/RGPR/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248665749,"owners_count":21142123,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dsp","geophysics","gpr","gpr-data","ground-penetrating-radar","open-source","package","process","processing","r","signal","signal-processing","software"],"created_at":"2024-11-09T20:26:12.695Z","updated_at":"2025-04-13T05:06:00.872Z","avatar_url":"https://github.com/emanuelhuber.png","language":"R","readme":"# [RGPR](http://emanuelhuber.github.io/RGPR): a free and open-source software package for ground-penetrating radar (GPR) data processing\n\n**If you have any questions, comments or suggestions, feel free to contact me (in english, french or german):**\n**emanuel.huber@pm.me**\n\n\u003e I am developing this package on my free time as a gift to the GPR community. Any support will be appreciated! \n\n\n[![](https://bmc-cdn.nyc3.digitaloceanspaces.com/BMC-button-images/custom_images/orange_img.png)](https://www.buymeacoffee.com/EmanuelHuber)\n\n[Buy me a coffee with Paypal](https://www.paypal.com/donate/?hosted_button_id=ZGSWR9SLV4MM2)\n\n\n\n[RGPR](http://emanuelhuber.github.io/RGPR) is a free and open-source software package to read, export, analyse, process and visualise *ground-penetrating radar* (GPR) data. [RGPR](http://emanuelhuber.github.io/RGPR) is written in [R](https://cran.r-project.org/), a high-level  programming language for statistical computing and graphics that is freely available under the GNU General Public License and runs on Linux, Windows and MacOS. [R](https://cran.r-project.org/) is a interpreted scripting language (not compiled) in the same veine as python or matlab.\n\n[RGPR](http://emanuelhuber.github.io/RGPR) was initially developed to compensate for shortcomings of commercial GPR data processing applications. The  ultimate  goal  of  [RGPR](http://emanuelhuber.github.io/RGPR)  is  to  promote  GPR  related research   by   providing   access   to the flexible   and   rich   R environment.    [RGPR](http://emanuelhuber.github.io/RGPR)    has    also    a    didactic    vocation    by encouraging  students  and   researchers  to  learn  about GPR  signal  processing  through  various  tutorials  available  on the [RGPR](http://emanuelhuber.github.io/RGPR) GitHub repository and the R documentation (companion website with tutorials: http://emanuelhuber.github.io/RGPR).\n\n## Table of content\n\n\u003c!--ts--\u003e\n   * [How to cite](#how-to-cite)\n   * [Notes](#notes)\n      * [Supported file formats](#supported-binary-formats) \n      * [Current limitations](#current-limitations)\n      * [Yes, you can contribute](#yes-you-can-contribute)\n   * [Online tutorials](#online-tutorials)\n   * [How to install](#how-to-install)\n   * [Function overview](#function-overview)\n   * [Contributions](#contributions)\n\u003c!--te--\u003e\n\n\n## How to cite\n\n\u003e E. Huber and G. Hans (2018) RGPR — An open-source package to process and visualize GPR data. 17th International Conference on Ground Penetrating Radar (GPR), Switzerland, Rapperswil, 18-21 June 2018, pp. 1-4.\n\u003e doi: [10.1109/ICGPR.2018.8441658](https://doi.org/10.1109/ICGPR.2018.8441658)\n\n[PDF](https://emanuelhuber.github.io/publications/2018_huber-and-hans_RGPR-new-R-package_notes.pdf) [Poster](https://emanuelhuber.github.io/publications/poster_2018_huber-and-hans_RGPR-new-open-source-package.pdf)\n\nBibtex format\n\n```\n@INPROCEEDINGS{huber\u0026hans:2018,\nauthor    = {Emanuel Huber and Guillaume Hans},\nbooktitle = {2018 17th International Conference on Ground Penetrating Radar (GPR)},\ntitle     = {RGPR — An open-source package to process and visualize GPR data},\nyear      = {2018},\npages     = {1--4},\ndoi       = {10.1109/ICGPR.2018.8441658},\nISSN      = {2474-3844}}\n```\n\nMy current affiliation:\n\n```\nEmanuel Huber,\nGEOTEST AG\nBernstrasse 165\n3052 Zollikofen \nSwitzerland\n```\n\n## Notes\n\n### Faster plot function\n\nInstead of `plot(x)` use `plotFast(x)`!\n\n\n### Supported file formats (read only):\n\n- [X] [Sensors \u0026 Software](https://www.sensoft.ca) file format (**\\*.dt1**, **\\*.hd**, **\\*.gps**).\n- [X] [MALA](https://www.guidelinegeo.com/mala-ground-penetrating-radar-gpr/) file format (**\\*.rd3**, **\\*.rd7**, **\\*.rad**, **\\*.cor**).\n- [X] [ImpulseRadar](https://www.impulseradar.se) file format (**\\*.iprb**, **\\*.iprh**, **\\*.cor**, **\\*.time**, **\\*.mrk**).\n- [X] [GSSI](https://www.geophysical.com) file format (**\\*.dzt**, **\\*.dzx**).\n- [X] [Geomatrix Earth Science Ltd](https://www.geomatrix.co.uk/) file format (Utsi Electronics format) for the **GroundVue 3**, **7**, **100**, **250** and **400** as well as for the **TriVue** devices (**\\*.dat**, **\\*.hdr**, **\\*.gpt**, **\\*.gps**).\n- [x] [Radar Systems, Inc.](http://www.radsys.lv) Zond file format (**\\*.sgy**). **WARNING: it is not a version of the SEG-Y file format**.\n- [X] [IDS](https://idsgeoradar.com/) file format (**\\*.dt**, **\\*.gec**).\n- [X] [Transient Technologies](https://viy.ua/) file format (**\\*.sgpr**).\n- [X] [US Radar](https://usradar.com/) file format (**\\*.RA1**, **\\*.RA2** or **\\*.RAD**)\n- [X] [SEG-Y](https://en.wikipedia.org/wiki/SEG-Y) file format developed by the Society of Exploration Geophysicists (SEG) for storing geophysical data (**\\*.sgy**), also used by [Easy Radar USA](https://easyradusa.com)\n- [X] [SEG-2](https://seg.org/Portals/0/SEG/News%20and%20Resources/Technical%20Standards/seg_2.pdf) Pullan, S.E., 1990, Recommended standard for seismic (/radar) files in the personal computer environment: Geophysics, 55, no. 9, 1260–1271(**\\*.sg2**). Also used by US Radar with extensions \\*.RA1, \\*.RA2, \\*. RAD. \n- [X] [GPRmax](https://www.gprmax.com/): hdf5 file format with extension \\*.out (not well tested)\n- [X] [3dradar](http://3d-radar.com/): the manufacturer does not want to reveal the binary file format **\\*.3dra**. **Workaround**: export the GPR data in binary VOL format (**\\*.vol**)  with the examiner software -\u003e **still experimental**\n- [X] **R** internal format (**\\*.rds**).\n- [X] serialized **Python** object (**\\*.pkl**).\n- [X] [ENVI band sequential file format](https://www.harrisgeospatial.com/docs/ENVIImageFiles.html) (**\\*.dat**, **\\*.hdr**).\n- [X] ASCII (**\\*.txt**): \n  \t- either 3-column format (x, t, amplitude) \n    - or matrix-format (without header/rownames)\n- [ ] [Terra Zond](http://terrazond.ru/) binary file format (**\\*.trz**) -\u003e **we are working on it**\n    \nSee tutorial [Import GPR data](https://emanuelhuber.github.io/RGPR/00_RGPR_tutorial_import-GPR-data/).\n\n    \nDo you miss your preferred file format? Send me the file format description with a test file and I will adapt the RGPR-package to support this file format. \n\n\n### Supported export file formats\n\n- [X] [Sensors \u0026 Software](https://www.sensoft.ca) file format (**\\*.dt1**, **\\*.hd**).\n- [X] R internal format (**\\*.rds**).\n- [X] ASCII (**\\*.txt**): \n- [X] [SEG-Y](https://en.wikipedia.org/wiki/SEG-Y) file format (**\\*.sgy**)\n\n\n### Yes, you can contribute\n\n**This is an ongoing project.**\n\nTo report bugs and contribute to the development of [RGPR](http://emanuelhuber.github.io/RGPR), see [how to contribute](https://github.com/emanuelhuber/RGPR/blob/master/CONTRIBUTING.md).\n\nIf you have any questions, comments or suggestions, feel free to contact me (in english, french or german):\n\n**emanuel.huber@pm.me**\n\nThank you!\n\n## Online tutorials\nCheck the companion website for more info, tutorials, etc.\n\nhttp://emanuelhuber.github.io/RGPR\n\n## How to install\n\nYou must first install [R](https://cran.r-project.org/). Then, in R console, enter the following:\n\n```r\nif(!require(\"devtools\")) install.packages(\"devtools\")\ndevtools::install_github(\"emanuelhuber/RGPR\")\nlibrary(RGPR)\n\nfrenkeLine00  # data from the package\n\nplot(frenkeLine00)\n\n```\n\nAlternatively, you can download the package as a zip file and install it in R\nfollowing these instructions:\n\nhttps://riptutorial.com/r/example/5556/install-package-from-local-source\n\n## Function overview\n\n**NOTE: this overview is not up to date!! More functions than those listed below are available!** \n\nThe documentation is still incomplete (but check the tutorials, http://emanuelhuber.github.io/RGPR and do not hesitate to contact me if you need addtional informations)\n\n### Input/output functions\n* `readGPR()`: reads various GPR file formats (Sensors \u0026 Software, MALA, SEG-Y, ImpulseRadar, GSSI, Utsi Electronic, IDS, Tansient technology, serialized Python object, ENVI band sequential file format, ASCII, etc.)\n* `writeGPR()`: writes various GPR file format (Sensors \u0026 Software, R-format, ASCII, 'xyz')\n* `exportPDF()`: exports high quality pdf graphic\n* `exportDelineations()`: exports delineations\n* `exportFID()`: exports fiducial markers as ASCII-file\n* `exportCoord()`: exports coordinates as SpatialLines, SpatialPoints or ASCII-file\n* `exportProc()`: exports the processing steps as ASCII-file\n\n### Plot functions\n\n* GPR data\n  * 1D/2D: `plot()`, plotFast()`, `contour()`, `lines()`, `points()`\n  * 3D (plot in openGL): `plot3DRGL()`\n  * superposition of all traces: `trPlot()`\n* Amplitude: `plotAmpl()`\n* Spectrum:\n  * 1D frequency spectrum: `spec()`\n  * 2D frequency spectrum (frequency-wavenumber): `spec(x, type = \"f-k\")`\n* Delineations\n  * 2D: `plotDelineations()`\n  * 3D: `plot3DDelineations()`\n* Velocity layers: `plotVelocityLayers()`\n* Structure tensor: `plotTensor()`\n* Color palette: `plotPal()`\n\n### 3D GPR data (interpolation to slices\n* interpSlices(\n\n### GPR data positioning and referencing\n\n* Trace position reversal: `reverse()`\n* Vertical trace shift: `traceShift()`\n* Georeference coordinates (based on center and rotation angle): `georef()` \n* Interpolate trace position (x, y, z) from known positions: `interpPos()`\n* Estimate shift between two parallel profiles: `shiftEst()`\n\n### GPR data analysis and processing\n####  GPR data analysis and transforms\n* Trace amplitude: `ampl()`, plot trace amplitude: `plotAmpl()`\n* Average trace: `traceAverage()`\n* Spectrum (f-x and f-k): `spec(x, type = c(\"f-x\", \"f-k\"))`\n* Structure tensor: `strTensor()`, plot structure tensor: `plotTensor()`\n\n#### GPR data interpolation\n* Trace interpolation at regularly spaced positions: `regInterpPos()`\n* Upsampling (time and position): `upsample()`\n* Relative position on the radargramm: `relPos()`\n\n#### GPR signal correction\n* DC-shift correction: `dcshift()`\n* Low-frequency ('wow') component removal: `dewow()` (type = \"MAD\", \"Gaussian\")\n* First-break picking: `firstBreak()` (method = \"coppens\", \"threshold\",  \"MER\")\n* Shift the traces vertically such that they start at time zero: `time0Cor()`\n* Constant offset time correction: `timeCorOffset()` \n\n#### GPR signal attenuation compensation (gain)\n* Linear, power, exponential, ang agc gain: `gain()` (type = \"power\", \"exp\", \"agc\")\n\n\n#### GPR signal enhancement\n* Clip the GPR signal values: `clip()`\n* Gamma correction of the GPR signal values: `gammaCorrection()`\n* Trace scaling: `traceScaling()`\n* Trace filters (1D): `filter1D()`: type = \"median\", \"hampel\", \"Gaussian\"\n* Radargramm filters (2D): `filter2D()`: type = \"median3x3\", \"adimpro\"\n* Trace frequency filter (1D): `fFilter()`: freqency filter, type = 'low','high','bandpass'\n* Frequency-wavenumber filter (2D): `fkFilter()`\n* Trace (1D) and radargramm (2D) convolution: `conv1D()` and `conv2D()` \n* Deconvolution: `deconv()` (type = \"spiking\", \"wavelet\", \"min-phase\",\n  \"mixed-phase\")\n* Phase rotation `rotatePhase()`\n\n#### GPR signal velocity \n* Common-mid point analysis (CMP): `CMPAnalysis()` (method = \"semblance\", \"winsemblance\",\n  \"wincoherence\")\n* Normal Move-Out correction (NMO): `NMOCor()`\n\n#### GPR data topographic correction and migration \n* Topography correction and topographic Kirchhoff migration: `migration()` (type = \"static\", \"kirchhoff\")\n\n#### Generic processing functions\n* Apply many processing steps: `papply()`\n\n###  GPR data delineation and mapping\n* `delineate()`\n* `rmDelineations()\u003c-`\n* `delineations()`\n* `addDelineation()`\n* `plotDelineations3D()`\n* `plotDelineations()`\n* `identifyDelineation()`\n\n\n### Miscellaneous\n* Operators: `+`, `-`, `*`, `/`, `^`\n* Mathematical functions: `max()`, `min()`, `mean()`, `median()`, `summary()`, `range()`, `abs()`, `sign()`, `sqrt()`, `ceiling()`, ...\n* Matrix functions: `length()`, `nrow()`, `ncol()`, `dim()`\n* Coercion: `as.matrix()`, `as.numeric()`, `as.double()`, `as.list()`, `as.SpatialLines()`, `as.SpatialPoints()`\n\n### Setter/getter functions\n* `depthunit()` \u0026 `depthunit()\u003c-`\n* `description()` \u0026 `description()\u003c-`\n* `ann()` \u0026 `ann()\u003c-`\n* `coord()` \u0026 `coord()\u003c-`\n* `crs()` \u0026 `crs()\u003c-`\n* `fid()` \u0026 `fid()\u003c-`\n* `filepath()` \u0026 `filepath()\u003c-`\n* `pos()` \u0026 `pos()\u003c-`\n* `posunit()` \u0026 `posunit()\u003c-`\n* `proc\u003c-()` \u0026 `processing` \n* `name()` \u0026 `name()\u003c-`\n* `values()` \u0026 `values()\u003c-`\n* `vel()` \u0026 `vel()\u003c-` \n* `gethd()`\n* `svDate()` \u0026 `svDate()\u003c-`\n\n\n### List of the functions from the class `GPR`\n```r\nlibrary(RGPR)\nmtext \u003c-  showMethods(class=\"GPR\", printTo =FALSE )\ni \u003c- grepl('Function', mtext) \u0026 grepl('package RGPR', mtext) \nfvec \u003c- gsub( \"Function(\\\\:\\\\s|\\\\s\\\\\\\")(.+)(\\\\s\\\\(|\\\\\\\")(.+$)\", \"\\\\2\", mtext[i] )\nfvec\n```\n\n### List of the functions from the class `GPRsurvey`\n```r\nlibrary(RGPR)\nmtext \u003c-  showMethods(class=\"GPRsurvey\", printTo =FALSE )\ni \u003c- grepl('Function', mtext) \u0026 grepl('package RGPR', mtext) \ngvec \u003c- gsub( \"Function(\\\\:\\\\s|\\\\s\\\\\\\")(.+)(\\\\s\\\\(|\\\\\\\")(.+$)\", \"\\\\2\", mtext[i] )\ngvec\n```\n\n### Incomplete overview of the RGPR-package\n```r\n?RGPR\n```\n\n## Contributions\n\nThanks to:\n\n-  @jmerc13\n","funding_links":["https://www.buymeacoffee.com/EmanuelHuber","https://www.paypal.com/donate/?hosted_button_id=ZGSWR9SLV4MM2"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femanuelhuber%2Frgpr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femanuelhuber%2Frgpr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femanuelhuber%2Frgpr/lists"}