Low-dimensional PCA-derived manifolds and everything in between!
Intro#
PCAfold is an open-source Python library for generating, analyzing and improving low-dimensional manifolds. It incorporates a variety of data preprocessing tools (including data clustering and sampling), implements several dimensionality reduction strategies and utilizes novel approaches to assess the quality of the obtained low-dimensional manifolds. The latest software version introduces algorithms to optimize projection topologies based on quantities of interest (QoIs) and novel tools to reconstruct QoIs from the low-dimensional data representations using partition of unity networks (POUnets).
A general overview for using PCAfold modules is presented in the diagram below:
Each module’s functionalities can also be used as a standalone tool for performing a specific task and can easily combine with techniques outside of this software.
Reach out to the Getting started section for more information on installing the software and for possible workflows that can be achieved with PCAfold.
YouTube tutorials#
Check out the YouTube tutorials on PCAfold:
Citing PCAfold#
PCAfold is published in the SoftwareX journal. We have also recently published PCAfold 2.0. If you use PCAfold in a scientific publication, you can cite the software as:
Zdybał, K., Armstrong, E., Parente, A. and Sutherland, J.C., 2020. PCAfold: Python software to generate, analyze and improve PCA-derived low-dimensional manifolds. SoftwareX, 12, p.100630.
or using BibTeX:
@article{pcafold2020,
title = "PCAfold: Python software to generate, analyze and improve PCA-derived low-dimensional manifolds",
journal = "SoftwareX",
volume = "12",
pages = "100630",
year = "2020",
issn = "2352-7110",
doi = "https://doi.org/10.1016/j.softx.2020.100630",
url = "http://www.sciencedirect.com/science/article/pii/S2352711020303435",
author = "Kamila Zdybał and Elizabeth Armstrong and Alessandro Parente and James C. Sutherland"
}
- Getting started
- Data preprocessing
- Data manipulation
center_scale
invert_center_scale
power_transform
log_transform
zero_pivot_transform
invert_zero_pivot_transform
remove_constant_vars
order_variables
- Class
PreProcessing
outlier_detection
representative_sample_size
- Class
ConditionalStatistics
- Class
KernelDensity
- Class
DensityEstimation
DensityEstimation.average_knn_distance
DensityEstimation.kth_nearest_neighbor_codensity
DensityEstimation.kth_nearest_neighbor_density
- Data clustering
- Data sampling
- Plotting functions
- Data manipulation
- Data reduction
- Principal Component Analysis
- Local Principal Component Analysis
- Vector Quantization Principal Component Analysis
- Subset Principal Component Analysis
- Sample Principal Component Analysis
- Plotting functions
- Manifold analysis
- Manifold assessment
- Kernel Regression
- Plotting functions
- Reconstruction
- Tools for reconstructing quantities of interest (QoIs)
- Class
ANN
ANN.summary
ANN.train
ANN.predict
ANN.print_weights_and_biases_init
ANN.print_weights_and_biases_trained
ANN.plot_losses
- Class
PartitionOfUnityNetwork
PartitionOfUnityNetwork.load_data_from_file
PartitionOfUnityNetwork.load_from_file
PartitionOfUnityNetwork.load_data_from_txt
PartitionOfUnityNetwork.write_data_to_file
PartitionOfUnityNetwork.write_data_to_txt
PartitionOfUnityNetwork.build_training_graph
PartitionOfUnityNetwork.update_lr
PartitionOfUnityNetwork.update_l2reg
PartitionOfUnityNetwork.lstsq
PartitionOfUnityNetwork.train
PartitionOfUnityNetwork.__call__
PartitionOfUnityNetwork.derivatives
PartitionOfUnityNetwork.partition_prenorm
init_uniform_partitions
- Class
- Regression assessment
- Class
RegressionAssessment
RegressionAssessment.print_metrics
RegressionAssessment.print_stratified_metrics
coefficient_of_determination
stratified_coefficient_of_determination
mean_absolute_error
stratified_mean_absolute_error
max_absolute_error
mean_squared_error
stratified_mean_squared_error
mean_squared_logarithmic_error
stratified_mean_squared_logarithmic_error
root_mean_squared_error
stratified_root_mean_squared_error
normalized_root_mean_squared_error
stratified_normalized_root_mean_squared_error
turning_points
good_estimate
good_direction_estimate
generate_tex_table
- Class
- Plotting functions
- Tools for reconstructing quantities of interest (QoIs)
- Utilities
- Tools for optimizing manifold topology
- Class
QoIAwareProjection
QoIAwareProjection.summary
QoIAwareProjection.train
QoIAwareProjection.print_weights_and_biases_init
QoIAwareProjection.print_weights_and_biases_trained
QoIAwareProjection.get_best_basis
QoIAwareProjection.plot_losses
manifold_informed_forward_variable_addition
manifold_informed_backward_variable_elimination
- Class
QoIAwareProjectionPOUnet
QoIAwareProjectionPOUnet.projection
QoIAwareProjectionPOUnet.tf_projection
QoIAwareProjectionPOUnet.update_lr
QoIAwareProjectionPOUnet.update_l2reg
QoIAwareProjectionPOUnet.build_training_graph
QoIAwareProjectionPOUnet.train
QoIAwareProjectionPOUnet.__call__
QoIAwareProjectionPOUnet.write_data_to_file
QoIAwareProjectionPOUnet.load_data_from_file
QoIAwareProjectionPOUnet.load_from_file
- Class
- Tools for optimizing manifold topology
- Bibliography
- Preprocessing
- Data clustering
- Data sampling
- Global and local PCA
- Plotting PCA results
- PCA on sampled data sets
- Handling source terms
- Manifold Assessment
- Local feature size estimation
- Cost function for manifold topology assessment and optimization
- Nonlinear regression
- Partition of Unity Networks (POUnets)
- QoI-aware encoder-decoder
- QoI-aware encoder-decoders employing Partition of Unity Networks (POUnets)