All Projects → zekeriyasari → Causal.jl

zekeriyasari / Causal.jl

Licence: other
Causal.jl - A modeling and simulation framework adopting causal modeling approach.

Programming Languages

julia
2034 projects

Projects that are alternatives of or similar to Causal.jl

Flowbase
A Flow-based Programming inspired micro-framework / un-framework for Go (Golang)
Stars: ✭ 129 (+84.29%)
Mutual labels:  flow-based-programming
cocoon-demo
Cocoon – a flow-based workflow automation, data mining and visual analytics tool.
Stars: ✭ 19 (-72.86%)
Mutual labels:  flow-based-programming
Fractalide
Reusable Reproducible Composable Software
Stars: ✭ 670 (+857.14%)
Mutual labels:  flow-based-programming
Vworkflows
Flow Visualization Library for JavaFX and VRL-Studio
Stars: ✭ 226 (+222.86%)
Mutual labels:  flow-based-programming
Blackprint
A general purpose visual programming. This is the main repository for Blackprint that contains source code of cable, node, and container sketch for visualization.
Stars: ✭ 68 (-2.86%)
Mutual labels:  flow-based-programming
nodify
High performance and modular controls for node-based editors designed for data-binding and MVVM.
Stars: ✭ 282 (+302.86%)
Mutual labels:  flow-based-programming
React Flow Editor
React component which enables creating flow editors with ease
Stars: ✭ 110 (+57.14%)
Mutual labels:  flow-based-programming
Plumber
The General-Purpose Cross-Language Dataflow Programming
Stars: ✭ 26 (-62.86%)
Mutual labels:  flow-based-programming
dspatch
The Refreshingly Simple Cross-Platform C++ Dataflow / Pipelining / Stream Processing / Reactive Programming Framework
Stars: ✭ 124 (+77.14%)
Mutual labels:  flow-based-programming
Rpd
👌 A Minimal Engine for creating Node-Based Visual Programming User Interfaces
Stars: ✭ 370 (+428.57%)
Mutual labels:  flow-based-programming
Warewolf
Effortless Microservice Design and Integration. This repository includes the code-base for the Warewolf Studio and Server.
Stars: ✭ 238 (+240%)
Mutual labels:  flow-based-programming
flow-synth
*UNMAINTAINED* A modular digital audio workstation for synthesis, sequencing, live coding, visuals, etc
Stars: ✭ 36 (-48.57%)
Mutual labels:  flow-based-programming
Pythonocc-nodes-for-Ryven
Pythonocc nodes for Ryven
Stars: ✭ 14 (-80%)
Mutual labels:  flow-based-programming
Phpflo
Flow-based programming for PHP
Stars: ✭ 199 (+184.29%)
Mutual labels:  flow-based-programming
Drawflow
Simple flow library 🖥️🖱️
Stars: ✭ 730 (+942.86%)
Mutual labels:  flow-based-programming
Dffml
The easiest way to use Machine Learning. Mix and match underlying ML libraries and data set sources. Generate new datasets or modify existing ones with ease.
Stars: ✭ 123 (+75.71%)
Mutual labels:  flow-based-programming
flowd
An inter-language runtime for flow-based programming (FBP)
Stars: ✭ 18 (-74.29%)
Mutual labels:  flow-based-programming
Fgbase
Ready-send coordination layer on top of goroutines.
Stars: ✭ 45 (-35.71%)
Mutual labels:  flow-based-programming
Rete
JavaScript framework for visual programming and creating node editor
Stars: ✭ 7,156 (+10122.86%)
Mutual labels:  flow-based-programming
Noflo
Flow-based programming for JavaScript
Stars: ✭ 3,202 (+4474.29%)
Mutual labels:  flow-based-programming

Causal

Stable Dev Build Status Build Status Codecov Coveralls version

NOTE: This package was formerly called as Jusdl.jl. v0.2.1 is the last version of Jusdl. No further updates will be available for Jusdl. For further updates, please add Causal.jl.

