Skip to content

0.9.0

Compare
Choose a tag to compare
@wmayner wmayner released this 05 Dec 00:24
· 1847 commits to feature/iit-4.0 since this release
0.9.0

API changes

  • Many functions have been refactored to different modules; see the "Refactor" section for details.
  • compute.possible_complexes no longer includes the empty subsystem.
  • Made is_cut a property.
  • Renamed macro.list_all_partitions and macro.list_all_groupings to all_partitions and all_groupings. Both are now generators and return nested tuples instead of lists.
  • Moved macro.make_mapping to CoarseGrain.make_mapping.
  • Moved macro.make_macro_tpm to CoarseGrain.macro_tpm.
  • Added blackbox functionality to macro.emergence. Blackboxing and coarse- graining are now parametrized with the blackbox and coarse_grain arguments.
  • Removed utils.submatrix.
  • Made Network.tpm and Network.cm immutable properties.
  • Removed the purview argument from Subsystem.expand_repertoire.
  • Moved validate.StateUnreachableError and macro.ConditionallyDependentError to the exceptions module.
  • Removed perturbation vector support.
  • Changed tpm.marginalize_out to take a list of indices.
  • Fixed macro.effective_info to use the algorithm from the macro-micro paper.
  • Replace constants.DIRECTIONS, constants.PAST, and constants.FUTURE with a proper Enum class: constants.Direction. Past and future are now represented by constants.Direction.PAST and constants.Direction.FUTURE.
  • Simplifed logging config to use config.LOG_STDOUT_LEVEL, config.LOG_FILE_LEVEL and config.LOG_FILE.
  • Removed the location property of Concept.

API Additions

  • Added subsystem.evaluate_partition. This returns the φ for a particular partition.
  • Added config.MEASURE to choose between EMD, KLD, or L1 for distance computations.
  • Added macro.MacroSubsystem. This subclass of Subsystem is used to performs macro computations.
  • Added macro.CoarseGrain to represent coarse-grainings of a system.
  • Added macro.Blackbox to represent system blackboxes.
  • Added validate.blackbox and validate.coarse_grain.
  • Added macro.all_coarse_grains and macro.all_blackboxes generators.
  • Added Subsystem.cut_indices property.
  • Added Subsystem.cm connectivity matrix alias.
  • Added utils.all_states, a generator over all states of an n-element system.
  • Added tpm.is_state_by_state for testing whether a TPM is in state-by-state format.
  • Network now takes an optional node_labels argument, allowing nodes to be referenced by a canonical name other than their indices. The nodes of a Subsystem can now be specified by either their index or their label.
  • Added models.normalize_constellation for deterministically ordering a constellation.
  • Added a Makefile.
  • Added an exceptions module.
  • Added distribution.purview for computing the purview of a repertoire.
  • Added distribution.repertoire_shape.
  • Added config.PARTITION_TYPE to control the ways in which φ-partitions are generated.
  • Added more functions to the convert module:
    • holi2loli and loli2holi convert decimal indices between HOLI and LOLI formats.
    • holi2loli_state_by_state and loli2holi_state_by_state convert between HOLI and LOLI formats for state-by-state TPMs.
    • Added short aliases for some functions:
      • h2l is holi2loli
      • l2h is loli2holi
      • l2s is loli_index2state
      • h2s is holi_index2state
      • s2h is state2loli_index
      • s2l is state2holi_index
      • h2l_sbs is holi2loli_state_by_state
      • l2h_sbs is loli2holi_state_by_state
      • sbn2sbs is state_by_node2state_by_state
      • sbs2sbn is state_by_state2state_by_node
  • Added the Constellation.mechanisms, Constellation.labeled_mechanisms, and Constellation.phis properties.
  • Add BigMip.print method with optional constellations argument that allows omitting the constellations.

Refactor

  • Refactored the utils module into the connectivity, distance, distribution, partition, timescale, and tpm modules.
  • Existing macro coarse-grain logic to use MacroSubsystem and CoarseGrain.
  • Improved string representations of PyPhi objects.
  • Refactored JSON support. The jsonify module now dumps PyPhi models to a a format which can be loaded to reproduce the full object graph of PyPhi objects. This causes backwards incompatible changes to the JSON format of some model representations.
  • Refactored pyphi.config to be an object. Added validation and callbacks for config options.

Optimizations

  • Added an analytic solution for the EMD computation between effect repertoires.
  • Improved the time complexity of directed_bipartition_of_one from exponential to linear.

Documentation

  • Updated documentation and examples to reflect changes made to the macro API and usage.
  • Added documentation pages for new modules.