Skip to content

Releases: wmayner/pyphi

0.5.0

02 Mar 20:16
Compare
Choose a tag to compare

DOI

Optimizations

  • Concepts are only recomputed if they could have been changed by a cut.
  • Cuts are evaluated individually, rather than in bidirectional pairs, which
    allows for better parallel performance.

API changes

  • Removed the unused validate.nodelist function.

API additions

  • The new configuration option ASSUME_CUTS_CANNOT_CREATE_NEW_CONCEPTS gives
    an approximation of 𝚽 by only recomputing concepts that exist in the
    unpartitioned constellation. This is much faster in certain cases.
  • The methods used in determining whether a cut could effect a concept are
    exposed via the utils module as:
    • utils.cut_mechanism_indices
    • utils.cut_concepts
    • utils.uncut_concepts
  • Added the pyphi.Subsystem.connections_relevant_for_concept method.
  • Added the pyphi.Subsystem.cut_matrix property.

Fixes

  • pyphi.compute.main_complex now returns an empty BigMip if there are no
    proper complexes.
  • No longer using LRU-caches implemented as a circular, doubly-linked list;
    this was causing a huge number of recursive calls when pickling a Subsystem
    object (since caches are stored on subsystems since v0.3.6) as pickle
    traversed the (potentially very large) cache.
  • pyphi.json.make_encodable now properly handles NumPy numeric types.

0.4.0

24 Feb 01:52
Compare
Choose a tag to compare

DOI

Optimizations

  • compute.big_mip is faster for reducible networks when executed in parallel;
    it returns immediately upon finding a reducible cut, rather than evaluating
    all cuts. NOTE: This introduces a race condition in cases where there is
    more than one reducible cut; there is no guarantee as to which cut will be
    found first and returned.
  • compute.complexes prunes out subsystems that contain nodes without either
    inputs or outputs (any subsystem containing such a node must necessarily have
    zero 𝚽).

API changes

  • compute.complexes: returns only irreducible MIPs; see optimizations.
  • compute.big_mip
    • New race condition with cuts; see optimizations.
    • The single-node and null BigMip's constellations are now empty tuples
      instead of empty lists and None, respectively.
  • models.Concept.eq_repertoires no longer ensures that the networks of each
    concept are equal; it only checks if the repertoires are the same.

API additions

  • compute.all_complexes returns the BigMip of every subsystem in the
    network's powerset (including reducible ones).
  • compute.possible_main_complexes returns the subsystems that survived the
    pruning described above.

Fixes

  • Network tests.

Refactor

  • Network attributes. They're now implemented as properties (with getters and
    setters) to facilitate changing them properly. It should be possible to use
    the same network object with different states.
  • Network state validation.
  • utils.phi_eq is used wherever possible instead of direct comparisons to
    constants.EPSILON.

0.3.8

20 Feb 21:27
Compare
Choose a tag to compare

DOI

  • Choosing the minimal MIP in pyphi.compute.big_mip is now more
    deterministic.
  • When comparing BigMips with > and <, the 𝚽-values are compared only up
    to config.PRECISION.
  • BigMips are now truthy if their 𝚽 is greater than or equal to
    config.EPSILON (previously was strictly greater than).

0.3.7

20 Feb 17:22
Compare
Choose a tag to compare

DOI

  • BigMips and Concepts now have their calculation time in the time
    attribute. BigMips also have the attribute small_phi_time, which gives
    the total time taken to calculate all concepts (not just the ones that
    exist).
  • If PARALLEL_CUT_EVALUATION is set to false, the cut evaluation will short-circuit as soon as a MIP of zero 𝚽 is found.
  • Fixed models._numpy_aware_eq, which failed when comparing two iterables where
    one is a prefix of the other.
  • Fixed models.Concept.location, which raised an error when the
    concept's cause or effect was None.

0.3.6

17 Feb 21:56
Compare
Choose a tag to compare

DOI

  • LRU-caches for cause and effect repertoires are now local to the Subsystem, improving memory performance, especially in cases where many different subsystems are being analyzed in the same script.
  • Precomputed hamming matrices for up to 9 nodes are now distributed with the PyPhi package, rather than being computed every time. If you're working with more than 9 nodes, be sure to precompute the hamming matrices and add them to your PyPhi installation's data/hamming_matrices directory.

0.3.4

11 Feb 20:50
Compare
Choose a tag to compare

DOI

Removed LRU caching on all pyphi.compute methods.

For long computations involving many networks, the compute module's caches
would begin to fill up the available memory, leaving no space for the much more
useful cause and effect repertoire caches.

This will be more comprehensively addressed in future releases.

0.3.3

05 Feb 17:43
Compare
Choose a tag to compare

DOI

  • Fixed strong connectivity check.
  • Added support for expanding repertoires over a particular purview.

0.3.2

05 Feb 16:32
Compare
Choose a tag to compare

DOI

  • Added configuration option for filesystem-caching verbosity.
  • If any options are missing in the configuration file, they will gracefully fall back to the defaults.

0.3.1

22 Jan 23:20
Compare
Choose a tag to compare

DOI

Network state validation is configurable (and disabled by default).

0.3.0

21 Jan 00:30
Compare
Choose a tag to compare

DOI

Added support for nondeterministic TPMs.