Skip to main content

The Python toolkit for computing with string diagrams.

Project description

Snake equation

DisCoPy

build readthedocs PyPI version DOI: 10.4204/EPTCS.333.13

DisCoPy is a Python toolkit for computing with string diagrams.

DisCoPy began as an implementation of DisCoCat and QNLP. This has now become its own library: lambeq.

Features

Example: Cooking

This example is inspired from Pawel Sobocinski's blog post Crema di Mascarpone and Diagrammatic Reasoning.

from discopy.symmetric import Ty as Ingredient, Box as Step, Diagram as Recipe

egg, white, yolk = Ingredient("egg"), Ingredient("white"), Ingredient("yolk")
crack = Step("crack", egg, white @ yolk)
merge = lambda x: Step("merge", x @ x, x)

# DisCoPy allows string diagrams to be defined as Python functions

@Recipe.from_callable(egg @ egg, white @ yolk)
def crack_two_eggs(left_egg, right_egg):
    left_white, left_yolk = crack(left_egg)
    right_white, right_yolk = crack(right_egg)
    return (merge(white)(left_white, right_white),
            merge(yolk)(left_yolk, right_yolk))

# ... or in point-free style using parallel (@) and sequential (>>) composition

assert crack_two_eggs == crack @ crack\
  >> white @ Recipe.swap(yolk, white) @ yolk\
  >> merge(white) @ merge(yolk)

crack_two_eggs.draw()

crack_two_eggs.draw()

Quickstart

pip install discopy

If you want to see DisCoPy in action, check out the QNLP tutorial!

Contribute

We're keen to welcome new contributors!

First, read the contributing guidelines. Then get in touch on Discord or open an issue.

How to cite

If you used DisCoPy in the context of an academic publication, we suggest you cite:

  • G. de Felice, A. Toumi & B. Coecke, DisCoPy: Monoidal Categories in Python, EPTCS 333, 2021, pp. 183-197, DOI: 10.4204/EPTCS.333.13

If furthermore your work is related to quantum computing, you can also cite:

  • A. Toumi, G. de Felice & R. Yeung, DisCoPy for the quantum computer scientist, arXiv:2205.05190

If you use any of the recent features (e.g. Hypergraph) you should also mention:

  • A. Toumi, R. Yeung, B. Poór & G. de Felice, DisCoPy: the Hierarchy of Graphical Languages in Python arXiv:2311.10608

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

discopy-1.1.7.tar.gz (3.7 MB view details)

Uploaded Source

Built Distribution

discopy-1.1.7-py3-none-any.whl (149.0 kB view details)

Uploaded Python 3

File details

Details for the file discopy-1.1.7.tar.gz.

File metadata

  • Download URL: discopy-1.1.7.tar.gz
  • Upload date:
  • Size: 3.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.18

File hashes

Hashes for discopy-1.1.7.tar.gz
Algorithm Hash digest
SHA256 fe85080704a06994c2c25fea8da8da237d0b966fafedf01b264a1a859cfd1bc2
MD5 69ddb1472496b111d761dc434e508cf1
BLAKE2b-256 632a2f1ac02e8d389ffebbcf83b757084d39c866434b56190b51e337e633ffb3

See more details on using hashes here.

File details

Details for the file discopy-1.1.7-py3-none-any.whl.

File metadata

  • Download URL: discopy-1.1.7-py3-none-any.whl
  • Upload date:
  • Size: 149.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.18

File hashes

Hashes for discopy-1.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 1fe0027f6d48e1894cdc2fbc4beb2e0601c136cccc8561a30561f3b2c69b58c9
MD5 564e54235677837dfe530414cedcbe88
BLAKE2b-256 549801f757e159ee17d8606081ab6113f32489bdcd541892502b4d8eeb24d15d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page