Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Updated examples to plot PCA with Roassal 3 #321

Merged
merged 10 commits into from
Jan 18, 2024
253 changes: 179 additions & 74 deletions src/BaselineOfPolyMath/BaselineOfPolyMath.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ Class {
#category : #BaselineOfPolyMath
}

{ #category : #baseline }
{ #category : #baselines }
BaselineOfPolyMath >> baseline: spec [

<baseline>
Expand All @@ -24,80 +24,14 @@ BaselineOfPolyMath >> baseline: spec [
sMark: spec;
xmlWriter: spec;
vectorMatrix: spec;
randomNumbers: spec.
randomNumbers: spec;
datasets: spec;
roassal: spec;
dataFrameInspector: 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-Numerical' 'MathVectorMatrix' ) ];
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: #( 'MathVectorMatrix' ) ];
package: 'Math-Clustering' with: [ spec requires: #( 'Math-Numerical' 'Math-Core-Process' 'MathVectorMatrix' ) ];
package: 'Math-Complex' with: [ spec requires: #( 'Math-Numerical' 'Math-Polynomials' ) ];
package: 'Math-Helpers';
package: 'Math-Distributions' with: [ spec requires: #( 'MathVectorMatrix' 'Math-Quantile' 'Math-Core-Process' ) ];
package: 'Math-Core-Process';
package: 'Math-Numerical'
with: [ spec requires: #( 'MathVectorMatrix' 'Math-Core-Process' 'Math-Distributions' 'Math-StatisticalMoments'
'Math-Series' ) ];
package: 'Math-Polynomials'
with: [ spec requires: #( 'MathVectorMatrix' 'Math-Core-Process' 'Math-Distributions' 'Math-StatisticalMoments'
'Math-Series' ) ];
package: 'Math-FastFourierTransform' with: [ spec requires: #( 'Math-Complex' ) ];
package: 'Math-FunctionFit'
with: [ spec requires: #( 'Math-Numerical' 'Math-Chromosome' 'Math-Accuracy-Core' 'MathVectorMatrix' 'Math-Helpers' 'Math-Polynomials' ) ];
package: 'Math-KDTree';
package: 'Math-Number-Extensions';
package: 'Math-ODE' with: [ spec requires: #( 'Math-Numerical' 'MathVectorMatrix' 'Math-Polynomials' ) ];
package: 'Math-Permutation' with: [ spec requires: #( 'MathVectorMatrix' 'Math-Core-Process' ) ];
package: 'Math-Physics-Constants';
package: 'Math-PrincipalComponentAnalysis' with: [ spec requires: #( 'Math-Numerical' 'MathVectorMatrix' 'Math-Polynomials' ) ];
package: 'Math-Quantile';
package: 'Math-Quaternion' with: [ spec requires: #( 'Math-Complex' 'Math-Numerical' 'Math-Polynomials' ) ];
package: 'Math-Series';
package: 'Math-StatisticalMoments' with: [ spec requires: #( 'Math-Helpers' 'Math-Distributions' ) ];
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' 'MathVectorMatrix' ) ];
package: 'Math-Tests-Clustering' with: [ spec requires: #( 'Math-Clustering' 'Math-Distributions' 'Math-UtilsDataServer' ) ];
package: 'Math-Tests-Complex' with: [ spec requires: #( 'Math-Complex' ) ];
package: 'Math-Tests-Distributions' with: [ spec requires: #( 'Math-Distributions' ) ];
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-Number-Extensions' with: [ spec requires: #( 'Math-Number-Extensions' ) ];
package: 'Math-Tests-ODE' with: [ spec requires: #( 'Math-ODE' ) ];
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-TSNE' with: [ spec requires: #( 'Math-TSNE' ) ];
package: 'Math-UtilsDataServer'.
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-Numerical' 'MathRandomNumbers' 'Math-KDTree' 'Math-ODE' 'Math-ArbitraryPrecisionFloat'
'Math-FastFourierTransform' 'ExtendedNumberParser' 'Math-Quantile' 'Math-Physics-Constants' 'Math-Polynomials' 'Math-TSNE' 'Math-Core-Process'
'Math-Helpers' 'MathVectorMatrix' 'Math-Distributions' );
group: 'Extensions'
with: #( 'Math-Clustering' 'Math-Number-Extensions' 'Math-Chromosome' 'Math-PrincipalComponentAnalysis' 'Math-FunctionFit' 'Math-AutomaticDifferenciation'
'Math-Permutation' );
group: 'Tests'
with:
#( 'Math-Tests-Clustering' 'Math-Tests-Numerical' 'Math-Tests-Complex' 'Math-Tests-Quaternion' 'Math-Tests-ODE' 'Math-Tests-KDTree' 'Math-Tests-FunctionFit'
'Math-Tests-AutomaticDifferenciation' 'Math-Tests-FastFourierTransform' 'Math-Tests-Accuracy' 'Math-Tests-ArbitraryPrecisionFloat'
'Math-Tests-Quantile' 'Math-Tests-Polynomials' 'Math-Tests-PrincipalComponentAnalysis' 'Math-Tests-Number-Extensions' 'Math-Tests-Permutation'
'Math-Tests-TSNE' 'Math-Tests-Core-Process' 'Math-Tests-Distributions' );
group: 'default' with: #( 'Core' 'Extensions' 'Tests' 'Benchmarks' 'Accuracy' ) ].
self
packages: spec;
groups: spec ].

spec for: #( #'pharo6.x' #'pharo7.x' #'pharo8.x' #'pharo9.x' #'pharo10.x' ) do: [
spec
Expand All @@ -107,6 +41,169 @@ BaselineOfPolyMath >> baseline: spec [
package: 'Math-CompatibilityUpToPharo11' ]
]

{ #category : #dependencies }
BaselineOfPolyMath >> dataFrameInspector: spec [

spec
baseline: 'AIDataFrameInspector'
with: [ spec repository: 'github://pharo-ai/data-inspector/src' ]
]

{ #category : #dependencies }
BaselineOfPolyMath >> datasets: spec [

spec
baseline: 'AIDatasets'
with: [ spec repository: 'github://pharo-ai/datasets' ].
]

{ #category : #baselines }
BaselineOfPolyMath >> groups: spec [

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-Numerical'
'MathRandomNumbers' 'Math-KDTree' 'Math-ODE' 'Math-ArbitraryPrecisionFloat'
'Math-FastFourierTransform' 'ExtendedNumberParser'
'Math-Quantile' 'Math-Physics-Constants'
'Math-Polynomials' 'Math-TSNE' 'Math-Core-Process'
'Math-Helpers' 'MathVectorMatrix' 'Math-Distributions' );
group: 'Extensions'
with:
#( 'Math-Clustering' 'Math-Number-Extensions'
'Math-Chromosome' 'Math-PrincipalComponentAnalysis'
'Math-FunctionFit' 'Math-AutomaticDifferenciation'
'Math-Permutation' );
group: 'Tests'
with: #( 'Math-Tests-Clustering' 'Math-Tests-Numerical'
'Math-Tests-Complex' 'Math-Tests-Quaternion'
'Math-Tests-ODE' 'Math-Tests-KDTree' 'Math-Tests-FunctionFit'
'Math-Tests-AutomaticDifferenciation'
'Math-Tests-FastFourierTransform'
'Math-Tests-Accuracy' 'Math-Tests-ArbitraryPrecisionFloat'
'Math-Tests-Quantile' 'Math-Tests-Polynomials'
'Math-Tests-PrincipalComponentAnalysis'
'Math-Tests-Number-Extensions' 'Math-Tests-Permutation'
'Math-Tests-TSNE' 'Math-Tests-Core-Process'
'Math-Tests-Distributions' );
group: 'visualizations'
with:
#( 'Core' 'Extensions' 'Tests' 'Benchmarks' 'Accuracy' 'Math-Visualizations' );
group: 'default'
with: #( 'Core' 'Extensions' 'Tests' 'Benchmarks' 'Accuracy' )
]

{ #category : #baselines }
BaselineOfPolyMath >> packages: 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-Numerical' 'MathVectorMatrix' ) ];
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: #( 'MathVectorMatrix' ) ];
package: 'Math-Clustering' with: [
spec requires:
#( 'Math-Numerical' 'Math-Core-Process' 'MathVectorMatrix' ) ];
package: 'Math-Complex'
with: [ spec requires: #( 'Math-Numerical' 'Math-Polynomials' ) ];
package: 'Math-Helpers';
package: 'Math-Distributions' with: [
spec requires:
#( 'MathVectorMatrix' 'Math-Quantile' 'Math-Core-Process' ) ];
package: 'Math-Core-Process';
package: 'Math-Numerical' with: [
spec requires:
#( 'MathVectorMatrix' 'Math-Core-Process' 'Math-Distributions'
'Math-StatisticalMoments' 'Math-Series' ) ];
package: 'Math-Polynomials' with: [
spec requires:
#( 'MathVectorMatrix' 'Math-Core-Process' 'Math-Distributions'
'Math-StatisticalMoments' 'Math-Series' ) ];
package: 'Math-FastFourierTransform'
with: [ spec requires: #( 'Math-Complex' ) ];
package: 'Math-FunctionFit' with: [
spec requires:
#( 'Math-Numerical' 'Math-Chromosome' 'Math-Accuracy-Core'
'MathVectorMatrix' 'Math-Helpers' 'Math-Polynomials' ) ];
package: 'Math-KDTree';
package: 'Math-Number-Extensions';
package: 'Math-ODE' with: [
spec requires:
#( 'Math-Numerical' 'MathVectorMatrix' 'Math-Polynomials' ) ];
package: 'Math-Permutation'
with: [ spec requires: #( 'MathVectorMatrix' 'Math-Core-Process' ) ];
package: 'Math-Physics-Constants';
package: 'Math-PrincipalComponentAnalysis' with: [
spec requires:
#( 'Math-Numerical' 'MathVectorMatrix' 'Math-Polynomials' ) ];
package: 'Math-Quantile';
package: 'Math-Quaternion' with: [
spec requires:
#( 'Math-Complex' 'Math-Numerical' 'Math-Polynomials' ) ];
package: 'Math-Series';
package: 'Math-StatisticalMoments'
with: [ spec requires: #( 'Math-Helpers' 'Math-Distributions' ) ];
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'
'MathVectorMatrix' ) ];
package: 'Math-Tests-Clustering' with: [
spec requires:
#( 'Math-Clustering' 'Math-Distributions' 'Math-UtilsDataServer' ) ];
package: 'Math-Tests-Complex'
with: [ spec requires: #( 'Math-Complex' ) ];
package: 'Math-Tests-Distributions'
with: [ spec requires: #( 'Math-Distributions' ) ];
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-Number-Extensions'
with: [ spec requires: #( 'Math-Number-Extensions' ) ];
package: 'Math-Tests-ODE' with: [ spec requires: #( 'Math-ODE' ) ];
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-TSNE'
with: [ spec requires: #( 'Math-TSNE' ) ];
package: 'Math-UtilsDataServer';
package: 'Math-Visualizations'
with: [ spec requires: #( 'AIDatasets' 'AIDataFrameInspector') ]
]

{ #category : #accessing }
BaselineOfPolyMath >> projectClass [
^ [ self class environment at: #MetacelloCypressBaselineProject ]
Expand All @@ -120,6 +217,14 @@ BaselineOfPolyMath >> randomNumbers: spec [
spec baseline: 'MathRandomNumbers' with: [ spec repository: 'github://PolyMathOrg/random-numbers:v1.x.x/src' ]
]

{ #category : #dependencies }
BaselineOfPolyMath >> roassal: spec [

spec
baseline: 'Roassal'
with: [ spec repository: 'github://pharo-graphics/Roassal' ].
]

{ #category : #dependencies }
BaselineOfPolyMath >> sMark: spec [

Expand Down
13 changes: 7 additions & 6 deletions src/Math-PrincipalComponentAnalysis/PMDataTransformer.class.st
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,23 @@ PMDataTransformer is the abstract root class of transformers. All data transform

"
Class {
#name : #PMDataTransformer,
#superclass : #Object,
#category : #'Math-PrincipalComponentAnalysis'
#name : 'PMDataTransformer',
#superclass : 'Object',
#category : 'Math-PrincipalComponentAnalysis',
#package : 'Math-PrincipalComponentAnalysis'
}

{ #category : #accessing }
{ #category : 'accessing' }
PMDataTransformer >> fit: aPMMatrix [
^ self subclassResponsibility
]

{ #category : #accessing }
{ #category : 'accessing' }
PMDataTransformer >> fitAndTransform: aPMMatrix [
^ (self fit: aPMMatrix) transform: aPMMatrix
]

{ #category : #transforming }
{ #category : 'transforming' }
PMDataTransformer >> transform: aPMMatrix [
^ self subclassResponsibility
]
Original file line number Diff line number Diff line change
@@ -1,33 +1,34 @@
Class {
#name : #PMPrincipalComponentAnalyser,
#superclass : #Object,
#name : 'PMPrincipalComponentAnalyser',
#superclass : 'Object',
#instVars : [
'componentsNumber'
],
#category : #'Math-PrincipalComponentAnalysis'
#category : 'Math-PrincipalComponentAnalysis',
#package : 'Math-PrincipalComponentAnalysis'
}

{ #category : #accessing }
{ #category : 'accessing' }
PMPrincipalComponentAnalyser >> componentsNumber [
^ componentsNumber
]

{ #category : #accessing }
{ #category : 'accessing' }
PMPrincipalComponentAnalyser >> componentsNumber: anInteger [
componentsNumber := anInteger
]

{ #category : #accessing }
{ #category : 'accessing' }
PMPrincipalComponentAnalyser >> fit: aPMMatrix [
^ self subclassResponsibility
]

{ #category : #accessing }
{ #category : 'accessing' }
PMPrincipalComponentAnalyser >> fitAndTransform: aPMMatrix [
^ (self fit: aPMMatrix) transform: aPMMatrix
]

{ #category : #accessing }
{ #category : 'accessing' }
PMPrincipalComponentAnalyser >> transform: aPMMatrix [
^ self subclassResponsibility
]
Loading