├── data ├── 72_2.h5 ├── crater_img.png └── 364_77_A_072_R_002_scanA67.jpg ├── notebooks └── hc_schematic.png ├── LICENSE ├── README.md └── .gitignore /data/72_2.h5: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brendonhall/core_features/HEAD/data/72_2.h5 -------------------------------------------------------------------------------- /data/crater_img.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brendonhall/core_features/HEAD/data/crater_img.png -------------------------------------------------------------------------------- /notebooks/hc_schematic.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brendonhall/core_features/HEAD/notebooks/hc_schematic.png -------------------------------------------------------------------------------- /data/364_77_A_072_R_002_scanA67.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/brendonhall/core_features/HEAD/data/364_77_A_072_R_002_scanA67.jpg -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2020 Brendon Hall 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Classifying Core Images from the Chixulub Impact Crater 2 | 3 | ![Crater rendition, core section](./data/crater_img.png) 4 | Source: DETLEV VAN RAVENSWAAY/SCIENCE SOURCE/IODP EXP 364 5 | 6 | This repo contains notebooks that implement the hypercolumn 'Deep Feature' 7 | core image classification scheme presented in my [SciPy 2020 talk](https://www.youtube.com/playlist?list=PLYx7XA2nY5GfY4WWJjG5cQZDc7DIUmn6Z). 8 | 9 | IODP/ICDP [Expedition 364](http://publications.iodp.org/proceedings/364/364title.html) extracted ~830m of core from the peak ring of the Chixulub impact structure. This core provides dramatic evidence of how the crater was formed, and the processes that affected the resulting environmental changes. A section of core just above the K-Pg boundary consists of impactites with many different rock fragments and melt. This repo contains Python notebooks that use machine learning to classify these different rock fragments, or clasts. 10 | 11 | The technique uses sparse labels supplied by a geoscientist. It requires a couple examples for each different class. [Ilastik](https://www.ilastik.org/) was used to annotate clasts in the image for training. 12 | 13 | This example uses core line scan image dataset made available by: 14 | > IODP Expedition 364 Scientists (2017): Line scan images of IODP Hole 364-M0077A. PANGAEA, https://doi.org/10.1594/PANGAEA.881718
15 | 16 | which is licensed CC-BY 3.0. 17 | 18 | ### References 19 | - Morgan et al. (2016) The formation of peak rings in large impact craters, [Science 354(6314).](https://science.sciencemag.org/content/354/6314/878) 20 | - Gulick et al. (2019) The first day of the Cenozoic, [PNAS 116 (39).](https://www.pnas.org/content/116/39/19342) 21 | - Ormö et al. (2007) Sedimentological analysis of resurge deposits at the Lockne and Tvären craters: Clues to flow dynamics, [Met. & Pl. Sc. 42(11).](https://onlinelibrary.wiley.com/doi/abs/10.1111/j.1945-5100.2007.tb00551.x) 22 | - Rae et al. (2019). Impact‐induced porosity and microfracturing at the Chicxulub impact structure. [JGR: Planets.](https://agupubs.onlinelibrary.wiley.com/doi/epdf/10.1029/2019JE005929) 23 | ### Media: 24 | - BBC Documentary, [“The Day the Dinosaurs Died”](https://www.bbc.co.uk/programmes/b08r3xhf) 25 | - Sean Gulick’s [SciPy 2017 Talk](https://www.youtube.com/watch?v=_2iCNqe9_cY) 26 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | # Created by https://www.toptal.com/developers/gitignore/api/macos,python,jupyternotebooks,linux 3 | # Edit at https://www.toptal.com/developers/gitignore?templates=macos,python,jupyternotebooks,linux 4 | 5 | ### JupyterNotebooks ### 6 | # gitignore template for Jupyter Notebooks 7 | # website: http://jupyter.org/ 8 | 9 | .ipynb_checkpoints 10 | */.ipynb_checkpoints/* 11 | 12 | # IPython 13 | profile_default/ 14 | ipython_config.py 15 | 16 | # Remove previous ipynb_checkpoints 17 | # git rm -r .ipynb_checkpoints/ 18 | 19 | ### Linux ### 20 | *~ 21 | 22 | # temporary files which can be created if a process still has a handle open of a deleted file 23 | .fuse_hidden* 24 | 25 | # KDE directory preferences 26 | .directory 27 | 28 | # Linux trash folder which might appear on any partition or disk 29 | .Trash-* 30 | 31 | # .nfs files are created when an open file is removed but is still being accessed 32 | .nfs* 33 | 34 | ### macOS ### 35 | # General 36 | .DS_Store 37 | .AppleDouble 38 | .LSOverride 39 | 40 | # Icon must end with two \r 41 | Icon 42 | 43 | # Thumbnails 44 | ._* 45 | 46 | # Files that might appear in the root of a volume 47 | .DocumentRevisions-V100 48 | .fseventsd 49 | .Spotlight-V100 50 | .TemporaryItems 51 | .Trashes 52 | .VolumeIcon.icns 53 | .com.apple.timemachine.donotpresent 54 | 55 | # Directories potentially created on remote AFP share 56 | .AppleDB 57 | .AppleDesktop 58 | Network Trash Folder 59 | Temporary Items 60 | .apdisk 61 | 62 | ### Python ### 63 | # Byte-compiled / optimized / DLL files 64 | __pycache__/ 65 | *.py[cod] 66 | *$py.class 67 | 68 | # C extensions 69 | *.so 70 | 71 | # Distribution / packaging 72 | .Python 73 | build/ 74 | develop-eggs/ 75 | dist/ 76 | downloads/ 77 | eggs/ 78 | .eggs/ 79 | lib/ 80 | lib64/ 81 | parts/ 82 | sdist/ 83 | var/ 84 | wheels/ 85 | pip-wheel-metadata/ 86 | share/python-wheels/ 87 | *.egg-info/ 88 | .installed.cfg 89 | *.egg 90 | MANIFEST 91 | 92 | # PyInstaller 93 | # Usually these files are written by a python script from a template 94 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 95 | *.manifest 96 | *.spec 97 | 98 | # Installer logs 99 | pip-log.txt 100 | pip-delete-this-directory.txt 101 | 102 | # Unit test / coverage reports 103 | htmlcov/ 104 | .tox/ 105 | .nox/ 106 | .coverage 107 | .coverage.* 108 | .cache 109 | nosetests.xml 110 | coverage.xml 111 | *.cover 112 | *.py,cover 113 | .hypothesis/ 114 | .pytest_cache/ 115 | 116 | # Translations 117 | *.mo 118 | *.pot 119 | 120 | # Django stuff: 121 | *.log 122 | local_settings.py 123 | db.sqlite3 124 | db.sqlite3-journal 125 | 126 | # Flask stuff: 127 | instance/ 128 | .webassets-cache 129 | 130 | # Scrapy stuff: 131 | .scrapy 132 | 133 | # Sphinx documentation 134 | docs/_build/ 135 | 136 | # PyBuilder 137 | target/ 138 | 139 | # Jupyter Notebook 140 | 141 | # IPython 142 | 143 | # pyenv 144 | .python-version 145 | 146 | # pipenv 147 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 148 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 149 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 150 | # install all needed dependencies. 151 | #Pipfile.lock 152 | 153 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 154 | __pypackages__/ 155 | 156 | # Celery stuff 157 | celerybeat-schedule 158 | celerybeat.pid 159 | 160 | # SageMath parsed files 161 | *.sage.py 162 | 163 | # Environments 164 | .env 165 | .venv 166 | env/ 167 | venv/ 168 | ENV/ 169 | env.bak/ 170 | venv.bak/ 171 | 172 | # Spyder project settings 173 | .spyderproject 174 | .spyproject 175 | 176 | # Rope project settings 177 | .ropeproject 178 | 179 | # mkdocs documentation 180 | /site 181 | 182 | # mypy 183 | .mypy_cache/ 184 | .dmypy.json 185 | dmypy.json 186 | 187 | # Pyre type checker 188 | .pyre/ 189 | 190 | # pytype static type analyzer 191 | .pytype/ 192 | 193 | # End of https://www.toptal.com/developers/gitignore/api/macos,python,jupyternotebooks,linux --------------------------------------------------------------------------------