Git Product home page Git Product logo

pydoe3's Introduction

pyDOE3: An experimental design package for python

Tests Documentation DOI Ruff

pyDOE3 is a fork of the pyDOE2 package that is designed to help the scientist, engineer, statistician, etc., to construct appropriate experimental designs.

This fork came to life to solve bugs and issues that remained unsolved in the original package.

Capabilities

The package currently includes functions for creating designs for any number of factors:

  • Factorial Designs
    • General Full-Factorial (fullfact)
    • 2-level Full-Factorial (ff2n)
    • 2-level Fractional Factorial (fracfact)
    • Plackett-Burman (pbdesign)
    • Generalized Subset Designs (gsd)
  • Response-Surface Designs
    • Box-Behnken (bbdesign)
    • Central-Composite (ccdesign)
  • Randomized Designs
    • Latin-Hypercube (lhs)

See Documentation.

Installation

pip install pyDOE3

Credits

pyDOE original code was originally converted from code by the following individuals for use with Scilab:

  • Copyright (C) 2012-2013, Michael Baudin
  • Copyright (C) 2012, Maria Christopoulou
  • Copyright (C) 2010-2011, INRIA, Michael Baudin
  • Copyright (C) 2009, Yann Collette
  • Copyright (C) 2009, CEA, Jean-Marc Martinez

pyDOE was converted to Python by the following individual:

  • Copyright (c) 2014, Abraham D. Lee

The following individuals forked pyDOE and worked on pyDOE2:

  • Copyright (C) 2018, Rickard Sjögren and Daniel Svensson

License

This package is provided under the BSD License (3-clause)

References

pydoe3's People

Contributors

andife avatar antoine-averland avatar beckermr avatar dipsav avatar dreavjr avatar joergdietrich avatar jschueller avatar ovidner avatar relf avatar rickardsjogren avatar rockandsalt avatar tisimst avatar toddrme2178 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

pydoe3's Issues

Bug in Resolutions used for Fractional Factorial Design

I encountered an issue with the add_design method in the doepandas package when specifying resolutions for fractional factorial designs with 6 factors. The method allows for the selection of a resolution that is not standard, resulting in an error.

Issue Details:
When attempting to create a design with resolution=VI for 6 factors, the method fails with a ValueError indicating "design not possible." But when setting resolution=V for 6 factors, the design given is with 32 runs. Although, resolution V does not typically exist for 6 factors in standard design tables.

Standard Resolutions:
For 6 factors, the standard resolutions are:
Resolution IV: 16 runs (1/4 fraction of the full factorial)
Resolution VI: 32 runs (1/2 fraction of the full factorial)

Expected Behavior:
The method should either generate a valid design for compatible resolutions or provide a descriptive error message indicating that the requested resolution is not valid for the given number of factors.

Python 3.12 - ModuleNotFoundError: No module named 'imp'

Hello, I'm trying to use this package in a python 3.12 environment, but am getting the following error:

ModuleNotFoundError: No module named 'imp'

It looks like imp was dropped in favor of importlib in python 3.12. Are there any plans to offer 3.12 compatibility, or any other workarounds?

Thanks!

CI tests failing with black formatter error

Error in CI tests

All done! ✨ 🍰 ✨
2 files would be reformatted, 11 files would be left unchanged.
would reformat /home/runner/work/pyDOE3/pyDOE3/pyDOE3/doe_box_behnken.py
would reformat /home/runner/work/pyDOE3/pyDOE3/pyDOE3/doe_gsd.py

Errors in fracfact_opt

Hi @relf,

first of all thank you for keeping pyDOE up-to-date! I have an issue with the function fracfact_opt

def fracfact_opt(n_factors, n_erased, max_attempts=0):

complaining about n_aliases being a float instead of an int

n_aliases = sum((n_comb(n_main_factors, n) for n in range(2, n_main_factors + 1)))

and hashing the numpy arrays gives me an error here:

aliases[contrast.data] = aliases.get(contrast.data, [])

Not sure what the best solution for hashing is. Maybe just contrast.tobytes()?

I use python 3.11.9 and numpy 1.26.4.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.