Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
75 changes: 48 additions & 27 deletions experimenter/experimenter/experiments/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -1339,14 +1339,10 @@ def get_branch_data(self, analysis_basis, selected_segment, window="overall"):
for branch in self.get_sorted_branches():
slug = branch.slug
participant_metrics = (
(
window_results.get(slug, {})
.get("branch_data", {})
.get("other_metrics", {})
.get("identity", {})
)
if isinstance(window_results, dict)
else {}
window_results.get(slug, {})
.get("branch_data", {})
.get("other_metrics", {})
.get("identity", {})
)
num_participants = (
participant_metrics.get("absolute", {}).get("first", {}).get("point", 0)
Expand All @@ -1373,20 +1369,17 @@ def get_metric_area_data(

window_results = self.get_window_results(analysis_basis, segment, window)

for branch in self.get_sorted_branches():
branch_results = (
window_results.get(branch.slug, {}).get("branch_data", {})
if isinstance(window_results, dict)
else {}
)
for metric in metrics:
slug = metric.get("slug")
group = metric.get("group")
branch_metrics = {}

for metric in metrics:
slug = metric.get("slug")
group = metric.get("group")
for branch in self.get_sorted_branches():
branch_results = window_results.get(branch.slug, {}).get(
"branch_data", {}
)

metric_src = branch_results.get(group, {}).get(slug, {})

absolute_data_list = metric_src.get("absolute", {}).get("all", [])
relative_data_list = (
metric_src.get("relative_uplift", {})
Expand All @@ -1409,12 +1402,8 @@ def formatted_analysis_point_comparator(point):

abs_entries = []
for i, data_point in enumerate(absolute_data_list):
lower = round(data_point.get("lower"), 2)
upper = round(data_point.get("upper"), 2)

if metric.get("display_type") == "percentage":
lower = f"{lower * 100}%"
upper = f"{upper * 100}%"
lower = data_point.get("lower")
upper = data_point.get("upper")

significance = significance_map.get(str(i + 1), "neutral")
abs_entries.append(
Expand All @@ -1425,7 +1414,7 @@ def formatted_analysis_point_comparator(point):
for i, data_point in enumerate(relative_data_list):
lower = data_point.get("lower")
upper = data_point.get("upper")
avg_rel_change = abs(data_point.get("point") * 100)
avg_rel_change = abs(data_point.get("point"))
significance = significance_map.get(str(i + 1), "neutral")
rel_entries.append(
{
Expand All @@ -1436,9 +1425,12 @@ def formatted_analysis_point_comparator(point):
}
)

branch_metrics[slug] = {"absolute": abs_entries, "relative": rel_entries}
branch_metrics[branch.slug] = {
"absolute": abs_entries,
"relative": rel_entries,
}

metric_data[branch.slug] = branch_metrics
metric_data[slug] = branch_metrics

return metric_area_data

Expand Down Expand Up @@ -1517,6 +1509,35 @@ def get_window_results(self, analysis_basis, segment, window="overall"):
else {}
)

def get_max_metric_value(
self,
analysis_basis,
segment,
reference_branch,
outcome_group,
outcome_slug,
):
overall_results = self.get_window_results(analysis_basis, segment, "overall")
max_value = 0

for branch in self.get_sorted_branches():
if overall_results:
for data_point in (
overall_results.get(branch.slug, {})
.get("branch_data", {})
.get(outcome_group, {})
.get(outcome_slug, {})
.get("relative_uplift", {})
.get(reference_branch, {})
.get("all", [])
):
lower = data_point.get("lower")
upper = data_point.get("upper")

max_value = max(max_value, abs(lower), abs(upper))

return max_value

def get_sorted_branches(self):
return (
[
Expand Down
2 changes: 1 addition & 1 deletion experimenter/experimenter/experiments/tests/factories.py
Original file line number Diff line number Diff line change
Expand Up @@ -512,7 +512,7 @@ class NimbusExperimentFactory(factory.django.DjangoModelFactory):
requires_restart = factory.LazyAttribute(
lambda o: (random.choice([True, False]) if o.is_firefox_labs_opt_in else False)
)
results_data = {"v3": {"overall": {"enrollments": {"all": [1]}}}}
results_data = {"v3": {"overall": {"enrollments": {"all": {}}}}}

class Meta:
model = NimbusExperiment
Expand Down
Loading