Commit 23f9e11d authored by Thomas Purcell's avatar Thomas Purcell
Browse files

Update joss paper with Luca's comments

parent 2f3a44b8
---
title: 'FHI-vibes: _Ab Initio_ Vibrational Simulations'
title: 'SISSO++'
tags:
- Python
- SISSO
- Symbolic Regression
- Physics
- Phonons
- Transport
- C++
- Python
authors:
- name: Thomas A. R. Purcell
orcid: 0000-0003-4564-7206
......@@ -18,43 +19,33 @@ authors:
orcid: 0000-0001-5099-3029
affiliation: 1
affiliations:
- name: Fritz Haber Institute of the Max Planck Society, Berlin, Germany
- name: NOMAD Laboratory at the Fritz Haber Institute of the Max Planck Society and Humboldt University, Berlin, Germany
index: 1
date: September 2021
bibliography: paper.bib
---
a) Summary:
Describe SISSO for a non-specialist audience [what are primary features, operators, symbolic regression, etc.] and what are its use cases in science.
2:25
(b) Statement of need:
Add what makes this implementation superior to existing ones with clear examples. In my eyes these are
(i) performance/scalability
(ii) documentation and extendibility
(iii) user-friendliness (advanced features and scripts to perform recurring tasks)
2:26
A statement of need: Does the paper have a section titled ‘Statement of Need’ that clearly states what problems the software is designed to solve and who the target audience is?
(c) Features:
API, documentations, tutorial and quickstart guides are also important features
# Summary
The sure-independence screening and sparsifying operator (SISSO) method [@Ouyang2017] is an algorithm belonging to the field of artificial intelligence.
As a symbolic regression technique SISSO is used to identify low-dimensional, analytic functions, the so called descriptors, that best reproduce or classify a target data set.
In practice, SISSO first constructs a large and exhaustive feature space of billions of of potential descriptors by taking in a set of user-provided primary features, i.e. the input features, and then iteratively applying a set of analytical unary and binary operators, e.g., addition, multiplication, exponentiation, and squaring.
From this exhaustive pool of candidate descriptors, the best one is identified by performing an $\ell_0$-regularization to find the best low-dimensional linear model of the features using the SISSO operator.
The sure-independence screening and sparsifying operator (SISSO) method [@Ouyang2017] is an algorithm belonging to the field of artificial intelligence and more specifically supervised machine learning.
As a symbolic-regression technique, SISSO is used to identify low-dimensional, analytic functions, the so called descriptors, that best predict the labels of a target data set.
SISSO is introduced for both regression and classification tasks.
In practice, SISSO first constructs a large and exhaustive feature space of billions of potential descriptors by taking in a set of user-provided *primary features*, and then iteratively applying a set of unary and binary operators, e.g., addition, multiplication, exponentiation, and squaring.
From this exhaustive pool of candidate descriptors, the best ones are identified via sure-independence screening, from which the best low-dimensional linear models are found via an $\ell_0$ regularization.
Because symbolic regression generates an interpretable equation, it has become an increasingly popular method across scientific disciplines [@Wang2019a, @Neumann2020, @Udrescu2020a].
In particular, SISSO has been used successfully in the past to solve numerous problems in material science, including: the stability of materials [@Bartel2018a, @Schleder2020], catalysis [@Han2021, @Xu2020, @Andersen2021], and glass transition temperatures [@Pilania2019].
Beyond regression problems SISSO has also successfully used classify materials into different crystal prototypes [@Ouyang2019] or to determine if a material is a topological insulator or not [@Cao2019].
A particular advantage of these approaches are their capability to model complex phenomena using relatively simple descriptors.
Because of this, SISSO has been used successfully in the past to model, explore, and predict important material properties, including: the stability of different phases [@Bartel2018a, @Schleder2020], the catalytic activity and reactivity [@Han2021, @Xu2020, @Andersen2021], and glass transition temperatures [@Pilania2019].
Beyond regression problems, SISSO has also been used successfully to classify materials into different crystal prototypes [@Ouyang2019], or whether a material crystallizes in its ground state as a perovskite [@Bartel2019], or to determine if a material is a topological insulator or not [@Cao2019].
The SISSO++ package is a modular and extensible C++ implementation of the SISSO method with python bindings.
Specifically, SISSO++ applies this methodology for regression, log regression, and classification problems.
Additionally the library include multiple python functions to facilitate the post-processing, analyzing, and visualizing the resulting models.
# Statement of need
The main goal of the SISSO++ package is to provide a user-friendly, easily-extendable version of the SISSO method for the use of the scientific community that can be used both on high-performance architectures for data production and on personal computing devices for analyzing and visualizing the results.
The main goal of the SISSO++ package is to provide a user-friendly, easily extendable version of the SISSO method for the scientific community that can be used both on high-performance architectures for data production and on personal computing devices for analyzing and visualizing the results.
For this reason, all computational-intensive task are written in C++ and support parallelization via MPI and openMP.
Additionally, Python bindings allow to easily incorporate the methods in computational workflows and to easily postprocess results.
Additionally, the Python bindings allow one to easily incorporate the methods into computational workflows and postprocess results.
Furthermore, this can facilitate the future integration of SISSO into existing machine-learning frameworks, e.g. scikit-learn [@scikit-learn]
The code is designed in a modular fashion, which simplifies the process of extending the code for other applications.
Finally the project's extensive documentation and tutorials provide a good access point for new-users of the method.
......@@ -63,11 +54,11 @@ The following features are implemented in SISSO++:
- A C++ library for using SISSO to find analytical models for a given problem
- Python bindings to be able to interface with the C++ objects in a python environment
- Python bindings to be able to interface with the C++ objects in a Python environment
- Postprocessing tools for visualizing models and analyzing results using matplotlib
- Postprocessing tools for visualizing models and analyzing results using Matplotlib
- Access to solve an n-dimensional classification model using a combination of calculating the convex-hull overlap and a linear-SVM solver
- Access to solve an *n*-dimensional classification model using a combination of calculating the convex-hull overlap and a linear-SVM solver
- Features with better defined non-linearaities of the models by automatically optimizing the scale and bias terms to all operations using non-linear optimization
......@@ -77,6 +68,6 @@ The following features are implemented in SISSO++:
# Acknowledgements
The authors would like to thank Markus Rampp and Meisam Tabriz for technical support. We would also like to thank Lucas Foppa, Jingkai Quan, Aakash Naik, and Luigi Sabilio for testing and providing valuable feedback. T.P. would like to thank the Alexander von Humboldt Foundation for their support through the Alexander von Humboldt Postdoctoral Fellowship Program. This project was supported by TEC1p (the European Research Council (ERC) Horizon 2020 research and innovation programme, grant agreement No. 740233), BigMax (the Max Planck Society’s Research Network on Big-Data-Driven Materials-Science), and the NOMAD pillar of the FAIR-DI e.V. association.
The authors would like to thank Markus Rampp and Meisam Tabriz for technical support. We would also like to thank Lucas Foppa, Jingkai Quan, Aakash Naik, and Luigi Sbailò for testing and providing valuable feedback. T.P. would like to thank the Alexander von Humboldt Foundation for their support through the Alexander von Humboldt Postdoctoral Fellowship Program. This project was supported by TEC1p (the European Research Council (ERC) Horizon 2020 research and innovation programme, grant agreement No. 740233), BiGmax (the Max Planck Society’s Research Network on Big-Data-Driven Materials-Science), and the NOMAD pillar of the FAIR-DI e.V. association.
# References
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment