Files
Atomizer/archive/scripts/extract_history_from_db.py
Anto01 2b3573ec42 feat: Add AtomizerField training data export and intelligent model discovery
Major additions:
- Training data export system for AtomizerField neural network training
- Bracket stiffness optimization study with 50+ training samples
- Intelligent NX model discovery (auto-detect solutions, expressions, mesh)
- Result extractors module for displacement, stress, frequency, mass
- User-generated NX journals for advanced workflows
- Archive structure for legacy scripts and test outputs
- Protocol documentation and dashboard launcher

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-26 12:01:50 -05:00

61 lines
1.7 KiB
Python

"""
Extract optimization history from Optuna database and create incremental JSON file.
"""
import sys
import json
from pathlib import Path
import optuna
def main():
if len(sys.argv) < 2:
print("Usage: python extract_history_from_db.py <path/to/study.db>")
sys.exit(1)
db_file = Path(sys.argv[1])
if not db_file.exists():
print(f"ERROR: Database not found: {db_file}")
sys.exit(1)
# Load Optuna study
storage = f"sqlite:///{db_file}"
study_name = db_file.parent.parent.name # Extract from path
try:
study = optuna.load_study(study_name=study_name, storage=storage)
except:
# Try to get first study if name doesn't match
studies = optuna.get_all_study_names(storage)
if not studies:
print("ERROR: No studies found in database")
sys.exit(1)
study = optuna.load_study(study_name=studies[0], storage=storage)
print(f"Study: {study.study_name}")
print(f"Trials: {len(study.trials)}")
# Extract history
history = []
for trial in study.trials:
if trial.state != optuna.trial.TrialState.COMPLETE:
continue
record = {
'trial_number': trial.number,
'design_variables': trial.params,
'results': trial.user_attrs, # May be empty if not stored
'objective': trial.value
}
history.append(record)
# Write to JSON
output_file = db_file.parent / 'optimization_history_incremental.json'
with open(output_file, 'w') as f:
json.dump(history, f, indent=2)
print(f"\nHistory exported to: {output_file}")
print(f" {len(history)} completed trials")
if __name__ == "__main__":
main()