csa: Connection-set algebra (CSA) library

[ algebra, library ] [ Propose Tags ]

Library for algebraic connection-set expressions, built on M. Djurfeldt's idea of connection-set algebra [1].

1: Mikael Djurfeldt. The Connection-set Algebra: a formalism for the representation of connectivity structure in neuronal network models, implementations in Python and C++, and their use in simulators, BMC Neuroscience, 2011. https://doi.org/10.1186/1471-2202-12-S1-P80

[Skip to Readme]
Versions 0.1.0
Change log CHANGELOG.md
Dependencies base (>=4.10.0 && <5), hmatrix [details]
License LicenseRef-GPL
Author Jens Egholm Pedersen
Maintainer Jens Egholm Pedersen
Category Algebra
Home page https://github.com/volr/csa#readme
Bug tracker https://github.com/volr/csa/issues
Source repo head: git clone https://github.com/volr/csa
Uploaded by jegp at Fri Jun 22 15:17:31 UTC 2018
Distributions NixOS:0.1.0
Downloads 43 total (14 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2018-06-22 [all 1 reports]
Hackage Matrix CI




Maintainer's Corner

For package maintainers and hackage trustees

Readme for csa-0.1.0

[back to package description]

Connection-set algebra (CSA) library

A library for constructing connection matrices between two collections of elements. Inspired by Mikael Djurfeldt's article from 2012 (Neuroinformatics).


Connection-set algebra is a powerful algebra for describing connections between two elements. This library provides a syntax tree for modeling the set operations, as well as a means to transform the operations into adjacency matrices.


This is a library and not an executable. Clone the repository, enter it and run stack build (requires stack).

Connection-set algebra (CSA)

Say that you have two nodes that connect to each other. In a adjacency matrix this can be described as a full connection like so:

    1 2
  + ———
1 | 1 1
2 | 1 1

In CSA this is simply an AllToAll connection. Similarly a OneToOne connection describes the following adjacency matrix:

    1 2
  + ———
1 | 1 0
2 | 0 1

And here is the algebra part: If we say AllToAll - OneToOne we get:

    1 2
  + ———
1 | 0 1
2 | 1 0


Jens Egholm jensegholm@protonmail.com