Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release v0.6.0 #372

Merged
merged 21 commits into from
May 13, 2022
Merged

Release v0.6.0 #372

merged 21 commits into from
May 13, 2022

Conversation

HGSilveri
Copy link
Collaborator

Main changes:

HGSilveri and others added 21 commits February 25, 2022 14:52
* Change sphinx theme to furo

* Change sphinx theme to book

Poll results:
3 | books
2 | MagnificientGreen
1 | furo
1 | press
0 | ReadTheDocs

Two other contributions steering towards `books`.
* Update runs and samples per run.

* Update black
* A first gist of sequence sampler

plain dataframe of samples

extract samples in the nested dict form

A note: basis that are unused by declared channels are arrays full of
zeros, while it is simply not initilized in the dict in the simulation
module.

add test to compare with extraction from simulation module

Add various docstrings

type annotations

sample per qubit, test passes

add support for LocalNoises

add seed to the amplitude_noise generator

fix the doppler noise to use a normal distribution

Write test for doppler noise. It fails.

It fails probably because of the different seeds in the random
generators ?

refactor a bit

Rename as module sampler

Refactor by distinguishing the local and global extraction

Remove unused import

Refactor the noises to their own modules

Add modulation, but no implementation

Revert "Refactor the noises to their own modules"

This reverts commit 37093330c57a9152604f239e79ec6940a213b432.

Use strategies for _TimeSlot extraction

Remove functions made useless by refactor to strategy pattern

Add doctrings and make some functions private

Extend test to local channels

Remove dead code

Add modulation

Refactor a bit: docstrings, order of functions, etc.

Fix _TimeSlot grouping by handling delays correctly

Tidy the comments

refactor the extraction strategies

Docstring

* Refactor sampler in independent module

* Consistent support for noises, SLM and modulation of Global and Local 

Deprecate temporarily the amplitude_noise as it misses the point

It urges for a correct implementation

Refactor sample writing

Allow local decay with on SLM

Add support for noises on global channel

Add TODO for global modulation

Fix usage of noises.apply()

Fix modulation and apply SLM on local channels as well

Fix imports

* Refactor the noises module

Also fix imports for mypy compliance

* Improve docstrings and small refactoring

* Small typos in comments

* Fix the decay of global channels to local ones

* Fix the modulation feature

* Refactor

Adds a post_init check for same length of quantities arrays

Add documentation, testing and refactoring

Refactor the dict construction with modulation

Simple comment to clarify the design of sampler.sample()

Remove unnecessary value in enum _GroupType

Add a diagram for _TimeSlot grouping

Fix embedded NoiseModel by using copies

Update docstrings with args

Expose the sample() function from the __init__

Test the amplitude noise

Remove unused commented import

Add usage note on doppler noise

Add a docstring for the amplitude noise

Remove empty line

Create a better test for doppler noise

Small refactor

Mark the doppler test as expected to fail

Refactor the control flow of sampler.sample()

Refactor the dict exporting

Refactor

Fix typo

Add a docstring

Refactor the TimeSlot grouping and strategy

* Simplify the flow of samples.samples()

Global and local channels are sampled identically.
The export to a dict form like the simulation one handles the
distinctions.
It introduces an additional dict keeping track of the addressing of each
channel: Global, Decayed, Local.

Trim dead code, refactor, defensive coding

Write global channel from QubitSamples

Rename modulation function

* Improve test and get total coverage

Table based tests

Add a modulation test

I don't like it. It is testing the sampling for sure, but still I would
like to test against a known output of the modulation.

Remove unnecessary if branch

functools.reduce got us covered already

Extend to digital

Fix mypy error because of weird scope of variables

Test sequence in XY and fix a typo in the relevant code

Test for corner cases and omit defensive coding with pragma no cover

* Simplify the sampling by removing the Samples dataclass

* Fix a docstring

* Fix docstrings formatting and content

* Remove unnecessary nonzero check in amplitude noise

* Fix the noise seed default value: defaults to None

* Improve docstrings of helper functions in noise module

* Apply noises before the SLM masking

* Rename misnamed variables

* Change the scope of _key_func() and remove the _GroupType class

* Fix dictionary construction with defaultdict

* Fix misnamed keys in tests

* Add a match to pytest.raises

* Move the noises to the simulation module

Import NoiseModel as noises.NoiseModel to avoid a weird circular import

* Improve the simulation.noises docstring

* Remove noisy helper functions

* Write test case for _write_dict exception

It removes the # pragma: no cover.

* Reorder tests

* Add a more fundamental test

* Reword and add docstrings

* Fix other misnamed keys in tests

* Fix SLM masking: consider only the seq._mask_times

Sequence._slm_mask_time is not a list of times, but a pair with a
start and end time of the SLM masking.

* Change for defaultdict in new_qdict

* Add a note about performance for sampling of global channels

