From cb76810e71596bdac01a90f1845ec6d5c2eea5a9 Mon Sep 17 00:00:00 2001 From: Caitao Zhan Date: Tue, 17 Dec 2024 19:31:21 -0600 Subject: [PATCH] [major] version 0.6.6 --- CHANGELOG.md | 330 +++++++++++++++++++++++++------------------ README.md | 2 +- docs/source/conf.py | 2 +- pyproject.toml | 4 +- sequence/__init__.py | 2 +- 5 files changed, 198 insertions(+), 142 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 18994c23..15decc24 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,109 +5,144 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [0.2.1] + + +## [0.6.6] - 2024-12-17 + ### Added -- observer functionality for entities -- README file for documentation +- Add support for Python 3.13 +- Add support for the latest Numpy (2.2), SciPy (1.14), and QuTiP (5.0) ### Changed -- some method-level docstrings -- convert all component constructors from keyword to positional arguments -- change documentation directory from `sphinx` to `docs` +- Updated the demos of the tutorial for easy of understanding. +- Updated some comments, typing, arguments, and some other minor changes. +- Changelog updates: + - Reversed the changelog, now the latest version update is at the top of the changelog, instead of previously at the bottom. + - Added the timestamp for the version updates. ### Removed -- push/pop functions for entities and non-stack protocols -- some unnecessary entity attributes +- Removed support for Python 3.9 + + +## [0.6.5] - 2024-11-20 -## [0.2.2] ### Added -- logging functionality with `log` module -- cached quantum state measurement +- Add new class BellDiagonalState for Bell Diagonal State. +- Add new Quantum Manager for Bell Diagonal State, i.e., QuantumManagerBellDiagonal. +- Add new class SingleHeralded BSM to support single heralded entanglement generation. +- Add support for time-dependent decoherence for the Bell Diagonal State in Memory class. ### Changed -- changed all quantum state representations from list to tuple -- event removal system -- example scripts now use `Timeline.seed()` method -- `Timeline` event removal method +- Remove existing handlers in logging before setting the new handler + + +## [0.6.4] - 2024-9-26 + +### Changed +- Use `Read the Docs` for documentation. Update documentation. Old documentation website becomes obsolete. +- Update comments and README.md + +### Fixed +- Fix a bug in reservation protocol and routing protocol that may lead to route for src->dst being different than dst->src when the network has same length edges. + + +## [0.6.3] - 2024-8-12 -## [0.2.3] ### Added -- quantum state manager for quantum memories -- quantum circuit class (for use with quantum memories) -- `qutip` library dependency +- We have an Icon for SeQUeNCe! +- `pip install sequence` is now available! +- `src` folder is renamed to `sequence` +- Add `sequence/constants.py` to organize the common constants +- Add support for Python 3.12 +- Add `pyproject.toml` ### Changed -- rewrite of quantum entanglement class -- change all optical channels to one-way +- Various refactoring, include but not limited to updating variable/method names, moving/deleting code, adding/rewriting comments, and making the code more succinct, etc. +- In README.md, installation with option `--editable` is encouraged. +- `logging` looks better +- In `class Reservation`, added attribute `entanglement_number` and `id` +- Update `ResourceReservationProtocol.load_rules()` +- Move `utils/json_config_generators/generator_utils.py` to `sequence/utils/config_generator.py` + +### Removed +- Removed support for Python 3.8 +- Removed `setup.py` +- Removed `MANIFEST.in` + + +## [0.6.2] -## [0.2.4] ### Added -- serialization of messages, circuits -- base classes for applications and quantum manager states -- photon loss method `Photon.add_loss()` +- Moved around and added a few files in the `examples` folder + - These are primarily for the IEEE QCE 2023 conference ### Changed -- moved all random number generation to network nodes - - includes all components and quantum manager functions - - utilizes `Entity.get_generator()` method -- reworked timeline events to handle cross-process events - - most protocols and components now use strings instead of explicit instances for classes -- tweaked process of entangelement and reservation protocols -- `EventList` structure and interface with `Timeline` -- `Timeline` timing display +- Modified the topology output of the GUI to be compatible with new topology upgrades +- Several bug fixes in the GUI + + +## [0.6.1] -## [0.3.0] ### Added -- parallel execution for the kernel module -- `parallel` directory with useful tools - - Python and C++ servers for managing parallel kernel executions - - Many examples for parallel execution -- updated documentation with parallel code -- utility files for generating network config JSON files +- Added some groundwork for future topology upgrades ### Changed -- `Topology` class has been made into a simplified base class - - `RouterNetTopo` and `QKDTopo` classes added for specific network types -- tweaked library dependencies - - added `mpi4py` and `mpi-pytest` requirements for parallel execution - - removed `json5` requirement +- made numerous bug fixes: + - BSM and optical channel components received fixes + - Some residual bugs with GUI usage have been fixed + - Error with typing in Fock quantum manager has been fixed + +### Removed +- Removed support for scipy version 1.11. This is currently causing some issues with qutip. + + +## [0.6.0] -## [0.3.1] ### Added -- `Mirror` class for simple reflection of photons - - Sends photon to another node with quantum channel connection to the local node -- Quantum++ package acknowledgement to README +- Fock state density matrix encoding +- Quantum manager to use fock state density matrix + - Add truncation attribute to quantum managers; Hilbert space dimension is truncation + 1 + - Supports error channels based on kraus operators and direct operator action on state +- Hardware models to use fock state density matrix + - Absorptive quantum memory built on AFC + - Interference and direct detection for state tomography -## [0.3.2] ### Changed -- Corrected units in jupyter notebook example files -- Corrected units for the optical channel class -- Bug fixes for tutorial scripts +- Moved around and updated some error checking +- Temporarily removed mpich testing for python 3.8 and 3.9 (broken) + + +## [0.5.4] -## [0.4.0] ### Added -- GUI for ease of simulation setup -- Framework for future GUI usage to run simulations - - This feature is currently unimplemented and will not work -- Package dependencies for GUI (dash and plotly) +- Added some additional error checking to individual quantum states + - This includes additional error checking in the `Photon` class ### Changed -- Updated version requirement for numpy - - This removes support for Python 3.7 and below -- Bug fixes to tutorial chapter 3 -- Typo fixes to docstrings in reservation.py +- The `entangle` method for the `Photon` and `FreeQuantumState` classes has been changed to `combine_state` +- Updated chapter 1 tutorial in the documentation to match code example + +### Removed +- residual `json5` references in examples + + +## [0.5.3] + +### Changed +- Bug fixes to the GUI and QKD tests + + +## [0.5.2] -## [0.5.0] ### Added -- Tutorial materials for IEEE Quantum Week 2022 tutorial session +- Added more scripts for the QCE 2022 conference ### Changed -- Reworked interface for nodes and hardware elements - - New Entity interface for receiving/passing photons - - New method for nodes to handle incoming and outgoing qubits - - Polished observer functionality -- Reworked some protocols to utilize new interface -- Some bug fixes for GUI +- Fixed some bugs in the GUI code for classical communication delay + +### Removed +- Removed `mpi4py` from install instructions on the README + ## [0.5.1] ### Changed @@ -120,105 +155,126 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Removed - Removed `mpi4py` and `pytest-mpi` requirements for main package -## [0.5.2] + + +## [0.5.0] + ### Added -- Added more scripts for the QCE 2022 conference +- Tutorial materials for IEEE Quantum Week 2022 tutorial session ### Changed -- Fixed some bugs in the GUI code for classical communication delay +- Reworked interface for nodes and hardware elements + - New Entity interface for receiving/passing photons + - New method for nodes to handle incoming and outgoing qubits + - Polished observer functionality +- Reworked some protocols to utilize new interface +- Some bug fixes for GUI -### Removed -- Removed `mpi4py` from install instructions on the README -## [0.5.3] -### Changed -- Bug fixes to the GUI and QKD tests +## [0.4.0] -## [0.5.4] ### Added -- Added some additional error checking to individual quantum states - - This includes additional error checking in the `Photon` class +- GUI for ease of simulation setup +- Framework for future GUI usage to run simulations + - This feature is currently unimplemented and will not work +- Package dependencies for GUI (dash and plotly) ### Changed -- The `entangle` method for the `Photon` and `FreeQuantumState` classes has been changed to `combine_state` -- Updated chapter 1 tutorial in the documentation to match code example +- Updated version requirement for numpy + - This removes support for Python 3.7 and below +- Bug fixes to tutorial chapter 3 +- Typo fixes to docstrings in reservation.py -### Removed -- residual `json5` references in examples -## [0.6.0] -### Added -- Fock state density matrix encoding -- Quantum manager to use fock state density matrix - - Add truncation attribute to quantum managers; Hilbert space dimension is truncation + 1 - - Supports error channels based on kraus operators and direct operator action on state -- Hardware models to use fock state density matrix - - Absorptive quantum memory built on AFC - - Interference and direct detection for state tomography +## [0.3.2] ### Changed -- Moved around and updated some error checking -- Temporarily removed mpich testing for python 3.8 and 3.9 (broken) +- Corrected units in jupyter notebook example files +- Corrected units for the optical channel class +- Bug fixes for tutorial scripts + + +## [0.3.1] -## [0.6.1] ### Added -- Added some groundwork for future topology upgrades +- `Mirror` class for simple reflection of photons + - Sends photon to another node with quantum channel connection to the local node +- Quantum++ package acknowledgement to README -### Changed -- made numerous bug fixes: - - BSM and optical channel components received fixes - - Some residual bugs with GUI usage have been fixed - - Error with typing in Fock quantum manager has been fixed -### Removed -- Removed support for scipy version 1.11. This is currently causing some issues with qutip. +## [0.3.0] -## [0.6.2] ### Added -- Moved around and added a few files in the `examples` folder - - These are primarily for the IEEE QCE 2023 conference +- parallel execution for the kernel module +- `parallel` directory with useful tools + - Python and C++ servers for managing parallel kernel executions + - Many examples for parallel execution +- updated documentation with parallel code +- utility files for generating network config JSON files ### Changed -- Modified the topology output of the GUI to be compatible with new topology upgrades -- Several bug fixes in the GUI +- `Topology` class has been made into a simplified base class + - `RouterNetTopo` and `QKDTopo` classes added for specific network types +- tweaked library dependencies + - added `mpi4py` and `mpi-pytest` requirements for parallel execution + - removed `json5` requirement -## [0.6.3] +## [0.2.4] + ### Added -- We have an Icon for SeQUeNCe! -- `pip install sequence` is now available! -- `src` folder is renamed to `sequence` -- Add `sequence/constants.py` to organize the common constants -- Add support for Python 3.12 -- Add `pyproject.toml` +- serialization of messages, circuits +- base classes for applications and quantum manager states +- photon loss method `Photon.add_loss()` +### Changed +- moved all random number generation to network nodes + - includes all components and quantum manager functions + - utilizes `Entity.get_generator()` method +- reworked timeline events to handle cross-process events + - most protocols and components now use strings instead of explicit instances for classes +- tweaked process of entangelement and reservation protocols +- `EventList` structure and interface with `Timeline` +- `Timeline` timing display + + +## [0.2.3] + +### Added +- quantum state manager for quantum memories +- quantum circuit class (for use with quantum memories) +- `qutip` library dependency ### Changed -- Various refactoring, include but not limited to updating variable/method names, moving/deleting code, adding/rewriting comments, and making the code more succinct, etc. -- In README.md, installation with option `--editable` is encouraged. -- `logging` looks better -- In `class Reservation`, added attribute `entanglement_number` and `id` -- Update `ResourceReservationProtocol.load_rules()` -- Move `utils/json_config_generators/generator_utils.py` to `sequence/utils/config_generator.py` +- rewrite of quantum entanglement class +- change all optical channels to one-way -### Removed -- Removed support for Python 3.8 -- Removed `setup.py` -- Removed `MANIFEST.in` +## [0.2.2] + +### Added +- logging functionality with `log` module +- cached quantum state measurement -## [0.6.4] ### Changed -- Use `Read the Docs` for documentation. Update documentation. Old documentation website becomes obsolete. -- Fix a bug in reservation protocol and routing protocol that may lead to route for src->dst being different than dst->src when the network has same length edges. -- Update comments and README.md +- changed all quantum state representations from list to tuple +- event removal system +- example scripts now use `Timeline.seed()` method +- `Timeline` event removal method + +## [0.2.1] -## [0.6.5] ### Added -- Add new class BellDiagonalState for Bell Diagonal State. -- Add new Quantum Manager for Bell Diagonal State, i.e., QuantumManagerBellDiagonal. -- Add new class SingleHeralded BSM to support single heralded entanglement generation. -- Add support for time-dependent decoherence for the Bell Diagonal State in Memory class. +- observer functionality for entities +- README file for documentation + ### Changed -- Remove existing handlers in logging before setting the new handler +- some method-level docstrings +- convert all component constructors from keyword to positional arguments +- change documentation directory from `sphinx` to `docs` + +### Removed +- push/pop functions for entities and non-stack protocols +- some unnecessary entity attributes + diff --git a/README.md b/README.md index 7284b5da..adc71108 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ SeQUeNCe is an open source, discrete-event simulator for quantum networks. As de These modules can be edited by users to define additional functionality and test protocol schemes, or may be used as-is to test network parameters and topologies. ## Installing -SeQUeNCe requires [Python](https://www.python.org/downloads/) 3.9 or later. You can simply install SeQUeNCe using `pip`: +SeQUeNCe requires [Python](https://www.python.org/downloads/) 3.10 or later. You can simply install SeQUeNCe using `pip`: ``` pip install sequence ``` diff --git a/docs/source/conf.py b/docs/source/conf.py index f22864dc..88bdb2c8 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -22,7 +22,7 @@ author = 'Xiaoliang Wu, Joaquin Chung, Alexander Kolar, Eugene Wang, Tian Zhong, Rajkumar Kettimuthu, Martin Suchara' # The full version, including alpha/beta/rc tags -release = '0.6.5' +release = '0.6.6' # -- General configuration --------------------------------------------------- diff --git a/pyproject.toml b/pyproject.toml index a51a7ae1..60675f7c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "sequence" -version = "0.6.5" +version = "0.6.6" authors = [ {name = "Xiaoliang Wu, Joaquin Chung, Alexander Kolar, Alexander Kiefer, Eugene Wang, Tian Zhong, Rajkumar Kettimuthu, Martin Suchara", email = "chungmiranda@anl.gov"} ] @@ -9,7 +9,7 @@ maintainers = [ ] description = "Simulator of QUantum Network Communication (SeQUeNCe) is an open-source tool that allows modeling of quantum networks including photonic network components, control protocols, and applications." readme = "README.md" -requires-python = ">=3.9" +requires-python = ">=3.10" dynamic = ["dependencies"] keywords = ["quantum", "network", "discrete", "event", "simulator"] diff --git a/sequence/__init__.py b/sequence/__init__.py index a3fc366a..cdc8402e 100644 --- a/sequence/__init__.py +++ b/sequence/__init__.py @@ -1,7 +1,7 @@ __all__ = ['app', 'components', 'entanglement_management', 'kernel', 'network_management', 'qkd', 'resource_management', 'topology', 'utils', 'message', 'protocol', 'gui'] -__version__ = '0.6.5' +__version__ = '0.6.6' def __dir__(): return sorted(__all__)