Summary¤
f3dasm introduces a general and user-friendly data-driven Python package for researchers and practitioners working on design and analysis of materials and structures.
Quick Example¤
from f3dasm.design import Domain
from f3dasm import (
ExperimentData,
create_sampler,
create_datagenerator,
create_optimizer,
)
# Define a 2D parameter space
domain = Domain()
domain.add_float(name='x0', low=-1.0, high=1.0)
domain.add_float(name='x1', low=-1.0, high=1.0)
domain.add_output('y')
# Sample, evaluate and optimize
data = ExperimentData(domain=domain)
data = create_sampler('random', seed=42).call(data=data, n_samples=20)
evaluator = create_datagenerator('sphere', output_names='y')
evaluator.arm(data=data)
data = evaluator.call(data=data)
# create_optimizer returns an update-step Block for ask/tell optimizers;
# chain it with the evaluator and wrap in a LoopBlock for the iterations.
step = (create_optimizer('tpesampler', output_name='y') >> evaluator).loop(50)
step.arm(data=data)
data = step.call(data=data)
Key Features¤
- Modular design — Flexible interfaces to easily integrate your own models and algorithms. Learn more
- Automatic data management — The framework handles all I/O processes for you. Learn more
- Easy parallelization — Run experiments in parallel on local machines or HPC clusters. Learn more
- Built-in defaults — Comes with benchmark functions, optimizers, and samplers out of the box.
- Hydra integration — Manage experiment configurations with Hydra. Learn more
Getting started¤
The best way to get started is to:
- Read the overview section, containing a brief introduction to the framework and a statement of need.
- Understand the core concepts behind the framework.
- Follow the installation instructions to get going!
- Check out the tutorials section, containing a collection of examples to get you familiar with the framework.
Authorship & Citation¤
f3dasm is created and maintained by Martin van der Schelling1.
Note:
If you usef3dasmin your research or in a scientific publication, it is appreciated that you cite the paper below:
Journal of Open Source Software (paper link):
@article{vanderSchelling2024,
title = {f3dasm: Framework for Data-Driven Design and Analysis of Structures and Materials},
author = {M. P. van der Schelling and B. P. Ferreira and M. A. Bessa},
doi = {10.21105/joss.06912},
url = {https://doi.org/10.21105/joss.06912},
year = {2024},
publisher = {The Open Journal},
volume = {9},
number = {100},
pages = {6912},
journal = {Journal of Open Source Software}
}