From f68a8f3412830146ddce1c5216c925e39ddcf60c Mon Sep 17 00:00:00 2001 From: Sasha Petrenko Date: Tue, 31 Jan 2023 09:34:31 -0600 Subject: [PATCH 01/25] Add Parameters.jl link to readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c7ffeb3d..f6021151 100644 --- a/README.md +++ b/README.md @@ -122,7 +122,7 @@ You can pass module-specific options during construction with keyword arguments art = DDVFA(rho_ub=0.75, rho_lb=0.4) ``` -For more advanced users, options for the modules are contained in `Parameters.jl` structs. +For more advanced users, options for the modules are contained in [`Parameters.jl`](https://github.com/mauro3/Parameters.jl) structs. These options can be passed keyword arguments before instantiating the model: ```julia From 7f57e939a8363bf1d184addb4106ebdb2dcd9ab0 Mon Sep 17 00:00:00 2001 From: Sasha Petrenko Date: Tue, 31 Jan 2023 09:38:57 -0600 Subject: [PATCH 02/25] Reorganize attribution section, add ARL statement --- README.md | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f6021151..a95f9a9a 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,7 @@ Please read the [documentation](https://ap6yc.github.io/AdaptiveResonance.jl/dev - [Contributing](#contributing) - [Acknowledgements](#acknowledgements) - [Authors](#authors) + - [Funding](#funding) - [History](#history) - [Software](#software) - [Datasets](#datasets) @@ -216,10 +217,21 @@ Patch versions are for bug fixes, minor versions are for backward-compatible cha ### Authors -This package is developed and maintained by [Sasha Petrenko](https://github.com/AP6YC) with sponsorship by the [Applied Computational Intelligence Laboratory (ACIL)](https://acil.mst.edu/). This project is supported by grants from the [Night Vision Electronic Sensors Directorate](https://c5isr.ccdc.army.mil/inside_c5isr_center/nvesd/), the [DARPA Lifelong Learning Machines (L2M) program](https://www.darpa.mil/program/lifelong-learning-machines), [Teledyne Technologies](http://www.teledyne.com/), and the [National Science Foundation](https://www.nsf.gov/). +This package is developed and maintained by [Sasha Petrenko](https://github.com/AP6YC) with sponsorship by the [Applied Computational Intelligence Laboratory (ACIL)](https://acil.mst.edu/). +The users [@aaronpeikert](https://github.com/aaronpeikert), [@hayesall](https://github.com/hayesall), and [@markNZed](https://github.com/markNZed) have graciously contributed their time with reviews and feedback that has greatly improved the project. + +### Funding + +This project is supported by grants from the [Night Vision Electronic Sensors Directorate](https://c5isr.ccdc.army.mil/inside_c5isr_center/nvesd/), the [DARPA Lifelong Learning Machines (L2M) program](https://www.darpa.mil/program/lifelong-learning-machines), [Teledyne Technologies](http://www.teledyne.com/), and the [National Science Foundation](https://www.nsf.gov/). The material, findings, and conclusions here do not necessarily reflect the views of these entities. -The users [@aaronpeikert](https://github.com/aaronpeikert), [@hayesall](https://github.com/hayesall), and [@markNZed](https://github.com/markNZed) have graciously contributed their time with reviews and feedback that has greatly improved the project. +Research was sponsored by the Army Research Laboratory and was accomplished under +Cooperative Agreement Number W911NF-22-2-0209. +The views and conclusions contained in this document are +those of the authors and should not be interpreted as representing the official policies, either expressed or implied, of +the Army Research Laboratory or the U.S. Government. +The U.S. Government is authorized to reproduce and +distribute reprints for Government purposes notwithstanding any copyright notation herein. ### History @@ -229,6 +241,8 @@ The users [@aaronpeikert](https://github.com/aaronpeikert), [@hayesall](https:// - 10/13/2021 - Initiate GitFlow contribution. - 5/4/2022 - [Acceptance to JOSS](https://doi.org/10.21105/joss.03671). - 10/11/2022 - v0.6.0 +- 12/15/2022 - v0.7.0 +- 1/30/2023 - v0.8.0 ### Software From 334a2aceeabea9771fb90fdde06156fab3b7eb91 Mon Sep 17 00:00:00 2001 From: Sasha Petrenko Date: Tue, 31 Jan 2023 09:47:01 -0600 Subject: [PATCH 03/25] Add links to aux funcs, restructure variants --- README.md | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index a95f9a9a..e18f6a80 100644 --- a/README.md +++ b/README.md @@ -180,24 +180,35 @@ This project has implementations of the following ART (unsupervised) and ARTMAP - ARTMAP - **[`SFAM`][4]**: Simplified Fuzzy ARTMAP - **[`FAM`][5]**: Fuzzy ARTMAP - - **[`DAM`][6]**: Default ARTMAP + +Because each of these modules is a framework for many variants in the literature, this project also implements these [variants](https://ap6yc.github.io/AdaptiveResonance.jl/dev/man/modules/) by changing their module [options](https://ap6yc.github.io/AdaptiveResonance.jl/dev/man/guide/#art_options). +Variants built upon these modules are: + +- ART + - **[`GammaNormalizedFuzzyART`][7]**: Gamma-Normalized FuzzyART (variant of FuzzyART). +- ARTMAP + - **[`DAM`][6]**: Default ARTMAP (variant of SFAM). [1]: https://ap6yc.github.io/AdaptiveResonance.jl/dev/man/full-index/#AdaptiveResonance.FuzzyART [2]: https://ap6yc.github.io/AdaptiveResonance.jl/dev/man/full-index/#AdaptiveResonance.DVFA [3]: https://ap6yc.github.io/AdaptiveResonance.jl/dev/man/full-index/#AdaptiveResonance.DDVFA [4]: https://ap6yc.github.io/AdaptiveResonance.jl/dev/man/full-index/#AdaptiveResonance.SFAM [5]: https://ap6yc.github.io/AdaptiveResonance.jl/dev/man/full-index/#AdaptiveResonance.FAM -[6]: https://ap6yc.github.io/AdaptiveResonance.jl/dev/man/full-index/#AdaptiveResonance.DAM - -Because each of these modules is a framework for many variants in the literature, this project also implements these [variants](https://ap6yc.github.io/AdaptiveResonance.jl/dev/man/modules/) by changing their module [options](https://ap6yc.github.io/AdaptiveResonance.jl/dev/man/guide/#art_options). +[6]: https://ap6yc.github.io/AdaptiveResonance.jl/stable/man/full-index/#AdaptiveResonance.DAM-Tuple{opts_SFAM} +[7]: https://ap6yc.github.io/AdaptiveResonance.jl/dev/man/full-index/#AdaptiveResonance.GammaNormalizedFuzzyART-Tuple{opts_FuzzyART} In addition to these modules, this package contains the following accessory methods: -- **ARTSCENE**: the ARTSCENE algorithm's multiple-stage filtering process is implemented as `artscene_filter`. Each filter stage is exported if further granularity is required. -- **performance**: classification accuracy is implemented as `performance` -- **complement_code**: complement coding is implemented with `complement_code`. +- [**ARTSCENE**][21]: the ARTSCENE algorithm's multiple-stage filtering process is implemented as [`artscene_filter`][21]. Each filter stage is exported if further granularity is required. +- [**performance**][22]: classification accuracy is implemented as [`performance`][22]. +- [**complement_code**][23]: complement coding is implemented with [`complement_code`][23]. However, training and classification methods complement code their inputs unless they are passed `preprocessed=true`. -- **linear_normalization**: the first step to complement coding, `linear_normalization` normalizes input arrays within [0, 1]. +- [**linear_normalization**][24]: the first step to complement coding, [`linear_normalization`][24] normalizes input arrays within [0, 1]. + +[21]: https://ap6yc.github.io/AdaptiveResonance.jl/dev/man/full-index/#AdaptiveResonance.artscene_filter-Union{Tuple{Array{T,%203}},%20Tuple{T}}%20where%20T%3C:AbstractFloat +[22]: https://ap6yc.github.io/AdaptiveResonance.jl/dev/man/full-index/#AdaptiveResonance.performance-Tuple{AbstractVector{T}%20where%20T%3C:Integer,%20AbstractVector{T}%20where%20T%3C:Integer} +[23]: https://ap6yc.github.io/AdaptiveResonance.jl/dev/man/full-index/#AdaptiveResonance.complement_code-Tuple{AbstractArray{T}%20where%20T%3C:Real} +[24]: https://ap6yc.github.io/AdaptiveResonance.jl/dev/man/full-index/#AdaptiveResonance.linear_normalization-Tuple{AbstractMatrix{T}%20where%20T%3C:Real} ### Contributing From ce44d05be9748fef4e6bb16b6f8cb32c5b00b634 Mon Sep 17 00:00:00 2001 From: Sasha Petrenko Date: Tue, 31 Jan 2023 09:54:00 -0600 Subject: [PATCH 04/25] Add Julia install instructions, minor edits --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index e18f6a80..8f67de56 100644 --- a/README.md +++ b/README.md @@ -81,8 +81,8 @@ Detailed usage and examples are provided in the [documentation](https://ap6yc.gi ### Installation -This project is distributed as a Julia package, available on [JuliaHub](https://juliahub.com/). -Its usage follows the usual Julia package installation procedure, interactively: +This project is distributed as a [Julia](https://julialang.org/) package, available on [JuliaHub](https://juliahub.com/), so you must first [install Julia](https://julialang.org/downloads/) on your system. +Its usage follows the usual [Julia package installation procedure](https://docs.julialang.org/en/v1/stdlib/Pkg/), interactively: ```julia-repl julia> ] @@ -199,11 +199,11 @@ Variants built upon these modules are: In addition to these modules, this package contains the following accessory methods: -- [**ARTSCENE**][21]: the ARTSCENE algorithm's multiple-stage filtering process is implemented as [`artscene_filter`][21]. Each filter stage is exported if further granularity is required. +- [**ARTSCENE**][21]: the ARTSCENE algorithm's multiple-stage filtering process is implemented as [`artscene_filter`][21]. Each filter stage is implemented internally if further granularity is required. - [**performance**][22]: classification accuracy is implemented as [`performance`][22]. - [**complement_code**][23]: complement coding is implemented with [`complement_code`][23]. -However, training and classification methods complement code their inputs unless they are passed `preprocessed=true`. -- [**linear_normalization**][24]: the first step to complement coding, [`linear_normalization`][24] normalizes input arrays within [0, 1]. +However, training and classification methods complement code their inputs unless they are passed `preprocessed=true`, indicating to the model that this step has already been done. +- [**linear_normalization**][24]: the first step to complement coding, [`linear_normalization`][24] normalizes input arrays within `[0, 1]`. [21]: https://ap6yc.github.io/AdaptiveResonance.jl/dev/man/full-index/#AdaptiveResonance.artscene_filter-Union{Tuple{Array{T,%203}},%20Tuple{T}}%20where%20T%3C:AbstractFloat [22]: https://ap6yc.github.io/AdaptiveResonance.jl/dev/man/full-index/#AdaptiveResonance.performance-Tuple{AbstractVector{T}%20where%20T%3C:Integer,%20AbstractVector{T}%20where%20T%3C:Integer} @@ -220,7 +220,7 @@ In summary: 1. Questions and requested changes should all be made in the [issues][issues-url] page. These are preferred because they are publicly viewable and could assist or educate others with similar issues or questions. 2. For changes, this project accepts pull requests (PRs) from `feature/` branches onto the `develop` branch using the [GitFlow](https://nvie.com/posts/a-successful-git-branching-model/) methodology. -If unit tests pass and the changes are beneficial, these PRs are merged into `develop` and eventually folded into versioned releases. +If unit tests pass and the changes are beneficial, these PRs are merged into `develop` and eventually folded into versioned releases throug a `release` branch that is merged with the `master` branch. 3. The project follows the [Semantic Versioning](https://semver.org/) convention of `major.minor.patch` incremental versioning numbers. Patch versions are for bug fixes, minor versions are for backward-compatible changes, and major versions are for new and incompatible usage changes. From 92a8022a33006c57a5ef72d86ffabc4630cdfeda Mon Sep 17 00:00:00 2001 From: Sasha Petrenko Date: Tue, 31 Jan 2023 10:01:56 -0600 Subject: [PATCH 05/25] Update small verbage in docs --- docs/src/getting-started/whatisart.md | 6 +++--- docs/src/index.md | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/src/getting-started/whatisart.md b/docs/src/getting-started/whatisart.md index 5909cc41..afc02fdd 100644 --- a/docs/src/getting-started/whatisart.md +++ b/docs/src/getting-started/whatisart.md @@ -11,7 +11,7 @@ Pioneered by Stephen Grossberg and Gail Carpenter, the field has had contributio Because of the high degree of interplay between the neurocognitive theory and the engineering models born of it, the term ART is frequently used to refer to both in the modern day (for better or for worse). -Stephen Grossberg's has recently released a book summarizing the work of him, his wife Gail Carpenter, and his colleagues on Adaptive Resonance Theory in his book [Conscious Brain, Resonant Mind](https://www.amazon.com/Conscious-Mind-Resonant-Brain-Makes/dp/0190070552). +Stephen Grossberg's has recently released a book summarizing the work of him, his wife and colleague Gail Carpenter, and his other colleagues on Adaptive Resonance Theory in his book [Conscious Brain, Resonant Mind](https://www.amazon.com/Conscious-Mind-Resonant-Brain-Makes/dp/0190070552). ## ART Basics @@ -43,7 +43,7 @@ In addition to the dynamics typical of an ART model, you must know: ART modules are used for reinforcement learning by representing the mappings between state, value, and action spaces with ART dynamics. 3. Almost all ART models face the problem of the appropriate selection of the vigilance parameter, which may depend in its optimality according to the problem. 4. Being a class of neurogenitive neural network models, ART models gain the ability for theoretically infinite capacity along with the problem of "category proliferation," which is the undesirable increase in the number of categories as the model continues to learn, leading to increasing computational time. - In contrast, while the evaluation time of a deep neural network is always *exactly the same*, there exist upper bounds in their representational capacity. + In contrast, while the evaluation time of a fixed architecture deep neural network is always *exactly the same*, there exist upper bounds in their representational capacity. 5. Nearly every ART model requires feature normalization (i.e., feature elements lying within $$[0,1]$$) and a process known as complement coding where the feature vector is appended to its vector complement $$[1-\bar{x}]$$. This is because real-numbered vectors can be arbitrarily close to one another, hindering learning performance, which requires a degree of contrast enhancement between samples to ensure their separation. @@ -59,7 +59,7 @@ By representing categories as a field of instar networks, new categories could b However, it was shown that the learning stability of Grossberg Networks degrades as the number of represented categories increases. Discoveries in the neurocognitive theory and breakthroughs in their implementation led to the introduction of a recurrent connections between the two fields of the network to stabilize the learning. These breakthroughs were based upon the discovery that autonomous learning depends on the interplay and agreement between *perception* and *expectation*, frequently referred to as bottom-up and top-down processes. -Furthermore, it is *resonance* between these states in the frequency domain that gives rise to conscious experiences and that permit adaptive weights to change, leading to the phenomenon of learning. +Furthermore, it is *resonance* between these states in the frequency domain that gives rise to conscious experiences and that permit adaptive weights to change, leading to the phenomea of attention and learning. The theory has many explanatory consequences in psychology, such as why attention is required for learning, but its consequences in the engineering models are that it stabilizes learning in cooperative-competitive dynamics, such as interconnected fields of neurons, which are most often chaotic. Chapters 18 and 19 of the book by [Neural Network Design by Hagan, Demuth, Beale, and De Jesus](https://hagan.okstate.edu/NNDesign.pdf) provide a good theoretical basis for learning how these network models were eventually implemented into the first binary-vector implementation of ART1. diff --git a/docs/src/index.md b/docs/src/index.md index 31e7f198..a2fe6483 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -10,7 +10,7 @@ end These pages serve as the official documentation for the AdaptiveResonance.jl Julia package. -Adaptive Resonance Theory (ART) began as a neurocognitive theory of how fields of cells can continuously learn stable representations, and it evolved into the basis for a myriad of practical machine learning algorithms. +Adaptive Resonance Theory (ART) began as a neurocognitive theory of how fields of cells can continuously learn stable representations, and it has been utilized as the basis for a myriad of practical machine learning algorithms. Pioneered by Stephen Grossberg and Gail Carpenter, the field has had contributions across many years and from many disciplines, resulting in a plethora of engineering applications and theoretical advancements that have enabled ART-based algorithms to compete with many other modern learning and clustering algorithms. The purpose of this package is to provide a home for the development and use of these ART-based machine learning algorithms in the Julia programming language. From 95455ae546ed7a1fd7404eaaa9fd4e66596a3fd2 Mon Sep 17 00:00:00 2001 From: Sasha Petrenko Date: Tue, 31 Jan 2023 17:03:18 -0600 Subject: [PATCH 06/25] Tidy up dataset links --- README.md | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 8f67de56..c3ac219f 100644 --- a/README.md +++ b/README.md @@ -283,17 +283,10 @@ The code in this repository is inspired the following repositories: Boilerplate clustering datasets are periodically used to test, verify, and provide example of the functionality of the package. -1. UCI machine learning repository: - - -2. Fundamental Clustering Problems Suite (FCPS): - - -3. Datasets package: - - -4. Clustering basic benchmark: - +1. [UCI machine learning repository](http://archive.ics.uci.edu/ml) +2. [Fundamental Clustering Problems Suite (FCPS)](https://www.uni-marburg.de/fb12/arbeitsgruppen/datenbionik/data?language_sync=1) +3. [Nejc Ilc's unsupervised datasets package](https://www.researchgate.net/publication/239525861_Datasets_package) +4. [Clustering basic benchmark](http://cs.uef.fi/sipu/datasets) ### License From ccc90d65e2b164ae1d7c04631745a4c34be268cd Mon Sep 17 00:00:00 2001 From: Sasha Petrenko Date: Tue, 31 Jan 2023 17:09:07 -0600 Subject: [PATCH 07/25] Add attribution to hosted docs --- README.md | 4 ++-- docs/src/man/contributing.md | 24 ++++++++++++++++++++++-- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index c3ac219f..6722529e 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,7 @@ Please read the [documentation](https://ap6yc.github.io/AdaptiveResonance.jl/dev - [Contributing](#contributing) - [Acknowledgements](#acknowledgements) - [Authors](#authors) - - [Funding](#funding) + - [Support](#support) - [History](#history) - [Software](#software) - [Datasets](#datasets) @@ -231,7 +231,7 @@ Patch versions are for bug fixes, minor versions are for backward-compatible cha This package is developed and maintained by [Sasha Petrenko](https://github.com/AP6YC) with sponsorship by the [Applied Computational Intelligence Laboratory (ACIL)](https://acil.mst.edu/). The users [@aaronpeikert](https://github.com/aaronpeikert), [@hayesall](https://github.com/hayesall), and [@markNZed](https://github.com/markNZed) have graciously contributed their time with reviews and feedback that has greatly improved the project. -### Funding +### Support This project is supported by grants from the [Night Vision Electronic Sensors Directorate](https://c5isr.ccdc.army.mil/inside_c5isr_center/nvesd/), the [DARPA Lifelong Learning Machines (L2M) program](https://www.darpa.mil/program/lifelong-learning-machines), [Teledyne Technologies](http://www.teledyne.com/), and the [National Science Foundation](https://www.nsf.gov/). The material, findings, and conclusions here do not necessarily reflect the views of these entities. diff --git a/docs/src/man/contributing.md b/docs/src/man/contributing.md index b28587d7..66be2e20 100644 --- a/docs/src/man/contributing.md +++ b/docs/src/man/contributing.md @@ -8,6 +8,8 @@ From top to bottom, the ways of contributing are: - [GitFlow:](@ref GitFlow) how to directly contribute code to the package in an organized way on GitHub. - [Development Details:](@ref Development-Details) how the internals of the package are currently setup if you would like to directly contribute code. +Please also see the [Attribution](@ref Attribution) to learn about the authors and sources of support for the project. + ## Issues The main point of contact is the [GitHub issues](https://github.com/AP6YC/AdaptiveResonance.jl/issues) page for the project. @@ -142,6 +144,24 @@ Furthermore, independent class labels are always `Int` because of the [Julia nat This project does not currently test for the support of [arbitrary precision arithmetic](https://docs.julialang.org/en/v1/manual/integers-and-floating-point-numbers/#Arbitrary-Precision-Arithmetic) because learning algorithms *in general* do not have a significant need for precision. -## Authors +## Attribution + +### Authors + +This package is developed and maintained by [Sasha Petrenko](https://github.com/AP6YC) with sponsorship by the [Applied Computational Intelligence Laboratory (ACIL)](https://acil.mst.edu/). +The users [@aaronpeikert](https://github.com/aaronpeikert), [@hayesall](https://github.com/hayesall), and [@markNZed](https://github.com/markNZed) have graciously contributed their time with reviews and feedback that has greatly improved the project. + +If you simply have suggestions for improvement, Sasha Petrenko () is the current developer and maintainer of the `AdaptiveResonance.jl` package, so please feel free to reach out with thoughts and questions. + +### Support + +This project is supported by grants from the [Night Vision Electronic Sensors Directorate](https://c5isr.ccdc.army.mil/inside_c5isr_center/nvesd/), the [DARPA Lifelong Learning Machines (L2M) program](https://www.darpa.mil/program/lifelong-learning-machines), [Teledyne Technologies](http://www.teledyne.com/), and the [National Science Foundation](https://www.nsf.gov/). +The material, findings, and conclusions here do not necessarily reflect the views of these entities. -If you simply have suggestions for improvement, Sasha Petrenko () is the current developer and maintainer of the AdaptiveResonance.jl package, so please feel free to reach out with thoughts and questions. +Research was sponsored by the Army Research Laboratory and was accomplished under +Cooperative Agreement Number W911NF-22-2-0209. +The views and conclusions contained in this document are +those of the authors and should not be interpreted as representing the official policies, either expressed or implied, of +the Army Research Laboratory or the U.S. Government. +The U.S. Government is authorized to reproduce and +distribute reprints for Government purposes notwithstanding any copyright notation herein. From a2181da74ea32b623b50278b163bee9267813bdf Mon Sep 17 00:00:00 2001 From: Sasha Petrenko Date: Tue, 31 Jan 2023 17:11:32 -0600 Subject: [PATCH 08/25] Update file structure in contributing docs --- docs/src/man/contributing.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/src/man/contributing.md b/docs/src/man/contributing.md index 66be2e20..eb50aa6d 100644 --- a/docs/src/man/contributing.md +++ b/docs/src/man/contributing.md @@ -93,6 +93,8 @@ AdaptiveResonance ├── examples // Source: example usage scripts. ├── src // Source: majority of source code. │ ├───ART // ART-based unsupervised modules. +│ │ ├───distributed // Distributed ART modules +│ │ └───single // Undistributed ART modules │ └───ARTMAP // ARTMAP-based supervised modules. ├── test // Test: Unit, integration, and environment tests. ├── .appveyor // Appveyor: Windows-specific coverage. From 8c8570ffc77b5d37b4609487fb5a5eebf1f74c14 Mon Sep 17 00:00:00 2001 From: Sasha Petrenko Date: Tue, 31 Jan 2023 17:14:18 -0600 Subject: [PATCH 09/25] Update test folder structure in contributing docs --- docs/src/man/contributing.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/src/man/contributing.md b/docs/src/man/contributing.md index eb50aa6d..c858b574 100644 --- a/docs/src/man/contributing.md +++ b/docs/src/man/contributing.md @@ -87,16 +87,19 @@ The `AdaptiveResonance.jl` package has the following file structure: ```console AdaptiveResonance ├── .github/workflows // GitHub: workflows for testing and documentation. -├── data // Data: CI data location. ├── docs // Docs: documentation for the module. │ └───src // Documentation source files. ├── examples // Source: example usage scripts. ├── src // Source: majority of source code. │ ├───ART // ART-based unsupervised modules. -│ │ ├───distributed // Distributed ART modules -│ │ └───single // Undistributed ART modules +│ │ ├───distributed // Distributed ART modules. +│ │ └───single // Undistributed ART modules. │ └───ARTMAP // ARTMAP-based supervised modules. ├── test // Test: Unit, integration, and environment tests. +│ ├── adaptiveresonance // Tests common to the entire package. +│ ├── art // Tests for just ART modules. +│ ├── artmap // Tests for just ARTMAP modules. +│ └───data // CI test data. ├── .appveyor // Appveyor: Windows-specific coverage. ├── .gitattributes // Git: LFS settings, languages, etc. ├── .gitignore // Git: .gitignore for the whole project. From ba6ff2cc24fcc895be5e066d2a44b383acf6ec5d Mon Sep 17 00:00:00 2001 From: Sasha Petrenko Date: Tue, 31 Jan 2023 17:50:45 -0600 Subject: [PATCH 10/25] Add github feature and bug templates --- .github/ISSUE_TEMPLATE/bug_report.md | 40 +++++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature_request.md | 24 ++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 00000000..0149c3a4 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,40 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +## Describe the bug + +A clear and concise description of what the bug is. + +## To Reproduce + +Steps to reproduce the behavior: + +1. Go to '...' +2. Click on '...' +3. Scroll down to '...' +4. See error + +## Expected Behavior + +A clear and concise description of what you expected to happen. + +## Screenshots + +If applicable, add screenshots to help explain your problem. + +## Julia Configuration (please complete the following information): + +- OS: [e.g. Windows, Linux, MacOS] +- Julia Version: [e.g. 1.6, 1.7, 1.8] +- Terminal: [e.g. Windows Terminal, Powershell, iTerm] +- Installation Method: [e.g. JuliaHub, GitHub repo clone] + +## Additional context + +Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 00000000..148997aa --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,24 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: '' +assignees: '' + +--- + +## Is your feature request related to a problem? Please describe. + +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +## Describe the solution you'd like + +A clear and concise description of what you want to happen. + +## Describe alternatives you've considered + +A clear and concise description of any alternative solutions or features you've considered. + +## Additional context + +Add any other context or screenshots about the feature request here. From afb52763a6989de0fe6908cdbe1715567a6f81bf Mon Sep 17 00:00:00 2001 From: Sasha Petrenko Date: Tue, 31 Jan 2023 17:51:30 -0600 Subject: [PATCH 11/25] Add GitHub funding file --- .github/FUNDING.yml | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .github/FUNDING.yml diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml new file mode 100644 index 00000000..1d08b8b5 --- /dev/null +++ b/.github/FUNDING.yml @@ -0,0 +1,3 @@ +github: AP6YC +patreon: AP6YC +custom: www.buymeacoffee.com/sashapetrenko From fcc948f66877546b1a79b3f0ea0dab94d08b01f6 Mon Sep 17 00:00:00 2001 From: Sasha Petrenko Date: Tue, 31 Jan 2023 19:52:38 -0600 Subject: [PATCH 12/25] Specify master branch for tagbot --- .github/workflows/TagBot.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/TagBot.yml b/.github/workflows/TagBot.yml index f49313b6..56a1908a 100644 --- a/.github/workflows/TagBot.yml +++ b/.github/workflows/TagBot.yml @@ -13,3 +13,4 @@ jobs: with: token: ${{ secrets.GITHUB_TOKEN }} ssh: ${{ secrets.DOCUMENTER_KEY }} + branch: master From 2bb65a767278b850cfe75140ed6e0728f04d6e2d Mon Sep 17 00:00:00 2001 From: Sasha Petrenko Date: Tue, 31 Jan 2023 20:51:12 -0600 Subject: [PATCH 13/25] Replace README banner to FilesStorage link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6722529e..07678457 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![adaptiveresonance-header](docs/src/assets/header.png)][docs-dev-url] +[![adaptiveresonance-header](https://github.com/AP6YC/FileStorage/blob/main/AdaptiveResonance/header.png?raw=true)][docs-dev-url] A Julia package for Adaptive Resonance Theory (ART) algorithms. From 13e96f1572551bc867752e2c0dd2a653e35d577a Mon Sep 17 00:00:00 2001 From: Sasha Petrenko Date: Tue, 31 Jan 2023 20:56:46 -0600 Subject: [PATCH 14/25] Replace docs banner to FileStorage link --- docs/src/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/index.md b/docs/src/index.md index a2fe6483..10e2f30c 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -4,7 +4,7 @@ DocTestSetup = quote end ``` -![header](assets/header.png) +![header](https://github.com/AP6YC/FileStorage/blob/main/AdaptiveResonance/header.png?raw=true) --- From 48c5f2e16c826dce0076381323f07ac5b9814978 Mon Sep 17 00:00:00 2001 From: Sasha Petrenko Date: Tue, 31 Jan 2023 21:08:12 -0600 Subject: [PATCH 15/25] Remove header from local storage --- docs/src/assets/header.png | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 docs/src/assets/header.png diff --git a/docs/src/assets/header.png b/docs/src/assets/header.png deleted file mode 100644 index a455f0ca..00000000 --- a/docs/src/assets/header.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:3e4f46efa31a7c3db624c04971adc6fcd18f6f6f369ee4dcf19454d43ec576f3 -size 112187 From 59ecb7ed8a0b288e0cd844ebc979417a24bcc393 Mon Sep 17 00:00:00 2001 From: Sasha Petrenko Date: Tue, 31 Jan 2023 21:12:13 -0600 Subject: [PATCH 16/25] Remove gitattributes --- .gitattributes | 7 ------- 1 file changed, 7 deletions(-) delete mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index e37c4bd4..00000000 --- a/.gitattributes +++ /dev/null @@ -1,7 +0,0 @@ -# ----------------------------------------------------------------------------- -# LFS Settings -# ----------------------------------------------------------------------------- - -# LFS images -*.png filter=lfs diff=lfs merge=lfs -text -*.ico filter=lfs diff=lfs merge=lfs -text From 2087b7093e45543ef20360734b57bb5a54cf48cd Mon Sep 17 00:00:00 2001 From: Sasha Petrenko Date: Tue, 31 Jan 2023 21:22:33 -0600 Subject: [PATCH 17/25] Point to file storage files for thumbnails --- .../adaptive_resonance/data_config.jl | 2 +- docs/examples/art/ddvfa_supervised.jl | 2 +- docs/examples/art/ddvfa_unsupervised.jl | 2 +- docs/examples/artmap/sfam_iris.jl | 2 +- docs/examples/assets/art.png | 3 --- docs/examples/assets/artmap.png | 3 --- docs/examples/assets/ddvfa.png | 3 --- docs/src/assets/favicon.ico | Bin 130 -> 26041 bytes docs/src/assets/figures/art.png | Bin 130 -> 28577 bytes docs/src/assets/logo.png | Bin 130 -> 44016 bytes 10 files changed, 4 insertions(+), 13 deletions(-) delete mode 100644 docs/examples/assets/art.png delete mode 100644 docs/examples/assets/artmap.png delete mode 100644 docs/examples/assets/ddvfa.png diff --git a/docs/examples/adaptive_resonance/data_config.jl b/docs/examples/adaptive_resonance/data_config.jl index b281a505..5bb65f0d 100644 --- a/docs/examples/adaptive_resonance/data_config.jl +++ b/docs/examples/adaptive_resonance/data_config.jl @@ -1,7 +1,7 @@ # --- # title: ART DataConfig Example # id: data_config -# cover: ../assets/art.png +# cover: https://github.com/AP6YC/FileStorage/blob/main/AdaptiveResonance/diagrams/art.png?raw=true # date: 2021-12-2 # author: "[Sasha Petrenko](https://github.com/AP6YC)" # julia: 1.8 diff --git a/docs/examples/art/ddvfa_supervised.jl b/docs/examples/art/ddvfa_supervised.jl index eb2473fb..94d5cd4d 100644 --- a/docs/examples/art/ddvfa_supervised.jl +++ b/docs/examples/art/ddvfa_supervised.jl @@ -1,7 +1,7 @@ # --- # title: Supervised DDVFA Example # id: ddvfa_supervised -# cover: ../assets/ddvfa.png +# cover: https://github.com/AP6YC/FileStorage/blob/main/AdaptiveResonance/diagrams/ddvfa.png?raw=true # date: 2021-11-30 # author: "[Sasha Petrenko](https://github.com/AP6YC)" # julia: 1.8 diff --git a/docs/examples/art/ddvfa_unsupervised.jl b/docs/examples/art/ddvfa_unsupervised.jl index ba43d773..3bfc7edf 100644 --- a/docs/examples/art/ddvfa_unsupervised.jl +++ b/docs/examples/art/ddvfa_unsupervised.jl @@ -1,7 +1,7 @@ # --- # title: Unsupervised DDVFA Example # id: ddvfa_unsupervised -# cover: ../assets/ddvfa.png +# cover: https://github.com/AP6YC/FileStorage/blob/main/AdaptiveResonance/diagrams/ddvfa.png?raw=true # date: 2021-11-30 # author: "[Sasha Petrenko](https://github.com/AP6YC)" # julia: 1.8 diff --git a/docs/examples/artmap/sfam_iris.jl b/docs/examples/artmap/sfam_iris.jl index 41ef9478..ad094f1a 100644 --- a/docs/examples/artmap/sfam_iris.jl +++ b/docs/examples/artmap/sfam_iris.jl @@ -1,7 +1,7 @@ # --- # title: Supervised Simplified FuzzyARTMAP (SFAM) Example # id: sfam_iris -# cover: ../assets/artmap.png +# cover: https://github.com/AP6YC/FileStorage/blob/main/AdaptiveResonance/diagrams/artmap.png?raw=true # date: 2021-11-30 # author: "[Sasha Petrenko](https://github.com/AP6YC)" # julia: 1.8 diff --git a/docs/examples/assets/art.png b/docs/examples/assets/art.png deleted file mode 100644 index fb8f4ec6..00000000 --- a/docs/examples/assets/art.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:39ee90ac4268148637d5654879b8b6a925ed907d8cc7a34ce0f1fc33e4a13511 -size 28577 diff --git a/docs/examples/assets/artmap.png b/docs/examples/assets/artmap.png deleted file mode 100644 index 71051c03..00000000 --- a/docs/examples/assets/artmap.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:77f8a62b8c34feab162bb1b48b55fdf898dc28f29359d3d310af01423fb15414 -size 184774 diff --git a/docs/examples/assets/ddvfa.png b/docs/examples/assets/ddvfa.png deleted file mode 100644 index d4db818d..00000000 --- a/docs/examples/assets/ddvfa.png +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:a01e83b462fca2ec999662afa482d26e6e4f0d1883466ecc06f1d6337a59c488 -size 93402 diff --git a/docs/src/assets/favicon.ico b/docs/src/assets/favicon.ico index c66f7fd412114ece8012715f7398daea20812ed1..c20690b44acabf8adb0d9371f5fcc7abf2126aeb 100644 GIT binary patch literal 26041 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 JERi>V@jnAm>f8VT literal 130 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 N^)~yLg+ULn{Q$`_Chq_M diff --git a/docs/src/assets/logo.png b/docs/src/assets/logo.png index 4f84ca0cd9d969062059cbd261058b6e6cfbd8d8..9cae3a5feb76e47cdc9e6ea1434c089d977da051 100644 GIT binary patch literal 44016 zcmdpd^;cU>w03~t4#C}nyOrYZURvCppvB$Yp}0FO6f5pd(bA&9wK&E7%X`;%|B0Km z^26*iGiU5PTb?~J8fx;GXryQW002`_K}HJzfM)~%;092TV3O4ph|f+z z%a9y#F*J-SP8XTT#)!fYQSt&|Xl`6_PFCsJM9UU;r{7h4ea#QrjSy~~QEfc~EV9o` zQ5zaI4AjNwqK(EGAePiIuPB&gv)&T!IosMfHj20LDSUFjW<^Yc6HD<<{2M9TCHcO| z?r+{*4Bb~Y=Anb39VDaV`;_CxpU!#8Sm^J0%`NAzhH%Xreh<45H8mFFspHEN=$87^ z95fF2#5L)EYq}MEK$k{zVi^3KGpJySs#r!XB}YM^V@4xaD;FEXcRDKiES)GW%aLtJ zz~#nPghY_KgZvh@v6eGjttiM0LiROre6j$coWOsJbPA$c^*jb%h$HCfkD55ZHx-r% zzSF-(Aznh_s1wQQLN+`DgsFE}DkSb!GK1p!o=5_;DN#1y`}td2Z^hK8g4sT|_#=>$ z!&@*+7~gq&nRq$B71-U~A(Umibtbi!F2c42$y`}p1|S5;0x&94(I>zps4fbh+yMY| z{Qv%NfSf#Hm=M`RQB@Xs9}NS<$tEaM1B8i4JY+w5NIN?@SwTDi(r#8}9#)prUUnX~ z)bfg|8hRmEL;wIaKv70g$9v@@z{Z1oG~-NfO_Z0Io|gLnhyg&dinQMVNW2mgQQw}2Fr7N})5+O{X}LT4_2LDz;0MKQx8 zLa0Hp?N8X0yMPHLTyc6+?5EHX~6Ea6E~i zLu=Hm|G!d6!+`KMZ8D-@C|Q5fChQGuF=WWGEg}4wp+X{fOb1lDS(s&J&6WLqCrwkNp36mJdRp`+S`FD2q&ji zd`xwdQ1F^jP*9jwaO!g!9j#(8`EKOWDfsneG?WaXtvbjP7d}5FRsAV3_r)jW|V>jZcAPVn=PIYPH9!AgUJ%XDr?Xh4)j zCK+DswC3Gdz(t`j5`AR|SbziJh@!Z65};7uG=*qbGOl_;D{ z1462$sWP)|AGWuj8JP%4#CZ_;Pwv5p!lQP?+4lj|i88^uL&saA=LnDQ%yQpRL^uag z-;;nn3ygp!?xLpZ7;2u8BZ){ycL)U>OHDRKn^PO;5TtGE@tunnawNRec&bG{OukKo zM?ceDbqqATeBY#|1H@C)64hb2Z(CW6UhEy0*V8U&e8(2kgx{&1#j>yYQED`rN7lzRDW^1;8jhfAEE^cCYu>`d6O z4JYjBIOy6@n!0B>Jg`BheSJ-HxdG52 zxatgIUTeCkt4Y4|@exqtDcvoO=$!n9ieuZW>v3sr)M)79o1S`&`)tZ%2LvDf6k1_S^>#By?~cJEg~^Uo094h`d= z_X2IqS!m2w3XU$)D9vYTP3{(GW+ic_D^X{Xn{p!2CDaQ={EJ0hQ|Wnsw<`kYq%Vww zkhfiE7tk2Ada-%n!C3W~2;As`0F4w31>QKemc8m#lov|+UA4h@_Id*zPe2i^7pQD9 zrD0UnSujs_FRM=c?}i6dXFALFgt-Zb6#JUe;E|`S|B%u{u0f| zjLnCQJY?k$$<+?2D}B-KJVNGnh4mJ^ZMP`*OhS5k{I-#wN;N?Vzy06bduuhMhGp}> zZ3LPN092^+}P~2Pu6aU>CfwNJa#;4d|{?5JVKL_{cqXKt0bSL7E!ljX(or z@T)ByE)?tk$VEag%zoBZEXJAlfSA=|=Fn`;N-y4my@uIR%gO=V5iD*ok@T6DbswFc zRHSD9>pC{2n=WX?B`7#Q5>kel(ChlGl)y@UCR>R&i|22Zn_6)@8k+2HDbTNSeNbVd zP*5nDsN63;p~gn8tL`M#QFWs&@B4fb*C}j1f^y^|I?>m^2ID!xlza@Vf$f)mn)

bG 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 literal 130 zcmWN?K@!3s3;@78uiyigK!K9}CIlkPsC1s=dSCUXH$T>O=yxG7ED}j&`aRG!A02H+3*smxx NqniC&wfA77`T+`zC?5a- From 1fe490ef40cb22773e2acd09f19036605f11edd4 Mon Sep 17 00:00:00 2001 From: Sasha Petrenko Date: Tue, 31 Jan 2023 21:22:52 -0600 Subject: [PATCH 18/25] Do same to background doc --- docs/src/getting-started/whatisart.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/getting-started/whatisart.md b/docs/src/getting-started/whatisart.md index afc02fdd..18f76a80 100644 --- a/docs/src/getting-started/whatisart.md +++ b/docs/src/getting-started/whatisart.md @@ -15,7 +15,7 @@ Stephen Grossberg's has recently released a book summarizing the work of him, hi ## ART Basics -![art](../assets/figures/art.png) +![art](https://github.com/AP6YC/FileStorage/blob/main/AdaptiveResonance/diagrams/art.png?raw=true) ### ART Dynamics From 27f8de3622c9cb7bc56ec498ebb9778a22261335 Mon Sep 17 00:00:00 2001 From: Sasha Petrenko Date: Tue, 31 Jan 2023 21:48:02 -0600 Subject: [PATCH 19/25] Switch to download strategy during build --- .gitignore | 4 ++++ docs/downloads/.gitkeep | 0 .../adaptive_resonance/data_config.jl | 2 +- docs/examples/art/ddvfa_supervised.jl | 2 +- docs/examples/art/ddvfa_unsupervised.jl | 2 +- docs/examples/artmap/sfam_iris.jl | 2 +- docs/make.jl | 22 +++++++++++++++++++ 7 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 docs/downloads/.gitkeep diff --git a/.gitignore b/.gitignore index d7e55fab..08e1c55f 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,10 @@ _dev/ docs/src/democards/ docs/src/examples/ +# Downloads folder for files grabbed during docs generation +docs/downloads/* +!docs/downloads/.gitkeep + # Julia package development ignores *.jl.*.cov *.jl.cov diff --git a/docs/downloads/.gitkeep b/docs/downloads/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/docs/examples/adaptive_resonance/data_config.jl b/docs/examples/adaptive_resonance/data_config.jl index 5bb65f0d..9ecf1168 100644 --- a/docs/examples/adaptive_resonance/data_config.jl +++ b/docs/examples/adaptive_resonance/data_config.jl @@ -1,7 +1,7 @@ # --- # title: ART DataConfig Example # id: data_config -# cover: https://github.com/AP6YC/FileStorage/blob/main/AdaptiveResonance/diagrams/art.png?raw=true +# cover: ../../../downloads/art.png # date: 2021-12-2 # author: "[Sasha Petrenko](https://github.com/AP6YC)" # julia: 1.8 diff --git a/docs/examples/art/ddvfa_supervised.jl b/docs/examples/art/ddvfa_supervised.jl index 94d5cd4d..cab8e5a8 100644 --- a/docs/examples/art/ddvfa_supervised.jl +++ b/docs/examples/art/ddvfa_supervised.jl @@ -1,7 +1,7 @@ # --- # title: Supervised DDVFA Example # id: ddvfa_supervised -# cover: https://github.com/AP6YC/FileStorage/blob/main/AdaptiveResonance/diagrams/ddvfa.png?raw=true +# cover: ../../../downloads/ddvfa.png # date: 2021-11-30 # author: "[Sasha Petrenko](https://github.com/AP6YC)" # julia: 1.8 diff --git a/docs/examples/art/ddvfa_unsupervised.jl b/docs/examples/art/ddvfa_unsupervised.jl index 3bfc7edf..31bb4282 100644 --- a/docs/examples/art/ddvfa_unsupervised.jl +++ b/docs/examples/art/ddvfa_unsupervised.jl @@ -1,7 +1,7 @@ # --- # title: Unsupervised DDVFA Example # id: ddvfa_unsupervised -# cover: https://github.com/AP6YC/FileStorage/blob/main/AdaptiveResonance/diagrams/ddvfa.png?raw=true +# cover: ../../../downloads/ddvfa.png # date: 2021-11-30 # author: "[Sasha Petrenko](https://github.com/AP6YC)" # julia: 1.8 diff --git a/docs/examples/artmap/sfam_iris.jl b/docs/examples/artmap/sfam_iris.jl index ad094f1a..2c65855a 100644 --- a/docs/examples/artmap/sfam_iris.jl +++ b/docs/examples/artmap/sfam_iris.jl @@ -1,7 +1,7 @@ # --- # title: Supervised Simplified FuzzyARTMAP (SFAM) Example # id: sfam_iris -# cover: https://github.com/AP6YC/FileStorage/blob/main/AdaptiveResonance/diagrams/artmap.png?raw=true +# cover: ../../../downloads/artmap.png # date: 2021-11-30 # author: "[Sasha Petrenko](https://github.com/AP6YC)" # julia: 1.8 diff --git a/docs/make.jl b/docs/make.jl index 72710a43..c200c646 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -47,6 +47,28 @@ if haskey(ENV, "DOCSARGS") end end +# ----------------------------------------------------------------------------- +# DOWNLOAD LARGE ASSETS +# ----------------------------------------------------------------------------- + +# Point to the raw FileStorage location on GitHub +top_url = raw"https://github.com/AP6YC/FileStorage/raw/main/AdaptiveResonance/" +# List all of the files that we need to use in the docs +files = [ + "header.png", + "art.png", + "artmap.png", + "ddvfa.png", +] + +for file in files + src_file = top_url * file * "?raw=true" + dest_file = joinpath("downloads", file) + if !isfile(dest_file) + download(src_file, dest_file) + end +end + # ----------------------------------------------------------------------------- # GENERATE # ----------------------------------------------------------------------------- From f6051e86cc15ef69380027bda1399dbe644cc931 Mon Sep 17 00:00:00 2001 From: Sasha Petrenko Date: Tue, 31 Jan 2023 21:49:12 -0600 Subject: [PATCH 20/25] Point to github media url --- docs/src/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/index.md b/docs/src/index.md index 10e2f30c..596221f8 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -4,7 +4,7 @@ DocTestSetup = quote end ``` -![header](https://github.com/AP6YC/FileStorage/blob/main/AdaptiveResonance/header.png?raw=true) +![header](https://media.githubusercontent.com/media/AP6YC/FileStorage/main/AdaptiveResonance/header.png?raw=true) --- From a07a4a34d7c845e547d26059df7f1dc29ecb6f62 Mon Sep 17 00:00:00 2001 From: Sasha Petrenko Date: Tue, 31 Jan 2023 22:10:55 -0600 Subject: [PATCH 21/25] Remove more files, fix asset downloads --- .gitignore | 4 ++-- docs/downloads/.gitkeep | 0 docs/make.jl | 17 +++++++++++++---- docs/src/assets/figures/art.png | Bin 28577 -> 0 bytes docs/src/getting-started/whatisart.md | 2 +- 5 files changed, 16 insertions(+), 7 deletions(-) delete mode 100644 docs/downloads/.gitkeep delete mode 100644 docs/src/assets/figures/art.png diff --git a/.gitignore b/.gitignore index 08e1c55f..395a3204 100644 --- a/.gitignore +++ b/.gitignore @@ -9,8 +9,8 @@ docs/src/democards/ docs/src/examples/ # Downloads folder for files grabbed during docs generation -docs/downloads/* -!docs/downloads/.gitkeep +docs/src/assets/downloads/* +!docs/src/assets/downloads/.gitkeep # Julia package development ignores *.jl.*.cov diff --git a/docs/downloads/.gitkeep b/docs/downloads/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/docs/make.jl b/docs/make.jl index c200c646..fbbf573c 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -52,7 +52,7 @@ end # ----------------------------------------------------------------------------- # Point to the raw FileStorage location on GitHub -top_url = raw"https://github.com/AP6YC/FileStorage/raw/main/AdaptiveResonance/" +top_url = raw"https://media.githubusercontent.com/media/AP6YC/FileStorage/main/AdaptiveResonance/" # List all of the files that we need to use in the docs files = [ "header.png", @@ -60,10 +60,19 @@ files = [ "artmap.png", "ddvfa.png", ] - +# Make a destination for the files +download_folder = joinpath("src", "assets", "downloads") +mkpath(download_folder) +download_list = [] +# Download the files one at a time for file in files + # Point to the correct file that we wish to download src_file = top_url * file * "?raw=true" - dest_file = joinpath("downloads", file) + # Point to the correct local destination file to download to + dest_file = joinpath(download_folder, file) + # Add the file to the list that we will append to assets + push!(download_list, dest_file) + # If the file isn't already here, download it if !isfile(dest_file) download(src_file, dest_file) end @@ -78,7 +87,7 @@ end demopage, postprocess_cb, demo_assets = makedemos("examples") assets = [ - joinpath("assets", "favicon.ico") + joinpath("assets", "favicon.ico"), ] # if there are generated css assets, pass it to Documenter.HTML diff --git a/docs/src/assets/figures/art.png b/docs/src/assets/figures/art.png deleted file mode 100644 index 47728937445b9aeb04d789cc5d1a1ff37997ae18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28577 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 Date: Tue, 31 Jan 2023 22:15:25 -0600 Subject: [PATCH 22/25] Fix examples assets links --- docs/examples/adaptive_resonance/data_config.jl | 2 +- docs/examples/art/ddvfa_supervised.jl | 2 +- docs/examples/art/ddvfa_unsupervised.jl | 2 +- docs/examples/artmap/sfam_iris.jl | 2 +- docs/src/index.md | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/examples/adaptive_resonance/data_config.jl b/docs/examples/adaptive_resonance/data_config.jl index 9ecf1168..c9d74625 100644 --- a/docs/examples/adaptive_resonance/data_config.jl +++ b/docs/examples/adaptive_resonance/data_config.jl @@ -1,7 +1,7 @@ # --- # title: ART DataConfig Example # id: data_config -# cover: ../../../downloads/art.png +# cover: ../../assets/downloads/art.png # date: 2021-12-2 # author: "[Sasha Petrenko](https://github.com/AP6YC)" # julia: 1.8 diff --git a/docs/examples/art/ddvfa_supervised.jl b/docs/examples/art/ddvfa_supervised.jl index cab8e5a8..36528641 100644 --- a/docs/examples/art/ddvfa_supervised.jl +++ b/docs/examples/art/ddvfa_supervised.jl @@ -1,7 +1,7 @@ # --- # title: Supervised DDVFA Example # id: ddvfa_supervised -# cover: ../../../downloads/ddvfa.png +# cover: ../../assets/downloads/ddvfa.png # date: 2021-11-30 # author: "[Sasha Petrenko](https://github.com/AP6YC)" # julia: 1.8 diff --git a/docs/examples/art/ddvfa_unsupervised.jl b/docs/examples/art/ddvfa_unsupervised.jl index 31bb4282..44e27fd9 100644 --- a/docs/examples/art/ddvfa_unsupervised.jl +++ b/docs/examples/art/ddvfa_unsupervised.jl @@ -1,7 +1,7 @@ # --- # title: Unsupervised DDVFA Example # id: ddvfa_unsupervised -# cover: ../../../downloads/ddvfa.png +# cover: ../../assets/downloads/ddvfa.png # date: 2021-11-30 # author: "[Sasha Petrenko](https://github.com/AP6YC)" # julia: 1.8 diff --git a/docs/examples/artmap/sfam_iris.jl b/docs/examples/artmap/sfam_iris.jl index 2c65855a..48c098bf 100644 --- a/docs/examples/artmap/sfam_iris.jl +++ b/docs/examples/artmap/sfam_iris.jl @@ -1,7 +1,7 @@ # --- # title: Supervised Simplified FuzzyARTMAP (SFAM) Example # id: sfam_iris -# cover: ../../../downloads/artmap.png +# cover: ../../assets/downloads/artmap.png # date: 2021-11-30 # author: "[Sasha Petrenko](https://github.com/AP6YC)" # julia: 1.8 diff --git a/docs/src/index.md b/docs/src/index.md index 596221f8..e67f97c9 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -4,7 +4,7 @@ DocTestSetup = quote end ``` -![header](https://media.githubusercontent.com/media/AP6YC/FileStorage/main/AdaptiveResonance/header.png?raw=true) +![header](../assets/downloads/header.png) --- From 0085669e8d45de6264898191c31e3ca95ad65861 Mon Sep 17 00:00:00 2001 From: Sasha Petrenko Date: Tue, 31 Jan 2023 22:18:18 -0600 Subject: [PATCH 23/25] Fix index asset link --- docs/src/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/index.md b/docs/src/index.md index e67f97c9..e94a2770 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -4,7 +4,7 @@ DocTestSetup = quote end ``` -![header](../assets/downloads/header.png) +![header](assets/downloads/header.png) --- From 335d537cfe87b1c0f13a64bdb631dc8e4901d850 Mon Sep 17 00:00:00 2001 From: Sasha Petrenko Date: Tue, 31 Jan 2023 22:18:44 -0600 Subject: [PATCH 24/25] Entirely ignore downloads folder --- .gitignore | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 395a3204..a76a7ef1 100644 --- a/.gitignore +++ b/.gitignore @@ -9,8 +9,7 @@ docs/src/democards/ docs/src/examples/ # Downloads folder for files grabbed during docs generation -docs/src/assets/downloads/* -!docs/src/assets/downloads/.gitkeep +docs/src/assets/downloads/ # Julia package development ignores *.jl.*.cov From 6b9ece3a14d59795a42dac9bd5b958a2bd75e346 Mon Sep 17 00:00:00 2001 From: Sasha Petrenko Date: Wed, 1 Feb 2023 08:41:41 -0600 Subject: [PATCH 25/25] Bump to v0.8.1 --- Project.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Project.toml b/Project.toml index 2464138e..fae470ea 100644 --- a/Project.toml +++ b/Project.toml @@ -2,7 +2,7 @@ name = "AdaptiveResonance" uuid = "3d72adc0-63d3-4141-bf9b-84450dd0395b" authors = ["Sasha Petrenko"] description = "A Julia package for Adaptive Resonance Theory (ART) algorithms." -version = "0.8.0" +version = "0.8.1" [deps] Distributed = "8ba89e20-285c-5b6f-9357-94700520ee1b"