Create a "getting started" tutorial
Is your feature request related to a problem? Please describe. https://github.com/Point72/csp/wiki/0.-Introduction has great explanatory content. However, it can be too deep for first-time users who want to quickly learn the basics and try some examples.
Describe the solution you'd like Have a more condensed “Getting started” tutorial with only the basic concepts and link to more detailed contents.
Additional context Originally proposed by @melissawm, who also created the initial outline.
Tentative outline of topics to cover:
- Quick intro to Stream Processing and CSP
- Installation
- (when available on pip/conda-forge)
- Fundamentals
- Explained with e_02_show_graph (update example with narrative comments & docstrings)
- https://github.com/Point72/csp/wiki/0.-Introduction#graph-building-concepts
- Note the declarative-style and type-enforcement
csp.runshould be called with a graph, constructed with@csp.graph. The graph will contain@csp.nodes, and describes how the nodes will tick.csp.show_graph- view the graph- Real-time vs. Simulated input
- Engine time https://github.com/Point72/csp/wiki/0.-Introduction#engine-time
-
csp.now- Ticking
- Graph and Nodes
- Explained with example-01 (Update example with narrative comments & docstrings)
- Basics
@csp.graphAPI- https://github.com/Point72/csp/wiki/0.-Introduction#anatomy-of-a-cspgraph
- Graph propagation https://github.com/Point72/csp/wiki/0.-Introduction#graph-propagation-and-single-dispatch
- Collecting graph outputs https://github.com/Point72/csp/wiki/0.-Introduction#collecting-graph-outputs
@csp.node, operations and data types (connection with c++)- Base nodes https://github.com/Point72/csp/wiki/1.-Generic-Nodes-(csp.baselib)#base-nodes
- https://github.com/Point72/csp/wiki/0.-Introduction#anatomy-of-a-cspnode
- Link to https://github.com/Point72/csp/blob/main/csp/examples/e_99_csp_nand_computer.py
- Adapters
- how they allow extension to other data types and data models
- cross-ref parquet adapter example for I/O & 3. Adapters
Note:
- Information in Introduction will either be moved or cross-links will be added, as relevant. We can also consider re-naming "Introduction" to "CSP Concepts".
- Out of scope:
csp.stats,csp.feedback,baskets
Some comments:
csp.run should be called with a graph, constructed with @csp.graph. The graph will contain @csp.nodes, and describes how the nodes will tick.
I would word that as "how the nodes are connected"
- If we think show graph ( e_02 ) is a better started example ( I think it is ) we should rename it to e_01. btw im very open to renaming these examples, i really hate the e_NN_ prefix but its the only way i know of to keep them ordered with a progression
Graph propagation https://github.com/Point72/csp/wiki/0.-Introduction#graph-propagation-and-single-dispatch
this is a bit misleading as its under the csp.graph API portion. Dispatch doesn't apply to a csp.graph necessarily, its really the entire over all graph / engine propagation
- Can we rename "Base nodes" to "Basic nodes". Base can imply they are base classes which can be confusing: https://github.com/Point72/csp/wiki/1.-Generic-Nodes-(csp.baselib)#base-nodes