export declare const pythonCode = "\nimport numpy as np\nimport pandas as pd\nfrom typing import Dict, Any\n\ndef summarize_common_metadata(x: pd.DataFrame, trials_expected: int) -> Dict[str, Any]:\n \"\"\"\n Extract shared metadata and trial count checks from a grouped DataFrame.\n\n Args:\n x (pd.DataFrame): Grouped trial-level DataFrame.\n trials_expected (int): Expected number of trials.\n\n Returns:\n Dict[str, Any]: Summary metadata and quality flags.\n \"\"\"\n if \"trial_index\" in x.columns:\n n_trials = x[\"trial_index\"].nunique()\n else:\n # warnings.warn(\"No 'trial_index' column found; assuming single-trial task.\")\n # For single-trial tasks (like Trailmaking), treat as one trial\n n_trials = 1\n return {\n \"activity_begin_iso8601_timestamp\": x[\"activity_begin_iso8601_timestamp\"].iloc[\n 0\n ],\n \"n_trials\": n_trials,\n \"flag_trials_match_expected\": n_trials == trials_expected,\n \"flag_trials_lt_expected\": n_trials < trials_expected,\n \"flag_trials_gt_expected\": n_trials > trials_expected,\n }\n\ndef score_accuracy(row, legacy=False):\n try:\n if legacy:\n return row[\"user_response\"] == row[\"correct_response\"]\n else:\n return row[\"user_response_index\"] == row[\"correct_response_index\"]\n except Exception as e:\n print(f\"Error processing row: {e}\")\n return None\n\ndef summarize(x, trials_expected=20, rt_outlier_low=100, rt_outlier_high=10000):\n \n # ABSTRACTION TO APPEAR IN EACH SCORING SCRIPT\n d = summarize_common_metadata(x, trials_expected)\n\n \n # trial counts (for various denominators)\n d[\"n_trials_total\"] = x[\"trial_index\"].nunique()\n d[\"n_trials_lure\"] = (x[\"trial_type\"] == \"lure\").sum()\n d[\"n_trials_normal\"] = (x[\"trial_type\"] == \"normal\").sum()\n\n\n # tabulate accuracy\n d[\"n_trials_correct\"] = (\n x[\"user_response_index\"] == x[\"correct_response_index\"]\n ).sum()\n\n d[\"n_trials_incorrect\"] = (\n x[\"user_response_index\"] != x[\"correct_response_index\"]\n ).sum()\n\n # Filter out outliers: RT < 100 ms or RT > 10,000 ms\n rt_filtered = x.loc[\n (x[\"response_time_duration_ms\"] >= rt_outlier_low)\n & (x[\"response_time_duration_ms\"] <= rt_outlier_high),\n \"response_time_duration_ms\",\n ]\n d[\"median_response_time_filtered\"] = rt_filtered.median()\n \n # correct AND RT within bounds\n correct_and_filtered = x.loc[\n (x[\"user_response_index\"] == x[\"correct_response_index\"])\n & (x[\"response_time_duration_ms\"] >= rt_outlier_low)\n & (x[\"response_time_duration_ms\"] <= rt_outlier_high),\n \"response_time_duration_ms\"\n ]\n d[\"median_response_time_correct_filtered\"] = correct_and_filtered.median()\n d[\"std_response_time_correct_filtered\"] = correct_and_filtered.std()\n\n # get RTs for correct and incorrect trials\n d[\"median_response_time_overall\"] = x[\"response_time_duration_ms\"].median()\n d[\"median_response_time_correct\"] = x.loc[\n (x[\"user_response_index\"] == x[\"correct_response_index\"]),\n \"response_time_duration_ms\",\n ].median()\n d[\"median_response_time_incorrect\"] = x.loc[\n (x[\"user_response_index\"] != x[\"correct_response_index\"]),\n \"response_time_duration_ms\",\n ].median()\n\n # return as series\n indices = list(d.keys())\n return pd.Series(\n d,\n index=indices,\n )\n"; //# sourceMappingURL=python-code.d.ts.map