# cadCAD Release Plan ## Types of model data input-output: - Single Input, Single Ouput (SISO) - Single Input, Multiple Output (SIMO) - Multiple Input, Single Oupit (MISO) - Multiple Input, Multiple Output (MIMO) ## Milestones: - early preview SISO - Canonical GDS - PyCon ## Features Breakdown for each Release ### SISO - ready for external feedback - series composition Release Notes first alpha can do SISO blocks - only be concatenated in series example: ```python @block def isValidParticle(domain:Point[Particle])-> Point[Bit]: dx= domain['vel']['x'] dy= domain['vel']['y'] vmax = domain['maxspeed'] output = {'bit':bool(dx**2+dy**2<=vmax**2)} return Point(Bit, output) ``` In order to make a cadCAD Model: 1. Define the state space 2. Define the state transition blocks containing logic for the state transitions 3. Define the experiment object: - intial state that is a point in the defined state space from step 1 - a key-value pair python dictonary with experiment parameters: - a string key called "steps", set by an integer for the number of steps for each run - "iteration_n", set by an integer for the number of sequential simulations on the same experiment - A tuple of blocks which defines a serial pipeline of state transition blocks (from step 2) 8. You can run the experiment by executing the .run method on the experiment object 9. The result is a result matrix, where each line is a trajectory corresponding to a simulation you have defined ### Canonical GDS - Decorator based MISO - Hybrid composition - compose blocks, assert same domain, and pass same point (SIMO) - x -> g(x)=U ### PyCon Release (April) - BETA - Domain Specific Langauge - small formal language to encode syntax and semantics for pipeline of blocks - encodes what is needed for serial and parallel composition of any kind of block (SISO, SIMO, MISO, MIMO) - modular syntax, grammar (each bit has meaning as individual strings) - reduces uncertainty by lowering to a series of block calls in compilation - rules of block pipeline - point validity on space of the dynamics - engine langauge agnostic (python, rust, julia) - enables higher level functionality and features - enables visual cadCAD - UX sugar stack - eg, tooling that can write the DSL for users like visual cadCAD with block diagrams writiing the blocks - parallel composition - check with Zargham: of mutliple SISOs? - yields MIMO - Parameter blocks - building blocks - compiler work - experiment tools