-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Chalk-Numpy Version 3 #140
Open
srush
wants to merge
55
commits into
master
Choose a base branch
from
jaxtrans
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This is a third attempt at getting a version of Chalk-Numpy running. I am not sure it is fully compatible yet, but it seems to be getting to the point that I can run the examples without any errors.
I made an attempt to add some comments and examples, but would you mayb be free to have call at some point to discuss?
Goal:
Why?
What changed?
I removed a lot of code: Functional Envelopes / traces. All the rendering code. Shapes. Planar etc.
Added core transformations to the main code base.
Added support for jaxtyping which runtime checks shapes, and vectorization which compiles extra dimensions, throughout the code base.
Rendering code only implements matplotlib path api. (in Patch.py) this let's us remove specific renderers for svg etc. This also makes everything the same size. Text is now implemented by just producing Patch's for all backends.
Removed support for everything except arc trails. Segment now are just arc trails. No need for other shapes we previously had.
Segments / Text / Style are now all Numpy. This allows fast calculation by batching. Also allows jax compilation (which is useful for things like animations).
Layout / Envelope / Traces are implemented by collapsing diagram trees to a batch of segments. This allows efficient calculation without lots of slow python function calls. The one downside of this is that it breaks
pad
and some of the other functional transforms.Diagam is now a PyTree which support the
jax.tree.map
functionality. This works both for numpy and jax. Eventually we can switch to optree which is a fast functional tree object that doesn't require jax.Support for batch diagrams. This just means that you can create diagrams with arbitrary sizes and then collapse them by calling
circle(np.arange(1, 5)).hcat()
. This was a bit tricky to implement and requires keeping an explicit order when collapsing compound diagrams. The main new construct is theComposeAxis()
node type which is added with calls to concat.What's missing?
Mostly the example diagrams work and are pretty fast.