Skip to content

Commit

Permalink
Release 0.4.1 (#44)
Browse files Browse the repository at this point in the history
* fix issue with None for local detuning field.

* fixing bug in calculating probabilities from task.

* bump patch version

* Alias global field name fix (#43)
  • Loading branch information
weinbe58 authored May 1, 2023
1 parent c2d120a commit c3efb9b
Show file tree
Hide file tree
Showing 6 changed files with 42 additions and 32 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
.DS_Store
.vscode

.python_env/
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
Expand Down
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"

[project]
name = "quera-ahs-utils"
version = "0.4.0"
version = "0.4.1"
authors = [
{ name="Phillip Weinberg", email="[email protected]" },
{ name="John Long", email="[email protected]" }
Expand Down
10 changes: 5 additions & 5 deletions src/quera_ahs_utils/ir.py
Original file line number Diff line number Diff line change
Expand Up @@ -162,25 +162,25 @@ def get_local_field(field: braket_ir.PhysicalField) -> LocalField:
def get_rabi_frequency_amplitude(driving: braket_ir.DrivingField):
field = braket_to_quera.get_global_field(driving.amplitude)
return RabiFrequencyAmplitude(
**{"global":braket_to_quera.get_global_field(driving.amplitude)}
global_=braket_to_quera.get_global_field(driving.amplitude)
)

@staticmethod
def get_rabi_frequency_phase(driving: braket_ir.DrivingField):
return RabiFrequencyPhase(
**{"global":braket_to_quera.get_global_field(driving.phase)}
global_=braket_to_quera.get_global_field(driving.phase)
)

@staticmethod
def get_detuning(driving: braket_ir.DrivingField, shifting: Optional[braket_ir.ShiftingField]):
if shifting == None:
return Detuning(
**{"global":braket_to_quera.get_global_field(driving.detuning)}
global_=braket_to_quera.get_global_field(driving.detuning)
)
else:
return Detuning(
**{"global":braket_to_quera.get_global_field(driving.detuning),
"local":braket_to_quera.get_local_field(shifting.magnitude)}
global_=braket_to_quera.get_global_field(driving.detuning),
local=braket_to_quera.get_local_field(shifting.magnitude)
)

@staticmethod
Expand Down
1 change: 1 addition & 0 deletions src/quera_ahs_utils/quera_ir/capabilities.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ class RydbergCapabilities(BaseModel):
local: RydbergLocalCapabilities

class Config:
allow_population_by_field_name = True
fields = {
'global_': 'global'
}
Expand Down
21 changes: 9 additions & 12 deletions src/quera_ahs_utils/quera_ir/task_results.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,17 +62,15 @@ class QuEraTaskResults(BaseModel):
task_status: QuEraTaskStatusCode = QuEraTaskStatusCode.Failed
shot_outputs: conlist(QuEraShotResult, min_items=0) = []

def export_as_probabilties(self, post_process=False) -> TaskProbabilities:
def export_as_probabilities(self) -> TaskProbabilities:
"""converts from shot results to probabilities
Returns:
TaskProbabilities: The task results as probabilties
"""
probabilities = dict()
n = 0
counts = dict()
nshots = len(self.shot_outputs)
for shot_result in self.shot_outputs:
if any(bit==0 for bit in shot_result.pre_sequence):
continue

pre_sequence_str = "".join(
str(bit) for bit in shot_result.pre_sequence
Expand All @@ -82,14 +80,13 @@ def export_as_probabilties(self, post_process=False) -> TaskProbabilities:
str(bit) for bit in shot_result.post_sequence
)

configuration = (pre_sequence_str,post_sequence_str)
configuration = (pre_sequence_str, post_sequence_str)
# iterative average
probabilities[configuration] = \
((n + 1.0) * probabilities.get(configuration, 0) + 1.0)/n

n += 1

return TaskProbabilities(list(probabilities.items()))
current_count = counts.get(configuration, 0)
counts[configuration] = current_count + 1

probabilities = [(config,count/nshots) for config,count in counts.items()]
return TaskProbabilities(probabilities=probabilities)

def post_process(self, keep_shot_result: Optional[Callable] = None, args = ()) -> 'QuEraTaskResults':

Expand Down
38 changes: 25 additions & 13 deletions src/quera_ahs_utils/quera_ir/task_specification.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@ class RabiFrequencyAmplitude(BaseModel):
global_: GlobalField

class Config:
allow_population_by_field_name = True
fields = {
'global_': 'global'
}
Expand All @@ -47,15 +48,18 @@ def discretize(self, task_capabilities: QuEraCapabilities):
global_time_resolution = task_capabilities.capabilities.rydberg.global_.time_resolution
global_value_resolution = task_capabilities.capabilities.rydberg.global_.rabi_frequency_resolution

return RabiFrequencyAmplitude(**{"global":GlobalField(
return RabiFrequencyAmplitude(
global_ = GlobalField(
times = discretize_list(self.global_.times, global_time_resolution),
values = discretize_list(self.global_.values, global_value_resolution))}
)
values = discretize_list(self.global_.values, global_value_resolution)
)
)

class RabiFrequencyPhase(BaseModel):
global_: GlobalField

class Config:
allow_population_by_field_name = True
fields = {
'global_': 'global'
}
Expand All @@ -67,16 +71,18 @@ def discretize(self, task_capabilities: QuEraCapabilities):
global_time_resolution = task_capabilities.capabilities.rydberg.global_.time_resolution
global_value_resolution = task_capabilities.capabilities.rydberg.global_.phase_resolution

return RabiFrequencyPhase(**{"global":GlobalField(
times = discretize_list(self.global_.times, global_time_resolution),
values = discretize_list(self.global_.values, global_value_resolution))}
return RabiFrequencyPhase(global_=GlobalField(
times = discretize_list(self.global_.times, global_time_resolution),
values = discretize_list(self.global_.values, global_value_resolution)
)
)

class Detuning(BaseModel):
global_: GlobalField
local: Optional[LocalField]

class Config:
allow_population_by_field_name = True
fields = {
'global_': 'global'
}
Expand All @@ -89,15 +95,21 @@ def discretize(self, task_capabilities: QuEraCapabilities):
global_value_resolution = task_capabilities.capabilities.rydberg.global_.detuning_resolution
local_time_resolution = task_capabilities.capabilities.rydberg.local.time_resolution

return Detuning(**{"global":GlobalField(
times = discretize_list(self.global_.times, global_time_resolution),
values = discretize_list(self.global_.values, global_value_resolution)
),"local": LocalField(
times = discretize_list(self.local.times, local_time_resolution), values = self.local.values,
if self.local != None:
self.local = LocalField(
times = discretize_list(self.local.times, local_time_resolution),
values = self.local.values,
lattice_site_coefficients=self.local.lattice_site_coefficients
)
}
)


return Detuning(
global_ = GlobalField(
times = discretize_list(self.global_.times, global_time_resolution),
values = discretize_list(self.global_.values, global_value_resolution)
),
local = self.local
)

class RydbergHamiltonian(BaseModel):
rabi_frequency_amplitude: RabiFrequencyAmplitude
Expand Down

0 comments on commit c3efb9b

Please sign in to comment.