Releases: wmayner/pyphi
Releases · wmayner/pyphi
0.5.0
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.nodelistfunction.
API additions
- The new configuration option
ASSUME_CUTS_CANNOT_CREATE_NEW_CONCEPTSgives
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 theutilsmodule as:utils.cut_mechanism_indicesutils.cut_conceptsutils.uncut_concepts
- Added the
pyphi.Subsystem.connections_relevant_for_conceptmethod. - Added the
pyphi.Subsystem.cut_matrixproperty.
Fixes
pyphi.compute.main_complexnow returns an emptyBigMipif 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 aSubsystem
object (since caches are stored on subsystems since v0.3.6) aspickle
traversed the (potentially very large) cache. pyphi.json.make_encodablenow properly handles NumPy numeric types.
0.4.0
Optimizations
compute.big_mipis 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.complexesprunes 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 andNone, respectively.
models.Concept.eq_repertoiresno longer ensures that the networks of each
concept are equal; it only checks if the repertoires are the same.
API additions
compute.all_complexesreturns theBigMipof every subsystem in the
network's powerset (including reducible ones).compute.possible_main_complexesreturns 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_eqis used wherever possible instead of direct comparisons to
constants.EPSILON.
0.3.8
0.3.7
BigMips andConcepts now have their calculation time in thetime
attribute.BigMips also have the attributesmall_phi_time, which gives
the total time taken to calculate all concepts (not just the ones that
exist).- If
PARALLEL_CUT_EVALUATIONis set tofalse, 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 wasNone.
0.3.6
- 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_matricesdirectory.
0.3.4
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.