+

+pyFDA

- +

+Python Filter Design Analysis Tool

- pyFDA - +

Join the chat at https://gitter.im/chipmuenk/pyFDA

- +

The goal of this project is to create a GUI based tool in Python / Qt to analyse, design and synthesize discrete time filters.

+ +

Screenshot from the current version: +Screenshot

- -
-
- View on GitHub +

Getting started

-

pyFDA

-

Python Filter Design Analysis Tool

+

+Why yet another filter design tool?

-
- Download this project as a .zip file - Download this project as a tar.gz file -
-
-
+ - -
-
-

-PyFDA

+

+The following features are currently implemented:

-

-Python Filter Design Analysis Tool

+
    +
  • +Filter design + +
      +
    • +Design methods from scipy.signal: Equiripple, Firwin, Butterworth, Elliptic, Chebychev 1 and Chebychev 2
    • +
    • +Remember all specifications when changing filter design methods
    • +
    • +Fine-tune manually the filter order and corner frequencies calculated by minimum order algorithms
    • +
    • +Compare filter designs for a given set of specifications and different design methods
    • +
    • +Filter coefficients and poles / zeroes can be displayed, edited and quantized
    • +
    +
  • +
  • +Clearly structured GUI + +
      +
    • only widgets needed for the currently selected design method are visible
    • +
    • enhanced matplotlib NavigationToolbar (nicer icons, additional functions)
    • +
    +
  • +
  • +Common interface for all filter design methods: + +
      +
    • specify frequencies as absolute values or normalized to sampling or Nyquist frequency
    • +
    • specify ripple and attenuations in dB, as voltage or as power ratios
    • +
    • enter expressions like exp(-pi/4 * 1j) with the help of the library simpleeval (included in source files)
    • +
    +
  • +
  • +Graphical Analyses + +
      +
    • Magnitude response (lin / power / log) with optional display of specification bands, phase and an inset plot
    • +
    • Phase response (wrapped / unwrapped)
    • +
    • Group delay
    • +
    • Pole / Zero plot
    • +
    • Impulse response and step response (lin / log)
    • +
    • 3D-Plots (|H(f)|, mesh, surface, contour) with optional pole / zero display
    • +
    +
  • +
  • +Modular architecture, facilitating the implementation of new filter design and analysis methods + +
      +
    • Filter design files not only contain the actual algorithm but also dictionaries specifying which parameters and standard widgets have to be displayed in the GUI.
    • +
    • Special widgets needed by design methods (e.g. for choosing the window type in Firwin) are included in the filter design file, not in the main program
    • +
    • Filter design files can be added and edited without changing or even restarting the program
    • +
    +
  • +
  • +Saving and loading + +
      +
    • Save and load filter designs in pickled and in numpy's NPZ-format
    • +
    • Export coefficients and poles/zeros as comma-separated values (CSV), in numpy's NPZ-format, in Excel (R) or in Matlab (R) workspace format
    • +
    +
  • +
  • +Display help files (own / Python docstrings) as rich text
  • +
  • +Runs under Python 2.7 and Python 3.4
  • +
+ +

More screenshots from the current version:

+ + + + + + + + + + +
ScreenshotScreenshot
ScreenshotScreenshot
+ +

+Release 0.1 (target: end of May June 2015)

+ +

The following features are still missing for the first release.

-

Screenshot

+
    +
  • Documentation
  • +
+ +

+Release 0.2 (target: end of 2015) - Help is very welcome!

-

The goal of this project is to create a GUI based tool to analyse and design discrete time filters implemented in Python and Qt. The following goals of this FOSS project have been reached or will be in the near future:

+
    +
  • scipy 0.16 SOS features
  • +
  • +myHDL support + +
      +
    • Export of VHDL / Verilog netlists for basic filter topologies
    • +
    • Fixpoint simulation
    • +
    +
  • +
  • +Filter coefficients and poles / zeros
    +Implement model-view controller architecture for the following features:
      -
    • Easy to use, clearly structured GUI
    • -
    • Accessing Scipy filter design methods with a common interface (frequency and amplitude specifications)
    • -
    • Easy switching between manual and minimum filter order without losing all the settings
    • -
    • Modular structure, facilitating the implementation of new filter design and analysis methods
    • -
    • Filter design files can simply be added to the filter_design subdirectory without changes to the program and without restarting
    • -
    • Comfortable saving and loading of filter designs
    • -
    • Export of filter coefficients and poles / zeros as CSV and in Matlab (R) workspace format
    • +
    • Display coefficients / poles and zeros with fewer digits while keeping full precision internally
    • +
    • Group multiple poles / zeros
    • +
    • Load coefficients / poles and zeros in various formats
    +
  • +
  • +Filter Manager -Getting Started +
      +
    • Store multiple designs in one filter dict
    • +
    • Compare multiple designs in plots
    • +
    +
  • +
  • Documentation using Sphinx
  • +
-

Plans for the not-so near future include:

+

+Following releases

    -
  • Quantization of filter coefficients
  • -
  • Multiplier-free filter designs (CIC, GCIC, SigmaDelta-Filters, ...)
  • +
  • Better help files and messages
  • +
  • Add a tracking cursor
  • +
  • Graphical modification of poles / zeros
  • +
  • Export of filter properties as PDF / HTML files
  • +
  • Show error messages and warnings in the GUI
  • +
  • Design, analysis and export of filters as second-order sections
  • +
  • Multiplier-free filter designs (CIC, GCIC, LDI, SigmaDelta-Filters, ...)
  • Export of Python filter objects
  • Analysis of different fixpoint filter topologies (direct form, cascaded form, parallel form, ...) concerning overflow and quantization noise
  • -
  • Fixpoint filter sythesis and export using the myHDL module.
-

And maybe the future will bring

+

+Further ideas are

  • Wave-Digital Filters
  • +
  • test filters in real-time with a audio stream
  • ...
-
$ cd your_repo_root/repo_name
-$ git fetch origin
-$ git checkout gh-pages
-
-
-
- - - - +