For global channels, we hold the same data in N copies, N the number of
qubits of the register. It scales poorly with the size of the register,
but it remains manageable for current size of registers.

If needed, we should patch this, at the expense of a more complex
control flow in the sample() function at least.

* Simply testing of sequence

* Refactor the testing of sequence with a helper function

* Fix the testing of blackman modulation

* Move noise-related tests to an independent testing files

* Fix the unneeded # pragma: no cover in _sample_slots

* Add a Failing test for the SLM, for discussion

* Move the comment on performance

* Make the SLM detectino more idiomatic

* Simplify the assertions for sequence in XY

* Remove superfluous print statements

* Test SLM sampling alongside the check against simulation

* Refactor using a helper for nested dicts

* Rearrange the test file
* Adding new operators to OpSupport

* Removing `__len__` from `Variable` to allow for numpy ufuncs

* Adding missing operations

* Finished new operations + unit tests

* Forbiding variable channels and measurements + mypy

* Adding the new operations to the supported list

* Support for serialization of the new ops

* Changing implementation of `round`

* Changing implementation of `floordiv`

* Increasing coverage of serialization support for ops
* Fixing bug related to simulation with state preparation errors

* Updating the noisy simulations notebook
* Make evaluation times uniform including final time

* New strategy - repeat last sample

* Zero final sample.

* Black

* Make `_tot_duration` equal to seq duration.

* Change adapt method to full array input

* Edit simulation tests

* Simplify appending 0 and final time in eval times

* Modify tests to compare with simulation

* Black

* Remove unnecesary verification

* Remove unused import

* Black bis

* Ignore flexible eval_times instruction type.

* Update pulser/simulation/simulation.py

Assign value as np.ndarray

Co-authored-by: Henrique Silvério <henrique.silverio@tecnico.ulisboa.pt>

* Update pulser/simulation/simulation.py

Assign value as np.ndarray (bis)

Co-authored-by: Henrique Silvério <henrique.silverio@tecnico.ulisboa.pt>

* Passing all CI tests

* Changing sampler tests

* Add tests for empty and  small values of eval time

* Make test assert stronger increasing sampling rate

Co-authored-by: Henrique Silvério <henrique.silverio@tecnico.ulisboa.pt>
* Separating specific noise definitions from general noise objects

* Adding missing licenses
* Add function to convert atoms ids to indices

* Add target_index and beginning of UT

* Order qubit indices using register initialization + UTs

* Replace frozenset with abc Set

* Auto reformat

* Fix flake8 issues

* Move overloads before _target to try to fix strange CI mypy issue

* Move precheck target overloads before _target to try to fix strange CI mypy issue

* Revert "Move overloads before _target to try to fix strange CI mypy issue"

This reverts commit 838d5fe.

* Black

* Add phase_shift_index + UTs

* Apply comments

* Allow using index when non-parametrized non-mappable + UTs

* Manage index errors + UTs

* Fix useless UT mypy error

* Apply remarks

* Apply remarks

* Apply remarks

* Apply remarks

* Apply remark to fix docstring type

Co-authored-by: Henrique Silvério <henrique.silverio@tecnico.ulisboa.pt>
* Moving unit tests out of `pulser`

* Moving pulser.simulation files to pulser_simulation

* Setting up `pulser_simulation` as  a separate package

* Moving all contents of `pulser` to `pulser-core`

* Setting up 'pulser', 'pulser-core' and 'pulser-simulation'

* Updating the docs
* Extend find_indices to normal registers and improve doc

* Add missing warning case of undeclared parameter

* Small fixes

* Fix small flake8 issue

* Fix coverage
* Remove string variables and switch to indices

* Small fixes

* Fixing syntaxt error in tutorial + Black formatting

* Remove unused import

* Remove parametrized qubit ids, add error cases + UTs, fix docstrings

* Add UT for multiple index targets

* Test parametrized array index targets

* Disallow parametrized where relevant in checks

* Remove dead code

Co-authored-by: HGSilveri <henrique.silverio@tecnico.ulisboa.pt>
* Customizing RTD theme to support larger screens

* Adjusting the max window width
* Small typing fix

* Misc updates to the docs
@review-notebook-app
Copy link

Check out this pull request on  ReviewNB

See visual diffs & provide feedback on Jupyter Notebooks.


Powered by ReviewNB

@HGSilveri HGSilveri merged commit f418bb0 into master May 13, 2022
@HGSilveri HGSilveri deleted the release/v0.6.0 branch May 13, 2022 08:23
HGSilveri added a commit that referenced this pull request May 13, 2022
Main changes:
- 3921795 Remove string variables (#365)
- b23ff22 Splitting `pulser` into `pulser-core` and `pulser-simulation`. 
(#362)
- 4f684f3 Address qubits with indices (#356)
- f2ee5e2 Make evaluation times uniform including final time (#330)
- c34dffb Changes for compatibility with upcoming export format (#353)
- 3ac1f66 Sequence sampler (#345)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants