{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.12.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceType":"competition","sourceId":118765,"databundleVersionId":16320058}],"dockerImageVersionId":31286,"isInternetEnabled":false,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\n\nDATA_PATH = \"/kaggle/input/competitions/stanford-rna-3d-folding-2\"\ntest_df = pd.read_csv(f\"{DATA_PATH}/test_sequences.csv\")\n\ndataset = []\n\nfor _, row in test_df.iterrows():\n    seq = row[\"sequence\"]\n    L = len(seq)\n\n    # --- build distance matrix ---\n    D = np.zeros((L, L))\n\n    for i in range(L):\n        for j in range(L):\n            dist = abs(i - j)\n            base_dist = 1.0 + 0.3 * dist\n\n            if (seq[i], seq[j]) in [(\"A\",\"U\"),(\"U\",\"A\"),(\"C\",\"G\"),(\"G\",\"C\")]:\n                base_dist *= 0.7\n\n            D[i, j] = base_dist\n\n    # --- MDS ---\n    H = np.eye(L) - np.ones((L, L))/L\n    B = -0.5 * H @ (D**2) @ H\n\n    eigvals, eigvecs = np.linalg.eigh(B)\n    idx = np.argsort(eigvals)[::-1][:3]\n\n    coords = eigvecs[:, idx] * np.sqrt(np.maximum(eigvals[idx], 0))\n\n    # store data\n    dataset.append({\n        \"sequence\": seq,\n        \"coords\": coords.tolist()\n    })\n\ndf = pd.DataFrame(dataset)\ndf.to_csv(\"pseudo_train.csv\", index=False)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2026-03-30T23:37:16.902442Z","iopub.execute_input":"2026-03-30T23:37:16.902781Z","iopub.status.idle":"2026-03-30T23:37:57.171962Z","shell.execute_reply.started":"2026-03-30T23:37:16.902753Z","shell.execute_reply":"2026-03-30T23:37:57.171019Z"}},"outputs":[],"execution_count":null}]}