PyFlow is a general purpose visual scripting framework for python

Overview

Overview

PyFlow is a general purpose visual scripting framework for python.

State

Base structure of program implemented, such things as packages discovery, input customization, exporters, base classes for entities and tools.

You can completely remove nodes and tools that ships by default and start your own library from scratch.

You can evaluate programs without running user interface.

We have simple CLI interface and setup.py script.

Expectedly, we faced problems with our runtime execution model, it is good for certain types of tasks despite it is slow. Also, complicated flow control requires cycles handling.

For example current for loop node implementation doesn't work well with any kind of delay stuff in it's body. Of course it can be solved by adding more logic to loop processing, but we don't know exactly how to make it efficient yet.

Road map

We will add new types of graphs (undirected graphs, trees) and algorithms to work with those structures.

Code generation is probably the future of PyFlow.

We are going to implement more building blocks. Functions - which unlike subgraphs will have single definition and multiple entry points across the program. Objects - very important concept of programming in general, object will have own methods, access levels and variables. Events and delegates - similar to ue4.

Application presets and api for writing own presets. Templates like in any IDE (shader, command line tool, software installer, etc.).

Documentation updates.

User interface improvements and new tools to enhance user experience.

We want to have most python standard library wrapped into a nodes!

Installation

Manual

  1. Clone or download repository.

  2. Install requirements for your use case.

    requirement lists can be found under PyFlow/requirements

  3. To run the program in standalone mode, run pyflow.py. It can be found in the root folder of repository.

Or using pip

Latest development version. Contains latest features

pip install git+https://github.com/wonderworks-software/[email protected]

Latest release version

pip install git+https://github.com/wonderworks-software/[email protected]

After package is installed, you can invoke pyflow.exe on windows or pyflow on unix OS. Program is located inside PATH/TO/PYTHON/Scripts.

Features overview

  • Modular

    Add own node sets, pins, shelf tools, dock tools, preferences widgets, data exporters/importers

  • Easy integration

    PyFlow is a normal python program. It can run under any python environment

  • Python3 and 2 support

  • Logic and UI are separated

    Main logic elements (Node and Pin) has non gui representation, so programs can be evaluated without GUI

  • Subgraphs

    Collapse parts of graphs into subgraphs

    collapseToCompound

  • Watch what is going on

    collapseToCompound

  • Expose properties from subgraphs

    Any node can share it's properties with owning sub graph node

    collapseToCompound

  • Subgraphs import/export

    Share subgraphs with others

    compoundIO

    If compound node was exported to some package, it will appear in node box

    compoundIO

  • Python node

    Write whatever code directly into a node

    pythonNode

  • Python node import/export

    Share python nodes with others

    pythonNode

    If python node was exported to some package, it will appear in node box

    pythonNode

  • Fast node generation from functions

    Single decorator to expose node from function

    pythonNode pythonNode

  • Package loading from arbitrary locations

    Packages can be loaded from provided list of directories. It can be your development folder or folder in network drive inside your studio

  • Graph commenting

    • Comment node

      commentNode

    • Sticky node

      stickyNode

  • Custom input system

    If you got used to specific keymap of your software of choice, you can easily remap PyFlow input actions

    input

  • Drop on wire

    Automatically сonnect the node by dragging it onto the wire

    input

  • Photoshop-like history

    Easy to use powerful undo system

    history

    By a single line call

    historyApi

  • Property view

    Modify node and pins attributes using property panels

    historyApi

  • Variables

    Save arbitrary data into a variables

    historyApi

  • Editable shareable themes

    Create and share themes with others

    historyApi

  • Data importers/exporters

    Editor data can be exported/imported to/from arbitrary format

  • Command line interface

    cmdHelp

    Exported programs can be edited and evaluated from command line without gui

    cmdAddition cmdHelp

  • Convenient wires interaction

    wiresConnect

  • Wire styles

    wiresConnect

    wiresConnect

    wiresConnect

  • Node deprecation flag

    Tell users to update their programs

    deprecated deprecated

  • Widgets library

    • Sliders

      Custom Houdini style sliders, value draggers, ramp widgets

      historyApi

    • Properties framework

      Custom widgets for property panels. Collapsible categories, search field

    • Input framework

      Custom widgets for mouse, keyboard capture

  • Plugin wizards framework

    Generate package template to start development. Or create own wizard for your module

  • Easy configuration files framework

    While adding own modules you probably want to have some configuration data. We provide easy to use api for this

And more..

Getting Started

We have documentation

Contributing

See CONTRIBUTING.md

Versioning

We use a semantic versioning policy.

Authors

See also the list of contributors who participated in this project.

Discussion

Join us to our discord channel and ask anything related to project!

