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. You can also download the poster below for a condensed overview of the available functionalities.
Citing PCAfold#
PCAfold is published in the SoftwareX journal. 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"
}
User Guide
- Getting started
- Data preprocessing
- Data manipulation
center_scaleinvert_center_scalepower_transformlog_transformremove_constant_varsorder_variables- Class
PreProcessing outlier_detectionrepresentative_sample_size- Class
ConditionalStatistics - Class
KernelDensity - Class
DensityEstimation DensityEstimation.average_knn_distanceDensityEstimation.kth_nearest_neighbor_codensityDensityEstimation.kth_nearest_neighbor_density
- Data clustering
- Data sampling
- Plotting functions
- Bibliography
- 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
- Bibliography
- Manifold analysis
- Manifold assessment
- Kernel Regression
- Plotting functions
- Bibliography
- Reconstruction
- Tools for reconstructing quantities of interest (QoIs)
- Class
ANN ANN.summaryANN.trainANN.predictANN.print_weights_and_biases_initANN.print_weights_and_biases_trainedANN.plot_losses- Class
PartitionOfUnityNetwork PartitionOfUnityNetwork.load_data_from_filePartitionOfUnityNetwork.load_from_filePartitionOfUnityNetwork.load_data_from_txtPartitionOfUnityNetwork.write_data_to_filePartitionOfUnityNetwork.write_data_to_txtPartitionOfUnityNetwork.build_training_graphPartitionOfUnityNetwork.update_lrPartitionOfUnityNetwork.update_l2regPartitionOfUnityNetwork.lstsqPartitionOfUnityNetwork.trainPartitionOfUnityNetwork.__call__PartitionOfUnityNetwork.derivativesPartitionOfUnityNetwork.partition_prenorminit_uniform_partitions
- Class
- Regression assessment
- Class
RegressionAssessment RegressionAssessment.print_metricsRegressionAssessment.print_stratified_metricscoefficient_of_determinationstratified_coefficient_of_determinationmean_absolute_errorstratified_mean_absolute_errormax_absolute_errormean_squared_errorstratified_mean_squared_errormean_squared_logarithmic_errorstratified_mean_squared_logarithmic_errorroot_mean_squared_errorstratified_root_mean_squared_errornormalized_root_mean_squared_errorstratified_normalized_root_mean_squared_errorturning_pointsgood_estimategood_direction_estimategenerate_tex_table
- Class
- Plotting functions
- Bibliography
- Tools for reconstructing quantities of interest (QoIs)
- Utilities
- Tools for optimizing manifold topology
- Class
QoIAwareProjection QoIAwareProjection.summaryQoIAwareProjection.trainQoIAwareProjection.print_weights_and_biases_initQoIAwareProjection.print_weights_and_biases_trainedQoIAwareProjection.get_best_basisQoIAwareProjection.plot_lossesmanifold_informed_forward_variable_additionmanifold_informed_backward_variable_elimination- Class
QoIAwareProjectionPOUnet QoIAwareProjectionPOUnet.projectionQoIAwareProjectionPOUnet.tf_projectionQoIAwareProjectionPOUnet.update_lrQoIAwareProjectionPOUnet.update_l2regQoIAwareProjectionPOUnet.build_training_graphQoIAwareProjectionPOUnet.trainQoIAwareProjectionPOUnet.__call__QoIAwareProjectionPOUnet.write_data_to_fileQoIAwareProjectionPOUnet.load_data_from_fileQoIAwareProjectionPOUnet.load_from_file
- Class
- Bibliography
- Tools for optimizing manifold topology
Tutorials & Demos
- 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)