Start automation of running filter combinations
This commit is contained in:
@@ -5,6 +5,8 @@ __generated_with = "0.19.7"
|
||||
import marimo as mo
|
||||
import polars as pl
|
||||
from pathlib import Path
|
||||
import argparse
|
||||
import json
|
||||
|
||||
from validation import check_progress, duration_validation, check_straight_liners
|
||||
from utils import QualtricsSurvey, combine_exclusive_columns, calculate_weighted_ranking_scores
|
||||
@@ -12,6 +14,35 @@ import utils
|
||||
|
||||
from speaking_styles import SPEAKING_STYLES
|
||||
|
||||
# %%
|
||||
# CLI argument parsing for batch automation
|
||||
# When run as script: python 03_quant_report.script.py --age '["18 to 21 years"]' --consumer '["Starter"]'
|
||||
# When run in Jupyter: args will use defaults (all filters = None = all options selected)
|
||||
def parse_cli_args():
|
||||
parser = argparse.ArgumentParser(description='Generate quant report with optional filters')
|
||||
parser.add_argument('--age', type=str, default=None, help='JSON list of age groups')
|
||||
parser.add_argument('--gender', type=str, default=None, help='JSON list of genders')
|
||||
parser.add_argument('--ethnicity', type=str, default=None, help='JSON list of ethnicities')
|
||||
parser.add_argument('--income', type=str, default=None, help='JSON list of income groups')
|
||||
parser.add_argument('--consumer', type=str, default=None, help='JSON list of consumer segments')
|
||||
|
||||
# Only parse if running as script (not in Jupyter/interactive)
|
||||
try:
|
||||
# Check if running in Jupyter by looking for ipykernel
|
||||
get_ipython() # noqa: F821
|
||||
return argparse.Namespace(age=None, gender=None, ethnicity=None, income=None, consumer=None)
|
||||
except NameError:
|
||||
args = parser.parse_args()
|
||||
# Parse JSON strings to lists
|
||||
args.age = json.loads(args.age) if args.age else None
|
||||
args.gender = json.loads(args.gender) if args.gender else None
|
||||
args.ethnicity = json.loads(args.ethnicity) if args.ethnicity else None
|
||||
args.income = json.loads(args.income) if args.income else None
|
||||
args.consumer = json.loads(args.consumer) if args.consumer else None
|
||||
return args
|
||||
|
||||
cli_args = parse_cli_args()
|
||||
|
||||
# %%
|
||||
|
||||
# file_browser = mo.ui.file_browser(
|
||||
@@ -68,7 +99,14 @@ BEST_CHOSEN_CHARACTER = "the_coach"
|
||||
|
||||
# %%
|
||||
# mo.stop(filter_form.value is None, mo.md("**Please submit filter above to proceed**"))
|
||||
_d = S.filter_data(data_validated, age=filter_form.value['age'], gender=filter_form.value['gender'], income=filter_form.value['income'], ethnicity=filter_form.value['ethnicity'], consumer=filter_form.value['consumer'])
|
||||
# CLI args: None means "all options selected" (use S.options_* defaults)
|
||||
_filter_age = cli_args.age if cli_args.age is not None else S.options_age
|
||||
_filter_gender = cli_args.gender if cli_args.gender is not None else S.options_gender
|
||||
_filter_ethnicity = cli_args.ethnicity if cli_args.ethnicity is not None else S.options_ethnicity
|
||||
_filter_income = cli_args.income if cli_args.income is not None else S.options_income
|
||||
_filter_consumer = cli_args.consumer if cli_args.consumer is not None else S.options_consumer
|
||||
|
||||
_d = S.filter_data(data_all, age=_filter_age, gender=_filter_gender, income=_filter_income, ethnicity=_filter_ethnicity, consumer=_filter_consumer)
|
||||
|
||||
# Stop execution and prevent other cells from running if no data is selected
|
||||
# mo.stop(len(_d.collect()) == 0, mo.md("**No Data available for current filter combination**"))
|
||||
|
||||
Reference in New Issue
Block a user