From 09352f7b842168b55ca2e5007c8eecca725b8d03 Mon Sep 17 00:00:00 2001 From: Tom Hanika Date: Thu, 6 Jun 2024 12:32:07 +0200 Subject: [PATCH] Preparing release (#145) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All features for relasing 2.5 * Added concept separation * fixed :anonymous-burmeister write to file function * changed context io test to ignore :anonymous-burmeister format The fix for the :anonymous-burmeister write to file function caused some context io tests to fail. This commit removes the :anonymous-burmeister format from the out-in and out-in-out-in tests. The reasoning is as follows: - Before fixing the io write function, the tests went through because calling `count` on a context results in an `UnsupportedOperationException` which is caught and accepted (other formats throw this exception, namely :fcalgs, which only accepts integral objects and attributes). - Fixing the write part for the :anonymous-burmeister format meant that the tests were actually running - The out-in tests fail for the :anonymous-burmeister format basically by design because the object and attribute labels are discarded on write - The out-in-out-in tests usually fail too because the order of objects and attributes is not guaranteed to be kept intact on write. This is because `(seq (set (range N)))` is not guaranteed to be the same as `(range N)`. Hence the context after importing is the same context but possibly with shuffled objects and attributes, and thus the equality check fails. * doc: corrected example for :anonymous-burmeister format * Added possible-isomorphy tests for :anonymous-burmeister format Previously there were no working tests for the :anonymous-burmeister format. Because this format drops object and attribute names when writing a context to a file and there is no determinism in the order of objects and attributes written to file, we can not test for equality in out-in and out-in-out-in tests. Therefore, we resort to testing for possible isomorphy -- testing for true isomorphy is not trivial and expensive to compute. * Update IO.org * Added Named Binary CSV Input and Doc * Fixed NB write and detection, Added write options and FCA Output * LaTeX Output for lattices supports valuation functions * Added gui I/O for layouts * More Valuations * Fixed concept probability for concepts having |extent|=|G| * Fixed concept probability ... debugging prints ;) * Added documentation * Added separation-index to the gui * Fixed syntax error * Fixed code junk found in metrics. * add read & write of json format for implications * correct read and write format for implications * add oi and oioi tests for json implication format * add json context input format * add json context output format and improve implication output format * add json concept input & output format * Add json input & output for whole process (context + concepts + implications) * rename process.clj to fca.clj and change output from triple to map * add validation for fca-schema * fix io/context tests that were failing for :json format * json format: lattices can be saved with order now * improve tests for reading / writing of implications * change fca_schema, so that objects and attributes can be of type string and number * adapt read-fca and write-fca after change of lattice format * add tests for reading / writing of fcas * add validation for context io * add validation for lattice io * add validation for implication io * refactoring of fca io * move context schema validation to read-context and add a general json validation for format detection * move schema validation to the read functions for lattice, implications and fca * Add documentation * add documentation * add myself as author * add tests for identifying context input formats * add test for writing / reading fcalgs format * add tests for identifying lattice input formats * add documentation + comments * improve documentation * minor changes in documentation * improve tests for fcas and implications * Add nix flake * Add nix flake * Updating the scene layout did not update the layout data * updating the layout cased a removal of the old value-fn * update documentation for drawing concept lattices * Triadic (#70) * triadic exploration * Triadic-Exploration: Added basic example to doc * Triadic Exploration: small fix in doc * modify :json context schema so that empty attribute columns are not dropped any more (#92) * csv reader library (#90) * use csv reader library for named-binary-csv * use csv reader library for :csv input * use csv reader library for :binary-csv input * use csv reader library for :csv output * use csv reader library for :binary-csv output * use csv reader library for :named-binary-csv output Co-authored-by: Johannes Hirth * Minor stuff in exploration * Fast fix for CORS problem using api with browser frontend * Export layout json (#95) * add json export for layouts * save valuations in :json format * don't add nil valuations to layout * code cleanup and add annotations / labels when reading :json layout * save labels with position * annotations are saved, but not read * change layout api functions * use json io functions for layout api * Bump flake (#88) * flake.lock: Update Flake lock file changes: • Updated input 'flake-compat': 'github:edolstra/flake-compat/12c64ca55c1014cdc1b16ed5a804aa8576601ff2' (2021-08-02) → 'github:edolstra/flake-compat/b4a34015c698c7793d592d66adbab377907a2be8' (2022-04-19) • Updated input 'flake-utils': 'github:numtide/flake-utils/74f7e4319258e287b0f9cb95426c9853b282730b' (2021-11-28) → 'github:numtide/flake-utils/a4b154ebbdc88c8498a5c7b01589addc9e9cb678' (2022-04-11) • Updated input 'gitignoresrc': 'github:hercules-ci/gitignore.nix/5b9e0ff9d3b551234b4f3eb3983744fa354b17f1' (2021-10-25) → 'github:hercules-ci/gitignore.nix/bff2832ec341cf30acb3a4d3e2e7f1f7b590116a' (2022-03-05) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/86453059bf8312f0f5bf1fe8a2f52da2be664489' (2021-12-20) → 'github:NixOS/nixpkgs/3a9e0f239d80fa134e8fcbdee4dfc793902da37e' (2022-04-25) * Nix: Update hash for dependencies * Nix: fix shell.nix compatibility wrapper * Ignore .lsp * Nix: Drop conexp-clj from devShell PATH Remove `conexp-clj` from the devShell PATH, so that `nix develop` works even if the current checkout fails to build. A shell with `conexp-clj` in PATH is still available using `nix shell`. * Poset layout (#96) * rename "lattice" to "poset" in layouts * fix some errors * renaming and fixing errors * handle inf-irreducible and sup-irreducible layout functions for posets * compute context for poset * move Poset type to separate file and add change some layout tests * add more tests for posets and move neighbor functions from lattices to posets * add tests for posets * fix some errors and add tests for posets in layout functions * add to-inf-additive-layout for Posets * improve to-inf-additive-layout function for Posets * add tests for order-ideal and order-filter * add tests for poset and dim-draw layout * add tests for poset and freese layout * force layout does not work for posets, as inf-irreducibles are needed * fix failing tests * add GUI frame title for Poset * when constructing a poset from positions and connections in Layout, save it as Lattice if it has lattice order * add tests for concept-lattice-annotation with poset * add wrapper function for poset layouts * use wrapper function for to-inf-additive-layout with posets * add error handling for valuations in GUI * change order in annotation function * remove 2nd condition from annotation function for layouts, as it is never reached * minor changes in documentation * Prefer clj-nix over fixed-output derivations for nix flake (#98) * Bump json-schema to 0.3.4 json-schema-0.3.3 still refers to com.github.everit-org.json-schema/org.everit.json.schema, which is a redirect -- this breaks clj-nix. * Prefer clj-nix over fixed-output mvn build * Expose unit tests as a flake app * Add workflows for tests and dependency locking * Enable test workflow for clj-nix branch * Update deps-lock.json * Revert "Enable test workflow for clj-nix branch" This reverts commit 0f7f1aa95e0d365c530ea9a405115a93396162c2. Co-authored-by: mmarx * Fixed some of the deprecated code in latdraw. * Protoconcepts (#99) * add Protoconcept data type * add preconcepts? and protoconcepts? function * add protoconcept functions and tests * fix preconcepts? tests * add semiconcept? function * add protoconcepts order and visualization * add tests for protoconcept-layout * use preconcepts? as defined by R. Wille * add draw-protoconcepts function * add print method for protoconcepts * fix errors * enable draw for protoconcepts * add more protoconcepts functions and tests * remove functions that are not needed any more fore protoconcepts * add draw functions for posets and protoconcepts * improve documentation * add documentation for protoconcepts * minor changes in documentation * minor changes in documentation * minor changes in documentation * Protoconcepts (#100) * add Protoconcept data type * add preconcepts? and protoconcepts? function * add protoconcept functions and tests * fix preconcepts? tests * add semiconcept? function * add protoconcepts order and visualization * add tests for protoconcept-layout * use preconcepts? as defined by R. Wille * add draw-protoconcepts function * add print method for protoconcepts * fix errors * enable draw for protoconcepts * add more protoconcepts functions and tests * remove functions that are not needed any more fore protoconcepts * add draw functions for posets and protoconcepts * improve documentation * add documentation for protoconcepts * minor changes in documentation * minor changes in documentation * minor changes in documentation * add protoconcepts function in gui * Updated copyright notice and added reference request. * Update Common-FCA-File-Formats-for-Formal-Contexts.org (#102) * New context randomization (#103) * added edge swapping and edge rewiring for contexts * added tests for swapping and rewiring * fixed function aliases * Incomplete Contexts (#105) * generate random context that does not contain the maximal contranominal scale (for the generated size of context) * fixed bug in dimdraw greedy * Incomplete Contexts and exploration with multiple experts * added brief doc --------- Co-authored-by: Tom Hanika * Match api and json I/O formats (#106) * modify :json context schema so that empty attribute columns are not dropped any more * add layouts to fca json schema * add schema and example for mv-context * add IO of fca schema in api and update context schema * adapt io :json schema to api for lattices * adapt api for implications to :json schema * change api handler tests for lattices and layouts - still failing * remove all UnsupportedOperationExceptions from context io tests * update lattice schema so that it can process both basic and concept-lattices * code cleanup in io/lattices * add json schema for mv-contexts * fix errors in IO for mv-contexts and update tests * add tests for mv-contexts automatic format detection * fix failing test * Fix draw-lattice (#107) * add IO of fca schema in api and update context schema * make draw-lattice work without args * add tests for draw-lattice and draw-protoconcepts * rename file * fix failing tests * Version bump * Feature/fix flake (#108) * Fix `buildInputs` in flake * flake.lock: Update Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/9bdbbaa634aa666eb6a27096bdcb991c59181244' (2022-09-21) → 'github:NixOS/nixpkgs/0874168639713f547c05947c76124f78441ea46c' (2023-01-01) * Updated depdencies * Update deps-lock.json (#111) Co-authored-by: tomhanika * add lein-aot-order plugin (#112) * Update flake (#113) * add lein-aot-order plugin * Bump flake to nixpkgs-23.05 * Update conexp version in flake * Force `lein-aot-order` into deps.lock The `lein-aot-order` plugin won't be picked up unless it's part of the `main` profile, and is thus not part of the lock file, which breaks the nix package. --------- Co-authored-by: Jana * Fix build status badge in README (#114) * Explain the flake in the documentation (#115) * Add overlay to flake * Add documentation on the nix flake * add ben-and-jerrys context * first version of icfca2023 conexp tutorial * fix error for drawing lattices with valuations * update tutorial * fix error for drawing lattices with valuations (#117) * Scale Measures (#118) * Added many-valued context functions and quality of life improvements * Conexp now with pq-cores * moved files * renamed namespaces * moved subconcept function * fixed comments and removed two duplicate functions * Added Author Field * base functionality for smeasures * Added naive Object Clustering * smeasures now with clustering - Made async fast concepts compuatation usable for other methods - Moved transformation algorithms into their own ns - Implemented Cluster Scale Measure Algorithms that compute valid clusterings given an initial set * Bugfix and updated tests * Added documentation * added missing test * Fixed bug in object clustering * Added tests * Added interactive scale exploration * added draft for genetic algorithm * Terminal output * Terminal output smeasure * added genetic algorithm * genetic 2d subctx * removed debug * refectoring * repair cluster method * prepared helper methods for genetic clustering * Added Tikz support for measures * Added lattice tikz smeasure export * Now with genetic clustering * bugfix * genetic part 1 works now * genetic works Part 2 * Code Refactoring * smart cluster in explor. and decode for genetic * Fixed and improved Cluster Repair Algorithm * bigfix * Added Cluster Validity checkers * Scale-Measure init restructure * Scale-Measures Added logical attributes * Scale-Measures Moved Logical derivations to context.clj * Added Scale-Measures Framework * Scale-Measure Apposition * Recommend based on an importance measure * Added scale-measure exploration and recommendation by importance measures * Only meet-irreducible scale-measure attributes * More intuitive questionary + Minor Bug fix * smeasures: updated questionary * Scaling error * Resolved Merge * Added comment for cover method * meet and join operator * Bugfix * Added a relative scaling errors * Compute all concepts containing g and their covering * Removed prints * add test for smeasure? * test "make-smeasure" functions * test original-extents * test smeasure-by-exts * test for canonical-smeasure-representation * test meet-smeasure * fix error in canonical-smeasure-representation * test error-in-smeasure * fix and test invalid-attributes * fix & test conceptual-scaling-error + attribute-scaling-error * change 'make-smeasure' tests * test smeasure-valid-attr and smeasure-invalid-attr * test conjunctive normalform * add test for scale-apposition * test smeasure-valid-exts and smeasure-invalid-exts * test rename-scale for objects and attributes * test pre-image-measure * add test for join-complement * add test for recommend-by-importance * add tests for conceptual-navigation * add tests for conceptual-navigation * add tests for exploration-of-scales-iteration * add test for exploration-of-scales * add some minor test cases * add test for concept-lattice-filter+covering-concepts --------- Co-authored-by: Johannes Hirth Co-authored-by: Johannes Hirth Co-authored-by: De Narm Co-authored-by: hirthjo <58222089+hirthjo@users.noreply.github.com> Co-authored-by: Tom Hanika * tutorial finished * tutorial cleanup * Update icfca-2023-tutorial.org * update images for tutorial * fix typo * fix typos * Updated version in flake * Updated version in flake -- for real * add contexts to tutorial * Avoid duplicating the version number in `flake.nix` (#124) * Read version from project.clj * flake.lock: Update Flake lock file updates: • Updated input 'clj-nix': 'github:jlesquembre/clj-nix/7d9e244ea96988524ba3bd6c2bbafdf0a5340b96' (2023-02-25) → 'github:jlesquembre/clj-nix/6a017fb2bc7b60c9e67b1c6f0b04bbefcf8dc698' (2023-07-19) • Updated input 'clj-nix/devshell': 'github:numtide/devshell/0ffc7937bb5e8141af03d462b468bd071eb18e1b' (2022-07-25) → 'github:numtide/devshell/3864857b2754ab0e16c7c7c626f0e5a1d4e42f38' (2023-06-28) • Removed input 'clj-nix/devshell/flake-utils' • Added input 'clj-nix/devshell/systems': 'github:nix-systems/default/da67096a3b9bf56a91d16901293e51ba5b49a27e' (2023-04-09) • Removed input 'clj-nix/flake-utils' • Added input 'clj-nix/nix-fetcher-data': 'github:jlesquembre/nix-fetcher-data/f14967db6c92c79b77419f52c22a698518c91120' (2023-05-31) • Added input 'clj-nix/nix-fetcher-data/flake-part': 'github:hercules-ci/flake-parts/6ef2707776c6379bc727faf3f83c0dd60b06e0c6' (2023-05-31) • Added input 'clj-nix/nix-fetcher-data/flake-part/nixpkgs-lib': 'github:NixOS/nixpkgs/da45bf6ec7bbcc5d1e14d3795c025199f28e0de0?dir=lib' (2023-04-30) • Added input 'clj-nix/nix-fetcher-data/flake-parts': 'github:hercules-ci/flake-parts/6ef2707776c6379bc727faf3f83c0dd60b06e0c6' (2023-05-31) • Added input 'clj-nix/nix-fetcher-data/flake-parts/nixpkgs-lib': 'github:NixOS/nixpkgs/da45bf6ec7bbcc5d1e14d3795c025199f28e0de0?dir=lib' (2023-04-30) • Added input 'clj-nix/nix-fetcher-data/nixpkgs': follows 'clj-nix/nixpkgs' • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/6b0edc9c690c1d8a729f055e0d73439045cfda55' (2023-05-30) → 'github:NixOS/nixpkgs/53657afe29748b3e462f1f892287b7e254c26d77' (2023-07-17) * Clean up flake structure * Add metadata to conexp-clj package * Fix formatting * Build package (and thus run tests) as flake check * bind json schema resources such that they are also correctly opened in standalone jar (#126) * Clean up project dependencies * Added CSV load button * Update deps-lock.json (#137) Co-authored-by: tomhanika * Exploration Step Method (#143) * Added Exploration Step Method * Removed Print Function Calls. * Metric Context (#139) * Implemented Metric Context Class and Related Functions. * Refactoring and Documentation. * Improved Implementation of Multi Arity Functions. * Added Tests. * Added Wrappers for Common Context Operations. * Improved Confusion Matrix Functions. * Update metric_contexts.clj Added Methods for Generating Valuation Functions. * Improved Implementation of Mewtric Functions. * Fully Implemented Generation of Valueation Functions. * Removed Testing Statements. * Improved Implementation of Dual Metric Context. * Fixed Implementation for Dual-Metric-Context and Added Option to generate Metric Contexts without Default Metrics. * Added Example Context and Metric. * Improved Implementation of Hamming Metrics. * Default Namespace (#135) * Added Analysis Namespace. * Added to Analysis Namespace. * Minor Edit to Documentation. * Expanded Analysis Namespace. * Corrected metric-context-naming / Version bump * Causal Implications (#132) * Restored Causal Implications Functionality * Outsourced Functions to implications.clj * Refactoring, Removed Test Data. * Refactoring. Added Test File. * Implemented Test for Causal Implications. * Added Documentation for Causal Rule Discovery. * Minor Documentation Fixes. * Refactoring. * Refactoring. * Corrected file encoding in causal test * Feature/relevant attributes (#119) * 60% of relevant attributes implemented * Necessary functions for relevant attributes implemented * Fixed n-next functions, some typos * Adatped methods in cover to new parameter list order in fast bitwise * Implemented Function for Generating Sublattice from Generators. (#140) * Corrected typo in generated-sublattice * Completed AUTHORS.md . (#144) * Typos etc. --------- Co-authored-by: Johannes Hirth Co-authored-by: Maximilian Felde Co-authored-by: hirthjo <58222089+hirthjo@users.noreply.github.com> Co-authored-by: Daniel Borchmann <517659+exot@users.noreply.github.com> Co-authored-by: Jana Co-authored-by: Maximilian Marx Co-authored-by: maximilian-felde <43608455+maximilian-felde@users.noreply.github.com> Co-authored-by: Jana Fischer <74052109+jana-fischer@users.noreply.github.com> Co-authored-by: mmarx Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: tomhanika Co-authored-by: Johannes Hirth Co-authored-by: De Narm Co-authored-by: JannikNordmeyer <93387255+JannikNordmeyer@users.noreply.github.com> --- .github/workflows/run-tests.yaml | 5 +- .github/workflows/update-deps-lock.yaml | 5 +- .gitignore | 3 +- AUTHORS.md | 2 + README.md | 1 + deps-lock.json | 273 +--------- doc/Causal-Implications.org | 141 +++++ doc/Getting-Started.org | 4 +- .../contexts/ben-and-jerrys-allergens.ctx | 26 + .../contexts/ben-and-jerrys-flavors-small.ctx | 25 + .../contexts/ben-and-jerrys-flavors.ctx | 28 + .../icfca-2023/icfca-2023-tutorial.org | 491 ++++++++++++++++++ .../images/ben-and-jerrys-export-tikz.png | Bin 0 -> 16787 bytes ...errys-lattice-dimdraw-labels-stability.png | Bin 0 -> 136297 bytes ...-jerrys-lattice-dimdraw-labels-support.png | Bin 0 -> 130576 bytes ...n-and-jerrys-lattice-manual_valuations.png | Bin 0 -> 129301 bytes .../images/ben-and-jerrys-lattice.png | Bin 0 -> 87165 bytes flake.lock | 139 ++++- flake.nix | 114 ++-- project.clj | 14 +- src/main/clojure/conexp/analysis.clj | 64 +++ .../conexp/fca/causal_implications.clj | 250 +++++++++ src/main/clojure/conexp/fca/exploration.clj | 20 + src/main/clojure/conexp/fca/implications.clj | 43 +- src/main/clojure/conexp/fca/lattices.clj | 15 +- .../clojure/conexp/fca/metric_context.clj | 339 ++++++++++++ .../clojure/conexp/gui/editors/contexts.clj | 13 + src/main/clojure/conexp/io/contexts.clj | 2 +- src/main/clojure/conexp/io/fcas.clj | 2 +- src/main/clojure/conexp/io/implications.clj | 2 +- src/main/clojure/conexp/io/json.clj | 5 +- src/main/clojure/conexp/io/lattices.clj | 2 +- src/main/clojure/conexp/io/layouts.clj | 2 +- .../conexp/io/many_valued_contexts.clj | 2 +- .../conexp/fca/causal_implications_test.clj | 166 ++++++ .../conexp/fca/metric_context_test.clj | 199 +++++++ testing-data/ben-and-jerrys-allergens.ctx | 26 + testing-data/ben-and-jerrys-flavors-small.ctx | 25 + testing-data/ben-and-jerrys-flavors.ctx | 28 + 39 files changed, 2121 insertions(+), 355 deletions(-) create mode 100644 doc/Causal-Implications.org create mode 100644 doc/tutorials/icfca-2023/contexts/ben-and-jerrys-allergens.ctx create mode 100644 doc/tutorials/icfca-2023/contexts/ben-and-jerrys-flavors-small.ctx create mode 100644 doc/tutorials/icfca-2023/contexts/ben-and-jerrys-flavors.ctx create mode 100644 doc/tutorials/icfca-2023/icfca-2023-tutorial.org create mode 100644 doc/tutorials/icfca-2023/images/ben-and-jerrys-export-tikz.png create mode 100644 doc/tutorials/icfca-2023/images/ben-and-jerrys-lattice-dimdraw-labels-stability.png create mode 100644 doc/tutorials/icfca-2023/images/ben-and-jerrys-lattice-dimdraw-labels-support.png create mode 100644 doc/tutorials/icfca-2023/images/ben-and-jerrys-lattice-manual_valuations.png create mode 100644 doc/tutorials/icfca-2023/images/ben-and-jerrys-lattice.png create mode 100644 src/main/clojure/conexp/analysis.clj create mode 100644 src/main/clojure/conexp/fca/causal_implications.clj create mode 100644 src/main/clojure/conexp/fca/metric_context.clj create mode 100644 src/test/clojure/conexp/fca/causal_implications_test.clj create mode 100644 src/test/clojure/conexp/fca/metric_context_test.clj create mode 100644 testing-data/ben-and-jerrys-allergens.ctx create mode 100644 testing-data/ben-and-jerrys-flavors-small.ctx create mode 100644 testing-data/ben-and-jerrys-flavors.ctx diff --git a/.github/workflows/run-tests.yaml b/.github/workflows/run-tests.yaml index 0ab0b6c91..1453d8992 100644 --- a/.github/workflows/run-tests.yaml +++ b/.github/workflows/run-tests.yaml @@ -13,5 +13,6 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - uses: cachix/install-nix-action@v17 - - run: nix run .#test + - uses: DeterminateSystems/nix-installer-action@v4 + - uses: DeterminateSystems/magic-nix-cache-action@v2 + - run: nix flake check diff --git a/.github/workflows/update-deps-lock.yaml b/.github/workflows/update-deps-lock.yaml index abe9eb791..5a0dd72d9 100644 --- a/.github/workflows/update-deps-lock.yaml +++ b/.github/workflows/update-deps-lock.yaml @@ -10,9 +10,10 @@ jobs: steps: - uses: actions/checkout@v3 - - uses: cachix/install-nix-action@v17 + - uses: DeterminateSystems/nix-installer-action@v4 + - uses: DeterminateSystems/magic-nix-cache-action@v2 - name: Update deps-lock - run: "nix run .#deps-lock" + run: nix run .#deps-lock - name: Create Pull Request uses: peter-evans/create-pull-request@v4.0.3 diff --git a/.gitignore b/.gitignore index d38ac958b..f87d1a247 100644 --- a/.gitignore +++ b/.gitignore @@ -26,4 +26,5 @@ /doc/icfca-2013-tutorial/icfca2013-tutorial-talk.vrb /doc/tutorials/icfca-2013/icfca2013-tutorial-live.html /.lsp/ -/.direnv/ \ No newline at end of file +/.direnv/ +/.clj-kondo/ \ No newline at end of file diff --git a/AUTHORS.md b/AUTHORS.md index 332175d75..44d7bfb63 100644 --- a/AUTHORS.md +++ b/AUTHORS.md @@ -16,6 +16,8 @@ Additional Contributors are * Johannes Hirth (pq-cores, scale-measures) * Gleb Kanterov (interval-scale) * Maximilian Marx (Wikidata) +* Jannik Nordmeyer (Metric Contexts, Causal Implications) * Maximilian Stubbemann (concept-robustness) * Anselm von Wangenheim (DimDraw) * Johannes Wollbold (bug reports, feature requests) + diff --git a/README.md b/README.md index f5925b81a..52d86aa0e 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,7 @@ much more. 8. [Computing Traces in Contexts](doc/code/trace-context.clj) 9. [Counting Quasiorders](doc/code/quasiorders.clj) 10. [Rudolph's Algorithm for Computing Bases](doc/code/rudolph_computation.clj) + 11. [Discovering Causal Implications](doc/Causal-Implications.org) 5. Advanced Topics 1. [pq-cores](doc/pq-cores-in-Formal-Contexts.md) 2. [REST-API Usage](doc/REST-API-usage.md) diff --git a/deps-lock.json b/deps-lock.json index 32c5b33c0..f85e54e16 100644 --- a/deps-lock.json +++ b/deps-lock.json @@ -42,26 +42,6 @@ "mvn-repo": "https://repo.clojars.org/", "hash": "sha256-4ZmTVCJYkBoGvnALoB14QOInNNXqsoLWJN8ceAPQ2TU=" }, - { - "mvn-path": "cheshire/cheshire/5.9.0/cheshire-5.9.0.jar", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-Wbkn5BICCp+23Fw85K/l6MMRJFl7wfTdR3XbP/UGZQ0=" - }, - { - "mvn-path": "cheshire/cheshire/5.9.0/cheshire-5.9.0.pom", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-2o0ZOdbSXm+053HUxYHq7jctocwGmaGsaLiAPnbSy1o=" - }, - { - "mvn-path": "cider/cider-nrepl/0.25.2/cider-nrepl-0.25.2.jar", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-6P/T+ezkNK+HfqR2uY4zjxguDVYCBkZaliQLT+qH7k0=" - }, - { - "mvn-path": "cider/cider-nrepl/0.25.2/cider-nrepl-0.25.2.pom", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-2Psx89fYmDr18J8kk6KO0ZKFxqxyxZ/Y1/+9B212gy0=" - }, { "mvn-path": "clj-http/clj-http/3.12.3/clj-http-3.12.3.jar", "mvn-repo": "https://repo.clojars.org/", @@ -87,11 +67,6 @@ "mvn-repo": "https://repo.clojars.org/", "hash": "sha256-o0Hid1Wzrsp13Vl3jagdiOF5TruKmPIXon/3MpN24Ks=" }, - { - "mvn-path": "clj-time/clj-time/0.14.3/clj-time-0.14.3.jar", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-AdXJ5WTB3OBAWYD9mgvP/yfIDzu2xOms6CF/TTgBnjk=" - }, { "mvn-path": "clj-time/clj-time/0.14.3/clj-time-0.14.3.pom", "mvn-repo": "https://repo.clojars.org/", @@ -118,14 +93,14 @@ "hash": "sha256-ZIsMIEuk8EDcQ8KfguRHHstmdWCK+wuzGp7BxCYTenQ=" }, { - "mvn-path": "clout/clout/2.2.1/clout-2.2.1.jar", + "mvn-path": "com/clojure-goes-fast/clj-async-profiler/1.0.5/clj-async-profiler-1.0.5.jar", "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-nzdGxROb7zUJmjOuuDMQCnWOJXKv1CM+ynAM3XLWhws=" + "hash": "sha256-GCU/PtxlxREIczFMtETc+xxGGK+y7c+hZjeTGY/M/dk=" }, { - "mvn-path": "clout/clout/2.2.1/clout-2.2.1.pom", + "mvn-path": "com/clojure-goes-fast/clj-async-profiler/1.0.5/clj-async-profiler-1.0.5.pom", "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-BNzQl/YWeodReE3AkISRm68YmBfPQcvt4sQs7gSMh6c=" + "hash": "sha256-ZVZ+y4rPUVaTwStPlBe0Gr6NKhwjOioqlWZaM8xMn04=" }, { "mvn-path": "com/damnhandy/handy-uri-templates/2.1.8/handy-uri-templates-2.1.8.jar", @@ -157,16 +132,6 @@ "mvn-repo": "https://repo1.maven.org/maven2/", "hash": "sha256-fd0tyP0KY04n4wapqoVJWczEckV5dijFC8g3F3WkLjI=" }, - { - "mvn-path": "com/fasterxml/jackson/core/jackson-core/2.9.9/jackson-core-2.9.9.jar", - "mvn-repo": "https://repo1.maven.org/maven2/", - "hash": "sha256-MIMHm+YIjbLtCgxv+SIE4KpI+h3p21tZxGjzWs+ILCw=" - }, - { - "mvn-path": "com/fasterxml/jackson/core/jackson-core/2.9.9/jackson-core-2.9.9.pom", - "mvn-repo": "https://repo1.maven.org/maven2/", - "hash": "sha256-xWqygptlPMfKZIEGCV8GA4Vm2AlcAfIYE1XckHskT2E=" - }, { "mvn-path": "com/fasterxml/jackson/dataformat/jackson-dataformat-cbor/2.10.2/jackson-dataformat-cbor-2.10.2.jar", "mvn-repo": "https://repo1.maven.org/maven2/", @@ -187,16 +152,6 @@ "mvn-repo": "https://repo1.maven.org/maven2/", "hash": "sha256-11c/IdIWsbjzqqLnriuDegU1M1Mn0kBQeUkXcWAJABY=" }, - { - "mvn-path": "com/fasterxml/jackson/dataformat/jackson-dataformat-cbor/2.9.9/jackson-dataformat-cbor-2.9.9.jar", - "mvn-repo": "https://repo1.maven.org/maven2/", - "hash": "sha256-9ZVZbn4AyDdS2NWGsI0DYYXiNj+j1xrg4VWzv2psdaw=" - }, - { - "mvn-path": "com/fasterxml/jackson/dataformat/jackson-dataformat-cbor/2.9.9/jackson-dataformat-cbor-2.9.9.pom", - "mvn-repo": "https://repo1.maven.org/maven2/", - "hash": "sha256-ljd1drO9v9kPc89b39Cx1NRpheC/7RqEVuP0NhCswrY=" - }, { "mvn-path": "com/fasterxml/jackson/dataformat/jackson-dataformat-smile/2.10.2/jackson-dataformat-smile-2.10.2.jar", "mvn-repo": "https://repo1.maven.org/maven2/", @@ -217,16 +172,6 @@ "mvn-repo": "https://repo1.maven.org/maven2/", "hash": "sha256-oXSd6iBODyF1XRo/ea+3Z47bpT+EggcoV7vJRoy4CHU=" }, - { - "mvn-path": "com/fasterxml/jackson/dataformat/jackson-dataformat-smile/2.9.9/jackson-dataformat-smile-2.9.9.jar", - "mvn-repo": "https://repo1.maven.org/maven2/", - "hash": "sha256-EMtnsq/C7ghHkiFaq/aXQult1Y1kpWgh+sVY0MjPeSM=" - }, - { - "mvn-path": "com/fasterxml/jackson/dataformat/jackson-dataformat-smile/2.9.9/jackson-dataformat-smile-2.9.9.pom", - "mvn-repo": "https://repo1.maven.org/maven2/", - "hash": "sha256-vadQqQnsL/gnrG6zMjmVlpN7Bcpu4DrZScJ3L2TIryk=" - }, { "mvn-path": "com/fasterxml/jackson/dataformat/jackson-dataformats-binary/2.10.2/jackson-dataformats-binary-2.10.2.pom", "mvn-repo": "https://repo1.maven.org/maven2/", @@ -242,11 +187,6 @@ "mvn-repo": "https://repo1.maven.org/maven2/", "hash": "sha256-S+eAID53athTMCWQW1j4l5YE/Igk1pgti2IZ5qMwygE=" }, - { - "mvn-path": "com/fasterxml/jackson/dataformat/jackson-dataformats-binary/2.9.9/jackson-dataformats-binary-2.9.9.pom", - "mvn-repo": "https://repo1.maven.org/maven2/", - "hash": "sha256-MSo3eyxurmKp4LC2ahSDt63DomhRFExolvXZ+QH/vpg=" - }, { "mvn-path": "com/fasterxml/jackson/jackson-base/2.10.2/jackson-base-2.10.2.pom", "mvn-repo": "https://repo1.maven.org/maven2/", @@ -262,11 +202,6 @@ "mvn-repo": "https://repo1.maven.org/maven2/", "hash": "sha256-+81gnH4GPoOzDc5YVVsj3uPlGdwAqqx0ceUrQUCRcyk=" }, - { - "mvn-path": "com/fasterxml/jackson/jackson-base/2.9.9/jackson-base-2.9.9.pom", - "mvn-repo": "https://repo1.maven.org/maven2/", - "hash": "sha256-QzaIZ9LYww3EbwzebLWjIL+5/XRjcovlAd5hVFJll10=" - }, { "mvn-path": "com/fasterxml/jackson/jackson-bom/2.10.2/jackson-bom-2.10.2.pom", "mvn-repo": "https://repo1.maven.org/maven2/", @@ -282,11 +217,6 @@ "mvn-repo": "https://repo1.maven.org/maven2/", "hash": "sha256-9BOCmOts2HKgOORiRoAxqGA6p4SC6aIjnJFy81ci8Pg=" }, - { - "mvn-path": "com/fasterxml/jackson/jackson-bom/2.9.9/jackson-bom-2.9.9.pom", - "mvn-repo": "https://repo1.maven.org/maven2/", - "hash": "sha256-I39YkwqwLX1S6a/MglsuLYoKvdDobR1dobV53GWAnJE=" - }, { "mvn-path": "com/fasterxml/jackson/jackson-parent/2.10/jackson-parent-2.10.pom", "mvn-repo": "https://repo1.maven.org/maven2/", @@ -302,21 +232,11 @@ "mvn-repo": "https://repo1.maven.org/maven2/", "hash": "sha256-IlykrxyJWrSEXPLSn9WsUOU4s1OAXnW7K3Shs7nYa8U=" }, - { - "mvn-path": "com/fasterxml/jackson/jackson-parent/2.9.1.2/jackson-parent-2.9.1.2.pom", - "mvn-repo": "https://repo1.maven.org/maven2/", - "hash": "sha256-lRfkBcazuKA1IVrVcnATo1Get1kXQ/4dzATfZjVoPPk=" - }, { "mvn-path": "com/fasterxml/oss-parent/33/oss-parent-33.pom", "mvn-repo": "https://repo1.maven.org/maven2/", "hash": "sha256-xUNwlkz8ziMZvZqF9eFPUAyFGJia5WsbR13xs0i3MQg=" }, - { - "mvn-path": "com/fasterxml/oss-parent/34/oss-parent-34.pom", - "mvn-repo": "https://repo1.maven.org/maven2/", - "hash": "sha256-mnXz4yv51uAGeNlEes5N6FlqLSIa9c9bvH9XHKx5UAY=" - }, { "mvn-path": "com/fasterxml/oss-parent/38/oss-parent-38.pom", "mvn-repo": "https://repo1.maven.org/maven2/", @@ -392,11 +312,6 @@ "mvn-repo": "https://repo1.maven.org/maven2/", "hash": "sha256-VxY5EUJ+1pVuXJId/eH3UKok0b4Z+UBqkwPvGdyAMAU=" }, - { - "mvn-path": "commons-codec/commons-codec/1.10/commons-codec-1.10.jar", - "mvn-repo": "https://repo1.maven.org/maven2/", - "hash": "sha256-QkHfqU5xHUNfKaRgSj4t5cSqPBZeI70Ga+b8H8QwlWk=" - }, { "mvn-path": "commons-codec/commons-codec/1.10/commons-codec-1.10.pom", "mvn-repo": "https://repo1.maven.org/maven2/", @@ -447,11 +362,6 @@ "mvn-repo": "https://repo1.maven.org/maven2/", "hash": "sha256-FaWcDnV8bAfD0baJ1zXI46nsVpXWzrapQdQGKrIpAbc=" }, - { - "mvn-path": "commons-fileupload/commons-fileupload/1.3.3/commons-fileupload-1.3.3.jar", - "mvn-repo": "https://repo1.maven.org/maven2/", - "hash": "sha256-4Uq320feEk9fnpwOA/T20qAH2DRYoK1nNWt73XdcjNA=" - }, { "mvn-path": "commons-fileupload/commons-fileupload/1.3.3/commons-fileupload-1.3.3.pom", "mvn-repo": "https://repo1.maven.org/maven2/", @@ -482,11 +392,6 @@ "mvn-repo": "https://repo1.maven.org/maven2/", "hash": "sha256-bCIdwtypQzGpKpyxmzlDYx98t8AwIlX7XNBFBlToEsc=" }, - { - "mvn-path": "commons-io/commons-io/2.6/commons-io-2.6.jar", - "mvn-repo": "https://repo1.maven.org/maven2/", - "hash": "sha256-+HfTBGYKwqFC84ZbrfyXHex+1zx0fH+NXS9ROcpzZRM=" - }, { "mvn-path": "commons-io/commons-io/2.6/commons-io-2.6.pom", "mvn-repo": "https://repo1.maven.org/maven2/", @@ -522,21 +427,6 @@ "mvn-repo": "https://repo1.maven.org/maven2/", "hash": "sha256-UztBf2dHU/bHn6v7/vlqRj6pw8yj16g/8Ot9dmgpP8k=" }, - { - "mvn-path": "compojure/compojure/1.6.1/compojure-1.6.1.jar", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-gfFlLhALTnJg1roctdKanPkJxmYZIhJUtI9htRCsFqA=" - }, - { - "mvn-path": "compojure/compojure/1.6.1/compojure-1.6.1.pom", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-0X6Yn5mm6xGjC2q2bs9PWztRG/gPhoG4zFd3835KCbI=" - }, - { - "mvn-path": "crypto-equality/crypto-equality/1.0.0/crypto-equality-1.0.0.jar", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-fdGcgcHmPXaIY2DtqYI8cefkaA5KJKgNHJvYQsRGOPk=" - }, { "mvn-path": "crypto-equality/crypto-equality/1.0.0/crypto-equality-1.0.0.pom", "mvn-repo": "https://repo.clojars.org/", @@ -552,11 +442,6 @@ "mvn-repo": "https://repo.clojars.org/", "hash": "sha256-Yy5XAtXTVhk9GKUN4KJhoZwUqtYIc05GToWjYA509Es=" }, - { - "mvn-path": "crypto-random/crypto-random/1.2.0/crypto-random-1.2.0.jar", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-iRTQrrFQf50SEzFacCHqKCqVaxnbCE4pwYCbt8ufjQg=" - }, { "mvn-path": "crypto-random/crypto-random/1.2.0/crypto-random-1.2.0.pom", "mvn-repo": "https://repo.clojars.org/", @@ -572,36 +457,6 @@ "mvn-repo": "https://repo.clojars.org/", "hash": "sha256-2OgLA0KFMl6QX1RkmhWYtoe5pKmaOk9LlO7TWXyyEEg=" }, - { - "mvn-path": "gorilla-plot/gorilla-plot/0.1.4/gorilla-plot-0.1.4.jar", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-Tz9YJx+/2rMO5UKZEK8tLNCbPq4PMg13ipshtVZ1OOc=" - }, - { - "mvn-path": "gorilla-plot/gorilla-plot/0.1.4/gorilla-plot-0.1.4.pom", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-WSEDYpj5Zp8GDI3bW4OPV4Qso4m0Ksy3Zi7cOSk3lyU=" - }, - { - "mvn-path": "gorilla-renderable/gorilla-renderable/2.0.0/gorilla-renderable-2.0.0.jar", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-UGXhgmjEpLHuPo9yxQB/IEpslI5Bs0RBlFWCYuAXKNA=" - }, - { - "mvn-path": "gorilla-renderable/gorilla-renderable/2.0.0/gorilla-renderable-2.0.0.pom", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-kHytrypFgjzzoChhvglmTRqLGCwCoqlXpNIj7AjyChU=" - }, - { - "mvn-path": "grimradical/clj-semver/0.2.0/clj-semver-0.2.0.jar", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-zlqBqd/Xq+C34aA1NiDa0aPe+w9MViyGQpYCROrMVsU=" - }, - { - "mvn-path": "grimradical/clj-semver/0.2.0/clj-semver-0.2.0.pom", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-OiolUJk/rq8aOxWSXzJwiu0JuAY2IifCQWwGBWSQieM=" - }, { "mvn-path": "hiccup/hiccup/1.0.5/hiccup-1.0.5.jar", "mvn-repo": "https://repo.clojars.org/", @@ -612,16 +467,6 @@ "mvn-repo": "https://repo.clojars.org/", "hash": "sha256-OGBZ1P4rXyKX6peRwllnGDM6eQAIgsOfyZqXSEPA5VI=" }, - { - "mvn-path": "http-kit/http-kit/2.4.0-alpha6/http-kit-2.4.0-alpha6.jar", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-XyXlrqbD+LcMd4Sx9K+a7verxsIq+ZzMUZsc7qiTuIM=" - }, - { - "mvn-path": "http-kit/http-kit/2.4.0-alpha6/http-kit-2.4.0-alpha6.pom", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-NPdrS86tzY9CC7MgnLsRifay9QO9TtBKnk2c2lTcV8A=" - }, { "mvn-path": "http-kit/http-kit/2.6.0/http-kit-2.6.0.jar", "mvn-repo": "https://repo.clojars.org/", @@ -632,16 +477,6 @@ "mvn-repo": "https://repo.clojars.org/", "hash": "sha256-mzngH1mQUDDBHh5BwOgEZ+jhv2Rc7n2gl2hVz/W2mSM=" }, - { - "mvn-path": "instaparse/instaparse/1.4.8/instaparse-1.4.8.jar", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-f3FtOKxcfsqmBDWNIbjNCU2YHVfwy9ulhkT2PA6pfAQ=" - }, - { - "mvn-path": "instaparse/instaparse/1.4.8/instaparse-1.4.8.pom", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-Abw9VkmoG6vyyVkVtWbFQxNyqG/LwViDrBoT9JCEIxw=" - }, { "mvn-path": "j18n/j18n/1.0.2/j18n-1.0.2.jar", "mvn-repo": "https://repo.clojars.org/", @@ -682,11 +517,6 @@ "mvn-repo": "https://repo1.maven.org/maven2/", "hash": "sha256-3t7z1zItiWPlFT9qIOkAV3TN+kZUooVVL5D8Q2W/zho=" }, - { - "mvn-path": "joda-time/joda-time/2.9.9/joda-time-2.9.9.jar", - "mvn-repo": "https://repo1.maven.org/maven2/", - "hash": "sha256-sEmkPBBXlC5qz77OAI5JSbLjXRZY0Mjgb0SFOX4vpOc=" - }, { "mvn-path": "joda-time/joda-time/2.9.9/joda-time-2.9.9.pom", "mvn-repo": "https://repo1.maven.org/maven2/", @@ -712,16 +542,6 @@ "mvn-repo": "https://repo.clojars.org/", "hash": "sha256-0jmKkRGLe9T7zNhtSiQZSsP6qWFfshG9LHw6MzWL1JI=" }, - { - "mvn-path": "medley/medley/1.0.0/medley-1.0.0.jar", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-nSj+gKDZVIp4jTc+aZS5OWX3LgyEf3i6CfGZ+xdV6fo=" - }, - { - "mvn-path": "medley/medley/1.0.0/medley-1.0.0.pom", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-lpOhooHEVTdGXgi/KEM6UpgAZdXt9Y6S+A16zPRrzUE=" - }, { "mvn-path": "net/cgrand/parsley/0.9.2/parsley-0.9.2.jar", "mvn-repo": "https://repo.clojars.org/", @@ -762,16 +582,6 @@ "mvn-repo": "https://repo.clojars.org/", "hash": "sha256-QQlhb1Xl2+WcMt0Q6ibhbfeeJDciWW+f5QLw8tMh8A0=" }, - { - "mvn-path": "nrepl/nrepl/0.7.0/nrepl-0.7.0.jar", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-fMYRtNYyT5Djwmh7K2XuSjTjt/vnYgayk4NS8oWNP8E=" - }, - { - "mvn-path": "nrepl/nrepl/0.7.0/nrepl-0.7.0.pom", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-yqn3nivBpvotTftjmLD38a5fkWDNNyMxo9WVk2aJMbg=" - }, { "mvn-path": "nrepl/nrepl/0.8.3/nrepl-0.8.3.pom", "mvn-repo": "https://repo.clojars.org/", @@ -1127,26 +937,6 @@ "mvn-repo": "https://repo1.maven.org/maven2/", "hash": "sha256-PW66QoVVpVjeBGtddurMH1pUtPXyC4TWNu16/xiqSMM=" }, - { - "mvn-path": "org/clojars/benfb/gorilla-repl/0.7.0/gorilla-repl-0.7.0.jar", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-jtNrbHSsSMrBpNgV5hFGNIrtRXQAfprWghL+2mZjnYo=" - }, - { - "mvn-path": "org/clojars/benfb/gorilla-repl/0.7.0/gorilla-repl-0.7.0.pom", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-Lxats/1b27srOo5RXQtPP9gigg6E/roTF/j/COfdp9I=" - }, - { - "mvn-path": "org/clojars/benfb/lein-gorilla/0.7.0/lein-gorilla-0.7.0.jar", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-LJvJtREace0lD1BxB+dZBFVhuszMolKZ6YEwozil678=" - }, - { - "mvn-path": "org/clojars/benfb/lein-gorilla/0.7.0/lein-gorilla-0.7.0.pom", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-oo7kXwJ9Pkxj3RITBEdkCM4/H6+e2Qp0ltCZucaEXEI=" - }, { "mvn-path": "org/clojars/trptcolin/sjacket/0.1.1.1/sjacket-0.1.1.1.jar", "mvn-repo": "https://repo.clojars.org/", @@ -1337,16 +1127,6 @@ "mvn-repo": "https://repo1.maven.org/maven2/", "hash": "sha256-F3i70Ti9GFkLgFS+nZGdG+toCfhbduXGKFtn1Ad9MA4=" }, - { - "mvn-path": "org/clojure/data.codec/0.1.0/data.codec-0.1.0.jar", - "mvn-repo": "https://repo1.maven.org/maven2/", - "hash": "sha256-aD1oGVBAPGHCNjVBgeuhtcja9sE1geoTiZNKfV6yjgc=" - }, - { - "mvn-path": "org/clojure/data.codec/0.1.0/data.codec-0.1.0.pom", - "mvn-repo": "https://repo1.maven.org/maven2/", - "hash": "sha256-8T2ZaEbW16cCQ2JlqjhjKmdGkgJaQYpWaVxQKBPd2ng=" - }, { "mvn-path": "org/clojure/data.csv/1.0.1/data.csv-1.0.1.jar", "mvn-repo": "https://repo1.maven.org/maven2/", @@ -1467,11 +1247,6 @@ "mvn-repo": "https://repo1.maven.org/maven2/", "hash": "sha256-w/lnehWxSPzvMAsGC29fn2fToTWUMhq+svIFpau+qZE=" }, - { - "mvn-path": "org/clojure/pom.contrib/0.0.25/pom.contrib-0.0.25.pom", - "mvn-repo": "https://repo1.maven.org/maven2/", - "hash": "sha256-68ezduVtg/bEhM2x03Hv3AEw3bvK3n1tpuNU9OQm/Is=" - }, { "mvn-path": "org/clojure/pom.contrib/0.1.2/pom.contrib-0.1.2.pom", "mvn-repo": "https://repo1.maven.org/maven2/", @@ -1562,16 +1337,6 @@ "mvn-repo": "https://repo1.maven.org/maven2/", "hash": "sha256-v9jf44Bp4mJIzqRyQ9+Zvv/0mjGGzDyk1fNTefp9u3M=" }, - { - "mvn-path": "org/clojure/tools.macro/0.1.5/tools.macro-0.1.5.jar", - "mvn-repo": "https://repo1.maven.org/maven2/", - "hash": "sha256-JxTXKUyQ+SaO7vNyj+TZjr+q7fJAoCN02u8rhVhEgkg=" - }, - { - "mvn-path": "org/clojure/tools.macro/0.1.5/tools.macro-0.1.5.pom", - "mvn-repo": "https://repo1.maven.org/maven2/", - "hash": "sha256-cGCU9H2ljugXofq5uAwxLs0nZHK85uHVRCOfFAcR2zE=" - }, { "mvn-path": "org/clojure/tools.namespace/0.2.11/tools.namespace-0.2.11.jar", "mvn-repo": "https://repo1.maven.org/maven2/", @@ -1807,16 +1572,6 @@ "mvn-repo": "https://repo.clojars.org/", "hash": "sha256-SZCg3bNUDE1Ed6GtqP1mP62RSRScmaYGL7/XSKXwGJo=" }, - { - "mvn-path": "ring/ring-codec/1.1.0/ring-codec-1.1.0.jar", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-1eNzT90+4y8CCJOfPDgX0xUuiJDDdeeX4hj88e/wU9M=" - }, - { - "mvn-path": "ring/ring-codec/1.1.0/ring-codec-1.1.0.pom", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-tdPfkyWt0D1RfaxCiIHtRdydYEYLbpOEqob9AFSDUOM=" - }, { "mvn-path": "ring/ring-codec/1.1.1/ring-codec-1.1.1.pom", "mvn-repo": "https://repo.clojars.org/", @@ -1847,11 +1602,6 @@ "mvn-repo": "https://repo.clojars.org/", "hash": "sha256-u2TefpyESbB9MB079SA+VCs0GIQcDjTeR3STK1gJosk=" }, - { - "mvn-path": "ring/ring-core/1.7.1/ring-core-1.7.1.jar", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-WnVN6mqomoRWh+q73cxAtzoyL/S5/KAYl+64mqSnARk=" - }, { "mvn-path": "ring/ring-core/1.7.1/ring-core-1.7.1.pom", "mvn-repo": "https://repo.clojars.org/", @@ -1872,16 +1622,6 @@ "mvn-repo": "https://repo.clojars.org/", "hash": "sha256-CVk/j1Kyuozf5B7Y7emC9PP8D+bxPRKoqrZy+MmjaGc=" }, - { - "mvn-path": "ring/ring-json/0.5.0/ring-json-0.5.0.jar", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-7k/b7FLcxjKCdCL/4IIGgPAw6deLRFn6H3BO82xNjfk=" - }, - { - "mvn-path": "ring/ring-json/0.5.0/ring-json-0.5.0.pom", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-BDxzJtoWiilx+yOpHLctK08S4zcr1NCo9ibASXYcwTI=" - }, { "mvn-path": "ring/ring-json/0.5.1/ring-json-0.5.1.jar", "mvn-repo": "https://repo.clojars.org/", @@ -1942,11 +1682,6 @@ "mvn-repo": "https://repo.clojars.org/", "hash": "sha256-K1LX2dBxuTl5vhB7VoNHfC2ftndYn5r5WMyWdg3jjpw=" }, - { - "mvn-path": "tigris/tigris/0.1.1/tigris-0.1.1.jar", - "mvn-repo": "https://repo.clojars.org/", - "hash": "sha256-3AV+TXCvFWvUmktx6ouXkoXDjiLJrsLzsMi67v3bCLs=" - }, { "mvn-path": "tigris/tigris/0.1.1/tigris-0.1.1.pom", "mvn-repo": "https://repo.clojars.org/", diff --git a/doc/Causal-Implications.org b/doc/Causal-Implications.org new file mode 100644 index 000000000..775d303fc --- /dev/null +++ b/doc/Causal-Implications.org @@ -0,0 +1,141 @@ +#+property: header-args :wrap src text +#+property: header-args:text :eval never + +* Computing Causal Rules in ~conexp-clj~ + +~conexp-clj~ provides methods to discover causal rules within a context as described in "Mining Causal Association Rules" (https://www.researchgate.net/publication/262240022_Mining_Causal_Association_Rules). +We will consider the following data set: + +#+begin_src clojure +(def smoking-ctx (make-context [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 + 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40] + ["smoking" "male" "female" "education-level-high" "education-level-low" "cancer"] + #{[0 "smoking"] [0 "male"] [0 "education-level-high"] [0 "cancer"] + [1 "smoking"] [1 "male"] [1 "education-level-high"] [1 "cancer"] + [2 "smoking"] [2 "male"] [2 "education-level-high"] [2 "cancer"] + [3 "smoking"] [3 "male"] [3 "education-level-high"] [3 "cancer"] + [4 "smoking"] [4 "male"] [4 "education-level-high"] [4 "cancer"] + [5 "smoking"] [5 "male"] [5 "education-level-high"] [5 "cancer"] + [6 "smoking"] [6 "male"] [6 "education-level-high"] + [7 "smoking"] [7 "male"] [7 "education-level-high"] + [8 "smoking"] [8 "male"] [8 "education-level-low"] [8 "cancer"] + [9 "smoking"] [9 "male"] [9 "education-level-low"] [9 "cancer"] + [10 "smoking"] [10 "male"] [10 "education-level-low"] [10 "cancer"] + [11 "smoking"] [11 "male"] [11 "education-level-low"] [11 "cancer"] + [12 "smoking"] [12 "male"] [12 "education-level-low"] + [13 "smoking"] [13 "female"] [13 "education-level-high"] [13 "cancer"] + [14 "smoking"] [14 "female"] [14 "education-level-high"] [14 "cancer"] + [15 "smoking"] [15 "female"] [15 "education-level-high"] [15 "cancer"] + [16 "smoking"] [16 "female"] [16 "education-level-high"] [16 "cancer"] + [17 "smoking"] [17 "female"] [17 "education-level-high"] [17 "cancer"] + [18 "smoking"] [18 "female"] [18 "education-level-high"] + [19 "smoking"] [19 "female"] [19 "education-level-high"] + [20 "smoking"] [20 "female"] [20 "education-level-low"] [20 "cancer"] + [21 "smoking"] [21 "female"] [21 "education-level-low"] [21 "cancer"] + [22 "smoking"] [22 "female"] [22 "education-level-low"] [22 "cancer"] + [23 "smoking"] [23 "female"] [23 "education-level-low"] [23 "cancer"] + [24 "smoking"] [24 "female"] [24 "education-level-low"] + [25 "male"] [25 "education-level-high"] [25 "cancer"] + [26 "male"] [26 "education-level-high"] [26 "cancer"] + [27 "male"] [27 "education-level-high"] + [28 "male"] [28 "education-level-high"] + [29 "male"] [29 "education-level-high"] + [30 "male"] [30 "education-level-low"] [30 "cancer"] + [31 "male"] [31 "education-level-low"] + [32 "male"] [32 "education-level-low"] + [33 "male"] [33 "education-level-low"] + [34 "female"] [34 "education-level-high"] [34 "cancer"] + [35 "female"] [35 "education-level-high"] + [36 "female"] [36 "education-level-high"] + [37 "female"] [37 "education-level-low"] [37 "cancer"] + [38 "female"] [38 "education-level-low"] + [39 "female"] [39 "education-level-low"] + [40 "female"] [40 "education-level-low"]}) +) +#+end_src + +We would like to ascertain, if smoking is causally related to cancer: + +#+begin_src clojure :exports both +(def smoking-rule (make-implication #{"smoking"} #{"cancer"})) +#+end_src + +The algorith determines causality by emulating a controlled study, in which one group is exposed to the premise attribute, in this case "smoking" and the control group is not. Additionally, we choose a set of controlled variables. +These are supposed to have the same values across pairs of objects in the exposure group and control group, to make sure neither of these is the true cause for the conclusion attribute, in this case "cancer". + +If two objects in the context satisfy these conditions, they are considerd a matched record pair. For example, if we control for variables "male" "female" "education-level-high" and "education-level-low" (0, 25), (9, 31) and (13 34) +each form a matched record pair. This can be verified using the method ~matched-record-pair?~: + +#+begin_src clojure :exports both +(matched-record-pair? smoking-ctx + smoking-rule + #{"male" "female" "education-level-high" "education-level-low"} + 0 + 25) + +(matched-record-pair? smoking-ctx + smoking-rule + #{"male" "female" "education-level-high" "education-level-low"} + 9 + 31) +(matched-record-pair? smoking-ctx + smoking-rule + #{"male" "female" "education-level-high" "education-level-low"} + 13 + 34) +#+end_src + +The method ~fair-data-set~ computes a set of matched record pairs, by trying to match each object to exactly one different object. + +#+begin_src clojure :exports both +(= (fair-data-set smoking-ctx + smoking-rule + #{"male" "female" "education-level-high" "education-level-low"}) + smoking-fair-data-set) +#+end_src + +#+RESULTS: +#+begin_src clojure +([#{7 29} + #{13 34} + #{15 36} + #{6 26} + #{1 28} + #{0 27} + #{17 35} + #{33 9} + #{31 12} + #{30 10} + #{22 37} + #{4 25} + #{21 38} + #{32 11} + #{24 40} + #{20 39}]) +#+end_src + +This set is used to verify whether an association rule is causal in nature. +The method ~causal?~ tests causality for a specific implication: + +#+begin_src clojure :exports both +(causal? smoking-ctx smoking-rule #{} 1.7 1) +#+end_src + +The final three parameters are: +-the irrelevant variables, variables that will not be controlled for +-the confidence in the causality of the implication; a value of 1.7 corresponds to a 70% confidence +-a threshold for computing exclusive variables. Two variables a and b are mutually exclusive, if the absolute support for (a and b) or (b and not a) is no larger than the threshold + +To discover all causes of a certain attribute in the context the method ~causal-association-rule-discovery~ can be used: + +#+begin_src clojure :exports both +(causal-association-rule-discovery smoking-ctx 0.7 3 "cancer" 1.7) +#+end_src + +#+RESULTS: +#+begin_src clojure +(#{"smoking"}) +#+end_src + +0.7 represents the minimum local support that a generated variable must exceet to be considered. 1.7 again represents the confidence of the rule, and 3 represents the maximum number of attributes of the premise. + diff --git a/doc/Getting-Started.org b/doc/Getting-Started.org index 6173c63b2..22756430f 100644 --- a/doc/Getting-Started.org +++ b/doc/Getting-Started.org @@ -17,7 +17,7 @@ java -jar conexp-clj-2.1.1-SNAPSHOT-standalone.jar This will get you a prompt for ~conexp-clj~ much like #+begin_src text -conexp.main=> +conexp.analysis=> #+end_src You can now use all the power of formal concept analysis from ~conexp-clj~, and @@ -25,7 +25,7 @@ also everything Clojure provides. For example, you can compute the value of the expression ~1 + 1~ as #+begin_src text -conexp.main=> (+ 1 1) +conexp.analysis=> (+ 1 1) 2 #+end_src diff --git a/doc/tutorials/icfca-2023/contexts/ben-and-jerrys-allergens.ctx b/doc/tutorials/icfca-2023/contexts/ben-and-jerrys-allergens.ctx new file mode 100644 index 000000000..87bb90c42 --- /dev/null +++ b/doc/tutorials/icfca-2023/contexts/ben-and-jerrys-allergens.ctx @@ -0,0 +1,26 @@ +B + +7 +7 + +Peanut Butter Cup +Fudge Brownie +Caramel Sutra +Salted Caramel Brownie +Caramel Chew Chew +Half Baked +Cookie Dough +barley +milk +peanuts +almond +wheat +egg +soy +.XX..XX +XX..XX. +.X.X.XX +.X..XXX +.X...XX +XX..XXX +.X..XXX diff --git a/doc/tutorials/icfca-2023/contexts/ben-and-jerrys-flavors-small.ctx b/doc/tutorials/icfca-2023/contexts/ben-and-jerrys-flavors-small.ctx new file mode 100644 index 000000000..42125ebc9 --- /dev/null +++ b/doc/tutorials/icfca-2023/contexts/ben-and-jerrys-flavors-small.ctx @@ -0,0 +1,25 @@ +B + +7 +6 + +Peanut Butter Cup +Fudge Brownie +Caramel Sutra +Salted Caramel Brownie +Caramel Chew Chew +Half Baked +Cookie Dough +Choco +Brownie +Dough +Peanut +Vanilla +Caramel +X..X.. +XX.... +X....X +XX..XX +X....X +XXX.X. +X.X.X. diff --git a/doc/tutorials/icfca-2023/contexts/ben-and-jerrys-flavors.ctx b/doc/tutorials/icfca-2023/contexts/ben-and-jerrys-flavors.ctx new file mode 100644 index 000000000..9a1466fd7 --- /dev/null +++ b/doc/tutorials/icfca-2023/contexts/ben-and-jerrys-flavors.ctx @@ -0,0 +1,28 @@ +B + +7 +9 + +Peanut Butter Cup +Fudge Brownie +Caramel Sutra +Salted Caramel Brownie +Caramel Chew Chew +Half Baked +Cookie Dough +Choco Ice +Peanut Ice +Choco Pieces +Brownie +Dough +Peanut Butter +Caramel Ice +Vanilla +Caramel +.XX..X... +X..X..... +X.X...X.X +..XX...XX +..X...X.X +X.XXX..X. +..X.X..X. diff --git a/doc/tutorials/icfca-2023/icfca-2023-tutorial.org b/doc/tutorials/icfca-2023/icfca-2023-tutorial.org new file mode 100644 index 000000000..a45a7a01b --- /dev/null +++ b/doc/tutorials/icfca-2023/icfca-2023-tutorial.org @@ -0,0 +1,491 @@ +#+property: header-args :wrap src text +#+property: header-args:text :eval never + +* ~conexp-clj~ Tutorial at ICFCA 2023 + +This is a tutorial for the ICFCA 2023. It contains an example analysis of a +formal context with the tool ~conexp-clj~. + +** Basic FCA operations + +*** Getting started + +To run ~conexp-clj~, a Java Runtime Environment with version 1.8 or higher is necessary. +A pre-compiled version of ~conexp-clj~ is available [[https://algebra20.de/conexp/][here]]. The jar file can be used +like this: + +#+begin_src sh :exports both +java -jar conexp-clj-2.3.0-SNAPSHOT-standalone.jar +#+end_src + +A prompt for ~conexp-clj~ like this will appear: + +#+RESULTS: +#+begin_src text +conexp.main=> +#+end_src + +*** Read a context + +During the workshop, you can use your own context or, for example, the +[[../../../testing-data/Living-Beings-and-Water.ctx][Living-Beings-and-Water]] or [[../../../testing-data/ben-and-jerrys-flavors.ctx][Ben-and-Jerrys]] context. The examples in this tutorial use the +Ben-and-Jerrys ice cream context. + +It is possible to read formal contexts in several formats, e.g., Burmeister and csv. +A more detailed overview of the context formats can be found in [[../../IO.org][Input/Output of Formal Contexts]]. When reading a context, in most cases the format will be automatically determined: + +#+begin_src clojure :results silent +(def ben-and-jerrys-ctx (read-context "path-to-file/ben-and-jerrys-flavors.ctx")) +#+end_src + +If this does not work, you can specify the input format. A list of all input formats can be shown with + +#+begin_src clojure :exports both +(list-context-input-formats) +#+end_src + +#+RESULTS: +#+begin_src text +(:burmeister :csv :conexp :named-binary-csv :anonymous-burmeister :graphml :simple :binary-csv :fcalgs :colibri :json :galicia) +#+end_src + +You can read a context, e.g., in ~:burmeister~ format, by writing the format after the file path: + +#+begin_src clojure :results silent +(def ben-and-jerrys-ctx (read-context "path-to-file/ben-and-jerrys-flavors.ctx" :burmeister)) +#+end_src + +To see the formal context, evaluate the ~ben-and-jerrys-ctx~ variable explicitly. + +#+begin_src clojure :exports both +ben-and-jerrys-ctx +#+end_src + +The ben-and-jerrys context contains ice cream types as objects and ingredients as +attributes: + +#+RESULTS: +#+begin_src text + |Brownie Caramel Caramel Ice Choco Ice Choco Pieces Dough Peanut Butter Peanut Ice Vanilla +-----------------------+------------------------------------------------------------------------------------------ +Caramel Chew Chew |. x x . x . . . . +Caramel Sutra |. x x x x . . . . +Cookie Dough |. . . . x x . . x +Fudge Brownie |x . . x . . . . . +Half Baked |x . . x x x . . x +Peanut Butter Cup |. . . . x . x x . +Salted Caramel Brownie |x x . . x . . . x +#+end_src + +*** Reduce, clarify + +With ~context-reduced?~ and ~context-clarified?~, you can check if a context is reduced or clarified. +The attributes, objects and the whole context can be reduced with ~reduce-attributes~, +~reduce-objects~ and ~reduce-context~. The same applies to clarify. + +The whole example context can be clarified as follows: + +#+begin_src clojure :exports both +(def ben-and-jerrys-clarified + (clarify-context ben-and-jerrys-ctx) +ben-and-jerrys-clarified +#+end_src + +#+RESULTS: +#+begin_src text + |Brownie Caramel Caramel Ice Choco Ice Choco Pieces Dough Peanut Ice Vanilla +-----------------------+---------------------------------------------------------------------------- +Caramel Chew Chew |. x x . x . . . +Caramel Sutra |. x x x x . . . +Cookie Dough |. . . . x x . x +Fudge Brownie |x . . x . . . . +Half Baked |x . . x x x . x +Peanut Butter Cup |. . . . x . x . +Salted Caramel Brownie |x x . . x . . x +#+end_src + +As the attributes ~Peanut Butter~ and ~Peanut Ice~ have the same derivation, one of them (in this +case ~Peanut Butter~) is removed. + +*** Compute derivations + +~conexp-clj~ provides functions to compute the attribute and object derivation. +In the following example, the object derivation of two types of ice cream is +computed (to see what they have in common): + +#+begin_src clojure :exports both +(object-derivation ben-and-jerrys-ctx #{"Cookie Dough" "Half Baked"}) +#+end_src + +#+RESULTS: +#+begin_src text +#{"Choco Pieces" "Dough" "Vanilla"} +#+end_src + +The same can be done for a set of attributes with ~attribute-derivation~: + +#+begin_src clojure :exports both +(attribute-derivation ben-and-jerrys-ctx #{"Choco Pieces" "Dough" "Vanilla"}) +#+end_src + +#+RESULTS: +#+begin_src text +#{"Half Baked" "Cookie Dough"} +#+end_src + +This example shows that ~#{"Half Baked" "Cookie Dough"}~ is a closed set. +To directly compute the closure of a set of objects, you can use + +#+begin_src clojure :exports both +(context-object-closure ben-and-jerrys-ctx #{"Half Baked" "Cookie Dough"}) +#+end_src + +#+RESULTS: +#+begin_src text +#{"Half Baked" "Cookie Dough"} +#+end_src + +The closure of a set of attributes can be computed with ~context-attribute-closure~. + +#+begin_src clojure :exports both +(context-attribute-closure ben-and-jerrys-ctx #{"Choco Pieces" "Dough" "Vanilla"}) +#+end_src + +#+RESULTS: +#+begin_src text +#{"Choco Pieces" "Dough" "Vanilla"} +#+end_src + +All formal concepts of the context can be computed as + +#+begin_src clojure :exports both +(concepts ben-and-jerrys-ctx) +#+end_src + +#+RESULTS: +#+begin_src text +([#{"Peanut Butter Cup" "Fudge Brownie" "Caramel Sutra" "Salted Caramel Brownie" "Caramel Chew Chew" "Half Baked" "Cookie Dough"} #{}] + [#{"Fudge Brownie" "Caramel Sutra" "Half Baked"} #{"Choco Ice"}] + [#{} #{"Choco Ice" "Peanut Ice" "Choco Pieces" "Brownie" "Dough" "Peanut Butter" "Caramel Ice" "Vanilla" "Caramel"}] + [#{"Caramel Sutra" "Half Baked"} #{"Choco Ice" "Choco Pieces"}] + [#{"Half Baked"} #{"Choco Ice" "Choco Pieces" "Brownie" "Dough" "Vanilla"}] + [#{"Caramel Sutra"} #{"Choco Ice" "Choco Pieces" "Caramel Ice" "Caramel"}] + [#{"Fudge Brownie" "Half Baked"} #{"Choco Ice" "Brownie"}] + [#{"Peanut Butter Cup"} #{"Peanut Ice" "Choco Pieces" "Peanut Butter"}] + [#{"Peanut Butter Cup" "Caramel Sutra" "Salted Caramel Brownie" "Caramel Chew Chew" "Half Baked" "Cookie Dough"} #{"Choco Pieces"}] + [#{"Salted Caramel Brownie" "Half Baked"} #{"Choco Pieces" "Brownie" "Vanilla"}] + [#{"Salted Caramel Brownie"} #{"Choco Pieces" "Brownie" "Vanilla" "Caramel"}] + [#{"Half Baked" "Cookie Dough"} #{"Choco Pieces" "Dough" "Vanilla"}] + [#{"Caramel Sutra" "Caramel Chew Chew"} #{"Choco Pieces" "Caramel Ice" "Caramel"}] + [#{"Salted Caramel Brownie" "Half Baked" "Cookie Dough"} #{"Choco Pieces" "Vanilla"}] + [#{"Caramel Sutra" "Salted Caramel Brownie" "Caramel Chew Chew"} #{"Choco Pieces" "Caramel"}] + [#{"Fudge Brownie" "Salted Caramel Brownie" "Half Baked"} #{"Brownie"}]) +#+end_src + +*** Draw the concept lattice + +To draw the concept lattice of a formal context, use these commands: +#+begin_src clojure :results silent +(use 'conexp.gui.draw) +(draw-concept-lattice ben-and-jerrys-ctx) +#+end_src + +The lattice will appear in a new window. + +#+caption: Concept lattice of ben-and-jerrys context +[[./images/ben-and-jerrys-lattice.png]] + +In left bar of the ~Lattice~ window, you have several options, e.g., you can change the +layout and turn on the labels. In addition, you have the option to show several +valuations, like probability, distributivity and stability. + +The ~ben-and-jerrys-lattice~ with DimDraw layout, labels and stability looks like this: + +#+caption: Concept lattice of ben-and-jerrys context with DimDraw layout, labels and +stability +[[./images/ben-and-jerrys-lattice-dimdraw-labels-stability.png]] + +You can also create your own valuations, e.g., the extent and intent size of each formal +concept. + +#+begin_src clojure :result silent +(draw-concept-lattice ben-and-jerrys-ctx + :value-fn (fn [concept] + [(count (first c)) (count (second c))])) +#+end_src + +After enabeling the labels, the concept lattice looks like this: + +#+caption: Concept lattice of ben-and-jerrys context with manually set valuations +[[./images/ben-and-jerrys-lattice-manual_valuations.png]] + +You can save the lattice in several formats. To do so, click ~Export to File~ (the second +last button on the left). A new window opens, in which you can specify the path and format. +In the example, the lattice is saved in ~tikz~ format. It is important to write the file +ending in the file name that matches the file type. Otherwise an error occurs. + +#+caption: Window to save concept lattice in tikz format +[[./images/ben-and-jerrys-export-tikz.png]] + +*** Computing implications - Canonical base + +The canonical base of a context can be computed with: + +#+begin_src clojure :exports both +(def ben-and-jerrys-implications (canonical-base ben-and-jerrys-ctx)) +ben-and-jerrys-implications +#+end_src + +#+RESULTS: +#+begin_src text +((#{"Caramel"} ⟶ #{"Choco Pieces"}) + (#{"Vanilla"} ⟶ #{"Choco Pieces"}) + (#{"Caramel Ice"} ⟶ #{"Choco Pieces" "Caramel"}) + (#{"Peanut Butter"} ⟶ #{"Peanut Ice" "Choco Pieces"}) + (#{"Dough"} ⟶ #{"Choco Pieces" "Vanilla"}) + (#{"Choco Pieces" "Vanilla" "Caramel"} ⟶ #{"Brownie"}) + (#{"Choco Pieces" "Brownie"} ⟶ #{"Vanilla"}) + (#{"Choco Pieces" "Brownie" "Caramel Ice" "Vanilla" "Caramel"} ⟶ #{"Choco Ice" "Peanut Ice" "Dough" "Peanut Butter"}) + (#{"Choco Pieces" "Brownie" "Dough" "Vanilla"} ⟶ #{"Choco Ice"}) + (#{"Peanut Ice"} ⟶ #{"Choco Pieces" "Peanut Butter"}) + (#{"Peanut Ice" "Choco Pieces" "Peanut Butter" "Caramel"} ⟶ #{"Choco Ice" "Brownie" "Dough" "Caramel Ice" "Vanilla"}) + (#{"Peanut Ice" "Choco Pieces" "Peanut Butter" "Vanilla"} ⟶ #{"Choco Ice" "Brownie" "Dough" "Caramel Ice" "Caramel"}) + (#{"Choco Ice" "Choco Pieces" "Caramel"} ⟶ #{"Caramel Ice"}) + (#{"Choco Ice" "Choco Pieces" "Vanilla"} ⟶ #{"Brownie" "Dough"}) + (#{"Choco Ice" "Peanut Ice" "Choco Pieces" "Peanut Butter"} ⟶ #{"Brownie" "Dough" "Caramel Ice" "Vanilla" "Caramel"})) +#+end_src + +*** Outputs + +Depending on the size of the contexts, the computation of the concept can take a long time. +Therefore, the results can be saved so that the computation does not need to be repeated. +For the output, the format needs to be specified. The formats to save a concept lattice are + +#+begin_src clojure :exports both +(list-lattice-output-formats) +#+end_src + +#+RESULTS: +#+begin_src text +(:simple :json) +#+end_src + +A concept lattice can be saved in the ~:json~ format with the following command + +#+begin_src clojure :result silent +(def ben-and-jerrys-lattice (concept-lattice ben-and-jerrys-ctx)) +(write-lattice :json ben-and-jerrys-lattice "path/ben-and-jerrys-lattice.json") +#+end_src + +(It can be loaded again with ~(read-lattice "path/ben-and-jerrys-lattice.json")~.) + +For implications, there is only the ~:json~ output format. Implications can be saved via + +#+begin_src clojure :result silent +(write-implication :json ben-and-jerrys-implications "path/ben-and-jerrys-implications.json") +#+end_src + +~conexp-clj~ also provides the option to save a whole Formal Concept Analysis in one +file (in ~:json~) format. This FCA needs to contain a formal context. The ~:lattice~ +and ~:implication-sets~ in the following map are optional. + +#+begin_src clojure :result silent +(def ben-and-jerrys-fca {:context ben-and-jerrys-context + :lattice ben-and-jerrys-lattice + :implication-sets [ben-and-jerrys-implications]}) +#+end_src + +Note that such an FCA object can contain several implication sets. The +~ben-and-jerrys-fca~ can be saved with + +#+begin_src clojure :result silent +(write-fca :json ben-and-jerrys-fca "path/ben-and-jerrys-fca.json") +#+end_src + + +** Scaling data and scale-measures + +~conexp-clj~ provides the functionality for conceptual scaling. For an example, +load the smaller ~ben-and-jerrys-flavors-small.ctx~: + +#+begin_src clojure :exports both +(def ben-and-jerrys-small-ctx (read-context "path-to-file/ben-and-jerrys-flavors-small.ctx")) +ben-and-jerrys-small-ctx +#+end_src + +The ben-and-jerrys context contains the same ice cream types as objects, but a smaller +set of flavors as attributes: + +#+RESULTS: +#+begin_src text + |Brownie Caramel Choco Dough Peanut Vanilla +-----------------------+------------------------------------------- +Caramel Chew Chew |. x x . . . +Caramel Sutra |. x x . . . +Cookie Dough |. . x x . x +Fudge Brownie |x . x . . . +Half Baked |x . x x . x +Peanut Butter Cup |. . x . x . +Salted Caramel Brownie |x x x . . x +#+end_src + +To check if this smaller context is a scale of the ~ben-and-jerrys-ctx~, the conceptual +scaling error is computed: + +#+begin_src clojure :exports both +(use 'conexp.fca.smeasure) +(conceptual-scaling-error (make-smeasure-nc ben-and-jerrys-ctx ben-and-jerrys-small-ctx identity)) +#+end_src + +#+RESULTS: +#+begin_src text +0 +#+end_src + +As the error is 0, the ~ben-and-jerrys-small-ctx~ is a scale of the ~ben-and-jerrys-ctx~. + +Another context uses the same ice cream types, but allergens instead of flavors. + +#+begin_src clojure :exports both +(def ben-and-jerrys-allergens-ctx (read-context "path-to-file/ben-and-jerrys-allergens.ctx")) +ben-and-jerrys-allergens-ctx +#+end_src + +#+RESULTS: +#+begin_src text + |almond barley egg milk peanuts soy wheat +-----------------------+----------------------------------------- +Caramel Chew Chew |. . x x . x . +Caramel Sutra |x . x x . x . +Cookie Dough |. . x x . x x +Fudge Brownie |. x x x . . x +Half Baked |. x x x . x x +Peanut Butter Cup |. . x x x x . +Salted Caramel Brownie |. . x x . x x +#+end_src + +You can compute the conceptual scaling error in the same way as for the ~ben-and-jerrys-small-ctx~. + +#+begin_src clojure :exports both +(conceptual-scaling-error (make-smeasure-nc ben-and-jerrys-ctx ben-and-jerrys-allergens-ctx identity)) +#+end_src + +#+RESULTS: +#+begin_src text +1 +#+end_src + +In this case, the error is 1 and therefore the allergens context is not a scale of the +original ~ben-and-jerrys-ctx~. + +To get more information about the scaling error, you can use + +#+begin_src clojure :exports both +(error-in-smeasure (make-smeasure-nc ben-and-jerrys-ctx ben-and-jerrys-allergens-ctx identity)) +#+end_src + +#+RESULTS: +#+begin_src text +(#{"Fudge Brownie" "Salted Caramel Brownie" "Half Baked" "Cookie Dough"}) +#+end_src + +This set of objects is closed in ~ben-and-jerrys-allergens-ctx~, but not in ~ben-and-jerrys-ctx~, +as can be seen with + +#+begin_src clojure :exports both +(context-object-closure ben-and-jerrys-ctx + #{"Fudge Brownie" "Salted Caramel Brownie" "Half Baked" "Cookie Dough"}) +#+end_src + +#+RESULTS: +#+begin_src text +#{"Peanut Butter Cup" "Fudge Brownie" "Caramel Sutra" + "Salted Caramel Brownie" "Caramel Chew Chew" "Half Baked" + "Cookie Dough"} +#+end_src + + +** Attribute exploration + +~conexp-clj~ provides a function for attribute exploration. + +#+begin_src clojure :results silent +(attribute-exploration :context ben-and-jerrys-small-ctx) +#+end_src + +The following attribute exploration is interactive. For a suggested implication, the +user accepts or rejects it with ~yes~ or ~no~: + +#+begin_src text +Does the implication (#{} ⟶ #{Choco}) hold? no +#+end_src + +If an implication is rejected, a counterexample needs to be provided. First, the object +of the counterexample needs to be given. In this case, we give an additional "Peanut" +ice cream. + +#+begin_src text +Then please provide a counterexample +counterexample> object +Please enter new object: "Peanut" +#+end_src + +After that, the attributes of the counterexample are given in the following input format. + +#+begin_src text +counterexample> attributes +Please enter new attributes: "Peanut" "Vanilla" +#+end_src + +The process of providing a counterexample is finished with the input ~q~. It is possible +to give another counterexample. + +#+begin_src text +counterexample> q +Do you want to give another counterexample? no +#+end_src + +The following example shows an attribute exploration of the ~ben-and-jerrys-small-ctx~. +In the end, the attribute exploration returns the list of learned implications and the +new context. + +#+begin_src text +conexp.main=> (explore-attributes :context ben-and-jerrys-small-ctx) +Does the implication (#{} ⟶ #{Choco}) hold? no +Then please provide a counterexample +counterexample> object +Please enter new object: "Peanut" +counterexample> attributes +Please enter the attributes the new object should have: "Peanut" "Vanilla" +counterexample> q +Do you want to give another counterexample? no +Does the implication (#{Caramel} ⟶ #{Choco}) hold? yes +Does the implication (#{Dough} ⟶ #{Choco Vanilla}) hold? yes +Does the implication (#{Brownie} ⟶ #{Choco}) hold? yes +Does the implication (#{Choco Vanilla Caramel} ⟶ #{Brownie}) hold? yes +Does the implication (#{Choco Peanut Caramel} ⟶ #{Brownie Dough Vanilla}) hold? yes +Does the implication (#{Choco Peanut Vanilla} ⟶ #{Brownie Dough Caramel}) hold? yes +Does the implication (#{Choco Brownie Caramel} ⟶ #{Vanilla}) hold? yes +Does the implication (#{Choco Brownie Peanut} ⟶ #{Dough Vanilla Caramel}) hold? yes +Does the implication (#{Choco Brownie Dough Vanilla Caramel} ⟶ #{Peanut}) hold? yes +{:implications #{(#{"Choco" "Peanut" "Caramel"} ⟶ #{"Brownie" "Dough" "Vanilla"}) + (#{"Brownie"} ⟶ #{"Choco"}) + (#{"Choco" "Brownie" "Caramel"} ⟶ #{"Vanilla"}) + (#{"Caramel"} ⟶ #{"Choco"}) + (#{"Choco" "Vanilla" "Caramel"} ⟶ #{"Brownie"}) + (#{"Choco" "Brownie" "Dough" "Vanilla" "Caramel"} ⟶ #{"Peanut"}) + (#{"Choco" "Peanut" "Vanilla"} ⟶ #{"Brownie" "Dough" "Caramel"}) + (#{"Dough"} ⟶ #{"Choco" "Vanilla"}) + (#{"Choco" "Brownie" "Peanut"} ⟶ #{"Dough" "Vanilla" "Caramel"})}, +:context |Brownie Caramel Choco Dough Peanut Vanilla +-----------------------+------------------------------------------- +Caramel Chew Chew |. x x . . . +Caramel Sutra |. x x . . . +Cookie Dough |. . x x . x +Fudge Brownie |x . x . . . +Half Baked |x . x x . x +Peanut Butter Cup |. . x . x . +Peanut |. . . . x x +Salted Caramel Brownie |x x x . . x +} +#+end_src diff --git a/doc/tutorials/icfca-2023/images/ben-and-jerrys-export-tikz.png b/doc/tutorials/icfca-2023/images/ben-and-jerrys-export-tikz.png new file mode 100644 index 0000000000000000000000000000000000000000..9076e6e607aeac5e994487ad914bc86d54f42e80 GIT binary patch literal 16787 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

xY{z%?=g|-1-1Fmm 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 literal 0 HcmV?d00001 diff --git a/doc/tutorials/icfca-2023/images/ben-and-jerrys-lattice-dimdraw-labels-stability.png b/doc/tutorials/icfca-2023/images/ben-and-jerrys-lattice-dimdraw-labels-stability.png new file mode 100644 index 0000000000000000000000000000000000000000..a8de54f1b4eb650730d5f8584f479b59884dc48c GIT binary patch literal 136297 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ɪR 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 literal 0 HcmV?d00001 diff --git a/doc/tutorials/icfca-2023/images/ben-and-jerrys-lattice-dimdraw-labels-support.png b/doc/tutorials/icfca-2023/images/ben-and-jerrys-lattice-dimdraw-labels-support.png new file mode 100644 index 0000000000000000000000000000000000000000..803717d9afde8e8bf36d39590af3199920b4353d GIT binary patch literal 130576 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

uKJ|Nn@ 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 literal 0 HcmV?d00001 diff --git a/doc/tutorials/icfca-2023/images/ben-and-jerrys-lattice-manual_valuations.png b/doc/tutorials/icfca-2023/images/ben-and-jerrys-lattice-manual_valuations.png new file mode 100644 index 0000000000000000000000000000000000000000..6b90de6875516c13d9954f8cf5df3bbd5f6cc37d GIT binary patch literal 129301 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 z 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

U3YJ2l&s^9N@_@q)P3K2p%QHGQu4WfZV$h#zz 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 literal 0 HcmV?d00001 diff --git a/doc/tutorials/icfca-2023/images/ben-and-jerrys-lattice.png b/doc/tutorials/icfca-2023/images/ben-and-jerrys-lattice.png new file mode 100644 index 0000000000000000000000000000000000000000..567b01e60048dd1b3221c56ef3ec5de9c30f701b GIT binary patch literal 87165 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 OaOKi9-^&);2mBjZ;pqPW literal 0 HcmV?d00001 diff --git a/flake.lock b/flake.lock index d197ce887..1b39c426f 100644 --- a/flake.lock +++ b/flake.lock @@ -3,20 +3,17 @@ "clj-nix": { "inputs": { "devshell": "devshell", - "flake-utils": [ - "utils", - "flake-utils" - ], + "nix-fetcher-data": "nix-fetcher-data", "nixpkgs": [ "nixpkgs" ] }, "locked": { - "lastModified": 1677342613, - "narHash": "sha256-BqhKj7jQahSVThEwLHt164kJHGx9LXzBARFZaFNLPW8=", + "lastModified": 1689754411, + "narHash": "sha256-DBaZAmBR5EA03Zjf4k7XHqvOovJP+pFhzl+BJ4V+lFw=", "owner": "jlesquembre", "repo": "clj-nix", - "rev": "7d9e244ea96988524ba3bd6c2bbafdf0a5340b96", + "rev": "6a017fb2bc7b60c9e67b1c6f0b04bbefcf8dc698", "type": "github" }, "original": { @@ -27,21 +24,18 @@ }, "devshell": { "inputs": { - "flake-utils": [ - "clj-nix", - "flake-utils" - ], "nixpkgs": [ "clj-nix", "nixpkgs" - ] + ], + "systems": "systems" }, "locked": { - "lastModified": 1658746384, - "narHash": "sha256-CCJcoMOcXyZFrV1ag4XMTpAPjLWb4Anbv+ktXFI1ry0=", + "lastModified": 1687944744, + "narHash": "sha256-4ZtRVG/5yWHPZpkit1Ak5Mo1DDnkx1AG1HpNu/P+n5U=", "owner": "numtide", "repo": "devshell", - "rev": "0ffc7937bb5e8141af03d462b468bd071eb18e1b", + "rev": "3864857b2754ab0e16c7c7c626f0e5a1d4e42f38", "type": "github" }, "original": { @@ -50,6 +44,41 @@ "type": "github" } }, + "flake-part": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib" + }, + "locked": { + "lastModified": 1685546676, + "narHash": "sha256-XDbjJyAg6odX5Vj0Q22iI/gQuFvEkv9kamsSbQ+npaI=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "6ef2707776c6379bc727faf3f83c0dd60b06e0c6", + "type": "github" + }, + "original": { + "owner": "hercules-ci", + "repo": "flake-parts", + "type": "github" + } + }, + "flake-parts": { + "inputs": { + "nixpkgs-lib": "nixpkgs-lib_2" + }, + "locked": { + "lastModified": 1685546676, + "narHash": "sha256-XDbjJyAg6odX5Vj0Q22iI/gQuFvEkv9kamsSbQ+npaI=", + "owner": "hercules-ci", + "repo": "flake-parts", + "rev": "6ef2707776c6379bc727faf3f83c0dd60b06e0c6", + "type": "github" + }, + "original": { + "id": "flake-parts", + "type": "indirect" + } + }, "flake-utils": { "locked": { "lastModified": 1644229661, @@ -85,13 +114,36 @@ "type": "github" } }, + "nix-fetcher-data": { + "inputs": { + "flake-part": "flake-part", + "flake-parts": "flake-parts", + "nixpkgs": [ + "clj-nix", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1685572850, + "narHash": "sha256-lYKEqFG9F84xu51H1rM1u+Ip88cINL0+W26sT+vFEZc=", + "owner": "jlesquembre", + "repo": "nix-fetcher-data", + "rev": "f14967db6c92c79b77419f52c22a698518c91120", + "type": "github" + }, + "original": { + "owner": "jlesquembre", + "repo": "nix-fetcher-data", + "type": "github" + } + }, "nixpkgs": { "locked": { - "lastModified": 1685451684, - "narHash": "sha256-Y5iqtWkO82gHAnrBvNu/yLQsiVNJRCad4wWGz2a1urk=", + "lastModified": 1689605451, + "narHash": "sha256-u2qp2k9V1smCfk6rdUcgMKvBj3G9jVvaPHyeXinjN9E=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6b0edc9c690c1d8a729f055e0d73439045cfda55", + "rev": "53657afe29748b3e462f1f892287b7e254c26d77", "type": "github" }, "original": { @@ -101,6 +153,42 @@ "type": "github" } }, + "nixpkgs-lib": { + "locked": { + "dir": "lib", + "lastModified": 1682879489, + "narHash": "sha256-sASwo8gBt7JDnOOstnps90K1wxmVfyhsTPPNTGBPjjg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "da45bf6ec7bbcc5d1e14d3795c025199f28e0de0", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs-lib_2": { + "locked": { + "dir": "lib", + "lastModified": 1682879489, + "narHash": "sha256-sASwo8gBt7JDnOOstnps90K1wxmVfyhsTPPNTGBPjjg=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "da45bf6ec7bbcc5d1e14d3795c025199f28e0de0", + "type": "github" + }, + "original": { + "dir": "lib", + "owner": "NixOS", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "root": { "inputs": { "clj-nix": "clj-nix", @@ -109,6 +197,21 @@ "utils": "utils" } }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "utils": { "inputs": { "flake-utils": "flake-utils" diff --git a/flake.nix b/flake.nix index 3767de07e..e7c9c5058 100644 --- a/flake.nix +++ b/flake.nix @@ -1,6 +1,5 @@ { - description = - "conexp-clj, a general purpose software tool for Formal Concept Analysis"; + description = "conexp-clj, a general purpose software tool for Formal Concept Analysis"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.05"; @@ -8,10 +7,7 @@ clj-nix = { url = "github:jlesquembre/clj-nix"; - inputs = { - nixpkgs.follows = "nixpkgs"; - flake-utils.follows = "utils/flake-utils"; - }; + inputs.nixpkgs.follows = "nixpkgs"; }; gitignore = { @@ -20,30 +16,55 @@ }; }; - outputs = { self, nixpkgs, utils, ... }@inputs: - let inherit (utils.lib) mkApp mkFlake; - in mkFlake { + outputs = { + self, + nixpkgs, + utils, + ... + } @ inputs: let + inherit (utils.lib) mkApp mkFlake; + in + mkFlake { inherit self inputs; - channels.nixpkgs.overlaysBuilder = channels: - [ inputs.clj-nix.overlays.default ]; + supportedSystems = [ + "x86_64-linux" + "aarch64-linux" + "aarch64-darwin" + "x86_64-darwin" + ]; + + channels.nixpkgs.overlaysBuilder = channels: [inputs.clj-nix.overlays.default]; overlays.default = final: prev: { inherit (self.packages."${final.system}") conexp-clj; }; - outputsBuilder = channels: - let - inherit (inputs.gitignore.lib) gitignoreSource; - inherit (inputs.clj-nix.lib) mk-deps-cache; - inherit (channels.nixpkgs) mkCljBin mkShell writeShellScriptBin; - - conexp = let - pname = "conexp-clj"; - version = "2.4.0"; - in mkCljBin rec { + outputsBuilder = channels: let + inherit (inputs.gitignore.lib) gitignoreSource; + inherit (inputs.clj-nix.lib) mk-deps-cache; + inherit (channels.nixpkgs) mkCljBin mkShell writeShellScriptBin; + inherit (channels.nixpkgs.lib) pipe; + + conexp = let + versionFromDefproject = name: + pipe ./project.clj [ + builtins.readFile + (builtins.match '' + .*\([[:SPACE:]]*defproject[[:SPACE:]]+${name}[[:SPACE:]]+"([^"]+)".*'') + builtins.head + ]; + pname = "conexp-clj"; + in + mkCljBin rec { name = "conexp/${pname}"; - inherit version; + version = versionFromDefproject pname; + + meta = { + description = "A General-Purpose Tool for Formal Concept Analysis"; + homepage = "https://github.com/tomhanika/conexp-clj"; + license = channels.nixpkgs.lib.licenses.epl10; + }; projectSrc = gitignoreSource ./.; main-ns = "conexp"; @@ -56,38 +77,43 @@ doCheck = true; checkPhase = "lein test"; }; + in rec { + packages = { + conexp-clj = conexp; + default = conexp; + }; - in { - packages = rec { - conexp-clj = conexp; - default = conexp-clj; + apps = rec { + deps-lock = mkApp { + drv = writeShellScriptBin "deps-lock" '' + ${channels.nixpkgs.deps-lock}/bin/deps-lock --lein $@ + ''; }; - apps = rec { - conexp-clj = mkApp { drv = conexp; }; - default = conexp-clj; - - deps-lock = mkApp { - drv = writeShellScriptBin "deps-lock" '' - ${channels.nixpkgs.deps-lock}/bin/deps-lock --lein $@ - ''; - }; - - test = let deps = mk-deps-cache { lock-file = ./deps-lock.json; }; - in mkApp { + test = let + deps = mk-deps-cache {lock-file = ./deps-lock.json;}; + in + mkApp { drv = writeShellScriptBin "conexp-clj-tests" '' lein test $@ ''; }; - }; - - devShells.default = mkShell { - buildInputs = with channels.nixpkgs; [ clojure-lsp leiningen ]; - }; + }; - formatter = channels.nixpkgs.alejandra; + checks = { + inherit (packages) conexp-clj; + devShell = devShells.default; + }; + devShells.default = mkShell { + buildInputs = with channels.nixpkgs; [clojure-lsp leiningen]; }; + formatter = channels.nixpkgs.alejandra; + }; }; } +# Local Variables: +# apheleia-formatter: alejandra +# End: + diff --git a/project.clj b/project.clj index cf14b513c..4edc68c30 100644 --- a/project.clj +++ b/project.clj @@ -7,7 +7,7 @@ ;; You must not remove this notice, or any other, from this software. -(defproject conexp-clj "2.4.0" +(defproject conexp-clj "2.4.2-SNAPSHOT" :min-lein-version "2.0.0" :description "A ConExp rewrite in clojure -- and so much more ..." @@ -52,11 +52,11 @@ :dev {:main conexp.main :dependencies [[javax.servlet/servlet-api "2.5"] [ring/ring-mock "0.4.0"] - [nrepl/nrepl "1.0.0"]] + [nrepl/nrepl "1.0.0"] + [com.clojure-goes-fast/clj-async-profiler "1.0.5"]] :plugins [[lein-aot-order "0.1.0"]] - :javac-options ["-Xlint:deprecation" "-Xlint:unchecked"]} - :gorilla {:main conexp.main - :plugins [[org.clojars.benfb/lein-gorilla "0.7.0"]]}} + :javac-options ["-Xlint:deprecation" "-Xlint:unchecked"] + :jvm-opts ["-Djdk.attach.allowAttachSelf"]}} :keep-non-project-classes true :source-paths ["src/main/clojure" "src/test/clojure"] :java-source-paths ["src/main/java"] @@ -64,4 +64,6 @@ :resource-paths ["src/main/resources"] :target-path "builds/%s" :compile-path "%s/classes/" - :java-opts ["-Dawt.useSystemAAFontSettings=lcd_hbgr" "-Xmx4G"]) + :java-opts ["-Dawt.useSystemAAFontSettings=on" "-Xmx4G"] + :repl-options {:init-ns conexp.analysis + :init (use 'conexp.analysis :reload)}) diff --git a/src/main/clojure/conexp/analysis.clj b/src/main/clojure/conexp/analysis.clj new file mode 100644 index 000000000..6489cd059 --- /dev/null +++ b/src/main/clojure/conexp/analysis.clj @@ -0,0 +1,64 @@ +(ns conexp.analysis + "Dafault Namespace." + (:require + [conexp.main :refer :all] + [conexp.base :refer :all] + [conexp.layouts :refer :all] + [conexp.gui :refer :all] + [conexp.api :refer :all] + [conexp.fca + [causal-implications :refer :all] + [contexts :refer :all] + [cover :refer :all] + [dependencies :refer :all] + [exploration :refer :all] + [graph :refer :all] + [implications :refer :all] + [incremental-ganter :refer :all] + [lattices :refer :all] + [many-valued-contexts :refer :all] + [metrics :refer :all] + [more :refer :all] + [posets :refer :all] + [pqcores :refer :all] + [protoconcepts :refer :all] + [random-contexts :refer :all] + [triadic-exploration :refer :all]] + [conexp.math + [algebra :refer :all] + [markov :refer :all] + [numbers :refer :all] + [optimize :refer :all] + [sampling :refer :all] + [statistics :refer :all] + [util :refer :all]] + [conexp.layouts + [base :refer :all] + [common :refer :all] + [dim-draw :refer :all] + ;[force :refer :all] + [freese :refer :all] + [layered :refer :all] + [util :refer :all]] + [conexp.io + [base :refer :all] + [contexts :refer :all] + [fcas :refer :all] + [implications :refer :all] + [incomplete-contexts :refer :all] + [json :refer :all] + [latex :refer :all] + [lattices :refer :all] + [layouts :refer :all] + [many-valued-contexts :refer :all] + [util :refer :all]] + [conexp.gui + [base :refer :all] + [draw :refer :all] + [plugins :refer :all] + [repl :refer :all] + [repl-utils :refer :all]] + [clojure.set :as set] + [clojure.edn :as edn] + [clojure.java.io :as io])) + diff --git a/src/main/clojure/conexp/fca/causal_implications.clj b/src/main/clojure/conexp/fca/causal_implications.clj new file mode 100644 index 000000000..386288a44 --- /dev/null +++ b/src/main/clojure/conexp/fca/causal_implications.clj @@ -0,0 +1,250 @@ +(ns conexp.fca.causal-implications + "Causal Implications for Formal Concept Analysis." + (:require + [conexp.base :refer :all] + [conexp.io.contexts :refer :all] + [conexp.fca.contexts :refer :all] + [conexp.fca.implications :refer :all] + [clojure.set :as set])) + +;For a full Explanation of the Concepts refer to *Mining Causal Association Rules* +;https://www.researchgate.net/publication/262240022_Mining_Causal_Association_Rules + + +(defn matched-record-pair? [ctx impl controlled-variables a b] + "Returns true if a and b form a matched record pair in respect to the context, implication and controlled variables, + false otherwise. + a and b for a matched record pair, if they both have the same value for each controlled variable, but only one contains + the premise of the implication." + (let [premise (premise impl) + conclusion (conclusion impl) + a-attributes (object-derivation ctx [a]) + b-attributes (object-derivation ctx [b])] + + ;check whether premise is present in exactly one of the objects + (and (or (and (subset? premise a-attributes) (not (subset? premise b-attributes))) + (and (subset? premise b-attributes) (not (subset? premise a-attributes)))) + ;check whether controlled variables have same realizations in both objects + (subset? controlled-variables + (set/union (set/intersection a-attributes b-attributes) + (set/intersection (set/difference controlled-variables a-attributes) + (set/difference controlled-variables b-attributes))))))) + +(defn find-matched-record-pair [ctx impl controlled-variables objs-considered a] + "Searches objs-considered for an object that forms a matched record pair with a, + then returns a set containing a and that element. Returns the empty set, if no match is found." + (let [objs (into [] objs-considered)] + (if (= (count objs) 0) + #{} + (if (matched-record-pair? ctx impl controlled-variables a (first objs)) + #{a (first objs)} + (find-matched-record-pair ctx impl controlled-variables (rest objs) a))))) + + +(defn fair-data-set [ctx impl controlled-variables] + "Computes the fair data set of ctx in respect to impl by finding matched record pairs + among the objects. Each object may only be matched with exactly one other object." + (let [objs (objects ctx)] + (filter seq + (reduce (fn [present-objs new-obj] + (if (contains? (reduce set/union present-objs) new-obj) + present-objs + (conj present-objs (find-matched-record-pair + ctx + impl + controlled-variables + (set/difference objs (reduce set/union present-objs)) + new-obj)))) + #{} objs)))) + +(defn- only-exposed [exposed nonexposed ctx premise-attr conclusion-attr] + "Returns true, if *exposed* contains both the premise and conclusion attributes, + and *nonexposed* does not contain the conclusion." + (and (incident? ctx exposed premise-attr) + (and (incident? ctx exposed conclusion-attr) + (not (incident? ctx nonexposed conclusion-attr)))) +) + +(defn- only-nonexposed [exposed nonexposed ctx premise-attr conclusion-attr] + "Returns true, if *exposed* contains the premise attribute, but only *nonexposed* + contains the conclusion attribute." + (and (incident? ctx exposed premise-attr) + (and (not (incident? ctx exposed conclusion-attr)) + (incident? ctx nonexposed conclusion-attr))) +) + +(defn fair-odds-ratio [ctx impl fair-data] + "Computes the odds ratio of an implication by dividing the number of matched pairs, + where the only the exposed element contains the conclusion by the number of matched pairs, + where only the non-exposed object contains the conclusion. + (The divisor is capped at a minimum of 1) + Only works on implications with single attributes as premise and conclusion." + (let [premise-attr (first (premise impl)) + conclusion-attr (first (conclusion impl))] + + (/ (reduce + (for [pair fair-data] + (let [a (first pair), b (first (rest pair))] + (if (or (only-exposed a b ctx premise-attr conclusion-attr) + (only-exposed b a ctx premise-attr conclusion-attr)) + 1 + 0)))) + + (max (reduce + (for [pair fair-data] + (let [a (first pair), b (first (rest pair))] + (if (or (only-nonexposed a b ctx premise-attr conclusion-attr) + (only-nonexposed b a ctx premise-attr conclusion-attr)) + 1 + 0)))) + + 1)))) + + +(defn- confidence-bound [op ctx premise conclusion odds-ratio zconf] + "Used to compute the bounds of the confidence interval within the confidence-interval method. + Computes the upper bound if + is supplied as op, lower bound if - is supplied." + (Math/exp (op (Math/log odds-ratio) + (* zconf (Math/sqrt (+ (/ 1 (absolute-support ctx [(set/union premise conclusion) #{}])) + (/ 1 (absolute-support ctx [premise conclusion])) + (/ 1 (absolute-support ctx [conclusion premise])) + (/ 1 (absolute-support ctx [#{} (set/union premise conclusion)])))))))) + +(defn confidence-interval [ctx impl odds-ratio zconf] + "Computes the confidence interval of the implication. odds-ratio is the regular odds ratio of + the implication on its context, zconf is a standard normal deviate corresponding to the desired + level of confidence. (1.7 => 70% confidence)" + (let [premise (premise impl) + conclusion (conclusion impl)] + [(confidence-bound + ctx premise conclusion odds-ratio zconf) + (confidence-bound - ctx premise conclusion odds-ratio zconf)])) + +(defn- fair-confidence-bound [op ctx premise-attr conclusion-attr fair-odds-ratio fair-data zconf] + "Used to compute the bounds of the fair confidence interval within the fair-confidence-interval method. + Computes the upper bound if + is supplied as op, lower bound if - is supplied." + (Math/exp (op (Math/log fair-odds-ratio) + (* zconf (Math/sqrt (+ (/ 1 (max (reduce + + (for [pair fair-data] + (let [a (first pair), b (first (rest pair))] + (if (or (only-exposed a b ctx premise-attr conclusion-attr) + (only-exposed b a ctx premise-attr conclusion-attr)) + 1 + 0)))) + + 1)) + (/ 1 (max (reduce + + (for [pair fair-data] + (let [a (first pair), b (first (rest pair))] + (if (or (only-nonexposed a b ctx premise-attr conclusion-attr) + (only-nonexposed b a ctx premise-attr conclusion-attr)) + 1 + 0)))) + 1)) )))))) + +(defn fair-confidence-interval [ctx impl fair-odds-ratio fair-data zconf] + "Computes the confidence interval of an implication on its fair data set. + fair-odds-ratio is the implication's odds ratio on its fair data set, + zconf is a standard normal deviate corresponding to the desired + level of confidence. (1.7 => 70% confidence) + Only works on implications with single attributes as premise and conclusion." + (let [premise-attr (first (premise impl)) + conclusion-attr (first (conclusion impl))] + [(fair-confidence-bound + ctx premise-attr conclusion-attr fair-odds-ratio fair-data zconf) + (fair-confidence-bound - ctx premise-attr conclusion-attr fair-odds-ratio fair-data zconf)])) + +(defn causally-relevant? [ctx variable response-variable zconfidence] + "Computes whether a variable is relevant to the response variable, by computing whether or not it + is associated with the response variable. + A variable p is associated with the response variable z, if the lower bound of the confidence interval of the + implication p -> z is greater than 1." + (let [impl (->Implication #{variable} #{response-variable})] + (> (last (confidence-interval ctx impl (odds-ratio ctx impl) zconfidence)) + 1))) + +(defn irrelevant-variables [ctx vars response-variable zconfidence] + "Returns a set that contains all variables in vars that are irrelevant to response-var." + (set (filter #(not (causally-relevant? ctx % response-variable zconfidence)) vars))) + +(defn exclusive-variables [ctx item-set thresh] + "Finds mutually exclusive variables to those in item-set. Returns tuples of the exclusive variables. + Two variables a and b are mutually exclusive, if the absolute support for (a and b) or (b and not a) + is no larger than thresh." + (set + (filter some? + (for [a item-set, b (attributes ctx)] + (if (not (= a b)) + (if (or (<= (absolute-support ctx [#{a b} #{}]) thresh) + (<= (absolute-support ctx [#{b} #{a}]) thresh)) + #{a b})))))) + +(defn causal? [ctx impl irrelevant-vars zconf thresh] + "Computes whether an implication is causal. An implication is causal, if the lower bound of its fair + confidence interval is greather than 1." + (let [premise (premise impl) + conclusion (conclusion impl) + E (reduce set/union (exclusive-variables ctx premise thresh)) + controlled-variables (set/difference (attributes ctx) + (set/union conclusion irrelevant-vars E premise)) + fair-data (fair-data-set ctx impl controlled-variables) + fair-odds (fair-odds-ratio ctx impl fair-data)] + + (< 1 (last (fair-confidence-interval ctx impl fair-odds fair-data zconf))))) + +(defn generate-causal-rules [ctx premises response-var irrelevant-vars zconf thresh] + "Generates all causal implications comprised of the premise in premises and the response variable. + Returns only the premises of the causal implications." + (filter #(causal? ctx (->Implication % #{response-var}) irrelevant-vars zconf thresh) premises)) + +(defn find-redundant [ctx current-item-sets new-item-sets response-var] + "Computes redundant rules by comparing the support of the premise to that of its subsets. + If they have the same support, they cover the same objects, and the more specific rule redundant." + (set (for [new new-item-sets, old current-item-sets] + (if (and (subset? old new) + (= (local-support ctx (->Implication new #{response-var})) + (local-support ctx (->Implication old #{response-var})))) + new)))) + +(defn causal-association-rule-discovery + ([ctx min-lsupp max-length response-var zconf] + "Computes all causal implication rules with response-var as the conclusion. Returns only the premises of the causal + implications. Trivial implications are not considered. + min-lsupp is the minimum local support required of variables to be testet. + zconf is a standard normal deviate corresponding to the desired level of confidence. (1.7 => 70% confidence)" + ;initial setup + (let [frequent-vars (set (filter + #(> (local-support ctx (->Implication #{%} #{response-var})) min-lsupp) + (attributes ctx))) + ivars (irrelevant-variables ctx frequent-vars response-var zconf)] + + (causal-association-rule-discovery + ctx ;context + #{} ;current causal rules + (set/difference frequent-vars #{response-var}) ;frequent single variables + (for [x (set/difference frequent-vars #{response-var})] #{x}) ;itemsets of the current iteration + ivars ;irrelevant variables in respect to response-var + min-lsupp ;minimum local support + 0 ;counter, counts up to max-length + max-length ;maximum length of rules + response-var ;response variable + zconf ;confidence for significance test (1.7) + )) + ) + + ([ctx rule-set variables current ivars min-lsupp counter max-length response-var zconf] + + (if (= counter max-length) + rule-set + (let [new-causal-rules (generate-causal-rules ctx current response-var ivars zconf 1) + new-item-sets (set (filter #(= (count %) (+ counter 2)) (for [c current, i variables] (conj c i))))] + + (causal-association-rule-discovery + ctx + (set/union rule-set new-causal-rules) + variables + (set/difference (filter #(> (local-support ctx (->Implication #{%} #{response-var})) min-lsupp) new-item-sets) + (find-redundant ctx current new-item-sets response-var));filter item sets + ivars + min-lsupp + (inc counter) + max-length + response-var + zconf))))) + diff --git a/src/main/clojure/conexp/fca/exploration.clj b/src/main/clojure/conexp/fca/exploration.clj index 4808c4f49..482298902 100644 --- a/src/main/clojure/conexp/fca/exploration.clj +++ b/src/main/clojure/conexp/fca/exploration.clj @@ -13,6 +13,26 @@ conexp.fca.implications) (:require [clojure.core.reducers :as r])) + +(defn exploration-step + "Conduct one exploration step using counterexamples and background knowledge about implications" + [ctx input-implications] + (loop [implications input-implications + last (close-under-implications implications #{}), + ctx ctx] + (if (not last) + {:implications (difference (set implications) (set input-implications)) :context ctx} + (let [conclusion-from-last (context-attribute-closure ctx last)] + (if (= last conclusion-from-last) + (recur implications + (next-closed-set (attributes ctx) + (clop-by-implications implications) + last) + ctx) + (let [newimp (make-implication last conclusion-from-last)] + (recur (conj implications newimp) nil ctx)) ;; new candidate implication + ))))) + ;;; Helpers (defn falsifies-implication? diff --git a/src/main/clojure/conexp/fca/implications.clj b/src/main/clojure/conexp/fca/implications.clj index c1593d96e..e560d1a46 100644 --- a/src/main/clojure/conexp/fca/implications.clj +++ b/src/main/clojure/conexp/fca/implications.clj @@ -11,7 +11,8 @@ (:require [clojure.core.reducers :as r] [conexp.base :refer :all] [conexp.math.algebra :refer :all] - [conexp.fca.contexts :refer :all])) + [conexp.fca.contexts :refer :all] + [clojure.set :as set])) ;;; @@ -573,6 +574,22 @@ :else (illegal-argument "Cannot determine support of " (print-str thing)))) +(defn absolute-support + "Counts the total number of occurences of an itemset in the context. + itemset needs to consist of two entries a and b, both sets of attributes. + absolute-support computes the support of the itemset with all attributes in a and the + negation of each attribute in b." + [ctx itemset] + (let [[attributes neg-attributes] itemset, objects (objects ctx), incidence (incidence-relation ctx)] + (max (count (filter identity (for [object objects] + (every? true? (concat + (for [attribute attributes] + (some? (incident? ctx object attribute))) + (for [attribute neg-attributes] + (not (some? (incident? ctx object attribute))))))))) + 1 +))) + (defn confidence "Computes the confidence of the given implication in the given context." [implication context] @@ -583,7 +600,29 @@ (union (premise implication) (conclusion implication)))) premise-count)))) -;; +(defn absolute-confidence + "Computes the confidence of an implication using the absolute-support method." + [ctx impl] + (let [premise (premise impl) conclusion (conclusion impl)] + (/ (absolute-support ctx [(set/union premise conclusion) #{}]) + (absolute-support ctx [premise #{}])))) + +(defn odds-ratio + "Computes the odds ratio of an implication using the asupp method." + [ctx impl] + (let [premise (premise impl) conclusion (conclusion impl)] + (/ (* (absolute-support ctx [(set/union premise conclusion) #{}]) + (absolute-support ctx [#{} (set/union premise conclusion)])) + (* (absolute-support ctx [premise conclusion]) + (absolute-support ctx [conclusion premise])) + ))) + +(defn local-support [ctx impl] + "Computes the local support of an implication by dividing the support of the implication + by the support of its conclusion. Uses the absolute-support function." + (let [premise (premise impl) conclusion (conclusion impl)] + (/ (absolute-support ctx [(set/union premise conclusion) #{}]) + (absolute-support ctx [conclusion #{}])))) (defn- frequent-itemsets "Returns all frequent itemsets of context, given minsupp as minimal support." diff --git a/src/main/clojure/conexp/fca/lattices.clj b/src/main/clojure/conexp/fca/lattices.clj index 20a3bfcd2..5312e146c 100644 --- a/src/main/clojure/conexp/fca/lattices.clj +++ b/src/main/clojure/conexp/fca/lattices.clj @@ -11,7 +11,8 @@ (:use conexp.base conexp.math.algebra conexp.fca.contexts - conexp.fca.posets)) + conexp.fca.posets) + (:gen-class)) ;;; Datastructure @@ -460,6 +461,18 @@ (let [B+D (intersection B D)] [(attribute-derivation ctx B+D) B+D])))))) +(defn generated-sublattice [lat generators] + "Computes the sublattice of the specified lattice with the specified set of generators." + (let [lat-join (sup lat) + lat-meet (inf lat)] + (loop [X generators] + (let [X-new (clojure.set/union (into #{} (for [a X b X] (lat-join a b))) + (into #{} (for [a X b X] (lat-meet a b))))] + (if (= X X-new) (make-lattice X lat-meet lat-join) + (recur X-new))))) +) + + ;;; nil diff --git a/src/main/clojure/conexp/fca/metric_context.clj b/src/main/clojure/conexp/fca/metric_context.clj new file mode 100644 index 000000000..f7c6f3a40 --- /dev/null +++ b/src/main/clojure/conexp/fca/metric_context.clj @@ -0,0 +1,339 @@ +(ns conexp.fca.metric-context + (:require [conexp.base :refer :all] + [conexp.fca.contexts :refer :all] + [clojure.set :as set])) + +(defn object-hamming-template [ctx obj1 obj2] + "Computes the Hamming distance between objects by comparing the incident attributes." + (if (and (.contains (objects ctx) obj1) + (.contains (objects ctx) obj2)) + (count (set/union (set/difference (object-derivation ctx #{obj1}) + (object-derivation ctx #{obj2})) + (set/difference (object-derivation ctx #{obj2}) + (object-derivation ctx #{obj1})))))) + +(defn attribute-hamming-template [ctx attr1 attr2] + "Computes the Hamming distance between attributes by comparing the incident objects." + (if (and (.contains (attributes ctx) attr1) + (.contains (attributes ctx) attr2)) + (count (set/union (set/difference (attribute-derivation ctx #{attr1}) + (attribute-derivation ctx #{attr2})) + (set/difference (attribute-derivation ctx #{attr2}) + (attribute-derivation ctx #{attr1})))))) + + +(defn create-object-hamming [ctx] + "Returns a function that computes the Hamming distance between objects of the specified context." + #(object-hamming-template ctx %1 %2) +) + +(defn create-attribute-hamming [ctx] + "Returns a function that computes the Hamming distance between attributes of the specified context." + #(attribute-hamming-template ctx %1 %2) +) + +(defprotocol Metric-Context + + (context [this] "Returns the underlying context.") + + (object-metrics [this] "Returns a map of the metrics on objects and their names/keys.") + (attribute-metrics [this] "Returns a map of the metrics on attributes and their names/keys.") + + (object-distance [this metric obj1 obj2] "Computes the distance between two objects based on the specified metric.") + (attribute-distance [this metric attr1 attr2] "Computes the distance between two attributes based on the specified metric.") + + (object-hamming [this] "Returns a Hamming metric function for the objects of the current context.") + (attribute-hamming [this] "Returns a Hamming metric function for the attributes of the current context.")) + +(deftype metric-context [ctx object-metrics attribute-metrics] + + Context + (objects [this] (objects ctx)) + (attributes [this] (attributes ctx)) + (incidence [this] (incidence ctx)) + + Metric-Context + (context [this] ctx) + (object-metrics [this] object-metrics) + (attribute-metrics [this] attribute-metrics) + (object-distance [this metric obj1 obj2] (metric obj1 obj2)) + (attribute-distance [this metric attr1 attr2] (metric attr1 attr2)) + + (object-hamming [this] (create-object-hamming this)) + (attribute-hamming [this] (create-attribute-hamming this)) + +) + +(defn make-object-valuation [mctx dist-fn metric-name] + "Returns a valuation function that displays the result of dist-fn on each nodes extent." + #(dist-fn mctx metric-name (first %)) +) + +(defn make-attribute-valuation [mctx dist-fn metric-name] + "Returns a valuation function that displays the result of dist-fn on each nodes intent." + #(dist-fn mctx metric-name (second %)) +) + +(defn make-combined-valuation [obj-value-fn attr-value-fn] + "Returns a valuation function that displays a tuple of the results of the specified function. + The first of those functions is meant to compute valuations on extents, the second one on intents." + #( identity [(obj-value-fn %) (attr-value-fn %)]) +) + + +(defn add-object-metrics [mctx metrics] + "Adds metrics to the context's object metrics. + The metrics need to be input as a map of names/keys and the corresponding functions." + (metric-context. (context mctx) + (merge (object-metrics mctx) metrics) + (attribute-metrics mctx)) + ) + +(defn add-attribute-metrics [mctx metrics] + "Adds metrics to the context's attribute metrics. + The metrics need to be input as a map of names/keys and the corresponding functions." + (metric-context. (context mctx) + (object-metrics mctx) + (merge (attribute-metrics mctx) metrics)) + ) + +(defn remove-object-metric [mctx metric-name] + "Removes the metric with the specified name/key from the context's object metrics." + (metric-context. (context mctx) + (dissoc (object-metrics mctx) metric-name) + (attribute-metrics mctx)) + ) + +(defn remove-attribute-metric [mctx metric-name] + "Removes the metric with the specified name/key from the context's attribute metrics." + (metric-context. (context mctx) + (object-metrics mctx) + (dissoc (attribute-metrics mctx) metric-name)) + ) + + +(defn convert-to-metric-context + ( + [ctx] + "Converts a context to a metric context." + (metric-context. ctx {} {}) + ) + ( + [ctx object-metrics attribute-metrics] + "Converts a context to a metric context and adds specified metrics. + The metrics need to be input as maps of names/keys and corresponding functions for both object and attribute metrics." + (add-attribute-metrics (add-object-metrics (convert-to-metric-context ctx) object-metrics) attribute-metrics) + ) +) + + +(defn make-metric-context + ( + [objects attributes incidence] + "Creates a new metric context, based on its objects, attributes and incidence relation." + (convert-to-metric-context (make-context objects attributes incidence))) + + ( + [objects attributes incidence object-metrics attribute-metrics] + "Creates a new metric context, based on its objects, attributes and incidence relation, and adds metrics to the new context. + The metrics need to be input as maps of names/keys and corresponding functions for both object and attribute metrics." + (convert-to-metric-context (make-context objects attributes incidence) object-metrics attribute-metrics)) +) + + + +(defn max-object-distance + ( + [mctx metric-name] + "Computes the maximum distance between objects of the context using the specified metric." + (max-object-distance mctx metric-name (objects mctx)) + ) + + ( + [mctx metric-name objs] + "Computes the maximum distance between the specified objects using the specified metric. + The maximum distance on an empty set of objects is by convention defined to be 0." + (if (< (count objs) 2) 0 + (apply max (for [obj1 objs + obj2 (set/difference objs #{obj1})] + (object-distance mctx metric-name obj1 obj2))))) +) + +(defn min-object-distance + ( + [mctx metric-name] + "Computes the minimum distance between objects of the context using the specified metric." + (min-object-distance mctx metric-name (objects mctx)) + ) + + ( + [mctx metric-name objs] + "Computes the minimum distance between the specified objects using the specified metric. + The minimum distance on an empty set of objects is by convention defined to be 0." + (if (< (count objs) 2) 0 + (apply min (for [obj1 objs + obj2 (set/difference objs #{obj1})] + (object-distance mctx metric-name obj1 obj2))))) +) + +(defn average-object-distance + ( + [mctx metric-name] + "Computes the average distance between objects of the context using the specified metric." + (average-object-distance mctx metric-name (objects mctx)) + ) + + ( + [mctx metric-name objs] + "Computes the average distance between the specified objects using the specified metric. + The average distance on an empty set of objects is by convention defined to be 0." + (if (< (count objs) 2) 0 + (apply #(/ (reduce + %) (count %)) [(for [obj1 objs + obj2 (set/difference objs #{obj1})] + (object-distance mctx metric-name obj1 obj2))]))) +) + + +(defn max-attribute-distance + ( + [mctx metric-name] + "Computes the maximum distance between attributess of the context using the specified metric." + (max-attribute-distance mctx metric-name (attributes mctx)) + ) + + ( + [mctx metric-name attrs] + "Computes the maximum distance between the specified attributes using the specified metric. + The maximum distance on an empty set of attributes is by convention defined to be 0." + (if (< (count attrs) 2) 0 + (apply max (for [attr1 attrs + attr2 (set/difference attrs #{attr1})] + (attribute-distance mctx metric-name attr1 attr2))))) +) + +(defn min-attribute-distance + ( + [mctx metric-name] + "Computes the minimum distance between attributes of the context using the specified metric." + (min-attribute-distance mctx metric-name (attributes mctx)) + ) + + ( + [mctx metric-name attrs] + "Computes the minimum distance between the specified attributes using the specified metric. + The minimum distance on an empty set of attributes is by convention defined to be 0." + (if (< (count attrs) 2) 0 + (apply min (for [attr1 attrs + attr2 (set/difference attrs #{attr1})] + (attribute-distance mctx metric-name attr1 attr2))))) +) + +(defn average-attribute-distance + ( + [mctx metric-name] + "Computes the average distance between attributes of the context using the specified metric." + (average-attribute-distance mctx metric-name (attributes mctx)) + ) + + ( + [mctx metric-name attrs] + "Computes the average distance between the specified attributes using the specified metric. + The average distance on an empty set of attributes is by convention defined to be 0." + (if (< (count attrs) 2) 0 + (apply #(/ (reduce + %) (count %)) [(for [attr1 attrs + attr2 (set/difference attrs #{attr1})] + (attribute-distance mctx metric-name attr1 attr2))]))) +) + + + +(defn object-confusion-matrix [mctx metric-name & opts] + "Return a matrix of all distances between objects computed using the specified metric. + Also returns a vector denoting the order of entries. + Use :norm to mormalize the distances." + (let [objs (into [] (objects mctx)) + divisor (if (and opts (.contains opts :norm)) (max-object-distance mctx metric-name) 1)] + [objs + (into [] (for [obj1 objs] + (into [] (for [obj2 objs] + (/ (object-distance mctx metric-name obj1 obj2) divisor)))))]) +) + +(defn attribute-confusion-matrix [mctx metric-name & opts] + "Return a matrix of all distances between attributes computed using the specified metric. + Also returns a vector denoting the order of entries. + Use :norm to mormalize the distances." + (let [attrs (into [] (attributes mctx)) + divisor (if (and opts (.contains opts :norm)) (max-attribute-distance mctx metric-name) 1)] + [attrs + (into [] (for [attr1 attrs] + (into [] (for [attr2 attrs] + (/ (attribute-distance mctx metric-name attr1 attr2) divisor)))))]) +) + + +;;;For the functions below, keep in mind that metrics may no longer work as intended after the context has been altered. + +(defn dual-metric-context [mctx] + "Computes the dual context of a metric context. Metrics remain unchanged, but object metrics become + attribute metrics and vice versa." + (convert-to-metric-context (dual-context (context mctx)) + (attribute-metrics mctx) + (object-metrics mctx)) +) + +(defn invert-metric-context [mctx] + "Computes the inverted context of a metric context. Metrics remain unchanged." + (convert-to-metric-context (invert-context (context mctx)) + (object-metrics mctx) + (attribute-metrics mctx)) +) + +(defn metric-context-union [mctx1 mctx2] + "Computes the union of two metric contexts. The resulting metric context contains the metrics of both contexts. + If metrics have the same name/key, those of the latter context are retained." + (convert-to-metric-context (context-union (context mctx1) (context mctx2)) + (merge (object-metrics mctx1) (object-metrics mctx2)) + (merge (attribute-metrics mctx1) (attribute-metrics mctx2))) +) + +(defn metric-context-disjoint-union [mctx1 mctx2] + "Computes the disjoint union of two metric contexts. The resulting metric context contains the metrics of both contexts. + If metrics have the same name/key, those of the latter context are retained." + (convert-to-metric-context (context-disjoint-union (context mctx1) (context mctx2)) + (merge (object-metrics mctx1) (object-metrics mctx2)) + (merge (attribute-metrics mctx1) (attribute-metrics mctx2))) +) + +(defn metric-context-intersection [mctx1 mctx2] + "Computes the intersection of two metric contexts. The resulting metric context contains the metrics of both contexts. + If metrics have the same name/key, those of the latter context are retained." + (convert-to-metric-context (context-intersection (context mctx1) (context mctx2)) + (merge (object-metrics mctx1) (object-metrics mctx2)) + (merge (attribute-metrics mctx1) (attribute-metrics mctx2))) +) + +(defn metric-context-composition [mctx1 mctx2] + "Computes the composition of two metric contexts. The resulting metric context contains the metrics of both contexts. + If metrics have the same name/key, those of the latter context are retained." + (convert-to-metric-context (context-composition (context mctx1) (context mctx2)) + (merge (object-metrics mctx1) (object-metrics mctx2)) + (merge (attribute-metrics mctx1) (attribute-metrics mctx2))) +) + +(defn metric-context-apposition [mctx1 mctx2] + "Computes the apposition of two metric contexts. The resulting metric context contains the metrics of both contexts. + If metrics have the same name/key, those of the latter context are retained." + (convert-to-metric-context (context-apposition (context mctx1) (context mctx2)) + (merge (object-metrics mctx1) (object-metrics mctx2)) + (merge (attribute-metrics mctx1) (attribute-metrics mctx2))) +) + +(defn metric-context-subposition [mctx1 mctx2] + "Computes the subposition of two metric contexts. The resulting metric context contains the metrics of both contexts. + If metrics have the same name/key, those of the latter context are retained." + (convert-to-metric-context (context-subposition (context mctx1) (context mctx2)) + (merge (object-metrics mctx1) (object-metrics mctx2)) + (merge (attribute-metrics mctx1) (attribute-metrics mctx2))) +) + diff --git a/src/main/clojure/conexp/gui/editors/contexts.clj b/src/main/clojure/conexp/gui/editors/contexts.clj index c88d2e16a..ccdc66446 100644 --- a/src/main/clojure/conexp/gui/editors/contexts.clj +++ b/src/main/clojure/conexp/gui/editors/contexts.clj @@ -35,6 +35,16 @@ (make-context-editor thing) (str "Context " path))))) +(defn- load-binary-csv-and-go + "Loads a named binary csv and adds a new tab with a context-editor." + [frame] + (when-let [^File file (choose-open-file frame)] + (let [path (.getPath file), + thing (read-context path :named-binary-csv)] + (add-tab frame + (make-context-editor thing) + (str "Context " path))))) + (defn- clone-context-and-go "Loads context with given loader and adds a new tab with a context-editor." [frame] @@ -104,6 +114,9 @@ (menu-item :text "Load Context", :listen [:action (fn [_] (load-context-and-go frame))]), + (menu-item :text "Load Binary CSV", + :listen [:action (fn [_] + (load-binary-csv-and-go frame))]), (menu-item :text "Random Context", :listen [:action (fn [_] (context-and-go frame (rand-context 5 5 0.4)))]), diff --git a/src/main/clojure/conexp/io/contexts.clj b/src/main/clojure/conexp/io/contexts.clj index 6b237e070..4f44212ec 100644 --- a/src/main/clojure/conexp/io/contexts.clj +++ b/src/main/clojure/conexp/io/contexts.clj @@ -667,7 +667,7 @@ [file] (with-in-reader file (let [file-content (json/read *in* :key-fn keyword) - schema-file "src/main/resources/schemas/context_schema_v1.1.json"] + schema-file "schemas/context_schema_v1.1.json"] (assert (matches-schema? file-content schema-file) (str "The input file does not match the schema given at " schema-file ".")) (json->ctx file-content)))) diff --git a/src/main/clojure/conexp/io/fcas.clj b/src/main/clojure/conexp/io/fcas.clj index 024748c73..c51bfc3b4 100644 --- a/src/main/clojure/conexp/io/fcas.clj +++ b/src/main/clojure/conexp/io/fcas.clj @@ -65,7 +65,7 @@ [file] (with-in-reader file (let [json-fca (json/read *in* :key-fn keyword) - schema-file "src/main/resources/schemas/fca_schema_v1.0.json"] + schema-file "schemas/fca_schema_v1.0.json"] (assert (matches-schema? json-fca schema-file) (str "The input file does not match the schema given at " schema-file ".")) (create-fca-input-map json-fca)))) diff --git a/src/main/clojure/conexp/io/implications.clj b/src/main/clojure/conexp/io/implications.clj index 3531ce854..7bfdef23a 100644 --- a/src/main/clojure/conexp/io/implications.clj +++ b/src/main/clojure/conexp/io/implications.clj @@ -62,7 +62,7 @@ [file] (with-in-reader file (let [impl (json/read *in* :key-fn keyword) - schema-file "src/main/resources/schemas/implications_schema_v1.0.json"] + schema-file "schemas/implications_schema_v1.0.json"] (assert (matches-schema? impl schema-file) (str "The input file does not match the schema given at " schema-file ".")) (json->implications impl)))) diff --git a/src/main/clojure/conexp/io/json.clj b/src/main/clojure/conexp/io/json.clj index fae1f57a3..f5885bc8f 100644 --- a/src/main/clojure/conexp/io/json.clj +++ b/src/main/clojure/conexp/io/json.clj @@ -9,13 +9,14 @@ (ns conexp.io.json "Provides functionality to read and process json files" (:require [json-schema.core :as json-schema] - [clojure.data.json :as json])) + [clojure.data.json :as json] + [clojure.java.io :as io])) (defn- read-schema "Returns the file content as Json object." [file] (json-schema/prepare-schema - (-> file slurp + (-> (io/resource file) slurp (cheshire.core/parse-string true)) ;; referencing inside of schemas with relative references {:classpath-aware? true diff --git a/src/main/clojure/conexp/io/lattices.clj b/src/main/clojure/conexp/io/lattices.clj index 5a83501f0..b64d7af39 100644 --- a/src/main/clojure/conexp/io/lattices.clj +++ b/src/main/clojure/conexp/io/lattices.clj @@ -102,7 +102,7 @@ [file] (with-in-reader file (let [json-lattice (json/read *in* :key-fn keyword) - schema-file "src/main/resources/schemas/lattice_schema_v1.1.json"] + schema-file "schemas/lattice_schema_v1.1.json"] (assert (matches-schema? json-lattice schema-file) (str "The input file does not match the schema given at " schema-file ".")) (json->lattice json-lattice)))) diff --git a/src/main/clojure/conexp/io/layouts.clj b/src/main/clojure/conexp/io/layouts.clj index 87f30778e..521d6a549 100644 --- a/src/main/clojure/conexp/io/layouts.clj +++ b/src/main/clojure/conexp/io/layouts.clj @@ -275,7 +275,7 @@ [file] (with-in-reader file (let [json-layout (json/read *in* :key-fn keyword) - schema-file "src/main/resources/schemas/layout_schema_v1.0.json"] + schema-file "schemas/layout_schema_v1.0.json"] (assert (matches-schema? json-layout schema-file) (str "The input file does not match the schema given at " schema-file ".")) (json->layout json-layout)))) diff --git a/src/main/clojure/conexp/io/many_valued_contexts.clj b/src/main/clojure/conexp/io/many_valued_contexts.clj index 9a6d782c4..d4a6869fc 100644 --- a/src/main/clojure/conexp/io/many_valued_contexts.clj +++ b/src/main/clojure/conexp/io/many_valued_contexts.clj @@ -165,7 +165,7 @@ [file] (with-in-reader file (let [json-mv-context (json/read *in* :key-fn keyword) - schema-file "src/main/resources/schemas/mv-context_schema_v1.0.json"] + schema-file "schemas/mv-context_schema_v1.0.json"] (assert (matches-schema? json-mv-context schema-file) (str "The input file does not match the schema given at " schema-file ".")) (json->mv-context json-mv-context)))) diff --git a/src/test/clojure/conexp/fca/causal_implications_test.clj b/src/test/clojure/conexp/fca/causal_implications_test.clj new file mode 100644 index 000000000..b7460123e --- /dev/null +++ b/src/test/clojure/conexp/fca/causal_implications_test.clj @@ -0,0 +1,166 @@ +;; Copyright ⓒ the conexp-clj developers; all rights reserved. +;; The use and distribution terms for this software are covered by the +;; Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php) +;; which can be found in the file LICENSE at the root of this distribution. +;; By using this software in any fashion, you are agreeing to be bound by +;; the terms of this license. +;; You must not remove this notice, or any other, from this software. + +(ns conexp.fca.causal-implications-test + (:require + [conexp.base :refer :all] + [conexp.io.contexts :refer :all] + [conexp.fca.contexts :refer :all] + [conexp.fca.implications :refer :all] + [conexp.fca.causal-implications :refer :all] + [clojure.set :as set]) + (:use clojure.test)) + +(def smoking-ctx (make-context [0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 + 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40] + ["smoking" "male" "female" "education-level-high" "education-level-low" "cancer"] + #{[0 "smoking"] [0 "male"] [0 "education-level-high"] [0 "cancer"] + [1 "smoking"] [1 "male"] [1 "education-level-high"] [1 "cancer"] + [2 "smoking"] [2 "male"] [2 "education-level-high"] [2 "cancer"] + [3 "smoking"] [3 "male"] [3 "education-level-high"] [3 "cancer"] + [4 "smoking"] [4 "male"] [4 "education-level-high"] [4 "cancer"] + [5 "smoking"] [5 "male"] [5 "education-level-high"] [5 "cancer"] + [6 "smoking"] [6 "male"] [6 "education-level-high"] + [7 "smoking"] [7 "male"] [7 "education-level-high"] + [8 "smoking"] [8 "male"] [8 "education-level-low"] [8 "cancer"] + [9 "smoking"] [9 "male"] [9 "education-level-low"] [9 "cancer"] + [10 "smoking"] [10 "male"] [10 "education-level-low"] [10 "cancer"] + [11 "smoking"] [11 "male"] [11 "education-level-low"] [11 "cancer"] + [12 "smoking"] [12 "male"] [12 "education-level-low"] + [13 "smoking"] [13 "female"] [13 "education-level-high"] [13 "cancer"] + [14 "smoking"] [14 "female"] [14 "education-level-high"] [14 "cancer"] + [15 "smoking"] [15 "female"] [15 "education-level-high"] [15 "cancer"] + [16 "smoking"] [16 "female"] [16 "education-level-high"] [16 "cancer"] + [17 "smoking"] [17 "female"] [17 "education-level-high"] [17 "cancer"] + [18 "smoking"] [18 "female"] [18 "education-level-high"] + [19 "smoking"] [19 "female"] [19 "education-level-high"] + [20 "smoking"] [20 "female"] [20 "education-level-low"] [20 "cancer"] + [21 "smoking"] [21 "female"] [21 "education-level-low"] [21 "cancer"] + [22 "smoking"] [22 "female"] [22 "education-level-low"] [22 "cancer"] + [23 "smoking"] [23 "female"] [23 "education-level-low"] [23 "cancer"] + [24 "smoking"] [24 "female"] [24 "education-level-low"] + [25 "male"] [25 "education-level-high"] [25 "cancer"] + [26 "male"] [26 "education-level-high"] [26 "cancer"] + [27 "male"] [27 "education-level-high"] + [28 "male"] [28 "education-level-high"] + [29 "male"] [29 "education-level-high"] + [30 "male"] [30 "education-level-low"] [30 "cancer"] + [31 "male"] [31 "education-level-low"] + [32 "male"] [32 "education-level-low"] + [33 "male"] [33 "education-level-low"] + [34 "female"] [34 "education-level-high"] [34 "cancer"] + [35 "female"] [35 "education-level-high"] + [36 "female"] [36 "education-level-high"] + [37 "female"] [37 "education-level-low"] [37 "cancer"] + [38 "female"] [38 "education-level-low"] + [39 "female"] [39 "education-level-low"] + [40 "female"] [40 "education-level-low"]}) +) + +(def smoking-rule (make-implication #{"smoking"} #{"cancer"})) +(def smoking-fair-data-set (seq [#{7 29} + #{13 34} + #{15 36} + #{6 26} + #{1 28} + #{0 27} + #{17 35} + #{33 9} + #{31 12} + #{30 10} + #{22 37} + #{4 25} + #{21 38} + #{32 11} + #{24 40} + #{20 39}])) +(def smoking-fair-odds-ratio 8) + +(def birds-ctx (read-context "testing-data/Bird-Diet.ctx")) +(def birds-rule (make-implication #{"haferflocken"} #{"insekten"})) +(def birds-fair-data-set (seq [#{"baumläufer" "wintergoldhähnchen"}])) +(def birds-fair-odds-ratio 0) + + +(def diagnosis-ctx (read-context "testing-data/Diagnosis.ctx")) + + +(deftest test-record-pair + (is (matched-record-pair? smoking-ctx + smoking-rule + #{"male" "female" "education-level-high" "education-level-low"} + 0 + 25)) + (is (matched-record-pair? smoking-ctx + smoking-rule + #{"male" "female" "education-level-high" "education-level-low"} + 9 + 31)) + (is (matched-record-pair? smoking-ctx + smoking-rule + #{"male" "female" "education-level-high" "education-level-low"} + 13 + 34)) + (is (not (matched-record-pair? smoking-ctx + smoking-rule + #{"male" "female" "education-level-high" "education-level-low"} + 0 + 1))) + (is (not (matched-record-pair? smoking-ctx + smoking-rule + #{"male" "female" "education-level-high" "education-level-low"} + 0 + 30))) + (is (= (fair-data-set smoking-ctx + smoking-rule + #{"male" "female" "education-level-high" "education-level-low"}) + smoking-fair-data-set)) + + (is (= (fair-data-set birds-ctx + birds-rule + #{"beeren" "hirse" "meisenring" "sonnenblume" "talg" "äpfel"}) + birds-fair-data-set)) +) + +(deftest test-fair-odds-ratio + + (is (= (fair-odds-ratio smoking-ctx smoking-rule smoking-fair-data-set) + smoking-fair-odds-ratio)) + (is (= (fair-odds-ratio birds-ctx smoking-rule birds-fair-data-set) + birds-fair-odds-ratio)) + ) + +(deftest test-relevant + + (is (causally-relevant? smoking-ctx #{"smoking"} #{"cancer"} 1.9)) + (is (causally-relevant? smoking-ctx #{"male"} #{"cancer"} 1.9)) + (is (not (causally-relevant? birds-ctx #{"hirse"} #{"äpfel"} 1.9))) + (is (not (causally-relevant? birds-ctx #{"insekten"} #{"hirse"} 1.9))) + +) + +(deftest test-exclusive + + (is (= (exclusive-variables smoking-ctx #{"male" "education-level-low"} 1) + #{#{"male" "female"} #{"education-level-high" "education-level-low"}})) +) + +(deftest test-causal + + (is (causal? smoking-ctx smoking-rule #{} 1.7 1)) + (is (not (causal? smoking-ctx (make-implication #{"male"} #{"smoking"}) #{} 1.999 1))) + (is (causal? diagnosis-ctx (make-implication #{"[Bladder inflammation? yes]"} #{"[Urine pushing yes]"}) #{} 1.7 1)) + (is (not (causal? diagnosis-ctx (make-implication #{"[Burning yes]"} #{"[Urine pushing yes]"}) #{} 1.7 1))) + + (is (= (causal-association-rule-discovery smoking-ctx 0.7 3 "cancer" 1.7) + (seq [#{"smoking"}]))) + (is (= (causal-association-rule-discovery diagnosis-ctx 0.7 3 "[Urine pushing yes]" 1.7) + (seq [#{"[Bladder inflammation? yes]"}]))) + +) + diff --git a/src/test/clojure/conexp/fca/metric_context_test.clj b/src/test/clojure/conexp/fca/metric_context_test.clj new file mode 100644 index 000000000..f6e1e36df --- /dev/null +++ b/src/test/clojure/conexp/fca/metric_context_test.clj @@ -0,0 +1,199 @@ +(ns conexp.fca.metric-context-test + (:use conexp.base + conexp.fca.contexts + conexp.fca.lattices + conexp.fca.metric-context) + (:use clojure.test)) + +(defn object-metric-1 [x y] identity) +(defn object-metric-2 [x y] identity) +(defn object-metric-3 [x y] identity) + +(defn attribute-metric-1 [x y] identity) +(defn attribute-metric-2 [x y] identity) +(defn attribute-metric-3 [x y] identity) + +(def test-objs #{1 2 3 4 5 6}) +(def test-attrs #{"A" "B" "C" "D" "E"}) +(def test-inc #{[1 "A"] [1 "B"] [1 "D"] [1 "E"] + [2 "A"] [2 "B"] + [3 "B"] [3 "C"] [3 "D"] [3 "E"] + [4 "A"] [4 "C"] [4 "D"] + [5 "C"] [5 "D"] [5 "E"] + [6 "A"] [6 "B"] [6 "C"] [6 "D"] [6 "E"]}) + +(def testctx (make-context test-objs + test-attrs + test-inc)) + +(def testmctx (make-metric-context test-objs test-attrs test-inc)) + + + +(def cities-ctx (make-context #{"Washington, D.C." "Berlin" "Beijing" "Cairo" "Canberra" "Brasilia"} + #{"Population > 1M" "Population > 3M" "Population > 10M" + "Area > 100km^2" "Area > 1000km^2" "Area > 10000km^2"} + + #{["Washington, D.C." "Area > 100km^2"] + + ["Berlin" "Population > 1M"] ["Berlin" "Population > 3M"] ["Berlin" "Area > 100km^2"] + + ["Beijing" "Population > 1M"] ["Beijing" "Population > 3M"] ["Beijing" "Population > 10M"] + ["Beijing" "Area > 100km^2"] ["Beijing" "Area > 1000km^2"] ["Beijing" "Area > 10000km^2"] + + ["Cairo" "Population > 1M"] ["Cairo" "Population > 3M"] ["Cairo" "Population > 10M"] + ["Cairo" "Area > 100km^2"] ["Cairo" "Area > 1000km^2"] + + ["Canberra" "Area > 100km^2"] + + ["Brasilia" "Population > 1M"] ["Brasilia" "Area > 100km^2"] ["Brasilia" "Area > 1000km^2"]})) + +(def cities-mctx (convert-to-metric-context cities-ctx)) + +(def distance-map {"Washington, D.C." {"Washington, D.C." 0 + "Berlin" 7611 + "Beijing" 11145 + "Cairo" 9348 + "Canberra" 15945 + "Brasilia" 6791} + "Berlin" {"Washington, D.C." 7611 + "Berlin" 0 + "Beijing" 3754 + "Cairo" 2892 + "Canberra" 16066 + "Brasilia" 9593} + "Beijing" {"Washington, D.C." 11145 + "Berlin" 3754 + "Beijing" 0 + "Cairo" 7542 + "Canberra" 9011 + "Brasilia" 16929} + "Cairo" {"Washington, D.C." 9348 + "Berlin" 2892 + "Beijing" 7542 + "Cairo" 0 + "Canberra" 14266 + "Brasilia" 9877} + "Canberra" {"Washington, D.C." 15945 + "Berlin" 16066 + "Beijing" 9011 + "Cairo" 14266 + "Canberra" 0 + "Brasilia" 14059} + "Brasilia" {"Washington, D.C." 6791 + "Berlin" 9593 + "Beijing" 16929 + "Cairo" 9877 + "Canberra" 14059 + "Brasilia" 0}}) + +(defn distance-metric [a b]((distance-map a) b)) + + + +(deftest test-create-metric-context + + (let [mctx (make-metric-context test-objs test-attrs test-inc) + mctx-with-metrics (make-metric-context test-objs + test-attrs + test-inc + {:o-metric-1 object-metric-1 :o-metric-2 object-metric-2} + {:a-metric-1 attribute-metric-1})] + (is (= (context mctx) testctx)) + (is (= (context mctx-with-metrics) testctx)) + + (is (contains? (object-metrics mctx-with-metrics) :o-metric-1)) + (is (contains? (object-metrics mctx-with-metrics) :o-metric-2)) + (is (contains? (attribute-metrics mctx-with-metrics) :a-metric-1))) +) + +(deftest test-convert-to-metric-context + + (let [mctx (convert-to-metric-context testctx) + mctx-with-metrics (convert-to-metric-context testctx + {:o-metric-1 object-metric-1 :o-metric-2 object-metric-2} + {:a-metric-1 attribute-metric-1})] + (is (= (context mctx) testctx)) + (is (= (context mctx-with-metrics) testctx)) + + (is (contains? (object-metrics mctx-with-metrics) :o-metric-1)) + (is (contains? (object-metrics mctx-with-metrics) :o-metric-2)) + (is (contains? (attribute-metrics mctx-with-metrics) :a-metric-1))) +) + +(deftest test-add-metrics + + (let [mctx (convert-to-metric-context testctx + {:o-metric-1 object-metric-1 :o-metric-2 object-metric-2} + {:a-metric-1 attribute-metric-1}) + mctx2 (add-object-metrics mctx {:o-metric-2 object-metric-2 :o-metric-3 object-metric-3}) + mctx3 (add-attribute-metrics mctx2 {:a-metric-2 attribute-metric-2 :a-metric-3 attribute-metric-3})] + + (is (contains? (object-metrics mctx3) :o-metric-1)) + (is (contains? (object-metrics mctx3) :o-metric-2)) + (is (contains? (object-metrics mctx3) :o-metric-3)) + (is (= (count (object-metrics mctx3)) 3)) + + (is (contains? (attribute-metrics mctx3) :a-metric-1)) + (is (contains? (attribute-metrics mctx3) :a-metric-2)) + (is (contains? (attribute-metrics mctx3) :a-metric-3)) + (is (= (count (attribute-metrics mctx3)) 3))) +) + +(deftest test-remove-metrics + + (let [mctx (convert-to-metric-context testctx + {:o-metric-1 object-metric-1 :o-metric-2 object-metric-2} + {:a-metric-1 attribute-metric-1}) + mctx2 (remove-object-metric mctx :o-metric-1) + mctx3 (remove-object-metric mctx2 :o-metric-3) + mctx4 (remove-attribute-metric mctx3 :a-metric-1)] + + (is (not (contains? (object-metrics mctx4) :o-metric-1))) + (is (contains? (object-metrics mctx4) :o-metric-2)) + (is (= (count (object-metrics mctx4)) 1)) + + (is (not (contains? (attribute-metrics mctx4) :a-metric-1))) + (is (= (count (attribute-metrics mctx4)) 0))) +) + +(deftest test-object-dist-hamming + + (is (= (object-distance testmctx (object-hamming testmctx) 1 2) 2)) + (is (= (object-distance testmctx (object-hamming testmctx) 2 6) 3)) + + (is (= (max-object-distance testmctx (object-hamming testmctx)) 5)) + (is (= (max-object-distance testmctx (object-hamming testmctx) #{1 3 4 5 6}) 3)) + + (is (= (min-object-distance testmctx (object-hamming testmctx)) 1)) + (is (= (max-object-distance testmctx (object-hamming testmctx) #{1 3}) 2)) + + (is (= (average-object-distance testmctx (object-hamming testmctx))37/15 )) + (is (= (average-object-distance testmctx (object-hamming testmctx) #{1 2 3}) 8/3)) + +) + +(deftest test-attribute-dist-hamming + + (is (= (attribute-distance testmctx (attribute-hamming testmctx) "A" "C") 4)) + (is (= (attribute-distance testmctx (attribute-hamming testmctx) "B" "D") 3)) + + (is (= (max-attribute-distance testmctx (attribute-hamming testmctx)) 4)) + (is (= (max-attribute-distance testmctx (attribute-hamming testmctx) #{"A" "B" "D"}) 3)) + + (is (= (min-attribute-distance testmctx (attribute-hamming testmctx)) 1)) + (is (= (max-attribute-distance testmctx (attribute-hamming testmctx) #{"A" "B"}) 2)) + + (is (= (average-attribute-distance testmctx (attribute-hamming testmctx)) 13/5 )) + (is (= (average-attribute-distance testmctx (attribute-hamming testmctx) #{"A" "B" "C"}) 10/3)) + +) + +(deftest test-confusion-matrices + + (object-confusion-matrix testmctx (object-hamming testmctx)) + (attribute-confusion-matrix testmctx (attribute-hamming testmctx)) + + (object-confusion-matrix testmctx (object-hamming testmctx) :norm) + (attribute-confusion-matrix testmctx (attribute-hamming testmctx) :norm) +) diff --git a/testing-data/ben-and-jerrys-allergens.ctx b/testing-data/ben-and-jerrys-allergens.ctx new file mode 100644 index 000000000..87bb90c42 --- /dev/null +++ b/testing-data/ben-and-jerrys-allergens.ctx @@ -0,0 +1,26 @@ +B + +7 +7 + +Peanut Butter Cup +Fudge Brownie +Caramel Sutra +Salted Caramel Brownie +Caramel Chew Chew +Half Baked +Cookie Dough +barley +milk +peanuts +almond +wheat +egg +soy +.XX..XX +XX..XX. +.X.X.XX +.X..XXX +.X...XX +XX..XXX +.X..XXX diff --git a/testing-data/ben-and-jerrys-flavors-small.ctx b/testing-data/ben-and-jerrys-flavors-small.ctx new file mode 100644 index 000000000..42125ebc9 --- /dev/null +++ b/testing-data/ben-and-jerrys-flavors-small.ctx @@ -0,0 +1,25 @@ +B + +7 +6 + +Peanut Butter Cup +Fudge Brownie +Caramel Sutra +Salted Caramel Brownie +Caramel Chew Chew +Half Baked +Cookie Dough +Choco +Brownie +Dough +Peanut +Vanilla +Caramel +X..X.. +XX.... +X....X +XX..XX +X....X +XXX.X. +X.X.X. diff --git a/testing-data/ben-and-jerrys-flavors.ctx b/testing-data/ben-and-jerrys-flavors.ctx new file mode 100644 index 000000000..9a1466fd7 --- /dev/null +++ b/testing-data/ben-and-jerrys-flavors.ctx @@ -0,0 +1,28 @@ +B + +7 +9 + +Peanut Butter Cup +Fudge Brownie +Caramel Sutra +Salted Caramel Brownie +Caramel Chew Chew +Half Baked +Cookie Dough +Choco Ice +Peanut Ice +Choco Pieces +Brownie +Dough +Peanut Butter +Caramel Ice +Vanilla +Caramel +.XX..X... +X..X..... +X.X...X.X +..XX...XX +..X...X.X +X.XXX..X. +..X.X..X.