""" Custom Formula Hook Auto-generated by Atomizer Phase 2.9 Calculate safety factor Formula: safety_factor = yield_strength / max_stress Inputs: max_stress, yield_strength """ import sys import json from pathlib import Path def calculate_safety_factor(max_stress, yield_strength): """ Calculate custom metric using formula. Args: max_stress: float yield_strength: float Returns: float: safety_factor """ safety_factor = yield_strength / max_stress return safety_factor def main(): """Main entry point for hook execution.""" if len(sys.argv) < 2: print("Usage: python {} ".format(sys.argv[0])) sys.exit(1) input_file = Path(sys.argv[1]) # Read inputs with open(input_file, 'r') as f: inputs = json.load(f) # Extract required inputs max_stress = inputs.get("max_stress") if max_stress is None: print(f"Error: Required input 'max_stress' not found") sys.exit(1) yield_strength = inputs.get("yield_strength") if yield_strength is None: print(f"Error: Required input 'yield_strength' not found") sys.exit(1) # Calculate result result = calculate_safety_factor(max_stress, yield_strength) # Write output output_file = input_file.parent / "safety_factor_result.json" output = { "safety_factor": result, "formula": "yield_strength / max_stress", "inputs_used": {"max_stress": max_stress, "yield_strength": yield_strength} } with open(output_file, 'w') as f: json.dump(output, f, indent=2) print(f"safety_factor = {result:.6f}") print(f"Result saved to: {output_file}") return result if __name__ == '__main__': main()