3D plotting and mesh analysis through a streamlined interface for the Visualization Toolkit (VTK)

PyVista Deployment Build Status Metrics Citation License Community 3D plotting and mesh analysis through a streamlined interface for the Visualization

PyVista 1.6k Jan 08, 2023
Python support for Godot 🐍🐍🐍

Godot Python, because you want Python on Godot ! The goal of this project is to provide Python language support as a scripting module for the Godot ga

Emmanuel Leblond 1.4k Jan 04, 2023
Seismic Waveform Inversion Toolbox-1.0

Seismic Waveform Inversion Toolbox (SWIT-1.0)

Haipeng Li 98 Dec 29, 2022
Make scripted visualizations in blender

Scripted visualizations in blender The goal of this project is to script 3D scientific visualizations using blender. To achieve this, we aim to bring

Praneeth Namburi 10 Jun 01, 2022
Area-weighted venn-diagrams for Python/matplotlib

Venn diagram plotting routines for Python/Matplotlib Routines for plotting area-weighted two- and three-circle venn diagrams. Installation The simples

Konstantin Tretyakov 400 Dec 31, 2022
Python histogram library - histograms as updateable, fully semantic objects with visualization tools. [P]ython [HYST]ograms.

physt P(i/y)thon h(i/y)stograms. Inspired (and based on) numpy.histogram, but designed for humans(TM) on steroids(TM). The goal is to unify different

Jan Pipek 120 Dec 08, 2022
Simulation du problème de Monty Hall avec Python et matplotlib

Le problème de Monty Hall C'est un jeu télévisé où il y a trois portes sur le plateau de jeu. Seule une de ces portes cache un trésor. Il n'y a rien d

ETCHART YANG 1 Jan 06, 2022
Realtime Web Apps and Dashboards for Python and R

H2O Wave Realtime Web Apps and Dashboards for Python and R New! R Language API Build and control Wave dashboards using R! New! Easily integrate AI/ML

H2O.ai 3.4k Jan 06, 2023
A Scheil-Gulliver simulation tool using pycalphad.

scheil A Scheil-Gulliver simulation tool using pycalphad. import matplotlib.pyplot as plt from pycalphad import Database, variables as v from scheil i

pycalphad 6 Dec 10, 2021
Visualization of hidden layer activations of small multilayer perceptrons (MLPs)

MLP Hidden Layer Activation Visualization To gain some intuition about the internal representation of simple multi-layer perceptrons (MLPs) I trained

Andreas Köpf 7 Dec 30, 2022
This is simply repo for line drawing rendering using freestyle in Blender.

blender_freestyle_line_drawing This is simply repo for line drawing rendering using freestyle in Blender. how to use blender2935 --background --python

MaxLin 3 Jul 02, 2022
Pretty Confusion Matrix

Pretty Confusion Matrix Why pretty confusion matrix? We can make confusion matrix by using matplotlib. However it is not so pretty. I want to make con

Junseo Ko 5 Nov 22, 2022
Uniform Manifold Approximation and Projection

UMAP Uniform Manifold Approximation and Projection (UMAP) is a dimension reduction technique that can be used for visualisation similarly to t-SNE, bu

Leland McInnes 6k Jan 08, 2023
Custom ROI in Computer Vision Applications

EasyROI Helper library for drawing ROI in Computer Vision Applications Table of Contents EasyROI Table of Contents About The Project Tech Stack File S

43 Dec 09, 2022
Simple spectra visualization tool for astronomers

SpecViewer A simple visualization tool for astronomers. Dependencies Python = 3.7.4 PyQt5 = 5.15.4 pyqtgraph == 0.10.0 numpy = 1.19.4 How to use py

5 Oct 07, 2021
Print matplotlib colors

mplcolors Tired of searching "matplotlib colors" every week/day/hour? This simple script displays them all conveniently right in your terminal emulato

Brandon Barker 32 Dec 13, 2022
A Graph Learning library for Humans

A Graph Learning library for Humans These novel algorithms include but are not limited to: A graph construction and graph searching class can be found

Richard Tjörnhammar 1 Feb 08, 2022
Python package for hypergraph analysis and visualization.

The HyperNetX library provides classes and methods for the analysis and visualization of complex network data. HyperNetX uses data structures designed to represent set systems containing nested data

Pacific Northwest National Laboratory 304 Dec 27, 2022
📊 Extensions for Matplotlib

📊 Extensions for Matplotlib

Nico Schlömer 519 Dec 30, 2022
A simple interpreted language for creating basic mathematical graphs.

graphr Introduction graphr is a small language written to create basic mathematical graphs. It is an interpreted language written in python and essent

2 Dec 26, 2021