{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.13","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"tpu1vmV38","dataSources":[{"sourceId":51294,"databundleVersionId":6923401,"sourceType":"competition"}],"dockerImageVersionId":30617,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"pip install xgboost","metadata":{"execution":{"iopub.status.busy":"2023-12-07T22:45:31.620963Z","iopub.execute_input":"2023-12-07T22:45:31.621366Z","iopub.status.idle":"2023-12-07T22:45:35.124889Z","shell.execute_reply.started":"2023-12-07T22:45:31.621335Z","shell.execute_reply":"2023-12-07T22:45:35.123617Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"%pip install viennarna","metadata":{"execution":{"iopub.status.busy":"2023-12-07T22:45:35.127064Z","iopub.execute_input":"2023-12-07T22:45:35.127394Z","iopub.status.idle":"2023-12-07T22:45:38.506679Z","shell.execute_reply.started":"2023-12-07T22:45:35.127363Z","shell.execute_reply":"2023-12-07T22:45:38.505501Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nfrom sklearn.model_selection import train_test_split\nfrom sklearn.preprocessing import LabelEncoder\nimport xgboost as xgb\nfrom sklearn.metrics import mean_absolute_error\n\n# Assuming you have installed ViennaRNA Python bindings\nfrom RNA import fold, pf_fold\n\n# Define a function to extract features from RNA sequence\ndef extract_features(sequence):\n    # Predict the minimum free energy (MFE) structure\n    structure, mfe = fold(sequence)\n    \n    # Predict base-pairing probabilities\n    _, bpp_matrix = pf_fold(sequence)\n\n    # Example feature extraction\n    features = {\n        'length': len(sequence),\n        'mfe': mfe,\n        'gc_content': sequence.count('G') + sequence.count('C') / len(sequence),\n        'au_content': sequence.count('A') + sequence.count('U') / len(sequence),\n        # Add more features based on your analysis needs\n    }\n    return features\n\n# Load your training data\ntrain_data = pd.read_csv('/kaggle/input/stanford-ribonanza-rna-folding/train_data_QUICK_START.csv')\n\n# Basic preprocessing\nencoder = LabelEncoder()\ntrain_data['experiment_type'] = encoder.fit_transform(train_data['experiment_type'])\n\n# Feature Engineering for RNA sequences\ntrain_data = train_data.join(train_data['sequence'].apply(lambda x: pd.Series(extract_features(x))))\n\n# Select features and target\nfeature_columns = ['length', 'mfe', 'gc_content', 'au_content', 'experiment_type']  # Add your feature columns\nfeatures = train_data[feature_columns]\ntargets = train_data.filter(regex='^reactivity_')\n\n# Split data into training and validation sets\nX_train, X_val, y_train, y_val = train_test_split(features, targets, test_size=0.2, random_state=42)\n\n# Fill NaN values if present\ny_train.fillna(0, inplace=True)\ny_val.fillna(0, inplace=True)\n\n# Initialize and train the XGBoost Regressor\nxgb_regressor = xgb.XGBRegressor(objective='reg:squarederror', random_state=42)\nxgb_regressor.fit(X_train, y_train)\n\n# Predict on the validation set\ny_val_pred_xgb = xgb_regressor.predict(X_val)\n\n# Calculate Mean Absolute Error (MAE) for XGBoost\nmae_xgb = mean_absolute_error(y_val, y_val_pred_xgb)\nprint(f\"MAE (XGBoost): {mae_xgb}\")\n\n# Generate final predictions for submission\nsubmission_data = pd.read_csv('/kaggle/input/stanford-ribonanza-rna-folding/sample_submission.csv')\nmean_val_predictions = y_val_pred_xgb.mean(axis=0)\nfor i, column in enumerate(submission_data.columns[1:]):\n    submission_data[column] = mean_val_predictions[i]\n\n# Save the submission file\nsubmission_data.to_csv('submission_with_mean_predictions.csv', index=False)\n","metadata":{"execution":{"iopub.status.busy":"2023-12-07T22:45:38.508217Z","iopub.execute_input":"2023-12-07T22:45:38.508535Z"},"trusted":true},"execution_count":null,"outputs":[]}]}