{"id":20219897,"url":"https://github.com/cgre-aachen/pynoddy","last_synced_at":"2025-12-18T08:27:53.016Z","repository":{"id":15321567,"uuid":"18051650","full_name":"cgre-aachen/pynoddy","owner":"cgre-aachen","description":"pynoddy is a python package to write, change, and analyse kinematic geological modelling simulations performed with Noddy.","archived":false,"fork":false,"pushed_at":"2023-04-21T04:35:45.000Z","size":33595,"stargazers_count":75,"open_issues_count":21,"forks_count":33,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-03-24T13:44:28.513Z","etag":null,"topics":["geological-modeling","geology","kinematic-modeling","noddy","python"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cgre-aachen.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGES.txt","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2014-03-24T04:22:16.000Z","updated_at":"2025-03-13T21:46:47.000Z","dependencies_parsed_at":"2022-08-04T11:30:20.917Z","dependency_job_id":"66f5ea44-759b-46f9-b873-2dc1103c86d3","html_url":"https://github.com/cgre-aachen/pynoddy","commit_stats":{"total_commits":350,"total_committers":12,"mean_commits":"29.166666666666668","dds":"0.48857142857142855","last_synced_commit":"c6662071b23be8de4f67b061a02870b434f7ccfe"},"previous_names":["flohorovicic/pynoddy"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cgre-aachen%2Fpynoddy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cgre-aachen%2Fpynoddy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cgre-aachen%2Fpynoddy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cgre-aachen%2Fpynoddy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cgre-aachen","download_url":"https://codeload.github.com/cgre-aachen/pynoddy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248249399,"owners_count":21072354,"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":["geological-modeling","geology","kinematic-modeling","noddy","python"],"created_at":"2024-11-14T06:44:12.414Z","updated_at":"2025-12-18T08:27:52.956Z","avatar_url":"https://github.com/cgre-aachen.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## pynoddy\n\n-------\n\n![#f03c15](https://placehold.it/15/f03c15/000000?text=+) Important information: Mark Jessell is currently cleaning the Noddy core library in order to **adjust our code to a more permissive license** - more information, soon!\n\n-------\n\n[![DOI](https://zenodo.org/badge/20310/flohorovicic/pynoddy.svg)](https://zenodo.org/badge/latestdoi/20310/flohorovicic/pynoddy)\n\n### What is ``pynoddy``\n\n``pynoddy`` is a python package to write, change, and analyse kinematic geological modelling simulations.  It provides methods to define, load, modify, and safe kinematic models for simulation with ``Noddy``. In addition, the package contains an extensive range for postprocessing of results. One main aspect of ``pynoddy`` is that it enables the encapsulation of full scientific kinematic modelling experiments for full reproducibility of results.\n\n### What is Noddy?\n\nNoddy itself is a kinematic modelling program written by Mark Jessell [1][2] to simulate the effect of subsequent geological events (folding, unconformities, faulting, etc.) on a primary sedimentary pile. A typical example would be:\n\n1. Create a sedimentary pile with defined thicknesses for multiple formations\n2. Add a folding event (for example simple sinoidal folding, but complex methods are possible!)\n3. Add an unconformity and, above it, a new stratigraphy\n4. Finally, add a sequence of late faults affecting the entire system.\n\nThe result could look something like this:\n\n\u003c!-- \u003cimg src=\"noddy_block_example.png\" width=\"600\"/\u003e --\u003e\n\n![pynoddy blender visualization](https://user-images.githubusercontent.com/1070677/128020519-943ad3a3-3f35-4fec-b612-a1e700eceb50.png)\n\n``Noddy`` has been used to generate models for teaching and interpretation purposes, but also\nfor scientific studies (e.g. [3]). \n\n## Installation\n\n### Installation of the ``pynoddy`` package\n\nA successful installation of ``pynoddy`` requires two steps:\n\n1. An installation of the python modules in the package ``pynoddy``\n2. The existance of an executable `Noddy(.exe)` program\n\nInstallation of the first part is straight-forward:\n\nFor the best (and most complete) installation, we suggest to clone the ``pynoddy``\nrepository on:\n\nhttps://github.com/flohorovicic/pynoddy\n\nTo install ``pynoddy`` simply run:\n\n\tpython setup.py install\n\n.. Note:\n\nsufficient privileges are required (i.e. run in ``sudo`` with MacOSX/ Linux and set permissions on Windows)\n\nThe pynoddy packages themselves can also be installed directly from the Python Package Index (pypi.org) via pip:\n\n\tpip install pynoddy\n\nA Windows installer is also available on the Pypi page:\n\nhttps://pypi.python.org/pypi/pynoddy/\n\n### Installation of ``Noddy``\n\n``Noddy`` is a command line program, written in C, that performs the kinematic simulation itself. The program compilation is platform dependent, and therefore several ways for installation are possible (see below information for specific platforms).\n\n### Using a pre-compiled version of ``Noddy``\n\nThe easy way to obtain a executable version of ``Noddy`` is simply\nto download the appropriate version for your operating\nsystem. Currently, these executables versions are also stored on\ngithub (check the up-to-date online documentation if this should not\nanymore be the case) in the directory:\n\nhttps://github.com/flohorovicic/pynoddy/tree/master/noddyapp\n\nFurthermore, the executables for Windows are also available for\ndownload on the webpage:\n\nhttp://www.tectonique.net/pynoddy\n\nDownload the appropriate app, rename it to ``noddy`` or\n``noddy.exe``  and place it into a folder that is in\nyour local environment path variable. If you are not sure if a folder\nis in the ``PATH`` or would like to add new one, see\nbelow for more information.\n\n### Compiling ``Noddy`` from source files (recommended installation)\n\nThe source code for the executable ``Noddy`` is located in the repository\ndirectory ``noddy``. In order to perform the\ninstallation, a ``gcc`` compiler is required. This compiler\nshould be available on Linux and MacOSX operating systems. On Windows,\none possibility is to install MinGW. Otherwise, the code requires no\nspecific libraries.\n\nNote for MacOSX users: some header files have to be adapted to avoid\nconflicts with local libraries. The required adaptations are executed\nwhen running the script:\n\n\t\u003e adjust_for_MacOSX.sh\n\nThe compilation is then performed (in a Linux, MacOSX, or Windows\nMinGW terminal) with the command:\n\n\t\u003e compile.sh\n\nCompilation usually produces multiple warnings, but should otherwise\nproceed successfully. \n\n### Placing the executable ``noddy`` in the Path\n\nFor the most general installation, the executable of ``Noddy``\nshould be placed in a folder that can be located from any terminal\napplication in the system. This (usually) means that the folder with\nthe executable has to be in the ``PATH`` environment\nvariable. On Linux and MacOSX, a path can simply be added by:\n\n\t\u003e export PATH=\"path/to/executable/:\\$PATH\"\n\nNote that this command should be placed into your\n.bash_profile file to ensure that the path is added whenever\nyou start a new Python script.\n\nOn ``windows``, adding a folder to the local environment variable\n``Path`` is usually done through the System Control Panel \n(Start - Settings - Control Panel - System). in Advanced mode, open\nthe Environment Variables sub-menu, and find the variable Path. Click\nto edit the variable, and add the location of your folder to this path.\n\n### Noddy executable and GUI for Windows\n\nThe original graphical user interface for ``Noddy`` and the compiled\nexecutable program for Windows can be obtained from:\n\nhttps://tectonique.net/noddy/\n\nThis site also contains the\nsource code, as well as extensive documentation and tutorial material\nconcerning the original implementation of the software, as well as\nmore technical details on the modelling method itself.\n\n\n## Testing the installation\n\n### Testing ``noddy``\n\nSimply test the installation by running the generated (or downloaded)\nexecutable in a terminal window (on Windows: ``cmd``):\n\n\t\u003e noddy\n\nor (depending on your compilation or naming convention):\n\n\t\u003e noddy.exe\n\nWhich should produce the general output:\n\n```\nArguments \u003chistoryfile\u003e \u003coutputfile\u003e \u003ccalc_mode\u003e:\nBLOCK\nGEOPHYSICS\nSURFACES\nBLOCK_GEOPHYS\nBLOCK_SURFACES\nTOPOLOGY\nANOM_FROM_BLOCK\nALL\n```\n\nNote: if the executable is correctly placed in a folder which is\nrecognised by the (Environment) path variable, then you should be able\nto run ``Noddy`` from any directory. If this is not the case,\nplease check if it is correctly placed in the path (see above).\n\n### Testing ``pynoddy``\n\nThe ``pynoddy`` package contains a set of tests which can be\nexecuted in the standard Python testing environment. If you cloned or\ndownloaded the repository, then these tests can directly be performed\nthrough the setup script:\n\n\t\u003e python setup.py test\n\nOf specific relevance is the test that determines if the\n``noddy(.exe)`` executable is correctly accessible from\n``pynoddy``. If this is the case, then the\n``compute_model`` test should return:\n\n\ttest_compute_model (test.TestHistory) ... ok}\n\nIf this test is not ok, then please check carefully the installation\nof the ``noddy(.exe)`` executable.\n\nIf all tests are successful, **you are ready to go!**\n\n## How to get started\n\n### Tutorial Jupyter notebooks\n\nThe best way to get started with ``pynoddy`` is to have a look at the IPython notebooks\nin pynoddy/docs/notebooks. The numbered notebooks are those that are part of the\ndocumentation, and a good point to get started.\n\nThe notebooks require an installed Jupyter notebook. More information here:\n\nhttps://jupyter.org\n\nThe notebook can be installed via ``pip`` or ``conda``.\n\n### The Atlas of Strutural Geophysics\n\nThe Atlas of Structural Geophysics contains a collection of structural\nmodels, together with their expression as geophysical potential fields\n(gravity and magnetics), with a focus on guiding the interpretation of\nobserved features in potential-field maps. \n\nThe atlas is currently available on:\n\nhttp://tectonique.net/asg\n\nThe structural models are\ncreated with Noddy and the history files can be downloaded from the\natlas. Models from this Atlas can directly be loaded with ``pynoddy``. See example notebooks and documentation for more details.\n\n### Documentation\n\nAn updated version of the documentation is available within the ``pynoddy`` repository (pynoddy/docs). \n\nIn addition, an online html version of the documentation is also hosted on readthedocs:\n\nhttp://pynoddy.readthedocs.org\n\n## Technical Notes\n\n### Dependencies\n\n``pynoddy`` depends on several standard Python packages that should be shipped with any standard distribution (and are easy to install, otherwise):\n\n- numpy\n- matplotlib\n- pickle\n\nThe uncertainty analysis, quantification, and visualisation methods based on information theory are implemented in the python package pygeoinfo. This package is available on github and part of the python package index. It is automatically installed with the setup script provided with this package.\n\nIn addition, to export model results for full 3-D visualisation with VTK, the pyevtk package is used, available on bitbucket:\n\nhttps://bitbucket.org/pauloh/pyevtk/src/9c19e3a54d1e?at=v0.1.0\n\nThe package is automatically downloaded and installed when running python setup.py install.\n\n### 3-D Visualisation\n\nAt this stage, we do not supply methods for 3-D visualisation in python (although this may change in the future). However, we provide methods to export results into a VTK format. Exported files can then be viewed with the highly functional VTK viewers, and several free options are available, for example:\n\n- Paraview: http://www.paraview.org\n\n- Visit: https://wci.llnl.gov/simulation/computer-codes/visit/\n\n- Mayavi: http://docs.enthought.com/mayavi/mayavi/\n\n## License\n\n``pynoddy`` is free software (see license file included in the repository). Please attribute the work when you use it and cite the publication if you use it in a scientific context - feel free to change and adapt it otherwise!\n\n\n## References\n\n[1] Mark W. Jessell. Noddy, an interactive map creation package. Unpublished MSc Thesis, University of London. 1981.\n\n[2] Mark W. Jessell, Rick K. Valenta, Structural geophysics: Integrated structural and geophysical modelling, In: Declan G. De Paor, Editor(s), Computer Methods in the Geosciences, Pergamon, 1996, Volume 15, Pages 303-324, ISSN 1874-561X, ISBN 9780080424309, http://dx.doi.org/10.1016/S1874-561X(96)80027-7.\n\n[3] Armit, R. J., Betts, P. G., Schaefer, B. F., \u0026 Ailleres, L. (2012). Constraints on long-lived Mesoproterozoic and Palaeozoic deformational events and crustal architecture in the northern Mount Painter Province, Australia. Gondwana Research, 22(1), 207–226. http://doi.org/10.1016/j.gr.2011.11.003\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcgre-aachen%2Fpynoddy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcgre-aachen%2Fpynoddy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcgre-aachen%2Fpynoddy/lists"}