csp icon indicating copy to clipboard operation
csp copied to clipboard

Create a "getting started" tutorial

Open pavithraes opened this issue 1 year ago • 2 comments

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.

pavithraes avatar Feb 12 '24 13:02 pavithraes

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.run should 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.graph API
      • 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++)
  • 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

pavithraes avatar Feb 14 '24 17:02 pavithraes

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

robambalu avatar Feb 20 '24 18:02 robambalu