Causal.jl focusses on effective systems simulations together with online and offline data analysis. In Causal, it is possible to simulate discrete time and continuous time, static or dynamical systems. In particular, it is possible to simulate dynamical systems modeled by different types of differential equations such as ODE (Ordinary Differential Equation), Random Ordinary Differential Equation (RODE), SDE (Stochastic Differential Equation), DDE (Delay Differential Equation) and DAE (Differential Algebraic Equation), and discrete difference equations. During the simulation, the data flowing through the links of the model can processed online and specialized analyzes can be performed. These analyzes can also be enriched with plugins that can easily be defined using the standard Julia library or various Julia packages. The simulation is performed by evolving the components of the model individually and in parallel in sampling time intervals. The individual evolution of the components allows the simulation of the models including the components that are represented by different kinds of mathematical equations.

Features

  • Simulation of a large class of systems:
    • Static systems (whose input, output relation is represented by a functional relation)
    • Dynamical systems (whose input, state and output relation is represented by difference or differential equations[1]).
      • Dynamical systems modelled by continuous time differential equations: ODE, DAE, RODE, SDE, DDE.
      • Dynamics systems modelled by discrete time difference equations.
  • Simulation of models consisting of components that are represented by different type mathematical equations.
  • Individual construction of components, no need to construct a unique equation representing the whole model.
  • Online data analysis through plugins
  • Flexibility to enrich the data analysis scope through user-defined plugins.

[1] : DifferentialEquations.jl package is used for differential equation solving.

Installation

Enter the Pkg REPL by pressing ] from the Julia REPL and then add Causal:

] add Causal

A First Look

Consider following simple model.

Closed Loop System

Note that the model consists of connected components. In this example, the components are the sinusoidal wave generator, an adder, a dynamical system. The writer is included in the model to save simulation data. By using Causal, the model is simulated as follows:

using Causal 

# Describe model 
@defmodel model begin
    @nodes begin 
        gen = SinewaveGenerator(amplitude=1., frequency=1/2π) 
        adder = Adder(signs=(+, -)) 
        ds = ContinuousLinearSystem(state=[1.])
        writer = Writer(input=Inport(2)) 
    end 
    @branches begin 
        gen[1] => adder[1] 
        adder[1] => ds[1]
        ds[1] => adder[2] 
        ds[1] => writer[1]
        gen[1] => writer[2]
    end
end

# Simulate the model 
tinit, tsample, tfinal = 0., 0.01, 10. 
sim = simulate!(model, tinit, tsample, tfinal)

# Read and plot data 
t, x = read(getnode(model, :writer).component)
t, x = read(getnode(model, :writer).component)
using Plots
plot(t, x[:, 1], label="r(t)", xlabel="t")
plot!(t, x[:, 2], label="y(t)", xlabel="t")
plot!(t, 6 / 5 * exp.(-2t) + 1 / 5 * (2 * sin.(t) - cos.(t)), label="Analytical Solution")
[ Info: 2020-05-04T23:32:00.338 Started simulation...
[ Info: 2020-05-04T23:32:00.338 Inspecting model...
┌ Info:         The model has algrebraic loops:[[2, 3]]
└               Trying to break these loops...
[ Info:         Loop [2, 3] is broken
[ Info: 2020-05-04T23:32:00.479 Done.
[ Info: 2020-05-04T23:32:00.479 Initializing the model...
[ Info: 2020-05-04T23:32:01.283 Done...
[ Info: 2020-05-04T23:32:01.283 Running the simulation...
Progress: 100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████| Time: 0:00:00
[ Info: 2020-05-04T23:32:01.469 Done...
[ Info: 2020-05-04T23:32:01.469 Terminating the simulation...
[ Info: 2020-05-04T23:32:01.476 Done.
Readme Plot

For more information about how to use Causal, see its documentation .

Contribution

Any form of contribution is welcome. Please feel free to open an issue for bug reports, feature requests, new ideas and suggestions etc., or to send a pull request for any bug fixes.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].