{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":87793,"databundleVersionId":11228175,"sourceType":"competition"}],"dockerImageVersionId":30918,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"This notebook is based on [Rafi Hai's](http://www.kaggle.com/rafiko1) work https://www.kaggle.com/code/rafiko1/standford-ribonanza-rna-theory-short-eda. \n<center> <img src = \"https://media.springernature.com/lw685/springer-static/image/art%3A10.1186%2Fs12859-019-3120-y/MediaObjects/12859_2019_3120_Fig4_HTML.png\"></center> \n\n<h1><center> Stanford 3D RNA Folding </center></h1>","metadata":{}},{"cell_type":"markdown","source":"# 1. Introduction\n\nThis notebook is aimed as a first introduction to the world of RNA and the biology behind it. 🔬 <br>\nWe will go through some *theory* first, explain the concepts and provide illustrations when needed! <br> <br>\nThe theory in science and biology is constantly evolving, so you can use the information below as a form of basics to get started and tackle more advanced topics in this competition.","metadata":{}},{"cell_type":"markdown","source":"# 2. RNA theory basic 🧬  \n","metadata":{}},{"cell_type":"markdown","source":"## 2.1 What is RNA?","metadata":{}},{"cell_type":"markdown","source":"RNA, or ribonucleic acid, is a molecule in your body that plays a crucial role in carrying out instructions for building and maintaining your cells. Think of it as a messenger that uses genetic information from your DNA (deoxyribonucleic acid) to the parts of your cells that make proteins. Proteins are like the workers in your body, performing various tasks to keep you alive and functioning.\n\nSo, in simple terms, RNA is a molecule that helps transfer genetic information from DNA to make sure  cells can do their jobs properly.","metadata":{}},{"cell_type":"markdown","source":"## 2.2 What is the structure of RNA?\n<img src=\"https://i.ibb.co/3SS9hxr/screen2021-08-26-14-50-37.png\" alt=\"screen2021-08-26-14-50-37\" border=\"0\" width = 900/></a>\n\n[Image source](https://www.science.org/doi/10.1126/science.abk1971)\n\n### Primary structure\nThe primary structure of RNA refers to the linear sequence of nucleotides that make up the RNA molecule. Nucleotides are the building blocks of RNA, and each nucleotide consists of three components:\n\n* <b> Sugar </b>: In RNA, the sugar component is called ribose. It's a five-carbon sugar molecule that forms the backbone of the RNA strand. This ribose sugar is connected to the other components of the nucleotide.\n\n* <b> Phosphate Group </b>: Each nucleotide also contains a phosphate group. The phosphate group links the ribose sugars together to form the sugar-phosphate backbone of the RNA molecule.\n\n* <b> Nucleotide Base </b>: The third component of a nucleotide is a nitrogenous base. In RNA, there are four possible bases:\n\n<!-- <div style=\"border-radius:10px; border:#FFC67D solid; padding: 1px; background-color: #F3f9ed; font-size:100%; text-align:center\"> -->\n<p style=\"text-align: center;\"> <code> Adenine (A) </p>\n<p style=\"text-align: center;\"> <code> Cyosine (C) </p>\n<p style=\"text-align: center;\"> <code> Guanine (G) </p>\n<p style=\"text-align: center;\"> <code> Uracil (U) </p>\n    \nThe primary structure of RNA is the specific order in which these four bases are arranged along the sugar-phosphate backbone. This sequence of bases carries the genetic information in the RNA molecule, much like the letters in a sentence convey meaning in written language.\n\nFor example, a simple RNA sequence might look like this:\nAGCUAGUCAUCGGU\n\nIn this sequence, the order of bases (A, G, C, U, A, etc.) represents the primary structure of the RNA molecule. This sequence encodes the instructions for building a specific protein or performing other cellular functions, depending on the type of RNA and its role in the cell.\n\n### Secondary structure\n<img src = \"https://media.springernature.com/full/springer-static/image/art%3A10.1186%2Fs12864-019-6300-2/MediaObjects/12864_2019_6300_Fig1_HTML.png\" width = 600>\n\nThe secondary structure of RNA refers to the specific way in which the RNA molecule folds and forms various structural elements based on the interactions between its constituent nucleotides. These interactions primarily involve the complementary base pairing between adenine (A) and uracil (U), as well as cytosine (C) and guanine (G). Here are some key aspects of RNA secondary structure:\n\n* <b> Base Pairing:  </b> In Watson-Crick base pairing, adenine (A) pairs with uracil (U), and cytosine (C) pairs with guanine (G). The pairing happens through hydrogen bonds, A and U pair with two hydrogen bonds and G and C with three hydrogen bonds. This complementary base pairing forms one of the basics for the secondary structure.\n\n* <b> Stacking: </b> Stacking refers to the phenomenon where adjacent nucleotide bases along the RNA strand form close, stable interactions with each other. This interaction is sometimes called \"base stacking\" or \"π-π stacking\". Imagine you have a stack of coins, and each coin represents a nucleotide base (A, U, C, or G) in the RNA molecule. When these bases come together, they can arrange themselves in a way that allows the flat surfaces of the bases to stack on top of each other, much like how coins stack in a neat pile. <br> Unlike in base pairing, here each nucleotide (A, U, C or G) can stack on top of the other.\n\n* <b> Stem-Loop Structures or hairpin loops : </b> A very common secondary structure element in RNA is the formation of stem-loop structures, also known as hairpin loops. This occurs when a sequence of nucleotides in the RNA molecule folds back on itself, creating a double-stranded region (the stem) connected to a loop. The stem is formed by base pairing, while the loop is a single-stranded region with no pairing. These stem-loop structures can have functional roles within the cell.\n\n* <b> Bulges and Internal Loops: </b> Sometimes, in the process of forming a double-stranded structure, there may be unpaired nucleotides that create bulges or internal loops. Bulges have unpaired nucleotides on one side while internal loops have unpaired nucleotides on both sides of the double strand. These regions can also have specific functions or influence the overall shape of the RNA molecule.\n\n\n* <b> Pseudoknots and multi-loops: </b> In more complex RNA structures, pseudoknots can form. These are regions where the RNA strand folds back on itself and creates additional levels of base pairing, resulting in a knot-like structure. Pseudoknots can take on many various forms like Kissing Hairpin, H-Type and more. They play important roles in the function of certain RNA molecules.\n\nOverall, the secondary structure of RNA is essential for its function. It determines how the molecule folds into specific shapes, which can be critical for various cellular processes, including protein synthesis, RNA processing, and regulatory functions. Think of it as the way the RNA molecule folds itself, creating patterns like loops and stems, to carry out its biological tasks within the cell.\n\n### Tertiary structure\n\nThe tertiary structure of RNA is the overall three-dimensional shape that the RNA molecule adopts.  It results from the secondary structure and more complex interactions between distant parts of the molecule. The 3D shape determines how an RNA molecule interacts with other molecules, such as proteins, metal ions, or other RNAs.  \n\nThe tertiary structure is critical for the RNA's specific function. It's like the final, folded origami form of the RNA molecule, determining its function within the cel.\n\nHere's an overview of RNA tertiary structure:\n\n* <b> Interaction of Distant Regions: </b> The tertiary structure arises from interactions between distant parts of the RNA molecule, which can also be far apart in the primary structure. These interactions are formed by many complex interactions in secondary structure like base stacking, base stacking, formation of loops or stems and pseudoknots.\n\n* <b> RNA Motifs: </b> Certain structural regions structural involve specific arrangements of nucleotides, called motifs, that stabilize the RNA's 3D shape and enable interactions with other molecules. Examples are the GNRA tetraloop, kink-turn, and riboswitches, which play important roles in RNA tertiary structure.\n\n* <b> Metal Ions: </b> Metal ions, such as magnesium (Mg²⁺), can bind to RNA molecules and play a crucial role in stabilizing their tertiary structure. These ions often coordinate with phosphate groups in the RNA backbone.\n\n* <b> Protein Interactions: </b> RNA molecules can interact with proteins, and these interactions can influence RNA folding. Some RNA-binding proteins help RNA molecules adopt their proper 3D shapes for specific functions.\n\n* <b> Function: </b> The tertiary structure of RNA is intimately linked to its function. Different RNA molecules, such as ribosomal RNA (rRNA), transfer RNA (tRNA), and ribozymes, have distinct tertiary structures that enable them to perform essential cellular functions, such as protein synthesis and catalyzing chemical reactions.\n\nIn summary, RNA tertiary structure is the complex 3D arrangement of an RNA molecule that arises from interactions between distant parts of the molecule. This structure is crucial for the RNA's function, whether it's guiding protein synthesis, participating in cellular processes, or carrying out catalytic activities. Understanding RNA's tertiary structure is essential for advancing our knowledge of cellular biology and designing RNA-based therapies and technologies.","metadata":{}},{"cell_type":"markdown","source":"## 2.3 RNA folding\n\nRNA folding is the process in which the RNA folds into itself involving the primary, secondary and tertiary structure. <br> RNA folding involves molecule bending, twisting, and arranging itself into the specific 3D pattern. This process is not static; it can change in response to environmental conditions or interactions with other molecules.\n\nPredicting RNA folding and the tertiary structure of RNA computationally is a challenging task. Researchers use various algorithms and experimental data to model and understand the 3D shapes of RNA molecules. The study of RNA and its structure is expanding, and reasearch constantly exposes new findings.\n\nIn this competition, understanding the biological aspects of RNA folding is key to create accurate models!\n\nHere's a beautiful animation of the process of RNA folding in real-time action:","metadata":{}},{"cell_type":"code","source":"from IPython.display import YouTubeVideo\nYouTubeVideo('2XTi9LG9NnU', width=800, height=300)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-28T13:28:34.451249Z","iopub.execute_input":"2025-02-28T13:28:34.451614Z","iopub.status.idle":"2025-02-28T13:28:34.701860Z","shell.execute_reply.started":"2025-02-28T13:28:34.451578Z","shell.execute_reply":"2025-02-28T13:28:34.700852Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"## 2.4 What are the different types of RNA?\n\n### Coding RNA (mRNA) vs. Non-coding RNA\nRNA's can be divided into those that are coding (≈2%) and those that are non-coding (≈98%). <br>\n\n<b> Coding RNA (= mRNA) </b>, acts like a chef's recipe book, providing the step-by-step instructions to assemble proteins in the cell. It carries the instructions (a copy from DNA) in the cell's nucleus to the ribosomes (protein-making machinery) in the cytoplasm. These instructions tell the ribosome how to build a specific protein. Without mRNA, the cell wouldn't know how to make the proteins it needs for growth, repair, and various cellular processes.\n\n<b> Non-coding RNA </b>, on the other hand, doesn't provide instructions for making proteins. Instead, it takes on various behind-the-scenes roles within the cell. Some types help manage when and how genes are used, while others assist in the processing and modification of different RNA molecules. Essentially, non-coding RNA plays more of a supportive and regulatory role in the cell's overall operations.\n\n> 📌**Note**:  Describing all types of non-coding RNA in more detail is currently beyond the scope of the notebook. If you are interested to know more, I recommend checking out following Youtube videos about [Non-coding RNAs](https://www.youtube.com/watch?v=hKU8JQOgYmU) and [Structue, function, types of RNAs](https://www.youtube.com/watch?v=FThA4Vxs3v4)\n\n### Involved in protein synthesis: mRNA, tRNA and rRNA\n<img src = \"https://www.yourgenome.org/wp-content/uploads/2022/04/rna-types_yourgenome.png\" width=600>\n\n[Image source](https://www.yourgenome.org/wp-content/uploads/2022/04/rna-types_yourgenome.png)\n\nThe three main types in protein synthesis: mRNA, tRNA, and rRNA play critical roles in the process of making proteins, which are fundamental to life and the functioning of cells. Here's why each of them is important, using the analogy of preparing a recipe: <br>\n\n* <b> mRNA (Messenger RNA) </b>: mRNA is the coding RNA and acts like a recipe card. It contains the instructions for making a specific dish (protein) that is made of ingredients (amino acids). Just as a recipe tells you what ingredients to use and how to prepare them, mRNA carries the recipe for a protein and tells the cell which amino acids to use and in what order.\n\n* <b> tRNA (Transfer RNA) </b>:  tRNA is like the chef's assistant who brings the ingredients (amino acids) to the kitchen. Imagine you're cooking, and you need specific ingredients (amino acids) for your dish. Each tRNA molecule is like a little delivery person that brings the right ingredient (amino acid) to the chef (ribosome) according to the recipe's instructions (mRNA).\n\n* <b> rRNA (Ribosomal RNA) </b>:  rRNA is like the kitchen and cooking utensils. It forms the structure of the kitchen and helps the chef (ribosome) assemble the ingredients (amino acids) and cook them into the final dish (protein). It's the essential framework for the entire cooking process.\n\nIn summary, mRNA, tRNA, and rRNA are essential components of the cellular machinery that translates genetic information into functional proteins. Proteins are involved in virtually every aspect of cellular function, making these RNA molecules indispensable for the survival and proper functioning of cells and organisms.\n\n> 📌**Note**: For more detailed knowledge about mRNA, tRNA and rRNA please refer to Youtube videos about [mRNA, tRNA and rRNA](https://www.youtube.com/watch?v=NQ4is2HeoHI) and [mRNA, tRNA, and rRNA function](http://https://www.youtube.com/watch?v=1THyMOk3WU0)","metadata":{}},{"cell_type":"markdown","source":"## 2.5 How is RNA different from DNA?\n<img src =\"https://assets.technologynetworks.com/production/dynamic/images/content/296719/what-are-the-key-differences-between-dna-and-rna-296719-1280x720.webp?cb=12456568\" width = 900>\n\n[Image source](https://assets.technologynetworks.com/production/dynamic/images/content/296719/what-are-the-key-differences-between-dna-and-rna-296719-1280x720.webp?cb=12456568)\n\nRNA and DNA are both nucleic acids. <br>\n\nThink of nucleic acid as a ladder, where the sides (backbone) of the ladder is made from a structure called sugar phosphate and the rungs of the ladder are made from four different alternating nucleobases - for `DNA it's (A, C, G and T)`, for `RNA it's (A, C, G and U)`. . <br>\n\nEach step in the ladder - one side and rung of ladder - is called a nucleotide. <br>\nThus, nucleotides are the main building blocks of DNA and RNA.\n\nThe main differences of DNA (left side of the picture) and RNA (right side of picture):\n\n* <b> Structure </b>: DNA has a double-stranded helical structure, like a twisted ladder, while RNA is typically single-stranded.\n\n* <b> Sugar (side of ladder) </b>: DNA contains deoxyribose sugar in its sugar phosphate structure, while RNA contains ribose sugar. The sugar ribose has an extra oxygen atom compared to sugar deoxyribose.\n\n* <b> Nucleobases (rungs of ladder) </b>: Both DNA and RNA use four chemical bases, but RNA uses uracil (U) instead of thymine (T), which is found in DNA. So, RNA has adenine (A), cytosine (C), guanine (G), and uracil (U), while DNA has adenine (A), cytosine (C), guanine (G), and thymine (T).\n\n\n","metadata":{}},{"cell_type":"markdown","source":"# 3. Competition short EDA 📈","metadata":{}},{"cell_type":"markdown","source":"## 3.1 Imports 📚⬇","metadata":{}},{"cell_type":"code","source":"# General\nimport glob\nimport os\nimport pandas as pd\nimport numpy as np\n# import pandas_profiling as pp\n\n# Plotting\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nimport plotly.express as px\nimport missingno as msno\n\n# Options\n# pd.set_option('display.max_columns', 1000)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-28T13:29:31.614286Z","iopub.execute_input":"2025-02-28T13:29:31.614733Z","iopub.status.idle":"2025-02-28T13:29:33.957112Z","shell.execute_reply.started":"2025-02-28T13:29:31.614704Z","shell.execute_reply":"2025-02-28T13:29:33.956070Z"}},"outputs":[],"execution_count":null},{"cell_type":"markdown","source":"### Datasets description","metadata":{}},{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport seaborn as sns\nfrom sklearn.decomposition import PCA\nfrom sklearn.manifold import TSNE\nfrom mpl_toolkits.mplot3d import Axes3D\n\n# Load datasets\ntrain_sequences = pd.read_csv('/kaggle/input/stanford-rna-3d-folding/train_sequences.csv')\nvalidation_sequences = pd.read_csv('/kaggle/input/stanford-rna-3d-folding/validation_sequences.csv')\ntest_sequences = pd.read_csv('/kaggle/input/stanford-rna-3d-folding/test_sequences.csv')\ntrain_labels = pd.read_csv('/kaggle/input/stanford-rna-3d-folding/train_labels.csv')\nvalidation_labels = pd.read_csv('/kaggle/input/stanford-rna-3d-folding/validation_labels.csv')","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-28T13:45:36.825499Z","iopub.execute_input":"2025-02-28T13:45:36.825975Z","iopub.status.idle":"2025-02-28T13:45:37.860684Z","shell.execute_reply.started":"2025-02-28T13:45:36.825916Z","shell.execute_reply":"2025-02-28T13:45:37.859786Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Basic Info\ndef dataset_overview(df, name):\n    print(f\"{name} Dataset Overview\")\n    print(df.info())\n    print(\"Missing Values:\")\n    print(df.isnull().sum())\n    print(\"\\n\")\n\ndataset_overview(train_sequences, \"Train Sequences\")\ndataset_overview(train_labels, \"Train Labels\")","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-28T13:45:52.314058Z","iopub.execute_input":"2025-02-28T13:45:52.314487Z","iopub.status.idle":"2025-02-28T13:45:52.397269Z","shell.execute_reply.started":"2025-02-28T13:45:52.314456Z","shell.execute_reply":"2025-02-28T13:45:52.396057Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Sequence Length Distribution\ntrain_sequences['seq_length'] = train_sequences['sequence'].apply(len)\nplt.figure(figsize=(10, 5))\nsns.histplot(train_sequences['seq_length'], bins=30, kde=True)\nplt.xlabel(\"Sequence Length\")\nplt.ylabel(\"Count\")\nplt.title(\"RNA Sequence Length Distribution\")\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-28T13:46:08.914226Z","iopub.execute_input":"2025-02-28T13:46:08.914629Z","iopub.status.idle":"2025-02-28T13:46:09.328723Z","shell.execute_reply.started":"2025-02-28T13:46:08.914600Z","shell.execute_reply":"2025-02-28T13:46:09.327554Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Nucleotide Composition\ndef nucleotide_composition(sequences):\n    nucleotides = ['A', 'C', 'G', 'U']\n    counts = {nuc: 0 for nuc in nucleotides}\n    \n    for seq in sequences:\n        for char in seq:\n            if char in counts:\n                counts[char] += 1\n    \n    return counts\n\ncomp = nucleotide_composition(train_sequences['sequence'])\nsns.barplot(x=list(comp.keys()), y=list(comp.values()))\nplt.title(\"Nucleotide Composition in Training Set\")\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-28T13:46:27.281125Z","iopub.execute_input":"2025-02-28T13:46:27.281560Z","iopub.status.idle":"2025-02-28T13:46:27.501257Z","shell.execute_reply.started":"2025-02-28T13:46:27.281530Z","shell.execute_reply":"2025-02-28T13:46:27.500039Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Temporal Cutoff Distribution\ntrain_sequences['temporal_cutoff'] = pd.to_datetime(train_sequences['temporal_cutoff'], errors='coerce')\nplt.figure(figsize=(10, 5))\nsns.histplot(train_sequences['temporal_cutoff'].dropna(), bins=30, kde=True)\nplt.xlabel(\"Temporal Cutoff Year\")\nplt.ylabel(\"Count\")\nplt.title(\"Temporal Cutoff Distribution\")\nplt.show()\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-28T13:46:43.824130Z","iopub.execute_input":"2025-02-28T13:46:43.824543Z","iopub.status.idle":"2025-02-28T13:46:44.227805Z","shell.execute_reply.started":"2025-02-28T13:46:43.824513Z","shell.execute_reply":"2025-02-28T13:46:44.226577Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# Checking Structural Data (Train Labels)\ndef structural_summary(df):\n    print(\"Unique Targets:\", df['ID'].apply(lambda x: x.split('_')[0]).nunique())\n    print(\"Unique Residues:\", df['ID'].apply(lambda x: x.split('_')[1]).nunique())\n    print(\"Nucleotide Types:\", df['resname'].unique())\n    print(\"Coordinate Columns:\", df.columns[3:].tolist())\n\nstructural_summary(train_labels)","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-28T13:46:54.818367Z","iopub.execute_input":"2025-02-28T13:46:54.818890Z","iopub.status.idle":"2025-02-28T13:46:54.958479Z","shell.execute_reply.started":"2025-02-28T13:46:54.818847Z","shell.execute_reply":"2025-02-28T13:46:54.957477Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# PCA for Structural Data\ncoordinate_cols = [col for col in train_labels.columns if 'x_' in col or 'y_' in col or 'z_' in col]\npca = PCA(n_components=2)\npca_result = pca.fit_transform(train_labels[coordinate_cols].dropna())\nplt.figure(figsize=(8,6))\nsns.scatterplot(x=pca_result[:,0], y=pca_result[:,1], alpha=0.5)\nplt.xlabel(\"PC1\")\nplt.ylabel(\"PC2\")\nplt.title(\"PCA Projection of RNA Structures\")\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-28T13:47:13.713139Z","iopub.execute_input":"2025-02-28T13:47:13.713560Z","iopub.status.idle":"2025-02-28T13:47:14.466302Z","shell.execute_reply.started":"2025-02-28T13:47:13.713528Z","shell.execute_reply":"2025-02-28T13:47:14.465192Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# t-SNE Visualization\ntsne = TSNE(n_components=2, perplexity=30, random_state=42)\ntsne_result = tsne.fit_transform(train_labels[coordinate_cols].dropna())\nplt.figure(figsize=(8,6))\nsns.scatterplot(x=tsne_result[:,0], y=tsne_result[:,1], alpha=0.5)\nplt.xlabel(\"t-SNE Dim 1\")\nplt.ylabel(\"t-SNE Dim 2\")\nplt.title(\"t-SNE Visualization of RNA Structures\")\nplt.show()","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-28T13:47:27.613503Z","iopub.execute_input":"2025-02-28T13:47:27.613931Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"# 3D Visualization of RNA Structures\nfig = plt.figure(figsize=(10,7))\nax = fig.add_subplot(111, projection='3d')\nax.scatter(train_labels['x_1'], train_labels['y_1'], train_labels['z_1'], alpha=0.5)\nax.set_xlabel('X')\nax.set_ylabel('Y')\nax.set_zlabel('Z')\nax.set_title('3D Visualization of RNA Structures')\nplt.show()\n\nprint(\"EDA Completed! 🚀\")\n","metadata":{"trusted":true,"execution":{"iopub.status.busy":"2025-02-28T14:03:55.367986Z","iopub.execute_input":"2025-02-28T14:03:55.368453Z","iopub.status.idle":"2025-02-28T14:03:58.385841Z","shell.execute_reply.started":"2025-02-28T14:03:55.368417Z","shell.execute_reply":"2025-02-28T14:03:58.384405Z"}},"outputs":[],"execution_count":null},{"cell_type":"code","source":"","metadata":{"trusted":true},"outputs":[],"execution_count":null}]}