diff --git a/Project.toml b/Project.toml index aa43f53..7703f9d 100644 --- a/Project.toml +++ b/Project.toml @@ -29,7 +29,7 @@ ForwardDiff = "0.10" Ipopt = "1.7" JLD2 = "0.5" MathOptInterface = "1.36" -NamedTrajectories = "0.2" +NamedTrajectories = "0.3" PiccoloQuantumObjects = "0.3" Reexport = "1.2" TestItemRunner = "1.1" diff --git a/src/integrators/_integrators.jl b/src/integrators/_integrators.jl index 99a193d..789ec53 100644 --- a/src/integrators/_integrators.jl +++ b/src/integrators/_integrators.jl @@ -104,7 +104,7 @@ function modify_integrator_suffix( end end -function PiccoloQuantumObjects.add_suffix( +function NamedTrajectories.add_suffix( integrator::AbstractIntegrator, suffix::String, traj::NamedTrajectory, @@ -113,7 +113,7 @@ function PiccoloQuantumObjects.add_suffix( return modify_integrator_suffix(integrator, add_suffix, suffix, traj, mod_traj) end -function PiccoloQuantumObjects.add_suffix( +function NamedTrajectories.add_suffix( integrators::AbstractVector{<:AbstractIntegrator}, suffix::String, traj::NamedTrajectory, @@ -125,7 +125,7 @@ function PiccoloQuantumObjects.add_suffix( ] end -function PiccoloQuantumObjects.remove_suffix( +function NamedTrajectories.remove_suffix( integrator::AbstractIntegrator, suffix::String, traj::NamedTrajectory, @@ -134,7 +134,7 @@ function PiccoloQuantumObjects.remove_suffix( return modify_integrator_suffix(integrator, remove_suffix, suffix, traj, mod_traj) end -function PiccoloQuantumObjects.remove_suffix( +function NamedTrajectories.remove_suffix( integrators::AbstractVector{<:AbstractIntegrator}, suffix::String, traj::NamedTrajectory, @@ -147,7 +147,6 @@ end # Get suffix utilities # -------------------- -Base.endswith(symb::Symbol, suffix::AbstractString) = endswith(String(symb), suffix) Base.endswith(integrator::UnitaryPadeIntegrator, suffix::String) = endswith(integrator.unitary_symb, suffix) Base.endswith(integrator::DerivativeIntegrator, suffix::String) = endswith(integrator.variable, suffix) @@ -168,7 +167,7 @@ function Base.endswith(integrator::AbstractIntegrator, traj::NamedTrajectory, su return endswith(name, suffix) end -function PiccoloQuantumObjects.get_suffix( +function NamedTrajectories.get_suffix( integrators::AbstractVector{<:AbstractIntegrator}, sys::AbstractQuantumSystem, traj::NamedTrajectory, diff --git a/src/losses/unitary_infidelity_loss.jl b/src/losses/unitary_infidelity_loss.jl index 279b0ab..bc08f5c 100644 --- a/src/losses/unitary_infidelity_loss.jl +++ b/src/losses/unitary_infidelity_loss.jl @@ -405,6 +405,7 @@ end # ============================================================================= # @testitem "Unitary fidelity" begin + X = [0 1; 1 0] X = [0 1; 1 0] Y = [0 -im; im 0] @@ -515,18 +516,19 @@ end end @testitem "Free phase fidelity" begin - using PiccoloQuantumObjects + import PiccoloQuantumObjects + n_levels = 3 phase_data = [1.9, 2.7] - phase_operators = [PAULIS[:Z], PAULIS[:Z]] - subspace = get_subspace_indices([1:2, 1:2], [n_levels, n_levels]) + phase_operators = [PiccoloQuantumObjects.PAULIS[:Z], PiccoloQuantumObjects.PAULIS[:Z]] + subspace = PiccoloQuantumObjects.get_subspace_indices([1:2, 1:2], [n_levels, n_levels]) - R = free_phase(phase_data, phase_operators) + R = PiccoloQuantumObjects.free_phase(phase_data, phase_operators) @test R'R ≈ [1 0 0 0; 0 1 0 0; 0 0 1 0; 0 0 0 1] @test size(R) == (2^2, 2^2) - U_goal = EmbeddedOperator(GATES[:CZ], subspace, [n_levels, n_levels]).operator - U_final = EmbeddedOperator(R'GATES[:CZ], subspace, [n_levels, n_levels]).operator + U_goal = PiccoloQuantumObjects.EmbeddedOperator(PiccoloQuantumObjects.GATES[:CZ], subspace, [n_levels, n_levels]).operator + U_final = PiccoloQuantumObjects.EmbeddedOperator(R'PiccoloQuantumObjects.GATES[:CZ], subspace, [n_levels, n_levels]).operator # Value is ~0.3 without phases @test unitary_fidelity(U_final, U_goal, subspace=subspace) < 0.5 @test unitary_free_phase_fidelity( @@ -539,8 +541,8 @@ end # Forgot subspace @test_throws DimensionMismatch iso_vec_unitary_free_phase_fidelity( - operator_to_iso_vec(U_final), - operator_to_iso_vec(U_goal), + PiccoloQuantumObjects.operator_to_iso_vec(U_final), + PiccoloQuantumObjects.operator_to_iso_vec(U_goal), phase_data, phase_operators, ) diff --git a/src/problems.jl b/src/problems.jl index 393eb26..9da40e5 100644 --- a/src/problems.jl +++ b/src/problems.jl @@ -381,7 +381,7 @@ function get_constraints(prob::QuantumControlProblem) ] end -function PiccoloQuantumObjects.get_suffix( +function NamedTrajectories.get_suffix( prob::QuantumControlProblem, subproblem_traj::NamedTrajectory, suffix::String;