Skip to content

Commit

Permalink
Merge dev commits to master for the 1.0 release (#145)
Browse files Browse the repository at this point in the history
* Added convenience methods with tests
#atAllPut: (Matrix instance protocol)
#atColumn:put:repeat:
#initializeRows:columns:
#rows:columns: (Matrix class protocol)
#rows:columns:element: (Matrix class protocol)

* Clean class PMFloatingPointMachine and sync with the book

* Cleaning

* Code cleaning during book sync session

* Typos

* Sync with book chap 6

* Cleaning code

* Clean PCA code

* Cleaning

* Add a class similar to StandardScaler in Scikit-learn

* Add scale for PMStandardizationScaler

* Use PMMatrix for PMDataTransformer classes

* Add a transform test

* Close #77. Implement class PMStandardizationScaler for doing standardization cleaning on matrices + abstract class PMDataTransformer. 5 unit tests include.

* Add a fit: and transform: methods to PCA but apparently there is a bug. Results different from what you obtain from Python ...

* Clean PMSingularValueDecomposition

* Some optimisation for PMStandardizationScaler>>transform:

* Refactor PMPrincipalComponentAnalyser in order to have 2 implementation classes (Jacobi transformation of the covariance matrix and SVD) and one abstract classes for all PCA.
Still 2 unit tests not green.

* Cleanup setUp in PMSingularValueDecompositionTest

* Clean and sync with book

* Add flattenOnColumns and flattenOnRows + tests
Close #79

* Add argMaxOnColumns + argMaxOnRows for PMMatrix and argMax on vector.
Close #80

* Following discussion #79 and #80, I rename the flatten methods and add more tests for argmax.

* Remove unecessary code in cos, cosh, log, sin, sinh, sqrt, tan and tanh on a matrix

* Add a sign op on PMMAtrix + one test

* Remove PMPrincipalComponentAnalysisServer and tests because we change completely the API and old version got some problems with encapsulation ...

* Commit tests for PCA.

* Add one example with PCA with SVD on IRIS dataset

* Update CONTRIBUTING.md - changed 8 space indentation to 4 spaces

* Update CONTRIBUTING.md

* Moved the tests to a more sensible package

* Moved the tests to a more sensible package.

* Moved the tests to a more sensible package.

* Moved the tests to a more sensible package.

* Corrected the test - of course PMMatrix does not have the assert message as part of its interface.

* Add .project metadata

* Rename Quaternion as PMQuaternion

* QuantileTest => PMQuantileTest

* Working on #16

* Add PM prefix for Math-Tests-Random classes #16

* Add PM prefix for Math-Tests-KolmogorovSmirnov classes #16

* Fix #16 for Math-Tests-KDTree

* #16 for Math-Tests-FastFourierTransform

* Continue to work on #16

* More on #16

* [issue-85] Moved the TestCase classes to more sensible packages.

* [issue-88] Corrected the type.

* [issue-81] Added a test for the eigevalues of a 2 x 2 identity matrix as a starting point.

* [issue-81] Added another missing test to confirm that the eigenvectors of I are the unit basis vectors.

* [issue-81] Simplified the test a bit.

* [issue-81] Extracted Scikit Learn's algorithm to its own class to allow
a little more isolated testing.

* [issue-81] Refactor - improved the name of the method.

* [issue-81] Added a method to demonstrate how the argMax message works for vectors over the field of real numbers.

* [issue-81]  The signs computed by the computeSignsFromU message
match Sci-Kit Learn.

* [issue-81] To make it easier to understand the algebra, return the
signs as a vector object.

* [issue-81] Extracted a helper method and added a test, where the example is taken from scikit-learn.

* [issue-81] Simplified initialisation of the algorithm, removed obselete method.

* [issue-81] Inlined a local variable.

* [issue-81] Developed a method that computes the sign matrix for the U matrix.

* [issue-81] Removed an unused variable.

* [issue-81] Spelling error.

* [issue-81] Removed an obselete comment.

* [issue-81] Store the flipped matrices in better named state variables.

* [issue-81] Removed unused accessor methods.

* [issue-81] Corrected the comment.

* [issue-81] Added a test for uFlipped.

* [issue-81] Fixed the comment, again.

* [issue-81] Added a test for vFlipped, corrected an existing test.

* [issue-81] Removed unused state variables.

* [issue-81] Removed the unused method.

* [issue-81] Extracted duplicate arrange code to an intent-revealing set up helper.

* [issue-81] Use the helper as it generates the same set up.

* [issue-81] Use the signMatrixForU message to be consistent with vFlipped.

* [issue-81] Moved the duplicated  comments to a more sensible place.

* [issue-81] We now have a working SVD flip algorithm.

* [issue-81] Improved the name of the instanciation  method.

* Update .smalltalk.ston

* Reverse

* [issue-81] The sign flipping is now working in that the test for the SVD-based PCA implementation is now failing rather than erroring.

* [issue-81] Name of the class now conforms to the PolyMath codestyle.

* Support for principalDiagonal function #91 (#92)

* Update .travis.yml

* Update PMMatrixTest.class.st

* missing PM before a class name ...

* [Issue 81] - 2 PCA implementations that give same results but different from Python scikit-learn implementation (#96)

* [issue-81] Categorised the methods, removed duplication to the set up method.

* [issue-81] Added additional tests from the example in the Sandia sign ambiguity paper.

* [issue-81] Added tests to confirm that we would get the same flipped U and V.

* [issue-81] Renamed the set up method to follow convention.

* [issue-81] Mobbing with colleagues we decided that it sufficed, because of sign ambiguity, to compare the moduli of the matrices.

* [issue-81] Removed the computation of argMax to an certain level of precision. After discussion with colleagues it was deemed inadvisable.

* [issue-81] Extracted expected outputs to a local variable with a good name.

* [Issue 81] 2 PCA implementations that give same results but different from Python scikit-learn implementation (#97)

* [issue-81] Added an acceptance test with the mean-centred data from the Lindsay Smith PCA Tutorial paper.

* [issue-81] Improved the name of the test method.

* [issue-81] Added an acceptance for the Jacobi-based transform: message.

* [Issue 81] Refactoring/Clean Up (#98)

* [issue-81] Improved the name of the variables.

* [issue-81] Improved the name of the categories.

* [issue-81] Removed obselete comments.

* [issue-81] Emphasised the polymorphism of the two implementations of PCA in their respective tests.

* [issue-81] Removed duplicate code to set up messages.

* [issue-81] Removed unused instance variables.

* [issue-81] Use an existing message that has the same method.

* [issue-81] Moved the duplicate acceptance tests to a more sensible place.

* Add missing tests in BaselineOf

* Add more missing tests package

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* [Issue 62] - Rename packages that have DHB in their names (Part 1) (#102)

* [issue-62] Removed an empty test case.

* [issue-62] Moved the tests to a more appropriate package.

* [issue-62] Moved the test class to a more appropriate package.

* [issue-62] Removed DHB from the package names. (#103)

* Remove all DHB in baseline

* Missing packages in the baseline

* Missing Math-Tests-Core package

* Remove all DHB (even in comments)

* Remove copyright comments

* Rename tests to use CamelCase

* Update README.md

* Rename initialize to setUp in some tests

* - Remove print1On: print2On: methods and use properly printOn:
- Rename PMKolmogorovSmirnov to PMKolmogorovSmirnovSample

* Working on #62 rename TSNE => PMSTE

* - Remove Manifest classes
- work on #62 to rename classes with PM prefix

* Close #62

* Close #62

* Close #62

* fix typo.

* Don't test if a package has been loaded or not, this is manage by Baseline.

* Clean comments

* Still comments fixes

* Clean some tests

* More tests cleaning

* Remove dependancy between PM-RandomDistributionBased and PM-Polynomials

* Ongoing work on #105. Remove Math-RandomDistributionBased package and merge classes with Math-Random.

* Update .travis.yml

* Update .travis.yml

* Update appveyor.yml

* Remove all Transcript show from tests.

* Update .smalltalk.ston

* Update README.md

* Update appveyor.yml

* Update .smalltalk.ston

* [issue-104] Set the seed to zero for more certainty. (#107)

* [Issue 104] Some tests methods fail randomly (#111)

* [issue-104] Removed obselete code.

* [issue-104] Corrected the method category, improved the formatting of the code in the test method.

* [issue-104] Removed unnecessary code.

* [issue-104] Improved code formatting.

* [issue-104] Extracted the computation to an intention-revealing variable.

* [issue-104] Improved code formatting, used data from a series from slides from QMUL

* [issue-104] Separated the assert from the arrange.

* [issue-104] Improved code formatting.

* [issue-104] Removed obselete method.

* [issue-104] We need to call the super class method according to the Pharo style guide.

* [issue-104] Corrected the category of the method.

* [issue-104] Removed obselete code - here I removed them and re-ran the tests. They remained green.

* [issue-104] Corrected formatting.

* [issue-104] Improved formatting, used data from the Oxford University Statistics Dept lecture notes.

* [issue-104] Corrected the link to the data source

* Removed == operator from PMVector (#108)

The == operator should not be overridden.
Removed that block entirely due to no it having no real application.

* Issue 29 - PMVector/PMMatrix >> #dot: does not compute a dot product. (#119)

* [issue-29] Marked PMMatrix's dot message as deprecated and introduced the hadamard product in its place. Replaced calls to dot in places where we can be confident nothing breaks.

* [issue-29] Introduce the new and better-named elementwiseTimes message.

* [issue-29] Marked the PMVector dot message as deprecated.

* [issue-29] Added a separate test for the Hadamard product and reverted the element-wise multiply test to its original state.

* [issue-29] Improved the name of the method.

* Removed PMVector sum for speedup (#126)

* Implementing the t-SNE algorithm (#117)

* Added "Hbeta" function for PMTSNE with test

It is named as `entropyOf: andPRow: withBeta:`.
Added a test for the method ensuring:
- Original pVector reference is maintained
- entropy is calculated correctly
- pVector is calculated correctly

* Added `reduceXToInputDims:` method for PMTSNE

- Added corresponding test for new method.
- Renamed `ndims` to `outputDims`
- Renamed `initialdims` to `initialDims`
- Added accessor `x`

* Added method to get pairwise affinities in PMTSNE

- The new function is called `computePairwiseAffinities` (as in original paper)
- The old one is renamed to `computeLowDimentionalAffinities`
- Removed x2p function (translated it's code to `computePairwiseAffinities`)
- Also added tests

* Added progress bar(Job) for PMTSNE

Moved contents of the `start` method to `initializeJob`.

* Added gradient descent in PMTSNE

- Also added various accessors and instance vars
- Classified existing methods
- Added a test for `computePValues`

* [Issue 29] PMVector/PMMatrix >> #dot: does not compute a dot product. (#127)

* [issue-29] Removed test for a deprecated message.

* [issue-29] Replaced a call to a deprecated message, corrected a style violation.

* [issue-29] Removed deprecated messages.

* Update README.md

* Added test cases for subtraction between scalars and vectors and suggested quickfix (#121)

* Added Basic Scalar subtraction test

* added test for subtract PMVector from a Number

* QuickFix of the scalar subtraction with PMVector Issue

* Fixed ZeroDivideError in PMStandardizationScaler (#128)

This happened when one of the input features was constant.
- Set scale to 1 for the feature which is constant
- Added two tests for this case

* Remove old Math-RandomDistributionBased package from repo

* Refactored PMTSNE to include steps (#131)

New methods `step` and `postStep` have been added.
`postStep` will contain all viz and debug methods.
A new `stateVariables` contains required variables for
the steps.

* [Issue 105] Math-Random Package Is Messy - Improve Naming, Refactor Tests (#132)

* [issue-105] Removed an obselete test.

* [issue-105] Improved the name of the class. The class comment says it is a generator.

* [issue-105] Improved the name of the class.

* [issue-105] Extracted duplicate code to an intention-revealing method.

* [issue-105] Extracted duplicate code to a helper method.

* [issue-105] Inlined the method as it's only used in one place.

* [issue-105] Improved the name of the method.

* [issue-105] Corrected code style.

* [issue-105] Improved the name of the method.

* [issue-105] Removed obselete code.

* [issue-105] Corrected the category.

* [issue-105] Improved the names of the methods.

* [issue-105] Improved the names of the method.

* [issue-105] Removed obselete test.

* [issue-105] Brought back a test deleted accidentally.

* [issue-105] Made similar code even more similar.

* [issue-105] Moved the code to a better place, an intention-revealing method.

* [issue-105] Made the code consistent with that of the other tests. This reads a little better now.

* [issue-105] Made similar code look the same, improved the name of a test method by using domain language.

* Added vizualization examples for PMTSNE (#133)

- Renamed variable `computeErrorEvery` to `updateErrorEvery`
- Added `updateError` variable which calculates error only when true
- Added grid vizualization example
- Added linked-rings vizualization and generator

* Ability to convert vectors to matrices and vice versa (#129)

* Added Basic Scalar subtraction test

* added test for subtract PMVector from a Number

* QuickFix of the scalar subtraction with PMVector Issue

* Added methods for intuitive conversion between vectors and matrices

* Tests for matrix <-> vector interconversions

* Fixed implementation of reshape

* [Issue 105] Refactor Math-Random Tests Package (#134)

* [issue-105] Removed unnecessary dot.

* [issue-105] The code is doing the same thing differently, so I have made it look exactly the same in order that we can extract the duplication elsewhere later.

* [issue-105] Extracted code to an intention-revealing method.

* [issue-105] Improved the name of the test method and extracted generation of a sample to an intention revealing variable.

* [issue-105] Extracted the generation of a sample to an intention-revealing method.

* [issue-105] In the case of the Poisson generator I understand that lambda is the mean/expected value (cf. wikipedia).

* [issue-105] Introduced the expectedValue message for consistency, in view of removing the mean message completely.

* [issue-105] Corrected the message name to conform to the Pharo style.

* [issue-105] Extracted duplicate code to a test helper class.

* [issue-105] Removed obselete comment.

* [issue-105] Made the assertion the same as used in the exponential generator test in hopes of moving it to a super class.

* [issue-105] Corrected and improved the name of the class and the method therein.

* [issue-105] Improved code formatting, replaced implicitly duplicate code with the random sample generator class.

* [issue-105] Improved the names of the temporary variables.

* [issue-105] Improved the name of the assertion.

* [issue-105] Removed an obselete comment.

* [issue-105] Improved the name of the assertion.

* [issue-105] Made the name of the test clearer.

* [issue-105] Inlined the temp variable as it does not enhance understandability.

* [#122] Fix PMVector comparison operators (#123)

- Also added relevant tests for the operators

* [Issue 105] Math-Random package is messy (#135)

* [issue-105] Moved the incrementing to the bottom so we can extract the tempering to a method in the next refactor.

* [issue-105] Extracted the tempering section to an intention-revealing method.

* [issue-105] Corrected the categorisation to match the super class's.

* [issue-105] Corrected the categorisation to match the super class's.

* [issue-105] Corrected the initialisation.

* [Issue 106] Support For coveralls.io (#137)

* [issue-106] Fake it til we make it - just test the random package for now.

* [issue-106] Corrected structure.

* [issue-106] Added another package to track.

* [issue-106] Added another two packages.

* [issue-106] Added the benchmark packages.

* [issue-106] Added the Chromosome, Clustering, Complex and Core packages.

* [issue-106] Added the Distribution packages.

* [issue-106] Added the FFT and FunctionFit packages.

* [issue-106] The FFT and FunctionFit packages seem broken so we replace
it with the K-packages.

* [issue-106] Added the Math-Matrix (and any Math-M*) package.

* [issue-106] Added all Math-N* packages.

* [issue-106] Added the Math-O* packages.

* [issue-106] The Math-ODE packages seems to cause the CI job to run out of
memory, so let's proceed to the Math-P* packages.

* [issue-106] Added the Math-Q* packages.

* [issue-106] Added the coverage status to the README.

* [issue-106] Replaced hard-coded package name with something that
keeps overage open to additional R-packages.

* [issue-106] Added the TNSE package.

* [issue-106] Support For coveralls.io (#138)

* [issue-106] The link to the badge should point to the development branch.

* [issue-106] We can at least cover the FunctionFit package.

* [Issue 106] Refactor Math-Accuracy (#139)

* [issue-106] Improved message names.

* [issue-106] The happy path should not be the guard clause; normally the subclass should respond to the message.

* [issue-106] Improved the name of the block variable.

* [issue-106] Moved related code closer together. initRest goes on to populate parameters, arguments and results.

* [issue-106] The asString message send is redundant.

* [issue-106] Improved the name of the temp variable.

* [issue-106] Improved the names of the block variables.

* [issue-106] The asString is redundant as the tests remain green.

* [issue-106] Extracted code to an intention-revealing method.

* [issue-106] Simplified the calculation of the occurence of a key.

* [issue-106] Inlined the temporary variable as it is now redundant.

* [issue-106] Extracted an code to an intention-revealing local temp and improved ormatting.

* [issue-106] Inlined the variable as it over wrote the earlier assignment.

* [issue-106] The initialize call looks like a special case, so transformed it into a guard clause.

* [issue-106] Improved code formatting.

* [issue-106] The check is redundant now because we have got passed the guard clause.

* [issue-106] The nil check is unnecessary now given the ifNone: call. The call to join: is for efficiency (O(n) vs O(n^2) for concatenation). This was recommended by Pharo.

* [issue-106] Reverted the change as we are only concatenating two strings which is not super inefficient.

* [issue-106] Removed obselete code.

* [Issue 106] Get Math-ODE Covered By Coveralls.io  (#140)

* [issue-106] Cover all packages starting with Math-O.

* [issue-106] Back to hard-coding the package name (Travis ran out of memory).

* Use double dispatch for PMDualNumber (#142)

* Clean tests of AutomaticDifferenciation

* Use double dispatch for +

* Double dispatch for * in DualNumber

* Use double dispatch for *,+ and /.
Now all tests are green again

* Add a test about derivatives

* PMDualNumber is now a subclass of Number and not Magnitude.

* Add conjugated and real method (to support dual numbers with complex numbers).
Add support in PMComplex classes also.
Add green tests.

* Use absSquared instead of abs2

* Remove constant comments

* Fix formatting

* Reformat correctly PMHyperDualNumber

* [skip ci]

* [skip CI]

* Update README.md

* [skip CI]

* [skip CI]

* [skip CI]

* [skip CI]

* [skip CI]

* Update README.md

* [skip CI]
  • Loading branch information
SergeStinckwich authored Aug 21, 2019
1 parent a217a67 commit 6a3657a
Show file tree
Hide file tree
Showing 303 changed files with 5,688 additions and 4,261 deletions.
21 changes: 18 additions & 3 deletions .smalltalk.ston
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,23 @@ SmalltalkCISpec {
}
],
#testing : {
#categories : [ 'Math-*' ]
#coverage : {
#packages : [
'Math-Accuracy-ODE',
'Math-ArbitraryPrecisionFloat',
'Math-AutomaticDifferenciation',
'Math-B*',
'Math-C*',
'Math-D*',
'Math-FunctionFit',
'Math-K*',
'Math-M*',
'Math-N*',
'Math-ODE',
'Math-P*',
'Math-Q*',
'Math-R*',
'Math-TNSE' ]
}
}
}


6 changes: 1 addition & 5 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,8 @@ os:

smalltalk:
- Pharo-6.1
- Pharo64-6.1
- Pharo-7.0
- Pharo32-7.0
- Pharo64-7.0

matrix:
fast_finish: true
allow_failures:
- smalltalk: Pharo-7.0
- smalltalk: Pharo64-7.0
12 changes: 7 additions & 5 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ In a fresh Pharo 7.0 image, load last development version of Polymath :

```Smalltalk
Metacello new
githubUser: 'XXX' project: 'PolyMath' commitish: 'development' path: 'src';
baseline: 'PolyMath';
load
githubUser: 'XXX' project: 'PolyMath' commitish: 'master' path: 'src';
baseline: 'PolyMath';
load.
```
where you replace XXX with your github user name.

Expand All @@ -33,6 +33,8 @@ Ounce your pull request is integrated, some cleanups are required:
- remove your branch from your fork
- close the issue (tips: you can automatically close the issue n, by inserting the sentence: **close #n** when you merge your pull request).

You will need from time to time to sync your fork with the original repo. You can do it on the command line with: https://help.github.com/articles/syncing-a-fork/ or in the browser like : https://github.com/KirstieJane/STEMMRoleModels/wiki/Syncing-your-fork-to-the-original-repository-via-the-browser You can also kill and redo a fork very easily.

# Release management

This project use semantic versionning to define the releases, meaning that each stable release of the project will be assigned a version number of the form `vX.Y.Z`.
Expand All @@ -49,11 +51,11 @@ Thus, it should be safe to depend on a fixed major version and moving minor vers

# Branch management

This project uses gitflow management.
This project uses trunk-based development: https://trunkbaseddevelopment.com/

This project contains two main branches:
- **master** : This branch is a stable branch. Each version on this branch should be a stable release of PolyMath, and ideally each commit modifying the source code of the project should be tagged with a version number.
- **development** : This branch contains the current development of this project.
- **release** : This branch contains the releases of this project.

## Hot fix

Expand Down
34 changes: 22 additions & 12 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,25 @@
# PolyMath
<p align="center"><img alt="PolyMath" src="https://user-images.githubusercontent.com/327334/63360401-439db400-c366-11e9-954a-b45def952e08.png" style="width: 25%; height: 25%">
<p align="center">
Scientific Computing with Pharo
<br>
<a href="docs/"><strong>Explore the docs »</strong></a>
<br>
<br>
<a href="https://github.com/PolyMath/PolyMath/issues/new?labels=Type%3A+Defect">Report a defect</a>
|
<a href="https://github.com/PolyMath/PolyMath/issues/new?labels=Type%3A+Feature">Request feature</a>
</p>
</p>

[![Project Status: Active – The project has reached a stable, usable state and is being actively developed.](http://www.repostatus.org/badges/latest/active.svg)](http://www.repostatus.org/#active)
[![Build Status](https://travis-ci.org/PolyMathOrg/PolyMath.svg?branch=master)](https://travis-ci.org/PolyMathOrg/PolyMath)
[![Build status](https://ci.appveyor.com/api/projects/status/3tvarh2xi22max8h?svg=true)](https://ci.appveyor.com/project/SergeStinckwich/polymath-88bea)
[![Coverage Status](https://coveralls.io/repos/github/PolyMathOrg/PolyMath/badge.svg?branch=development)](https://coveralls.io/github/PolyMathOrg/PolyMath?branch=development)
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/PolyMathOrg/PolyMath/master/LICENSE)

You can load the code in a fresh Pharo 6.1 image with:
<img width="1675" alt="Screenshot 2019-04-24 at 11 12 57" src="https://user-images.githubusercontent.com/327334/56652094-66eb7780-6682-11e9-9753-101be18df67c.png">

You can load the code in a fresh Pharo 7.0 image with:

```Smalltalk
Metacello new
Expand All @@ -14,19 +28,17 @@ Metacello new
load
```

We have **767** green tests !
PolyMath is a Smalltalk project, similar to existing scientific libraries like NumPy, SciPy for Python or SciRuby for Ruby. PolyMath already provide the following basic functionalities:
We have **806** green tests ! At the moment, all the development happens in the development branch.

PolyMath is a Pharo project, similar to existing scientific libraries like NumPy, SciPy for Python or SciRuby for Ruby. PolyMath already provide the following basic functionalities:
- complex and quaternions extensions,
- random number generators,
- fuzzy algorithms,
- KDE-trees,
- Didier Besset's numerical methods,
- Numerical methods,
- Ordinary Differential Equation (ODE) solvers.

[![Lorentz attractor with PolyMath and GraphET](https://pbs.twimg.com/media/Ble65B3CYAEkMoR.jpg)](https://twitter.com/SergeStinckwich/status/457039376111788032)

A book about PolyMath called "Numerical Methods" is available online: https://github.com/SquareBracketAssociates/NumericalMethods/releases/tag/snapshot-2016-01-17
A book about PolyMath called "PolyMath book" is available online: https://github.com/SquareBracketAssociates/PolyMath-book

Some documentation (to be cleaned and reorganized) about PolyMath is available on the Wiki here:
https://github.com/PolyMathOrg/PolyMath/wiki
Expand All @@ -35,7 +47,7 @@ Natalia wrote some explanation about benchmarking PolyMath in the Pharo For Ente

## Install PolyMath

To install PolyMath on your Pharo image you can just execute the following script:
To install PolyMath in your Pharo image you can just execute the following script:

```Smalltalk
Metacello new
Expand All @@ -52,8 +64,6 @@ To add PolyMath to your baseline just add this:
with: [ spec repository: 'github://PolyMathOrg/PolyMath:master/src' ]
```

Note that you can replace the #master by another branch as #development or a tag as #v1.0.0, #v1.? or #v1.2.? .


## How to contribute to PolyMath

Expand Down
3 changes: 1 addition & 2 deletions appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,8 @@ environment:
CYG_MIRROR: http://cygwin.mirror.constant.com
SCI_RUN: /cygdrive/c/smalltalkCI-master/run.sh
matrix:
- SMALLTALK: Pharo-6.1
- SMALLTALK: Pharo-7.0

platform:
- x86

Expand Down
165 changes: 120 additions & 45 deletions src/BaselineOfPolyMath/BaselineOfPolyMath.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -29,67 +29,142 @@ BaselineOfPolyMath >> baseline: spec [
spec
package: 'ExtendedNumberParser';
package: 'Math-Accuracy-Core';
package: 'Math-Accuracy-ODE' with: [ spec requires: #('Math-ODE' 'XMLWriter') ];
package: 'Math-ArbitraryPrecisionFloat' with: [ spec requires: #('ExtendedNumberParser') ];
package: 'Math-AutomaticDifferenciation' with: [ spec requires: #('Math-DHB-Numerical' 'Math-Matrix') ];
package: 'Math-Benchmarks-KDTree' with: [ spec requires: #('Math-KDTree' 'SMark') ];
package: 'Math-Benchmarks-ODE' with: [ spec requires: #('Math-ODE' 'SMark' 'XMLWriter') ];
package: 'Math-Chromosome' with: [ spec requires: #('Math-Core') ];
package: 'Math-Clustering' with: [ spec requires: #('Math-DHB-Numerical' 'Math-Core-Process' 'Math-Matrix') ];
package: 'Math-Complex' with: [ spec requires: #('Math-DHB-Numerical' 'Math-Polynomials') ];
package: 'Math-Accuracy-ODE'
with: [ spec requires: #('Math-ODE' 'XMLWriter') ];
package: 'Math-ArbitraryPrecisionFloat'
with: [ spec requires: #('ExtendedNumberParser') ];
package: 'Math-AutomaticDifferenciation'
with: [ spec requires: #('Math-Numerical' 'Math-Matrix') ];
package: 'Math-Benchmarks-KDTree'
with: [ spec requires: #('Math-KDTree' 'SMark') ];
package: 'Math-Benchmarks-ODE'
with: [ spec requires: #('Math-ODE' 'SMark' 'XMLWriter') ];
package: 'Math-Chromosome'
with: [ spec requires: #('Math-Core') ];
package: 'Math-Clustering'
with:
[ spec requires: #('Math-Numerical' 'Math-Core-Process' 'Math-Matrix') ];
package: 'Math-Complex'
with: [ spec requires: #('Math-Numerical' 'Math-Polynomials') ];
package: 'Math-Core';
package: 'Math-Core-Distribution' with: [ spec requires: #('Math-Core') ];
package: 'Math-Core-Distribution'
with: [ spec requires: #('Math-Core') ];
package: 'Math-Core-Process';
package: 'Math-DHB-Numerical' with: [ spec requires: #('Math-Core' 'Math-Core-Process' 'Math-Core-Distribution' 'Math-DistributionGamma' 'Math-DistributionBeta' 'Math-DistributionForHistogram' 'Math-StatisticalMoments' 'Math-Series') ];
package: 'Math-Polynomials' with: [ spec requires: #('Math-Core' 'Math-Core-Process' 'Math-Core-Distribution' 'Math-DistributionGamma' 'Math-DistributionBeta' 'Math-DistributionForHistogram' 'Math-StatisticalMoments' 'Math-Series') ];
package: 'Math-DistributionBeta' with: [ spec requires: #('Math-DistributionGamma') ];
package: 'Math-DistributionForHistogram' with: [ spec requires: #('Math-Core-Distribution') ];
package: 'Math-DistributionGamma' with: [ spec requires: #('Math-Core-Distribution') ];
package: 'Math-FastFourierTransform' with: [ spec requires: #('Math-Complex') ];
package: 'Math-FunctionFit' with: [ spec requires: #('Math-DHB-Numerical' 'Math-Chromosome' 'Math-Accuracy-Core' 'Math-Core' 'Math-Matrix' 'Math-Polynomials') ];
package: 'Math-Numerical'
with: [ spec
requires:
#('Math-Core' 'Math-Core-Process' 'Math-Core-Distribution' 'Math-DistributionGamma' 'Math-DistributionBeta' 'Math-DistributionForHistogram' 'Math-StatisticalMoments' 'Math-Series') ];
package: 'Math-Polynomials'
with: [ spec
requires:
#('Math-Core' 'Math-Core-Process' 'Math-Core-Distribution' 'Math-DistributionGamma' 'Math-DistributionBeta' 'Math-DistributionForHistogram' 'Math-StatisticalMoments' 'Math-Series') ];
package: 'Math-DistributionBeta'
with: [ spec requires: #('Math-DistributionGamma') ];
package: 'Math-DistributionForHistogram'
with: [ spec requires: #('Math-Core-Distribution') ];
package: 'Math-DistributionGamma'
with: [ spec requires: #('Math-Core-Distribution') ];
package: 'Math-FastFourierTransform'
with: [ spec requires: #('Math-Complex') ];
package: 'Math-FunctionFit'
with: [ spec
requires:
#('Math-Numerical' 'Math-Chromosome' 'Math-Accuracy-Core' 'Math-Core' 'Math-Matrix' 'Math-Polynomials') ];
package: 'Math-KDTree';
package: 'Math-KernelSmoothing' with: [ spec requires: #('Math-Quantile' 'Math-DHB-Numerical' 'Math-Polynomials') ];
package: 'Math-KolmogorovSmirnov' with: [ spec requires: #('Math-DHB-Numerical' 'Math-Polynomials') ];
package: 'Math-KernelSmoothing'
with: [ spec
requires: #('Math-Quantile' 'Math-Numerical' 'Math-Polynomials') ];
package: 'Math-KolmogorovSmirnov'
with: [ spec requires: #('Math-Numerical' 'Math-Polynomials') ];
package: 'Math-Matrix';
package: 'Math-Number-Extensions';
package: 'Math-ODE' with: [ spec requires: #('Math-DHB-Numerical' 'Math-Matrix' 'Math-Polynomials') ];
package: 'Math-Permutation' with:[ spec requires: #('Math-Core' 'Math-Matrix' 'Math-Core-Process') ];
package: 'Math-ODE'
with:
[ spec requires: #('Math-Numerical' 'Math-Matrix' 'Math-Polynomials') ];
package: 'Math-Permutation'
with: [ spec requires: #('Math-Core' 'Math-Matrix' 'Math-Core-Process') ];
package: 'Math-Physics-Constants';
package: 'Math-PrincipalComponentAnalysis' with: [ spec requires: #('Math-DHB-Numerical' 'Math-Matrix' 'Math-Polynomials') ];
package: 'Math-PrincipalComponentAnalysis'
with:
[ spec requires: #('Math-Numerical' 'Math-Matrix' 'Math-Polynomials') ];
package: 'Math-Quantile';
package: 'Math-Quaternion' with: [ spec requires: #('Math-Complex' 'Math-DHB-Numerical' 'Math-Polynomials') ];
package: 'Math-Quaternion'
with:
[ spec requires: #('Math-Complex' 'Math-Numerical' 'Math-Polynomials') ];
package: 'Math-Random';
package: 'Math-RandomDistributionBased' with: [ spec requires: #('Math-DHB-Numerical' 'Math-Polynomials') ];
package: 'Math-Series';
package: 'Math-StatisticalMoments' with: [ spec requires: #('Math-Core' 'Math-DistributionForHistogram') ];
package: 'Math-StatisticalMoments'
with: [ spec requires: #('Math-Core' 'Math-DistributionForHistogram') ];
package: 'Math-TSNE';
package: 'Math-Tests-Accuracy' with: [ spec requires: #('Math-Accuracy-Core') ];
package: 'Math-Tests-ArbitraryPrecisionFloat' with: [ spec requires: #('Math-ArbitraryPrecisionFloat') ];
package: 'Math-Tests-AutomaticDifferenciation' with: [ spec requires: #('Math-AutomaticDifferenciation' 'Math-Matrix') ];
package: 'Math-Tests-Clustering' with: [ spec requires: #('Math-Clustering' 'Math-Core' 'Math-Core-Distribution' 'Math-UtilsDataServer') ];
package: 'Math-Tests-Complex' with: [ spec requires: #('Math-Complex') ];
package: 'Math-Tests-DHB-Numerical' with: [ spec requires: #('Math-DHB-Numerical' 'Math-UtilsDataServer') ];
package: 'Math-Tests-DHB-wk';
package: 'Math-Tests-FastFourierTransform' with: [ spec requires: #('Math-FastFourierTransform' 'Math-DHB-Numerical' 'Math-Polynomials') ];
package: 'Math-Tests-Accuracy'
with: [ spec requires: #('Math-Accuracy-Core') ];
package: 'Math-Tests-ArbitraryPrecisionFloat'
with: [ spec requires: #('Math-ArbitraryPrecisionFloat') ];
package: 'Math-Tests-AutomaticDifferenciation'
with: [ spec requires: #('Math-AutomaticDifferenciation' 'Math-Matrix') ];
package: 'Math-Tests-Clustering'
with: [ spec
requires:
#('Math-Clustering' 'Math-Core' 'Math-Core-Distribution' 'Math-UtilsDataServer') ];
package: 'Math-Tests-Complex'
with: [ spec requires: #('Math-Complex') ];
package: 'Math-Tests-Core'
with: [ spec requires: #('Math-Core') ];
package: 'Math-Tests-Core-Process'
with: [ spec requires: #('Math-Core-Process') ];
package: 'Math-Tests-Numerical'
with: [ spec requires: #('Math-Numerical' 'Math-UtilsDataServer') ];
package: 'Math-Tests-FastFourierTransform'
with: [ spec
requires: #('Math-FastFourierTransform' 'Math-Numerical' 'Math-Polynomials') ];
package: 'Math-Tests-FunctionFit';
package: 'Math-Tests-KDTree' with: [ spec requires: #('Math-KDTree') ];
package: 'Math-Tests-KolmogorovSmirnov' with: [ spec requires: #('Math-DHB-Numerical' 'Math-KolmogorovSmirnov' 'Math-Polynomials') ];
package: 'Math-Tests-Matrix' with: [ spec requires: #('Math-Core' 'Math-DHB-Numerical' 'Math-StatisticalMoments' 'Math-Matrix' 'Math-Polynomials') ];
package: 'Math-Tests-KDTree'
with: [ spec requires: #('Math-KDTree') ];
package: 'Math-Tests-KernelSmoothing'
with: [ spec requires: #('Math-KernelSmoothing') ];
package: 'Math-Tests-KolmogorovSmirnov'
with: [ spec
requires: #('Math-Numerical' 'Math-KolmogorovSmirnov' 'Math-Polynomials') ];
package: 'Math-Tests-Matrix'
with: [ spec
requires:
#('Math-Core' 'Math-Numerical' 'Math-StatisticalMoments' 'Math-Matrix' 'Math-Polynomials') ];
package: 'Math-Tests-Number-Extensions'
with: [ spec requires: #('Math-Number-Extensions') ];
package: 'Math-Tests-ODE' with: [ spec requires: #('Math-ODE') ];
package: 'Math-Tests-Quantile' with: [ spec requires: #('Math-Quantile') ];
package: 'Math-Tests-Polynomials' with: [ spec requires: #('Math-Polynomials') ];
package: 'Math-Tests-Quaternion' with: [ spec requires: #('Math-Quaternion') ];
package: 'Math-Tests-Random' with: [ spec requires: #('Math-Random') ];
package: 'Math-Tests-Permutation'
with: [ spec requires: #('Math-Permutation') ];
package: 'Math-Tests-PrincipalComponentAnalysis'
with: [ spec requires: #('Math-PrincipalComponentAnalysis') ];
package: 'Math-Tests-Quantile'
with: [ spec requires: #('Math-Quantile') ];
package: 'Math-Tests-Polynomials'
with: [ spec requires: #('Math-Polynomials') ];
package: 'Math-Tests-Quaternion'
with: [ spec requires: #('Math-Quaternion') ];
package: 'Math-Tests-Random'
with: [ spec requires: #('Math-Random') ];
package: 'Math-Tests-TSNE'
with: [ spec requires: #('Math-TSNE') ];
package: 'Math-UtilsDataServer'.

"Groups"
spec
group: 'Accuracy' with: #('Math-Accuracy-ODE' 'Math-Accuracy-Core');
group: 'Benchmarks' with: #('Math-Benchmarks-ODE' 'Math-Benchmarks-KDTree');
group: 'Core' with: #('Math-Complex' 'Math-Quaternion' 'Math-DHB-Numerical' 'Math-Random' 'Math-KDTree' 'Math-ODE' 'Math-ArbitraryPrecisionFloat' 'Math-FastFourierTransform' 'ExtendedNumberParser' 'Math-Quantile' 'Math-Physics-Constants' 'Math-Polynomials' 'Math-TSNE');
group: 'Extensions' with: #('Math-Clustering' 'Math-Number-Extensions' 'Math-Chromosome' 'Math-PrincipalComponentAnalysis' 'Math-FunctionFit' 'Math-AutomaticDifferenciation' 'Math-KernelSmoothing' 'Math-Permutation' 'Math-RandomDistributionBased' 'Math-KolmogorovSmirnov');
group: 'Tests' with: #('Math-Tests-Matrix' 'Math-Tests-Clustering' 'Math-Tests-DHB-Numerical' 'Math-Tests-Complex' 'Math-Tests-Quaternion' 'Math-Tests-Random' 'Math-Tests-ODE' 'Math-Tests-KDTree' 'Math-Tests-DHB-wk' 'Math-Tests-FunctionFit' 'Math-Tests-AutomaticDifferenciation' 'Math-Tests-FastFourierTransform' 'Math-Tests-Accuracy' 'Math-Tests-ArbitraryPrecisionFloat' 'Math-Tests-KolmogorovSmirnov' 'Math-Tests-Quantile' 'Math-Tests-Polynomials');
group: 'default' with: #('Core' 'Extensions' 'Tests' 'Benchmarks' 'Accuracy') ]
group: 'Accuracy'
with: #('Math-Accuracy-ODE' 'Math-Accuracy-Core');
group: 'Benchmarks'
with: #('Math-Benchmarks-ODE' 'Math-Benchmarks-KDTree');
group: 'Core'
with:
#('Math-Complex' 'Math-Quaternion' 'Math-Numerical' 'Math-Random' 'Math-KDTree' 'Math-ODE' 'Math-ArbitraryPrecisionFloat' 'Math-FastFourierTransform' 'ExtendedNumberParser' 'Math-Quantile' 'Math-Physics-Constants' 'Math-Polynomials' 'Math-TSNE' 'Math-Core-Process' 'Math-Core' 'Math-Core-Distribution');
group: 'Extensions'
with:
#('Math-Clustering' 'Math-Number-Extensions' 'Math-Chromosome' 'Math-PrincipalComponentAnalysis' 'Math-FunctionFit' 'Math-AutomaticDifferenciation' 'Math-KernelSmoothing' 'Math-Permutation' 'Math-KolmogorovSmirnov');
group: 'Tests'
with:
#('Math-Tests-Matrix' 'Math-Tests-Clustering' 'Math-Tests-Numerical' 'Math-Tests-Complex' 'Math-Tests-Quaternion' 'Math-Tests-Random' 'Math-Tests-ODE' 'Math-Tests-KDTree' 'Math-Tests-FunctionFit' 'Math-Tests-AutomaticDifferenciation' 'Math-Tests-FastFourierTransform' 'Math-Tests-Accuracy' 'Math-Tests-ArbitraryPrecisionFloat' 'Math-Tests-KolmogorovSmirnov' 'Math-Tests-Quantile' 'Math-Tests-Polynomials' 'Math-Tests-PrincipalComponentAnalysis' 'Math-Tests-KernelSmoothing' 'Math-Tests-Number-Extensions' 'Math-Tests-Permutation' 'Math-Tests-TSNE' 'Math-Tests-Core-Process' 'Math-Tests-Core');
group: 'default'
with: #('Core' 'Extensions' 'Tests' 'Benchmarks' 'Accuracy') ]
]

{ #category : #accessing }
Expand Down
Loading

0 comments on commit 6a3657a

Please sign in to comment.