{"id":18075871,"url":"https://github.com/kwinkunks/chrestomathy","last_synced_at":"2025-10-26T21:16:12.786Z","repository":{"id":64937215,"uuid":"579594307","full_name":"kwinkunks/chrestomathy","owner":"kwinkunks","description":"Crestomathies: same nail, different hammers. Solving problems over and over again, but with a variety of methods.","archived":false,"fork":false,"pushed_at":"2024-11-26T17:01:28.000Z","size":5608,"stargazers_count":4,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-12-18T00:38:51.214Z","etag":null,"topics":["chrestomathy","education","geoscience","mathematics","statistics"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kwinkunks.png","metadata":{"files":{"readme":"README.md","changelog":null,"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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-18T08:02:39.000Z","updated_at":"2024-12-14T21:41:30.000Z","dependencies_parsed_at":"2024-11-26T18:29:41.712Z","dependency_job_id":null,"html_url":"https://github.com/kwinkunks/chrestomathy","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kwinkunks%2Fchrestomathy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kwinkunks%2Fchrestomathy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kwinkunks%2Fchrestomathy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kwinkunks%2Fchrestomathy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kwinkunks","download_url":"https://codeload.github.com/kwinkunks/chrestomathy/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230365107,"owners_count":18214900,"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":["chrestomathy","education","geoscience","mathematics","statistics"],"created_at":"2024-10-31T11:07:48.022Z","updated_at":"2025-10-26T21:16:12.689Z","avatar_url":"https://github.com/kwinkunks.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# chrestomathy\n\nA **crestomathy** is, according to [Wikipedia](https://en.wikipedia.org/wiki/Chrestomathy):\n\n\u003e A chrestomathy (from the Ancient Greek χρηστός, khrēstós, meaning \"useful\", and μανθάνω, manthánō, meaning \"learn\") is a collection of selected literary passages [...]; a selection of literary passages from a foreign language assembled for studying the language; or a text in various languages, used especially as an aid in learning a subject. [...] It is different from an anthology because of its didactic purpose.\n\nEach notebook in this unstructured collection explores a different goal, such as performing linear regression on some data, gridding irregular data to make a map (also a regression), or solving a linear algebraic equation. Each exploration involves stating the problem, then looking at different ways to do it, usually in increasingly sophisticated ways.\n\n\n## Notebooks\n\n### 🥨 Maths and stats flavour\n\n- [Averages](notebooks/Averages.ipynb) ✨ **New**\n- [Activation functions](notebooks/Activation_functions.ipynb) ✨ **New**\n- [Function differentiation](notebooks/Function_differentiation.ipynb) ✨ **New**\n- [Timeseries extrapolation](notebooks/Timeseries_extrapolation.ipynb) ✨ **New**\n- [Linear regression](notebooks/Linear_regression.ipynb)\n- [Regression algorithms](notebooks/Regression_algorithms.ipynb)\n- [Curse of dimensionality](notebooks/Curse_of_dimensionality.ipynb) ✨ **Updated**\n\n### ⚒️  Geoscience flavour\n\n- [Map interpolation](notebooks/Map_interpolation.ipynb)\n- [Unsupervised clustering](notebooks/Unsupervised_clustering.ipynb) (of rock properties)\n- [Phase determination](notebooks/Phase_determination.ipynb) (of seismic data)\n- [Frequency from seismic image](notebooks/Frequency_from_seismic_image.ipynb)\n- [Wavelet estimation](notebooks/Wavelet_estimation.ipynb) (from wells and seismic)\n\n\n## Suggested additions\n\nTopics for the future:\n\n- Ways to represent points in 2-space, very useful for Advent of Code (eg [2018 Day 10 one](https://github.com/kwinkunks/aoc18/blob/master/day10.py)):\n  - Implicit position using counters or enumeration in loops\n  - `tuple(x, y)` or `tuple(col, row)`\n  - `complex(x, y)`\n  - `Point` class...\n  - ...with `functools.total_ordering`, operator overloading, etc\n  - `shapely.Point` class\n- Time–frequency decomposition, eg with FFT, EMD, CWT, etc. See examples in my [SEG Geophysical Tutorial](https://github.com/seg/tutorials-2018/tree/master/1806_Time-frequency) on the topic, or [my old Time Freak repo](https://github.com/kwinkunks/timefreak).\n- Different ways to make a normal distribution (and/or other distributions as well perhaps).\n- Sorting algorithms, but this has been done many times before.\n- Pathfinding algorithms, but this is probably beyond me since I've never managed those problems in Advent of Code :D\n- Binary classification algorithms: probably can't beat [scikit-learn's comparison](https://scikit-learn.org/1.5/auto_examples/classification/plot_classifier_comparison.html) though.\n- Multiclass classification algorithms, using rock property catalog data, and with the multi-class decision surface visualization [from Agile](https://github.com/agilescientific/geocomputing/blob/develop/prod/Classification_algorithms.ipynb).\n- Clustering algorithms (or maybe just add to or generalize the existing notebook), but again [sklearn's comparison](https://scikit-learn.org/1.5/auto_examples/cluster/plot_cluster_comparison.html) is totally awesome.\n- Data assimilation methods, although quite technical, and probably already perfectly well done by, eg, [`dapper`](https://github.com/nansencenter/DAPPER)\n- Bayesian parameter estimation is perhaps more approachable than data assimilation.\n- Distance algorithms are a huge subject \u0026mdash; some of these topics deserve whole notebooks to themselves. There are plenty to choose from.\n  - All the Minkowski distances (L0, L1 L2, etc) and maybe octile distance\n  - Coherence etc for seismic\n  - Levenshtein edit distance for words\n  - Canberra distance for ranked lists and other things https://en.wikipedia.org/wiki/Canberra_distance\n  - Word/doc embedding distance (embeddings and latent spaces in general), eg https://www.andrew.cmu.edu/course/15-121/labs/HW-4%20Document%20Distance/lab.html\n  - Pixel and Image distance, eg see below\n  - Clock distance (23:55 and 00:05 are very close, use circular distance eg https://gist.github.com/anonymous/7ce6274c630dabd70960c6d7fdd6c580\n  - Wasserstein aka Earth mover’s distance for distributions https://en.wikipedia.org/wiki/Earth_mover%27s_distance\n  - Probably some others: https://en.wikipedia.org/wiki/Metric_(mathematics)\n  - 3D shapes, eg https://arxiv.org/pdf/1911.09204.pdf\n  - See table here \u003e https://stats.stackexchange.com/questions/58706/distance-metrics-for-binary-vectors/386952\n  - Well logs could use cross-correlation, say. Also see https://quant.stackexchange.com/questions/848/time-series-similarity-measures\n  - Curves: Hausdorff distance (no order info), Frechet distance (dog leash distance), dynamic time-warp distance (not a metric as doesn’t meet triangle inequality condition), eg see https://www.youtube.com/watch?v=mxat0UbmDo0\n  - Dynamic time warping would be fun to explore; most of the algorithms are closely related.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkwinkunks%2Fchrestomathy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkwinkunks%2Fchrestomathy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkwinkunks%2Fchrestomathy/lists"}