{"cells":[{"cell_type":"code","execution_count":null,"metadata":{},"outputs":[],"source":"import pandas as pd\nfrom pathlib import Path\nimport os\n\n# Load sample submission for exact format\nsample_path = '/kaggle/input/competitions/stanford-rna-3d-folding-2/sample_submission.csv'\nsample = pd.read_csv(sample_path)\nprint(f'Sample submission: {len(sample)} rows')\n\n# Try to load our predictions\npred_path = '/kaggle/input/datasets/privatepiecerec/rna-3d-predictions/predictions.csv'\nif Path(pred_path).exists():\n    preds = pd.read_csv(pred_path)\n    print(f'Loaded predictions: {len(preds)} rows')\n    \n    # Merge with sample to ensure exact format and order\n    # Keep only the ID column from sample, merge predictions\n    coord_cols = ['x_1','y_1','z_1','x_2','y_2','z_2','x_3','y_3','z_3','x_4','y_4','z_4','x_5','y_5','z_5']\n    \n    # Create submission by merging\n    submission = sample[['ID', 'resname', 'resid']].copy()\n    pred_coords = preds[['ID'] + coord_cols].copy()\n    submission = submission.merge(pred_coords, on='ID', how='left')\n    \n    # Fill any NaN with 0\n    submission = submission.fillna(0)\n    print(f'Merged submission: {len(submission)} rows')\nelse:\n    print('Predictions not found, using sample')\n    submission = sample.copy()\n\n# Verify format matches sample\nassert list(submission.columns) == list(sample.columns), f'Column mismatch: {list(submission.columns)} vs {list(sample.columns)}'\nassert len(submission) == len(sample), f'Row count mismatch: {len(submission)} vs {len(sample)}'\nassert list(submission['ID']) == list(sample['ID']), 'ID order mismatch'\n\n# Save with same format as sample (no index)\nsubmission.to_csv('submission.csv', index=False)\nprint(f'Saved submission.csv')\nprint(submission.head())"}],"metadata":{"kernelspec":{"display_name":"Python 3","language":"python","name":"python3"},"language_info":{"name":"python","version":"3.10.0"}},"nbformat":4,"nbformat_minor":4}