cadcad-org / cadcad-ri Goto Github PK
View Code? Open in Web Editor NEWThe Reference Implementation
Home Page: https://cadcad.org
License: BSD 2-Clause "Simplified" License
The Reference Implementation
Home Page: https://cadcad.org
License: BSD 2-Clause "Simplified" License
enables pursuer/enabler
"undo #61"
AC:
Presentation: given at blockscience seminar; should be about 45-60 min + discussions with team; this will help tie our GDS/cadCAD work in with our broader research arcs on protocols, ecosystems and the role of representations of systems are part of those systems.
Write-up: intended audience is a potential contributor, who needs to see something they can get excited about contributing to. we don't need to reach everyone, we want to reach people who are aware of the limitations of existing paradigms and are interested to contribute to a new one.
Content:
AC:
=
from cadcad.compose import series
myblock = series([block1, block2])
asserts
block1.codomain == block2.domain
expects
myblock.domain == block1.domain
myblock.codomain == block2.codomain
Specifically:
dimensions
name
is_empty
AC
we need to set expectations around strong typing with an example of integers vs floats
AC:
To be broken down into small stories
AC:
AC:
domain and codomains of blocks are typed lists of space
domain and codomains methods of blocks return spaces not points
block signatures don't change
depends on #69
AC:
AC:
AC:
AC:
I would like the following to be a valid block
@space
class CartesianPlane:
x:float
y:float
@space
class Particle:
pos:CartesianPlane
vel:CartesianPlane
@block
def particleIntegrator(state: Point[Particle], input: Point[CartesianPlane])-> Point[Particle]:
#input is acceleration
#output is the new particle state
output = deepcopy(state)
output['pos']['x'] += state['particle']['vel']['x']
output['pos']['y'] += state['particle']['vel']['y']
output['vel']['x'] += input['x']
output['vel']['y'] += input['y']
return output
Additional context
I am working on the Cat & Laser pointer demo, and aiming to make the model as simple as possible. The most natural view of the systems is the below, which requires particle integrator (twice!) which requires 2 inputs to make sense.
proposing we add a method that can be applied to any space that will create a new space without one of its dimensions.
suppose
@space
class MySpace:
a: int
b: int
but then i did
MySpace = MySpace.drop_dimension('a')
the resulting space would be as if i had declared
@space
class MySpace:
b: int
duplicated by: #67
AC:
tests for #68
AC
bad domain type notation
built in names for:
Tasks
Stemming from #54
notes
enables pursuer/ evader
enables pursuer/evader
To be broken down into small stories.
AC:
AC:
proposing we add a method that can be applied to any space that will create a new space from exactly one of its dimensions.
suppose
@space
class CartesianPlane:
x: float
y: float
@space
class MySpace:
pos: CartesianPlane
vel: CartesianPlane
but then i did
MySubSpace = MySpace.subspace('pos')
the resulting space would be as if i had declared
@space
class MySubSpace:
pos: CartesianPlane
also open to just returning
CartesianPlane
if we think that is better UX
Is your feature request related to a problem? Please describe.
Deepcopy's cause problems with speed and can invariably be avoided.
Describe the solution you'd like
An implementation of @mzargham latest experiment that does not use deepcopy.
AC:
Creating a general issue for figuring out how we want to create a shared documentation between the two libraries as related to definitions of things like blocks and spaces.
Issue is resolved with us coming up with a process/space to contribute to.
last week of july
AC:
AC:
AC:
pass in a space and non-negative integer
domain: space
co-domain: same space, n copies
AC:
as a space is printed, a point of space is printed in same behavior pattern
Providing int
values will generate an Schema Mismatch on this case even though they're subset of the float
type.:
data = {"x": -5, "y": 7}
@space
class CartesianPlane:
x:float
y:float
my_point = Point(CartesianPlane, data)
CartesianPlaneDot = CartesianPlane.rename_dims({'x':'dx', 'y':'dy'})
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.