{"action":"published","release":{"url":"https://api.github.com/repos/wmayner/pyphi/releases/980814","assets_url":"https://api.github.com/repos/wmayner/pyphi/releases/980814/assets","upload_url":"https://uploads.github.com/repos/wmayner/pyphi/releases/980814/assets{?name}","html_url":"https://github.com/wmayner/pyphi/releases/tag/0.4.0","id":980814,"tag_name":"0.4.0","target_commitish":"develop","name":"0.4.0","draft":false,"author":{"login":"wmayner","id":1775632,"avatar_url":"https://avatars.githubusercontent.com/u/1775632?v=3","gravatar_id":"","url":"https://api.github.com/users/wmayner","html_url":"https://github.com/wmayner","followers_url":"https://api.github.com/users/wmayner/followers","following_url":"https://api.github.com/users/wmayner/following{/other_user}","gists_url":"https://api.github.com/users/wmayner/gists{/gist_id}","starred_url":"https://api.github.com/users/wmayner/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wmayner/subscriptions","organizations_url":"https://api.github.com/users/wmayner/orgs","repos_url":"https://api.github.com/users/wmayner/repos","events_url":"https://api.github.com/users/wmayner/events{/privacy}","received_events_url":"https://api.github.com/users/wmayner/received_events","type":"User","site_admin":false},"prerelease":false,"created_at":"2015-02-24T01:51:45Z","published_at":"2015-02-24T01:52:23Z","assets":[],"tarball_url":"https://api.github.com/repos/wmayner/pyphi/tarball/0.4.0","zipball_url":"https://api.github.com/repos/wmayner/pyphi/zipball/0.4.0","body":"### Optimizations:\r\n- `compute.big_mip` is faster for reducible networks when executed in parallel;\r\n  it returns immediately upon finding a reducible cut, rather than evaluating\r\n  all cuts. **NOTE:** This introduces a race condition in cases where there is\r\n  more than one reducible cut; there is no guarantee as to which cut will be\r\n  found first and returned.\r\n- `compute.complexes` prunes out subsystems that contain nodes without either\r\n  inputs or outputs (any subsystem containing such a node must necessarily have\r\n  zero Φ).\r\n\r\n### API changes:\r\n- `compute.complexes`: returns only irreducible MIPs; see optimizations.\r\n- `compute.big_mip`\r\n  - New race condition with cuts; see optimizations.\r\n  - The single-node and null `BigMip`'s constellations are now empty tuples\r\n    instead of empty lists and `None`, respectively.\r\n- `models.Concept.eq_repertoires` no longer ensures that the networks of each\r\n  concept are equal; it only checks if the repertoires are the same.\r\n\r\n### API additions:\r\n- `compute.all_complexes` returns the `BigMip` of every subsystem in the\r\n  network's powerset (including reducible ones).\r\n- `compute.possible_main_complexes` returns the subsystems that survived the\r\n  pruning described above.\r\n\r\n### Refactored:\r\n- Network attributes. They're now implemented as properties (with getters and\r\n  setters) to facilitate changing them properly. It should be possible to use\r\n  the same network object with different states.\r\n- Network state validation.\r\n- `utils.phi_eq` is used wherever possible instead of direct comparisons to\r\n  `constants.EPSILON`.\r\n\r\n### Fixed:\r\n- Network tests."}}