Skip to content

Commit

Permalink
Dev 0.4.3 (#46)
Browse files Browse the repository at this point in the history
* bump patch.

* Updating quera task status codes.

* fixing issues with converting probability and post-processing.

* removing post-processing.
  • Loading branch information
weinbe58 authored Jun 6, 2023
1 parent e9fd0a5 commit 381027f
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 15 deletions.
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.2"
version = "0.4.3"
authors = [
{ name="Phillip Weinberg", email="pweinberg@quera.com" },
{ name="John Long", email="jlong@quera.com" }
Expand Down
29 changes: 15 additions & 14 deletions src/quera_ahs_utils/quera_ir/task_results.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ class QuEraTaskStatusCode(str, Enum):
Completed = "Completed"
Failed = "Failed"
Cancelled = "Cancelled"
Partial = "Partial"

class QuEraShotResult(BaseModel):
shot_status: QuEraShotStatusCode = QuEraShotStatusCode.MissingMeasurement
Expand Down Expand Up @@ -62,14 +63,14 @@ class QuEraTaskResults(BaseModel):
task_status: QuEraTaskStatusCode = QuEraTaskStatusCode.Failed
shot_outputs: conlist(QuEraShotResult, min_items=0) = []

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

pre_sequence_str = "".join(
Expand All @@ -80,23 +81,23 @@ def export_as_probabilities(self) -> 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
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)
prob = probabilities.get(configuration, 0)
probabilities[configuration] = prob + (1 - prob)/(n + 1)

n += 1

return TaskProbabilities(list(probabilities.items()))

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

if keep_shot_result == None:
filter_func = \
lambda shot_result: \
all(bit==1 for bit in shot_result.pre_sequence)
def filter_func(shot_result):
return all(bit == 1 for bit in shot_result.pre_sequence)
else:
filter_func = lambda shot_result: \
keep_shot_result(shot_result, *args)
def filter_func(shot_result):
return keep_shot_result(shot_result, *args)

return QuEraTaskResults(
task_status=self.task_status,
Expand Down

0 comments on commit 381027f

Please sign in to comment.