File size: 1,833 Bytes
5ed1762 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | #!/usr/bin/env python3
from __future__ import annotations
import argparse
import json
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
SRC = ROOT / "src"
if str(SRC) not in sys.path:
sys.path.insert(0, str(SRC))
from dce_analyzer.simulate import generate_simulated_dce # noqa: E402
def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser(description="Generate a simulated long-format choice dataset.")
parser.add_argument("--n-individuals", type=int, default=300)
parser.add_argument("--n-tasks", type=int, default=8)
parser.add_argument("--n-alts", type=int, default=3)
parser.add_argument("--seed", type=int, default=42)
parser.add_argument(
"--out",
type=Path,
default=Path("data/generated/simulated_choice_data.csv"),
help="Output CSV path.",
)
parser.add_argument(
"--truth-out",
type=Path,
default=Path("data/generated/simulated_truth.json"),
help="Output JSON path for true simulation parameters.",
)
return parser.parse_args()
def main() -> None:
args = parse_args()
output = generate_simulated_dce(
n_individuals=args.n_individuals,
n_tasks=args.n_tasks,
n_alts=args.n_alts,
seed=args.seed,
)
args.out.parent.mkdir(parents=True, exist_ok=True)
args.truth_out.parent.mkdir(parents=True, exist_ok=True)
output.data.to_csv(args.out, index=False)
with open(args.truth_out, "w", encoding="utf-8") as handle:
json.dump(output.true_parameters, handle, indent=2, default=str)
print(f"Saved simulated data to: {args.out}")
print(f"Saved true parameters to: {args.truth_out}")
print(f"Rows: {len(output.data)}, Columns: {len(output.data.columns)}")
if __name__ == "__main__":
main()
|