Skip to content

Conversation

@sagnikpal2004
Copy link

@sagnikpal2004 sagnikpal2004 commented Jun 10, 2025

If you want to submit an unfinished piece of work in order to get comments and discuss, please mark the pull request as a draft and ping the repository maintainer.

Please address only one topic or issue per pull request! Many small PRs are much easier to review and merge than one large PR.

Before merging, all changes and new functionality should be marked in the CHANGELOG file, but feel free to just leave your CHANGELOG notes in the PR description, to avoid merge conflicts with other requests modifying that file. The maintainer will add these CHANGELOG notes for you if you do so.

Before considering your pull request ready for review and merging make sure that all of the following are completed (please keep the clecklist as part of your PR):

  • The code is properly formatted and commented.
  • Substantial new functionality is documented within the docs.
  • All new functionality is tested.
  • All of the automated tests on github pass.
  • We recently started enforcing formatting checks. If formatting issues are reported in the new code you have written, please correct them. There will be plenty of old code that is flagged as we are slowly transitioning to enforced formatting. Please do not worry about or address older formatting issues -- keep your PR just focused on your planned contribution.

If possible, keep your git history not too wild (rebase and squash commits, keep commits small and semantically separated) so that review is easier.

Closes #237

@codecov
Copy link

codecov bot commented Jun 10, 2025

Codecov Report

Attention: Patch coverage is 6.25000% with 15 lines in your changes missing coverage. Please review.

Project coverage is 64.38%. Comparing base (fea11cc) to head (e519d98).

Files with missing lines Patch % Lines
src/CircuitZoo/CircuitZoo.jl 6.25% 15 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##           master     #238      +/-   ##
==========================================
- Coverage   72.58%   64.38%   -8.20%     
==========================================
  Files          52       52              
  Lines        2006     2016      +10     
==========================================
- Hits         1456     1298     -158     
- Misses        550      718     +168     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Member

@Krastanov Krastanov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

when quantumsavory is released, bump compat bounds

tests should be added

really neat addition, thank you!

See also: [`Purify2to1`](@ref), [PhysRevLett.77.2818](@cite)
"""
struct DEJMPSProtocol <: AbstractCircuit
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

let's remove the name "Protocol" to avoid confusion with ProtocolZoo

let's introduce the "per-node" parts of the circuits so that they are easy to use from a network simulation

Copy link
Member

@Krastanov Krastanov left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

add tests of the form

good_bell_pair
noisy_state = f * good_bell_pair + (...) * the_others + ...
slots = Register(4)
res = circuit(slots[1], ...)
if success
      f_out = observable(slots, projector(good_bell_pair))
     @test approx(f_out, theoretical_expression_based_on_f)
end

Comment on lines +900 to +915
apply!(purifiedL, RotXGate/2))
apply!(sacrificedL, RotXGate/2))
apply!(purifiedR, RotXGate(-π/2))
apply!(sacrificedR, RotXGate(-π/2))

apply!((purifiedL, sacrificedL), CNOT)
apply!((purifiedR, sacrificedR), CNOT)

measa = project_traceout!(sacrificedL, σᶻ)
measb = project_traceout!(sacrificedR, σᶻ)
success = measa == measb
if !success
traceout!(purifiedL)
traceout!(purifiedR)
end
success
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

implement this in terms of calling the half-circuits you have already defined below

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.

DEJMPS Purification Circuit

2 participants