{ "cells": [ { "cell_type": "markdown", "id": "cell-1", "metadata": {}, "source": [ "# Tutorial 1: Merge Multi-ROI Chromatin Trace Data\n", "\n", "This tutorial walks through the standard workflow for merging chromatin tracing data from multiple regions of interest (ROIs):\n", "\n", "1. **Collect** trace files from all ROIs into one folder\n", "2. **Assess quality** by computing Pearson correlations between ROIs\n", "3. **Remove** ROIs with poor correlation (outliers)\n", "4. **Re-assess** the correlation matrix after removal\n", "5. **Merge** the remaining trace files into a single table\n", "6. **Statistics** on the merged dataset\n", "7. **Next steps** — link to Tutorial 2 for quality control" ] }, { "cell_type": "markdown", "id": "d776dfbb", "metadata": {}, "source": [ "## Step 0: Set-up your data and output path" ] }, { "cell_type": "code", "execution_count": 6, "id": "cell-0", "metadata": {}, "outputs": [], "source": [ "import os\n", "from pathlib import Path\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import matplotlib.image as mpimg\n" ] }, { "cell_type": "markdown", "id": "0f7d0189", "metadata": {}, "source": [ "\n", "Set up your folder data path:" ] }, { "cell_type": "code", "execution_count": 25, "id": "b78d25aa", "metadata": {}, "outputs": [], "source": [ "data_path = \"/mnt/grey/DATA/users/zidoum/traceraptops/jupyterlab_amel\"" ] }, { "cell_type": "markdown", "id": "c4caa4da", "metadata": {}, "source": [ "Set up destination folder for output:\n" ] }, { "cell_type": "code", "execution_count": 26, "id": "bdca0af8", "metadata": {}, "outputs": [], "source": [ "dest_path = f\"{data_path}/output\"" ] }, { "cell_type": "markdown", "id": "2546525a", "metadata": {}, "source": [ "Check ROIs detected:" ] }, { "cell_type": "code", "execution_count": 38, "id": "757b6dd0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Data path: /mnt/grey/DATA/users/zidoum/traceraptops/jupyterlab_amel\n", "Output path: /mnt/grey/DATA/users/zidoum/traceraptops/jupyterlab_amel/output\n", "\n", "Available ROIs:\n", " ROI_51\n", " ROI_52\n", " ROI_53\n", " ROI_54\n" ] } ], "source": [ "print(f\"Data path: {data_path}\")\n", "print(f\"Output path: {dest_path}\")\n", "print(f\"\\nAvailable ROIs:\")\n", "for d in sorted(Path(data_path).iterdir()):\n", " if d.is_dir() and \"ROI\" in d.name:\n", " print(f\" {d.name}\")" ] }, { "cell_type": "markdown", "id": "cell-2", "metadata": {}, "source": [ "## Step 1: Collect trace files from all ROIs\n", "\n", "`collect_files` scans each subdirectory of `--root` for a file matching `--example-file`.\n", "The `--variable-part \"13\"` indicates that the ROI number varies; fixed-length matching naturally excludes Matrix files (different filename length)." ] }, { "cell_type": "code", "execution_count": 31, "id": "cell-3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "------- Running collect_files.py --------\n", "Collect one file per subdirectory using pattern matching.\n", "\n", "Matched (4):\n", " ROI_51 -> /mnt/grey/DATA/users/zidoum/traceraptops/jupyterlab_amel/ROI_51/Trace_3D_barcode_mask-mask0_ROI-51.ecsv\n", " ROI_52 -> /mnt/grey/DATA/users/zidoum/traceraptops/jupyterlab_amel/ROI_52/Trace_3D_barcode_mask-mask0_ROI-52.ecsv\n", " ROI_53 -> /mnt/grey/DATA/users/zidoum/traceraptops/jupyterlab_amel/ROI_53/Trace_3D_barcode_mask-mask0_ROI-53.ecsv\n", " ROI_54 -> /mnt/grey/DATA/users/zidoum/traceraptops/jupyterlab_amel/ROI_54/Trace_3D_barcode_mask-mask0_ROI-54.ecsv\n", "No match (1):\n", " output\n", "\n", "Copied 4 file(s) to /mnt/grey/DATA/users/zidoum/traceraptops/jupyterlab_amel/output/raw_traces\n" ] } ], "source": [ "!collect_files --root {data_path} --example-file \"Trace_3D_barcode_mask-mask0_ROI-51.ecsv\" --variable-part \"51\" --copy-to {dest_path}/raw_traces --force" ] }, { "cell_type": "markdown", "id": "cell-4", "metadata": {}, "source": [ "## Step 2: Compute Pearson correlations between ROIs\n", "\n", "`trace_pearsons` computes a pairwise distance map for each ROI (median 3D distance between every barcode pair), then calculates the Pearson correlation between these maps.\n", "\n", "A high correlation between two ROIs means they share similar chromatin organization. An ROI with low correlation against all others is likely an outlier (imaging artifact, poor segmentation, etc.)." ] }, { "cell_type": "code", "execution_count": 33, "id": "cell-5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "------- Running trace_pearsons.py --------\n", "Compare chromatin trace tables by computing pairwise distances.\n", "\n", "Analyzing 4 trace files...\n", "Processing Trace_3D_barcode_mask-mask0_ROI-51.ecsv\n", "Processing Trace_3D_barcode_mask-mask0_ROI-52.ecsv\n", "Processing Trace_3D_barcode_mask-mask0_ROI-53.ecsv\n", "Processing Trace_3D_barcode_mask-mask0_ROI-54.ecsv\n", "$ Saved correlation matrix as /mnt/grey/DATA/users/zidoum/traceraptops/jupyterlab_amel/output/trace_correlation_matrix.png\n", "$ Saved correlation matrix data in NPY format: /mnt/grey/DATA/users/zidoum/traceraptops/jupyterlab_amel/output/trace_correlation_matrix.npy\n" ] }, { "data": { "image/png": "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uWbMmKF+/fqpR48eev755/XOO+9o3bp1Ouecc3T66aeruLhY06dP12effaYlS5Zo8+bNCofD6tSpk0aNGqVDDz1U4XC4xi/yxhgVFRVp+vTpmj59upYvXy7XddW0aVP17dtXJ5xwglq3bl3t+C1btujNN9/UO++8o1WrVikcDqtXr14aM2aMevfuvccrsFu2bNHbb7+tOXPmaOnSpdq8ebOSk5PVpUsX/fa3v9WAAQOqXff8c0VFRXr11Vf11ltvad26dWrSpIlGjRql4447TqmpqXGHm6r3atq0aXr77be1YsUKhcNh9ezZUyeffLL69u0b97kvWLBAxhj17du31oZtjuMoNTW1RoW5oKBAzz77rBo0aKCxY8fGVj8UFRXpiSeeUHJysk477TTNnj1bzz77rJYuXaoGDRropJNO0m9/+1slJSWpuLhYL774ot58800VFBSoQ4cOOvvss3XQQQdV6xlQWlqqp556StFoVOPHj1d6evpu35/ly5dr+vTpmjdvnlatWqVt27YpJydHffv21ejRo2tc01y1zP4///mPBg4cqE6dOmnKlCl69913tWHDBl100UUaM2aMFixYoGnTpqlXr146/PDDZYzRG2+8oTfffFOu62rZsmX685//HJt/u3btdOihh2rSpElKTk7WqaeeWuv8KyoqNHnyZBUUFOjkk09WixYt4vr3CwQCOumkk/TRRx/phRde0JAhQ6pdZ/7111/rv//9r0aMGLHTr82q77uq79lNmzYpKSlJnTt31qhRozRo0KDY96wxRjNnztQbb7yh7du3a/369brvvvtir52fn6+xY8cqHA7rhRde0KpVqzRmzBiVl5fr6aef1uzZs1VeXq77779f3bt31/Tp0zV//nyNHDkytoJk6dKlmjp1qtLS0nTKKacoMzOz2jlt2LBBzz33nIwxOvnkk9W0adO43isAgOUMAOwl1q9fb1q0aGFSU1PNp59+GrvfdV3z5z//2UgyF110kTnuuONMgwYNTNeuXU3nzp3NX/7yF+O6rvnkk09MRkaGycjIMO3btzc9e/Y0HTp0MCkpKSYtLc384Q9/MGVlZdXGdF3XLFu2zBxxxBEmHA6bzMxM07lzZ9O9e3fTpEkTEw6HzT333FPt+KVLl5qhQ4eacDhsGjZsaLp37246duxoUlJSTF5ennn00UdNJBL5Re/BZZddZiSZ888/37iuG7v//fffN2lpaSYzM9N06NDB9OzZ07Rv394kJyebjIwMc8stt5jt27dXe63PPvvMhMNh06tXLzNmzBiTnp5uOnToYLp06WLS09NNUlKSOffcc01RUVG1582cOdMkJSWZ4cOHV3tN13XNihUrzFFHHWXC4bBp0KCB6datm+nUqZNJTU01ubm55oEHHjAVFRW7PU/Xdc3vfvc7I8mccMIJNf5ddmXBggUmIyPD9OnTx5SUlMTuX7VqlcnJyTGtW7c29913n8nPzzcdOnQwXbt2NWlpaSY5OdncfvvtpqCgwIwZM8Y0bNjQdOvWzbRt29aEQiHTuHFjM2PGjGrve0FBgWnVqpVp2rSpWbt2bez+srIyc+CBB5q0tDTz1VdfVTuva6+91oRCIZOXl2e6dOlievbsaZo3b26CwaBp1aqVmTZtWrUxXNc1t912m5FkLr/8cjNixIjYe9u5c2fz4IMPGmOMeeqpp0wgEDAXXHCBiUajpqKiwowdO9aEQiEjyTiOY5KSkmK34447zmzevNn079/fpKSkmHfeeafauFVjf/XVVyYnJ8d06NDB/Pjjj7t9/3/44QfTrFkzk52dbebOnWv2339/07p1a7N69epqr3vNNdeYcDhsXnzxRTN+/HgjKfa9WuXjjz+u8T3bvn372PfsddddZ8rLy2Oved1115lwOFzr+fbt29ds3brVRCIRc/jhh5tAIGDuv/9+07VrV9OkSRPTo0cP07VrVzN79mzjuq4566yzjCTz3HPPxeazadMmM3z4cBMMBs1NN91U7Wu5rKzMnHvuuSYQCJhx48aZbdu27fa9AgDsHQjdAPYa8YTuRo0amUGDBpnZs2ebrVu3msLCQrN582ZjjDELFy40d911l5k7d64pKCgwJSUlZuPGjebNN9+MBcM33nij2piFhYVm+PDhJhAImCOOOMLMmjXLFBYWmuLiYrNy5Urz9NNPm6lTp1Y7ftiwYSYcDpsJEyaYRYsWmeLiYrNp0ybz0ksvmRYtWpgGDRqYTz75pEbAicfOQve8efPMPffcY+bNm2c2btxoSkpKTEFBgXn11VdN27ZtTXp6unn//fervVZV6A4Gg6Zp06Zm8uTJZtOmTWbLli3m3XffNZ07dzahUMjcf//91cbaWeguKioyI0eONKFQyJx55plmwYIFpqioyGzevNlMnTrVtGnTxmRnZ5sPPvhgt+fuuq6ZMmWKCYVCsQ9EFixYYIqLi00kEtnl83cXulNSUkynTp3MM888YzZu3Gi2bt1qXn75ZZObm2vy8vLM6aefbg499FDz2WefmaKiIrNu3Tpz5ZVXmkAgYI488shqHwD8ktA9adIk8+STT5qlS5eaLVu2mJKSEvP999+bO++806SlpZnu3bubdevWVXtOVehu1KiRGTp0qPn8889NUVGRKSwsNIWFhcaYmqG76kOQf/7znyYQCJhBgwaZuXPnmnnz5pl58+aZ7777zkSjUfPggw+aQCBgxo8fX+PDINd1zY033mgcxzETJ0400Wh0l/9uxlQP3UuWLDG33nqrCQaD5umnn479u23cuDH2ocGPP/6409C9YMECc9ddd5kvvvii2vfsG2+8YTp27GhSU1PNW2+9FZvrmjVrzGuvvWZSU1NNp06dzKxZs2Ln++2335pIJBIL3ZJM06ZNzQUXXGCWLVtmtm3bFhtjZ6G76kOIVq1amaysLPP6668b13VNNBo1//rXv0xKSorp2bOnWbFixS/6/gYA2InQDWCvEU/ozsvLM/Pmzav1F17XdXd6/4svvmjC4bAZN25cLHi4rmueeeYZEwqFzH777WdWr15dayWwKoi4rmuefPJJEwqFzMiRI01xcXGNiuW//vWvWCj9JdXunYXuXZ3b008/bYLBoDn33HOrhaaq0B0IBMy9995b7THXdc3UqVNNSkqK6datm9m4cWPssdpCt+u65vnnnzfhcNgcfvjhZsuWLTXmN2nSJBMOh83o0aPjqnZv3brVnHzyySYYDBrHcUxOTo7Zf//9zemnn27+/ve/m4ULF9b6OrsL3Y7jmL/85S/VzreiosKceuqptX4NVYW5Vq1amYYNG5ply5bFnvdLQndVIP657du3m9NPP90Eg0Hz0ksvVXtOVehu0qSJWbhwYa3P/3norvL++++bYDBojjnmmFq/5latWmVatmxpmjZtar777rtqj23cuNF0797dZGZmms8++yyuIPnT0L106VLz5ZdfmuzsbDNy5EhTXl5uXNc1r7/+uklKSjITJ040FRUVOw3du/q6fuGFF0woFDKnnXZatfNdtGiRycjIML169aq12vzT0D1w4EBTWFhY6/d1baG76rFJkyaZ1NRU07lzZ7N06VIzZ84c06xZM5Obm2veffddAjcA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Zk2N79l77rlHr7/+eq3BvWHDhmrZsqW+//57PfHEE/r666+1ePFirVy58leHYdd19a9//UsvvPCC+vbtq5tuuklJSUlq2rSp7r33XmVmZurWW2/V7Nmz66zSDgCofwjdAKDKat8111yj3Nxc/fGPf1S/fv00YMAA9evXT//3f/8Xe+znsrOz9dBDD2nAgAF6/fXXddhhh+mQQw7RgAEDdNBBB2nMmDGaP39+7Pjc3Fw98sgjGjJkiF577TUddthh6t+/vwYOHKj+/fvroIMO0vjx4/foL+UZGRm65pprlJmZqZtuukn9+vXTwIED1a9fPz366KP6wx/+sMtGcN27d1ffvn116qmnqn///jrkkEM0YsQILVq0SKeccorOO++8uJYXZ2Vl6aGHHtIRRxyhadOmaciQIdXO/cADD9Spp56qjz/+OK5zz8jI0Ny5czVhwgQdfPDB6t+/vwYMGKD+/ftryJAhmj59unr06KGHHnpIjRo1Sug980vPnj119tlna9OmTTrppJN0yCGH6JBDDtHgwYO1bt06XXrppXt8zKZNm+r8889XJBLRueeeq759+6p379665JJLalS+e/bsqf79+8sYo1atWumII47w7frkn37P3nHHHdW+Zx944AFdc801tTbly8zM1KWXXqq0tDRdffXVOvDAA9W7d2+NHj36V3WeN8bok08+0W233aacnBz99a9/VePGjWPbmg0YMEDXXXedNm3apCuuuKLWlTEAgL0TjdQA7DXS0tJ0+eWXq6SkRM2bN6/2WL9+/XTjjTfq0EMPrfW5Vdesvvbaa3r88ce1cOFCOY6jESNG6PTTT1fXrl21fft2hUKhapU9x3HUqVMnvfLKK3r11Vf19ttva9WqVXIcRwcccID69Omj448/vtrxHTp00Isvvqhp06Zp2rRpWrp0qbZv365GjRpp//33V8+ePXfbRGpnjjjiCGVnZ1drIOU4jkaNGqVGjRrpiSee0KJFixQMBnXsscdq/Pjxat++vUpLS5WWllZt26dmzZrp+uuvV4sWLTRq1ChNnjxZ06ZN0/r16zVo0CCNGjWq1o7MLVu21PXXX682bdpUC+OO46hNmzaaMmWK3n77bb311ltasmSJysvLlZeXp969e6tHjx4aMWJEXOd+xRVXaNiwYfrkk0/05ZdfatWqVSopKVGDBg3Up08fHXrooRox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rtbq+M85jqOuXbtqypQp+u677/T999+roqJC+fn56tixo3JycgjcHiF0AwAAALCSI8mRD43UEhzz0EMP1cUXX6zLL79cDRo00KZNm3TeeefFKs3GGD3zzDNauXKljjzySAWDQQ0cOFCXXXaZJk6cqAYNGqiwsFADBgzQRRddFPe4juMoJSVF3bp1U7du3RI/UewRhG4AAAAAVvM+dicmFArpqquu0ujRo7Vhwwbl5eWpdevW1ZamX3PNNSovL4/dFw6Hddlll+nEE0/UunXrlJ2drbZt2yocDtdaoTbGaN68eSosLFSfPn1kjNHcuXN32cStdevWateuHRXvOkboBgAAAGAtG/JiVSO0du3aqV27drU+3rFjxxr3B4NBtW7dWq1bt97tGK7r6rrrrtOnn36qd999V9FoVMcff/wu9/WeOHGibrnllsROBgkjdAMAAACwml+N1OqTQCCge+65R1u3blXnzp1ljNGbb765y0p38+bNPZzhvovQDQAAAACWcxxHPXr0iP3ddV317du31uXoxhhFIhGWlXuETdkAAAAAWMmRFHCqGqp5dwtU/Uc9tmjRIo0dO1arV6+u8ZjruvrDH/6gJ5980oeZ7XuodAMAAACwGgXbmrZs2aIZM2aopKSkxmPGGH3++ee73WMcewbvMgAAAABr+ZW362PON8YoGo3Glo9LUiQSUUVFRbVjNm/erIKCAmVmZvo11X0KoRsAAACAnXYs86aRWqVoNKqJEyfq66+/1pYtW7R161adffbZSktLix1jjNGGDRu0atUqHXzwwVzX7QFCNwAAAADsJdLS0pSZmamKigo5jqP09HRlZGTEHnccR61bt9aNN96ogQMH+jjTfQehGwAAAICVHDkKyPF8qXdgx+j1TTAY1G233SZjjL755hvdcMMN+tvf/lZtazDHcRQIBOQ4DlVujxC6AQAAAFjN+9hdP8Oq4zix5mg9evTQCy+8UOuWYfAWoRsAAACAtWikVrtAIKBwOKzi4mL98MMP2rJlS6y5WpUWLVqodevWhPI6RugGAAAAYC8aqdXKdV298847uuWWW/Ttt9+quLhYwWBQxhi5rqtgMKjf//73uvXWW/2e6l4v4PcEAAAAAAB71rJlyzRhwgTl5ubqr3/9q7KzszVx4kQ9/PDDGjBggHr16qXjjz/e72nuEwjdAAAAAKzkSAo4sZ3D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yevl0cat99d25+Xl6aSTTvJ7GhChGwAAAIC16nfwrS+qGqn9vKFa1XJzrumuW4RuAAAAAHZjn+5alZWVaebMmfroo4+0fv16RSKRao8fddRROuGEE3ya3b6D0A0AAADATkbWBGCvlZWV6corr9TTTz+txo0ba/ny5WrRooWMMfrhhx+Un5+v/fff3+9p7hPYpxsAAACA3bzep9uCoP/pp5/q6aef1h133KFp06YpPz9ft9xyi2bPnq17771XjRo10iGHHOL3NPcJhG4AAAAA9jKudpS8fbjVX5999platmypU089VdnZ2XIcR+FwWPn5+brgggvUq1cvPfjgg7vsbo49g9ANAAAAwG5UuWsoLS1VTk6OUlJSFAgElJycrMLCQhljFAwG1a1bN3355Zc1rvPGnkfoBgAAAGApI8d4X+F2jKnvhW61atVKhYWFKisrU2pqqlq2bKn//Oc/2r59u8rKyjRv3jwlJycrECAS1jUaqQEAAACwmJH3G14llriNMSotLdWsWbO0fPlytW7dWv3791dqampc23WVlpZq7dq1yszMVF5eXlzP6du3r7Zu3arvvvtOvXv31ujRo3X11VfrxBNPVDQa1UcffaSbbrpJoRCRsK7xsQYAAAAAu9Xz5eUlJSW69NJLNXHiRM2ePVtXX321LrzwQm3btm23z41Go7r33nvVp08f3XnnnXGP2bVrV73yyitq2bKlJGn8+PG65ZZbVFhYqMLCQl133XW64IIL2KPbA3ysAQAAAMBOxuxopOZxcIw1b4vPm2++qXfffVdvvPGGunfvrsWLF2vEiBGaOnWqxo4du9Pga4zR7Nmz9fLLL6tJkyYqLS2VMSauoBwOh3XAAQfE/p6amqrf/e53uvDCCyVJoVCIpeUe4V0GAAAAYLd6XOmORqN69dVXddBBB6lbt24KBALq2LGjBgwYoFdffXWX3cMLCwt18803a8KECbGKdWJvi1FxcbG+/vprffTRR9qwYYOSkpLkOI5KS0vpXO4RQjcAAAAAe/nQSK2y0l0Zal3XrXYzPwvlZWVlWrp0qbp06RKrLAcCAXXp0kVLlixReXl5racVjUb1wAMPKCsrS6NHj054GXhVlfzoo4/WwIEDNXToUH344YeSpG+//VYjRozQwoULE3pN/DKEbgAAAAAW86+N+COPPKLx48fHbg888ECN6nEkElFRUZGysrJiwdlxHGVlZam0tLTW0G2M0axZszRlyhTdeOONSktLS3huq1ev1llnnaVQKKS//vWvys3NjX0g0LFjR6WkpGjSpEk1PiTAnsc13QAAAAAsVVV59jg47qiut2nTRn369Ind3b59+xoV6UAgoFAoVG0/bGOMIpGIgsFgrddVb9myRTfccIPOOOMM9ejRQ9FoNOEpvvfeeyouLtY///lP5eTk6IYbbog9lpSUpAMPPFAzZ85UJBJROBxO+PURP0I3AAAAAHu5ruR1B27jSkYaPny4Tj/99F0empSUpEaNGmnt2rXVmqD9+OOPatCggVJTU2s8Z8GCBfriiy/UsGFDnXPOOXJdV19//bVWrVqliRMn6uabb1Z2dvYux12xYoVatWqlFi1aqLi4uMbjGRkZ2rp1K9d1e4DQDQAAAMBqfi6R3t211klJSTrooIP00UcfqaSkROnp6SorK9Ps2bN18MEHKxQK1Zh/x44d9dBDD8Uq3NFoVHPnzlV+fr4GDBigpKSk3c6rYcOGKiwsVElJSY3HotGo5s+fr8aNGysYDCZwtvgluKYbAAAAgJ2MqQysXt/cqqZqu+c4jsaNG6e1a9fqwQcf1LJly/Twww9rxYoVOvXUU2Oh/cEHH9TNN9+sSCSi/Px8jRkzRuPGjdO4ceM0duxYNW3aVB07dtRvf/vbWqvjPzdw4EBt2LBBU6ZM0fbt22P3l5WVacqUKXrrrbd09NFHE7o9QKUbAAAAgL18qHIbmYT6t3Xr1k3/+Mc/9Oc//1mTJ09WXl6eHnzwQfXs2VOO48gYo+XLl2v16tW1Vu0dx1F+fr4aNmwYdxfzHj166LLLLtMNN9ygyZMna9OmTXr44Yf1wAMPaO7cuRo8eLDGjRuXcFd0JI7QDQAAAMBu9bwDdyAQ0LBhw3TooYeqvLxcSUlJSk5OrhZ4b731VrmuW2tTs2AwqIceeqjWpms7EwqFNHHiRHXr1k1PPvmkWrZsqRUrVqhx48a64YYbdM455ygnJ2dPnB52g9ANAAAAwE7G7Gik5vG4blSJblXmOI6Sk5OVnJxc62Pp6em7fG5GRkZc4xhjVFZWpuXLl6uwsFBdunTR008/HeuYnpKSUiPwo24RugEAAABYzIctw+opY4xWrVqlSy+9VB988IHKysqUnp6uo48+Wvfee6/y8/P9nuI+idANAAAAwFImtn2Xp1wfxoxDNBrVzTffrH//+986/vjj1blzZ33xxRd6+eWX1aJFC/3xj39MaIk69gxCNwAAAAB7+RJ+4+9e7qWCggLNmDFDl112mW688UaFQiFt375dl156qd566y1dd911yszM9Hua+xxCt8W2bt2qlStXVrsvFAqpY8eOsf3+Fi9erPnz52v9+vUKBALab7/91KdPHyUlJXEdBwAAAOxm9L9twzwdt/4FbqkyHxQXF2vYsGEKhUKx68iHDx+u119/XaWlpYRuHxC6Lfbxxx/rrLPOUvv27RUKVf5T5uXl6dFHH411IvzrX/+q7777Tt26ddO2bdv0l7/8Rcccc4zuuuuuWps4AAAAALYwMjI+NFIzrut90I+D67pyXVcpKSnVCmzJyckyxigajfo4u30XodtikUhEGRkZevbZZ9WwYUNJlZ0N09LSYsfcfvvtysrKUjgcljFGb731ls444wyNHTtWBx54oF9TBwAAAH69qtxbDwOwX1zX1RdffKHS0tLYfV9//bW2b9+uWbNmqUGDBrH7W7VqpTZt2rACto4Rui0XCASUlpYW22Lgp98wjuMoLy+v2t87deqkUCikTZs2eT5XAAAAYI8zrmQ8bg5Wj0N+JBLRpZdeWi0XuK6rSCSiMWPGVLv/97//vW677TY/prlPIXRbbsuWLfrzn/+sUCikHj16aPjw4WrQoEG1b6aKigoVFxerrKxMkyZNUrNmzdSrV68ar1W15OSny04ikYgn5wEAAAD8In7k33oaups0aaIHHngg7t/h99tvvzqeESRCt9XS0tJ06KGHKi8vTyUlJfrzn/+sRx55RE8//bSaNWsWC95z5szRNddcow0bNqikpER///vf1aRJk1pf8y9/+YveeOON2N83btwok0yzBQAAANRHPm0ZZupn9/KcnByNHz/e72ngZwjdFhs4cKAGDRoUa6J22mmn6cgjj9Tjjz+u6667LnZcr1699MQTT6ioqEjPPPOMrrzySrVu3Vrdu3evcf3GUUcdpZ49e8b+/umnn2ryG+96c0IAAABAInZ0L/e88uxH0Ie1CN0WS0pKqvb31q1bq3fv3vryyy+r3Z+enq527drFjnnzzTf1xhtvqHv37tWOcxxH++23X7VlJtu3b9dzbxK6AQAAUH/Vx07iQBVCt6V++oOlqlpdUlKiNWvWxEKz67qKRqOxPfqq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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "!ls {dest_path}/raw_traces/*.ecsv | trace_pearsons --pipe -O {dest_path}\n", "\n", "# Display the correlation matrix\n", "img = mpimg.imread(f\"{dest_path}/trace_correlation_matrix.png\")\n", "fig, ax = plt.subplots(figsize=(10, 10))\n", "ax.imshow(img)\n", "ax.axis('off')\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "cell-6", "metadata": {}, "source": [ "## Step 3: Remove poorly-correlated ROIs\n", "\n", "For each ROI, we compute its **mean Pearson correlation** with all other ROIs. ROIs below the threshold are removed from the working folder before merging.\n", "\n", "A threshold of **0.70** is conservative: it removes only clear outliers while preserving the vast majority of the data." ] }, { "cell_type": "code", "execution_count": 34, "id": "cell-7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Kept Trace_3D_barcode_mask-mask0_ROI-51.ecsv (mean Pearson = 0.721)\n", "Kept Trace_3D_barcode_mask-mask0_ROI-52.ecsv (mean Pearson = 0.761)\n", "Kept Trace_3D_barcode_mask-mask0_ROI-53.ecsv (mean Pearson = 0.760)\n", "Kept Trace_3D_barcode_mask-mask0_ROI-54.ecsv (mean Pearson = 0.729)\n" ] } ], "source": [ "# Load the correlation matrix saved by trace_pearsons\n", "corr = np.load(f\"{dest_path}/trace_correlation_matrix.npy\")\n", "traces = sorted(Path(f\"{dest_path}/raw_traces\").glob(\"*.ecsv\"))\n", "\n", "# Mean correlation per ROI (exclude self-correlation on the diagonal)\n", "np.fill_diagonal(corr, np.nan)\n", "mean_corr = np.nanmean(corr, axis=1)\n", "\n", "# Remove ROIs below threshold\n", "threshold = 0.10\n", "for trace, mc in zip(traces, mean_corr):\n", " if mc < threshold or np.isnan(mc):\n", " trace.unlink()\n", " print(f\"Removed {trace.name} (mean Pearson = {mc:.3f})\")\n", " else:\n", " print(f\"Kept {trace.name} (mean Pearson = {mc:.3f})\")" ] }, { "cell_type": "markdown", "id": "cell-8", "metadata": {}, "source": [ "## Step 4: Re-run Pearson to verify improvement\n", "\n", "After removing the outlier ROIs, the correlation matrix should show higher overall values." ] }, { "cell_type": "code", "execution_count": 35, "id": "cell-9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "------- Running trace_pearsons.py --------\n", "Compare chromatin trace tables by computing pairwise distances.\n", "\n", "Analyzing 4 trace files...\n", "Processing Trace_3D_barcode_mask-mask0_ROI-51.ecsv\n", "Processing Trace_3D_barcode_mask-mask0_ROI-52.ecsv\n", "Processing Trace_3D_barcode_mask-mask0_ROI-53.ecsv\n", "Processing Trace_3D_barcode_mask-mask0_ROI-54.ecsv\n", "$ Saved correlation matrix as /mnt/grey/DATA/users/zidoum/traceraptops/jupyterlab_amel/output/trace_correlation_matrix.png\n", "$ Saved correlation matrix data in NPY format: /mnt/grey/DATA/users/zidoum/traceraptops/jupyterlab_amel/output/trace_correlation_matrix.npy\n" ] }, { "data": { "image/png": "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uWbMmKF+/fqpR48eev755/XOO+9o3bp1Ouecc3T66aeruLhY06dP12effaYlS5Zo8+bNCofD6tSpk0aNGqVDDz1U4XC4xi/yxhgVFRVp+vTpmj59upYvXy7XddW0aVP17dtXJ5xwglq3bl3t+C1btujNN9/UO++8o1WrVikcDqtXr14aM2aMevfuvccrsFu2bNHbb7+tOXPmaOnSpdq8ebOSk5PVpUsX/fa3v9WAAQOqXff8c0VFRXr11Vf11ltvad26dWrSpIlGjRql4447TqmpqXGHm6r3atq0aXr77be1YsUKhcNh9ezZUyeffLL69u0b97kvWLBAxhj17du31oZtjuMoNTW1RoW5oKBAzz77rBo0aKCxY8fGVj8UFRXpiSeeUHJysk477TTNnj1bzz77rJYuXaoGDRropJNO0m9/+1slJSWpuLhYL774ot58800VFBSoQ4cOOvvss3XQQQdV6xlQWlqqp556StFoVOPHj1d6evpu35/ly5dr+vTpmjdvnlatWqVt27YpJydHffv21ejRo2tc01y1zP4///mPBg4cqE6dOmnKlCl69913tWHDBl100UUaM2aMFixYoGnTpqlXr146/PDDZYzRG2+8oTfffFOu62rZsmX685//HJt/u3btdOihh2rSpElKTk7WqaeeWuv8KyoqNHnyZBUUFOjkk09WixYt4vr3CwQCOumkk/TRRx/phRde0JAhQ6pdZ/7111/rv//9r0aMGLHTr82q77uq79lNmzYpKSlJnTt31qhRozRo0KDY96wxRjNnztQbb7yh7du3a/369brvvvtir52fn6+xY8cqHA7rhRde0KpVqzRmzBiVl5fr6aef1uzZs1VeXq77779f3bt31/Tp0zV//nyNHDkytoJk6dKlmjp1qtLS0nTKKacoMzOz2jlt2LBBzz33nIwxOvnkk9W0adO43isAgOUMAOwl1q9fb1q0aGFSU1PNp59+GrvfdV3z5z//2UgyF110kTnuuONMgwYNTNeuXU3nzp3NX/7yF+O6rvnkk09MRkaGycjIMO3btzc9e/Y0HTp0MCkpKSYtLc384Q9/MGVlZdXGdF3XLFu2zBxxxBEmHA6bzMxM07lzZ9O9e3fTpEkTEw6HzT333FPt+KVLl5qhQ4eacDhsGjZsaLp37246duxoUlJSTF5ennn00UdNJBL5Re/BZZddZiSZ888/37iuG7v//fffN2lpaSYzM9N06NDB9OzZ07Rv394kJyebjIwMc8stt5jt27dXe63PPvvMhMNh06tXLzNmzBiTnp5uOnToYLp06WLS09NNUlKSOffcc01RUVG1582cOdMkJSWZ4cOHV3tN13XNihUrzFFHHWXC4bBp0KCB6datm+nUqZNJTU01ubm55oEHHjAVFRW7PU/Xdc3vfvc7I8mccMIJNf5ddmXBggUmIyPD9OnTx5SUlMTuX7VqlcnJyTGtW7c29913n8nPzzcdOnQwXbt2NWlpaSY5OdncfvvtpqCgwIwZM8Y0bNjQdOvWzbRt29aEQiHTuHFjM2PGjGrve0FBgWnVqpVp2rSpWbt2bez+srIyc+CBB5q0tDTz1VdfVTuva6+91oRCIZOXl2e6dOlievbsaZo3b26CwaBp1aqVmTZtWrUxXNc1t912m5FkLr/8cjNixIjYe9u5c2fz4IMPGmOMeeqpp0wgEDAXXHCBiUajpqKiwowdO9aEQiEjyTiOY5KSkmK34447zmzevNn079/fpKSkmHfeeafauFVjf/XVVyYnJ8d06NDB/Pjjj7t9/3/44QfTrFkzk52dbebOnWv2339/07p1a7N69epqr3vNNdeYcDhsXnzxRTN+/HgjKfa9WuXjjz+u8T3bvn372PfsddddZ8rLy2Oved1115lwOFzr+fbt29ds3brVRCIRc/jhh5tAIGDuv/9+07VrV9OkSRPTo0cP07VrVzN79mzjuq4566yzjCTz3HPPxeazadMmM3z4cBMMBs1NN91U7Wu5rKzMnHvuuSYQCJhx48aZbdu27fa9AgDsHQjdAPYa8YTuRo0amUGDBpnZs2ebrVu3msLCQrN582ZjjDELFy40d911l5k7d64pKCgwJSUlZuPGjebNN9+MBcM33nij2piFhYVm+PDhJhAImCOOOMLMmjXLFBYWmuLiYrNy5Urz9NNPm6lTp1Y7ftiwYSYcDpsJEyaYRYsWmeLiYrNp0ybz0ksvmRYtWpgGDRqYTz75pEbAicfOQve8efPMPffcY+bNm2c2btxoSkpKTEFBgXn11VdN27ZtTXp6unn//fervVZV6A4Gg6Zp06Zm8uTJZtOmTWbLli3m3XffNZ07dzahUMjcf//91cbaWeguKioyI0eONKFQyJx55plmwYIFpqioyGzevNlMnTrVtGnTxmRnZ5sPPvhgt+fuuq6ZMmWKCYVCsQ9EFixYYIqLi00kEtnl83cXulNSUkynTp3MM888YzZu3Gi2bt1qXn75ZZObm2vy8vLM6aefbg499FDz2WefmaKiIrNu3Tpz5ZVXmkAgYI488shqHwD8ktA9adIk8+STT5qlS5eaLVu2mJKSEvP999+bO++806SlpZnu3bubdevWVXtOVehu1KiRGTp0qPn8889NUVGRKSwsNIWFhcaYmqG76kOQf/7znyYQCJhBgwaZuXPnmnnz5pl58+aZ7777zkSjUfPggw+aQCBgxo8fX+PDINd1zY033mgcxzETJ0400Wh0l/9uxlQP3UuWLDG33nqrCQaD5umnn479u23cuDH2ocGPP/6409C9YMECc9ddd5kvvvii2vfsG2+8YTp27GhSU1PNW2+9FZvrmjVrzGuvvWZSU1NNp06dzKxZs2Ln++2335pIJBIL3ZJM06ZNzQUXXGCWLVtmtm3bFhtjZ6G76kOIVq1amaysLPP6668b13VNNBo1//rXv0xKSorp2bOnWbFixS/6/gYA2InQDWCvEU/ozsvLM/Pmzav1F17XdXd6/4svvmjC4bAZN25cLHi4rmueeeYZEwqFzH777WdWr15dayWwKoi4rmuefPJJEwqFzMiRI01xcXGNiuW//vWvWCj9JdXunYXuXZ3b008/bYLBoDn33HOrhaaq0B0IBMy9995b7THXdc3UqVNNSkqK6datm9m4cWPssdpCt+u65vnnnzfhcNgcfvjhZsuWLTXmN2nSJBMOh83o0aPjqnZv3brVnHzyySYYDBrHcUxOTo7Zf//9zemnn27+/ve/m4ULF9b6OrsL3Y7jmL/85S/VzreiosKceuqptX4NVYW5Vq1amYYNG5ply5bFnvdLQndVIP657du3m9NPP90Eg0Hz0ksvVXtOVehu0qSJWbhwYa3P/3norvL++++bYDBojjnmmFq/5latWmVatmxpmjZtar777rtqj23cuNF0797dZGZmms8++yyuIPnT0L106VLz5ZdfmuzsbDNy5EhTXl5uXNc1r7/+uklKSjITJ040FRUVOw3du/q6fuGFF0woFDKnnXZatfNdtGiRycjIML169aq12vzT0D1w4EBTWFhY6/d1baG76rFJkyaZ1NRU07lzZ7N06VIzZ84c06xZM5Obm2veffddAjcA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Zk2N79l77rlHr7/+eq3BvWHDhmrZsqW+//57PfHEE/r666+1ePFirVy58leHYdd19a9//UsvvPCC+vbtq5tuuklJSUlq2rSp7r33XmVmZurWW2/V7Nmz66zSDgCofwjdAKDKat8111yj3Nxc/fGPf1S/fv00YMAA9evXT//3f/8Xe+znsrOz9dBDD2nAgAF6/fXXddhhh+mQQw7RgAEDdNBBB2nMmDGaP39+7Pjc3Fw98sgjGjJkiF577TUddthh6t+/vwYOHKj+/fvroIMO0vjx4/foL+UZGRm65pprlJmZqZtuukn9+vXTwIED1a9fPz366KP6wx/+sMtGcN27d1ffvn116qmnqn///jrkkEM0YsQILVq0SKeccorOO++8uJYXZ2Vl6aGHHtIRRxyhadOmaciQIdXO/cADD9Spp56qjz/+OK5zz8jI0Ny5czVhwgQdfPDB6t+/vwYMGKD+/ftryJAhmj59unr06KGHHnpIjRo1Sug980vPnj119tlna9OmTTrppJN0yCGH6JBDDtHgwYO1bt06XXrppXt8zKZNm+r8889XJBLRueeeq759+6p379665JJLalS+e/bsqf79+8sYo1atWumII47w7frkn37P3nHHHdW+Zx944AFdc801tTbly8zM1KWXXqq0tDRdffXVOvDAA9W7d2+NHj36V3WeN8bok08+0W233aacnBz99a9/VePGjWPbmg0YMEDXXXedNm3apCuuuKLWlTEAgL0TjdQA7DXS0tJ0+eWXq6SkRM2bN6/2WL9+/XTjjTfq0EMPrfW5Vdesvvbaa3r88ce1cOFCOY6jESNG6PTTT1fXrl21fft2hUKhapU9x3HUqVMnvfLKK3r11Vf19ttva9WqVXIcRwcccID69Omj448/vtrxHTp00Isvvqhp06Zp2rRpWrp0qbZv365GjRpp//33V8+ePXfbRGpnjjjiCGVnZ1drIOU4jkaNGqVGjRrpiSee0KJFixQMBnXsscdq/Pjxat++vUpLS5WWllZt26dmzZrp+uuvV4sWLTRq1ChNnjxZ06ZN0/r16zVo0CCNGjWq1o7MLVu21PXXX682bdpUC+OO46hNmzaaMmWK3n77bb311ltasmSJysvLlZeXp969e6tHjx4aMWJEXOd+xRVXaNiwYfrkk0/05ZdfatWqVSopKVGDBg3Up08fHXrooRox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rtbq+M85jqOuXbtqypQp+u677/T999+roqJC+fn56tixo3JycgjcHiF0AwAAALCSI8mRD43UEhzz0EMP1cUXX6zLL79cDRo00KZNm3TeeefFKs3GGD3zzDNauXKljjzySAWDQQ0cOFCXXXaZJk6cqAYNGqiwsFADBgzQRRddFPe4juMoJSVF3bp1U7du3RI/UewRhG4AAAAAVvM+dicmFArpqquu0ujRo7Vhwwbl5eWpdevW1ZamX3PNNSovL4/dFw6Hddlll+nEE0/UunXrlJ2drbZt2yocDtdaoTbGaN68eSosLFSfPn1kjNHcuXN32cStdevWateuHRXvOkboBgAAAGAtG/JiVSO0du3aqV27drU+3rFjxxr3B4NBtW7dWq1bt97tGK7r6rrrrtOnn36qd999V9FoVMcff/wu9/WeOHGibrnllsROBgkjdAMAAACwml+N1OqTQCCge+65R1u3blXnzp1ljNGbb765y0p38+bNPZzhvovQDQAAAACWcxxHPXr0iP3ddV317du31uXoxhhFIhGWlXuETdkAAAAAWMmRFHCqGqp5dwtU/Uc9tmjRIo0dO1arV6+u8ZjruvrDH/6gJ5980oeZ7XuodAMAAACwGgXbmrZs2aIZM2aopKSkxmPGGH3++ee73WMcewbvMgAAAABr+ZW362PON8YoGo3Glo9LUiQSUUVFRbVjNm/erIKCAmVmZvo11X0KoRsAAACAnXYs86aRWqVoNKqJEyfq66+/1pYtW7R161adffbZSktLix1jjNGGDRu0atUqHXzwwVzX7QFCNwAAAADsJdLS0pSZmamKigo5jqP09HRlZGTEHnccR61bt9aNN96ogQMH+jjTfQehGwAAAICVHDkKyPF8qXdgx+j1TTAY1G233SZjjL755hvdcMMN+tvf/lZtazDHcRQIBOQ4DlVujxC6AQAAAFjN+9hdP8Oq4zix5mg9evTQCy+8UOuWYfAWoRsAAACAtWikVrtAIKBwOKzi4mL98MMP2rJlS6y5WpUWLVqodevWhPI6RugGAAAAYC8aqdXKdV298847uuWWW/Ttt9+quLhYwWBQxhi5rqtgMKjf//73uvXWW/2e6l4v4PcEAAAAAAB71rJlyzRhwgTl5ubqr3/9q7KzszVx4kQ9/PDDGjBggHr16qXjjz/e72nuEwjdAAAAAKzkSAo4sZ3DPL3V9/XlH3zwgVzX1YMPPqhjjjlGKSkp6tmzp04//XRNmTJF4XBYH3zwgd/T3CcQugEAAABYzXG8v9V3q1evVqtWrdSsWTM5jqNgMKiysjI5jqO8vDwNHz5cr732Wo3rvLHnEboBAAAAWMuC/OuLrKwsRSIRRaNRJSUlKTc3V0uWLJExRpJUUlKi4uJiua7r80z3fjRSAwAAAGA1PzYMq+9hv3fv3rr//vtVUFCgFi1aqH///po0aZJ69uypaDSqSZMmafDgwbEtxlB3eIcBAAAAYC/Tp08fjR49WoWFhWrZsqWuuOIKffXVVzr77LNljFG3bt105ZVXKhBg8XNdI3QDAAAAsJLjSAHH8bzqHKjvZW5JOTk5uueee2J/b9eunV5//XUtWrRIruuqc+fOatCgAXt0e4DQDQAAAMBq3gdH+4Kq4zjKycnRwQcf7PdU9jmEbgAAAADWsi/+1g1jjL766isVFhbG/ZyWLVuqbdu2VLvrGKEbAAAAgL182MLLcepf2HddV9dee60+/PDDuJ8zceJE3XLLLXU4K0iEbgAAAACwXiAQ0J133plwpRt1j9ANAAAAwEqOpID82TKsvnEcR7169fJ7GqgFoRsAAACA1QjdtTPGqLCwUN98840KCgrUp08fNW/eXOXl5dq2bZtycnLYMswDvMMAAAAArEUTsNoZY/Tvf/9bhx9+uI488kj99re/1ccffyxJWrZsmY488kjNmzfP30nuIwjdAAAAAKzmOI7HN7/PePdWrlypCRMmqEWLFnr88ceVl5cXe6xDhw7Kz8/X5MmT5bquj7PcN7C8HAAAAAD2Mu+9954ikYj+7//+T+np6UpKSoo9Fg6H1bdvX73//vuKRqMsMa9jvLsAAAAArOQ4UmDH9l1e3gLyfpuyRP3www9q0aKFGjduXOvjKSkpKikpodLtASrdAAAAAKzmeQCu54FbkvLz87Vx40YVFxfXeCwSiWju3Llq1qyZgsGgD7Pbt1DpBgAAAGAtC/KvLw499FBt2bJFjz32mEpKSiRJruuqqKhIjz76qN555x0de+yxhG4PUOkGAAAAYC/H+0p3fV9aLkldunTRtddeq9tuu02TJ09WQUGB7rvvPt11111asmSJjj32WI0ePZru7x4gdAMAAABAgup7VA0Gg7rgggvUo0cPPf300woGgyotLVWzZs10wQUXaOzYscrMzPR7mvsEQjcAAAAAK8Wamnk8rg3X6H7yySdatGiRxowZo0GDBikSich1XYXDYQWDQSrcHrLh6wUAAAAAdsrr7uU2mD59uh555BE5jqNgMKjk5GSlpqYqFAoRuD1G6AYAAABgLX/yY/0PrV26dFFxcbFKS0v9nso+j9ANAAAAwFKVtWfH8fpWNXb9NXz4cDVv3lz333+/NmzYoO3btysSiVS7ua4rY4zfU93rcU03AAAAAOxl1q9fr6KiIt1555169tln1bZtW4XD4WrHnHTSSRo/frxPM9x3ELoBAAAAWMlxpIDjfc3ZkR3bhuXm5mrw4MGxv0ej0WqPu67r9ZT2SYRuAAAAAFZjn+6aWrVqpccee0xZWVkKBGq/qjgYDHo8q30T13R7zBhT7doJY4wKCgr09ddf68cff+TTJgAAAAC/2sMPP6wzzzxTFRUVSkpKqvXG1mHeIHR7yHVdPfzww7rnnntiwfvzzz/XkCFDdPDBB6t///569dVXaWYAAAAAxMnr7cJs2TYsGo1q06ZNCoVY3Ow3QreHtm3bpocfflhpaWkKBAKqqKjQXXfdpWg0qnvvvVc9evTQ9ddfrw0bNvg9VQAAAAAWGzx4sDZu3KhvvvmGop7P+NjDQ5s2bVJBQYE6d+4sx3G0bt06ffrpp7r99tt15plnql+/fho8eLAWL16s/Px8v6cLAAAA1GuOfGqk5sOYierQoYOGDh2qM844Q+ecc4569Oih5OTkase0aNFCrVq1Yol5HSN0eygajcp13djS8gULFqiiokL9+vWT4zhq0KCBUlJStHnzZr+nCgAAAFjD80Zq3g73i3z77beaNGmSysrKdNVVV9XaTG3ixIm69dZbfZjdvoXQ7aEGDRooJydH7777rn7zm9/ohRdeUJs2bdSyZUtJ0ubNm1VaWqrc3FyfZwoAAADYwZ8AXP9jd+fOnfXSSy/tcml5mzZtvJvQPozQ7aGsrCyNHz9et99+u15++WVt3LhRd999t9LT02WM0fvvv6+0tDS++AEAAIB4OY7ny6Prf+SWcnJydPjhh/s9DYjQ7alAIKBLL71UHTt21Pz589WzZ0+NGDFCjuOooqJCruvqiiuuUJMmTfyeKgAAAICdsSF177B9+3b98MMP+v777xWJRNSoUSO1a9dO6enpXMvtEUK3x1JSUjRq1CiNGjUqdp8xRqFQSJdddplv8wIAAABs41sjNdX/3G2M0XfffacbbrhB7777roqKimSMUXJysrp3767rr79eRx11VK3XemPPInR7zBij9evXa9q0aZo/f76aN2+uSy65RI7j6PPPP1eTJk3UunVrv6cJAAAA1H87kq8vjdTqeerevHmzzjjjDC1evFinnnqq+vXrp+TkZC1evFiTJk3SGWecoZdeekkDBw6k4l3HCN0eMsZo4cKFGj9+vFauXCnXddWzZ09deOGFSkpK0ssvv6ylS5dq8uTJNdr5AwAAAKiJuFi7999/XwsWLNCkSZM0fPjwWEXbGKNTTjlFxx9/vP75z3/qkEMOUTAY9Hm2ezfWEniooqJCN910k4LBoN5//32dddZZscccx9Fxxx2nWbNmaeXKlT7OEgAAALCL48Otvvvmm2/UsWNHDRo0qNoScsdx1KxZMx1zzDFatGiRIpGIj7PcNxC6PVRQUKA5c+bokksuUc+ePZWUlBR7zHEctWrVSpK0YsUKn2YIAAAAYLcsWI6dnp6uoqIilZaW1tg2zBijgoICpaamck23B3iHPVReXq5oNKr8/Hw5tWxtEIlEFI1Gd7mXHgAAAIBKlY3UHF8q3fU9dh9yyCFau3at7rzzTq1bt04VFRWKRCIqLi7WSy+9pClTpmjo0KEsLfcA13R7KDc3V9nZ2friiy80bNiwao8ZY/TBBx/IdV0aqQEAAAAJoBFYTX369NEll1yiv/71r3rppZfUuXNnJSUladWqVVq6dKn69eunCRMm8N55gNDtoaysLI0ePVp///vf1b59e23ZskUVFRVatWqVPvzwQ9188806/PDD1bZtW7+nCgAAAGAnbMip4XBY119/vQ4++GA9//zzWrx4sSKRiFq1aqXzzjtPo0ePVoMGDQjdHiB0eygQCOh3v/ud1qxZowkTJqi8vFyRSEQDBgxQUVGRBg0apDvvvLPatd4AAAAAds5x7AjBfkhKStJRRx2lI488UpFIRK7rKhwOKxAIELY9ROj2WFZWlv72t7/ptNNO08yZM7V27VplZGTowAMP1ODBg5WZmVn/vgEcKRhwFKhn08LeLxgIKJSUJJc+B/CFo0h5ud+TwL7IkaJRV1GXn33wlusaWfu/XI8nXl9/LTbGaM6cOVq9erWOPPJIpaamxnpJVRX2jDH64osvtHz5ch155JFKT0/3edZ7P0K3xxzHUXJysvr376/+/fvXeKw+Sg0H1bZRhgIhvlzgrZzUkHqPPNbeXwBgtfXLluqL11/zexrYBzmOo6xjj1B+i2Z+TwX7GNeNqmS7fdtHOfyiELN161ZdcMEF6tevn0aOHLnT48rKynTBBRfokUce0bHHHltvc8jeghRVx8rLy1VcXBx3R/JAIKCcnJx61brfcaRQ0FEwWH/mhH1DOBRSUmqa+F8p/OGoorTU70lgH1URiSpCpRsec6P2Vro9D9719I1auHChVq5cqX/84x877UruOI769u2rPn366I033tDIkSMJ3XWM0F3H/v3vf+uiiy6Ke9P5Zs2aaerUqcrPz6/jmQEAAAC2M5Jx5f2Cb7PjVr98++23atCggdq2bbvLIB0Oh9W3b1/9+9//VjQarVcFv70RobuOtWnTRmeddZZc143r+KysLKWlpdXxrAAAAAD8YvW00l1cXKxwOBxXY+aMjAyVlJQoGo0qHA57MLt9F6G7jnXt2lXXX3+939MAAAAA9j5V2dePRmr1MHc3aNBAW7Zs0ebNm5WVlbXT44wxWrFihXJycna6DB17DusIAAAAAFjJkeQYV/9b7u3drT5eBd2rVy+VlZXptdde2+lKW2OMVq5cqXfeeUcHH3wwodsDVLrr2NKlS/Xmm2+qS5cuGjp0qKZOnapVq1bt9PiMjAyNHTuW1v0AAABAnDwPwPWwyi1JHTt21NFHH63bb79dGRkZOuGEE5SRkaFAICBjjCKRiBYuXKgrr7xSpaWlGjduHE3UPEDormOLFy/Wn//8Zx1//PE67LDDNGXKFH300Uc7Pb5Zs2Y69thjCd0AAADAbpnKpeUmvv5Je05Vdb1+CYfDuu2227Rq1SpddNFF+tvf/qbevXsrLy9P5eXlWrx4sebOnatAIKB7771X3bp1I3R7gNBdxw477DB98sknSktLU1JSkh544AGVlZXt9PhgMKiGDRt6OEMAAADAZvUv/PrFcRy1bNlSzz//vB599FG98MILev3111VWVqZAIKC8vDwNHz5cl156qQ488EC6lnuE0F3HUlJS9NZbbykUCunMM89Uo0aNVFpaqpUrV6p169ZKTU31e4oAAACA3dinO8ZxHDVq1EjXXHONLrnkEhUUFMS6mufm5qpBgwYKBoNUuD3ERxse+PDDDzVz5kyZHd+cS5cu1THHHKNvv/3W55kBAAAAlqvHAdhPjuMoIyNDbdq0UY8ePdS5c2fl5+crFAoRuD1GpdsHruuqqKhI0WjU76kAAAAA9iN4ox4jdAMAAACwk9nRSM3r67pN/WykhvqJ0O0x87NP4X7+9yos+QAAAADi4VP4JXMjToRujyxcuFD333+/HMfRmjVrVFJSosmTJ2vmzJnVjsvMzNSYMWPYMgwAAACIl8fLyx2WsyMBhG4PJCUlaf78+Zo/f361+x988MEax7Zo0UJHH300oRsAAADYLSPHuJK8XiVK6Eb8CN11zHEc3Xzzzbr00kvjOj4pKYl9ugEAAIAEcGFm7SKRiL7//nt999132rZtW41LWzt27KiuXbtyaWsdI3TXMcdx1KZNG7Vp08bvqQAAAAB7H2N2NDbzeMx6Xu0uLS3VHXfcoUcffVRFRUW1HjNx4kTdcsstHs9s30PoBgAAAGAxP8Jv/Q7ckvTBBx/ovvvu05gxY3TKKaeoQYMGNSra+fn5Ps1u30LoBgAAAGCnquzrdWMzCxqp/fe//1Xbtm31pz/9STk5OSwh9xGhGwAAAIClqpaW+9BIrZ4H76ysLKWlpSk5OZnA7bOA3xMAAAAAAOxZRx55pEpLS/XZZ5/VaKAGb1HpBgAAAGAvXxqpeTzeL9CgQQP1799fZ511lsaMGaMuXbooFKoe/7p166ZevXpRCa9jhG4AAAAAlqr/XcT9snz5cr344ouqqKjQgw8+WOsxl19+uXr16uXxzPY9hG4AAAAAdqORWg09evTQRx99tMul5Xl5eR7OaN9F6AYAAABgJyPJdSWvl0dbsE93WlqaunXr5vc0IEI3AAAAANtZUHn2gzFGxcXFmj9/vpYuXaqKigo1a9ZMvXv3VuPGjRUI0FfbC4RuAAAAAJYycnyoOjvGre+Fbhlj9Pnnn2vixIn673//K9f9X/O3Zs2a6ZprrtEZZ5yhcDjs4yz3DYRuAAAAABYznu/SbYO1a9fqrLPOUnl5ue68804ddNBBSkpK0rJly/TYY4/p97//vRo3bqyRI0fSvbyOEboBAAAA2M2XRmr1u9T93nvvaf369XrjjTfUt2/fWLDu3bu3Dj/8cJ100kl64okndPTRRysYDPo8270bi/gBAAAAWKpqj27jw61+W758udq1a6cePXpUq2Q7jqPs7GwNHjxYK1euVCQS8XGW+wZCNwAAAADsZRo0aKANGzZo8+bNNbYNi0ajWrZsmbKzs2mm5gHeYQAAAAB2ihWejfe3eu6www7T1q1bNXHiRC1cuFBFRUUqLi7WmjVrdP/99+vll1/WyJEjFQpxxXFd4x0GAAAAYLH6H4D90K1bN9166626/vrr9fbbb6t58+ZKSkrSunXrtHnzZp1wwgk688wz/Z7mPoHQDQAAAMBuFlSevRYMBnXuuefqoIMO0muvvaZFixapoqJCAwYM0PDhwzVkyBClpqbSudwDhG4AAAAAlqpqpOZxcDSuFUE/GAxq//33V+/evWWMkTGm2jXcBG5vELoBAAAA2M2CAOy1SCSixYsXq2nTpsrJyZHjOFqyZImeeuopbdu2Tccdd5wGDRrEdmEeoJEaAAAAAGs5sT2zvbs5xvXm5H6Fr776Ssccc4xWrVolSdq4caNOO+00Pfzww3rllVc0evRozZw5s0Znc+x5hG4AAAAAFjNyJE9vVePWZ7NmzVJmZqbatm0rSZoxY4aWLVumKVOm6NNPP1X37t312GOPyXXr/wcItiN0AwAAALAbW4bV8OOPPyorK0spKSmSpA8//FDdu3dX//791bRpUx1++OH65ptvFI1GfZ7p3o9rugEAAADYyfjUSK2eV7klKTMzU5s3b9a2bdsUDoc1a9YsDR48OBbCqxqrsby87lHpBgAAAIC9TL9+/bR69WrdeuutuuOOO7RkyRINHz5cjuMoGo1q3rx5atOmjUIh6rB1jXcYAAAAgL1i1W6Px6zn1e4DDzxQl19+uR555BFFIhGde+65GjBggCRp+fLl+uKLL3TFFVdU20IMdYPQDQAAAMBSfoVfU98ztyTp8ssv13nnnSdjjBo1ahTbHiw/P1+vvfaaWrduzV7dHiB0AwAAALCb19clW3Ad9COPPKIZM2boscceU2ZmZrXHsrOzlZ2d7dPM9j2EbgAAAAD2opFarYqKirR69WqFw2G/p7LPYwE/AAAAALuxXVgNgwYNUkFBgb777js6lPuMSjcAAAAAKznGyPGhqZljXDn1vNrdo0cPDR06VGeffbYuvvhidevWTUlJSdWOycvLU35+Ptd11zFCNwAAAACLGc8Xl9vgm2++0eTJk1VUVKQzzzxTSUlJNcL15ZdfrltuucWnGe47CN0AAAAA7OZ5IzVvh/sl2rdvr0ceeUSuu/Pt1Lp27erhjPZdhG4AAAAA9nJdyevl0cat99d25+Xl6aSTTvJ7GhChGwAAAIC16nfwrS+qGqn9vKFa1XJzrumuW4RuAAAAAHZjn+5alZWVaebMmfroo4+0fv16RSKRao8fddRROuGEE3ya3b6D0A0AAADATkbWBGCvlZWV6corr9TTTz+txo0ba/ny5WrRooWMMfrhhx+Un5+v/fff3+9p7hPYpxsAAACA3bzep9uCoP/pp5/q6aef1h133KFp06YpPz9ft9xyi2bPnq17771XjRo10iGHHOL3NPcJhG4AAAAA9jKudpS8fbjVX5999platmypU089VdnZ2XIcR+FwWPn5+brgggvUq1cvPfjgg7vsbo49g9ANAAAAwG5UuWsoLS1VTk6OUlJSFAgElJycrMLCQhljFAwG1a1bN3355Zc1rvPGnkfoBgAAAGApI8d4X+F2jKnvhW61atVKhYWFKisrU2pqqlq2bKn//Oc/2r59u8rKyjRv3jwlJycrECAS1jUaqQEAAACwmJH3G14llriNMSotLdWsWbO0fPlytW7dWv3791dqampc23WVlpZq7dq1yszMVF5eXlzP6du3r7Zu3arvvvtOvXv31ujRo3X11VfrxBNPVDQa1UcffaSbbrpJoRCRsK7xsQYAAAAAu9Xz5eUlJSW69NJLNXHiRM2ePVtXX321LrzwQm3btm23z41Go7r33nvVp08f3XnnnXGP2bVrV73yyitq2bKlJGn8+PG65ZZbVFhYqMLCQl133XW64IIL2KPbA3ysAQAAAMBOxuxopOZxcIw1b4vPm2++qXfffVdvvPGGunfvrsWLF2vEiBGaOnWqxo4du9Pga4zR7Nmz9fLLL6tJkyYqLS2VMSauoBwOh3XAAQfE/p6amqrf/e53uvDCCyVJoVCIpeUe4V0GAAAAYLd6XOmORqN69dVXddBBB6lbt24KBALq2LGjBgwYoFdffXWX3cMLCwt18803a8KECbGKdWJvi1FxcbG+/vprffTRR9qwYYOSkpLkOI5KS0vpXO4RQjcAAAAAe/nQSK2y0l0Zal3XrXYzPwvlZWVlWrp0qbp06RKrLAcCAXXp0kVLlixReXl5racVjUb1wAMPKCsrS6NHj054GXhVlfzoo4/WwIEDNXToUH344YeSpG+//VYjRozQwoULE3pN/DKEbgAAAAAW86+N+COPPKLx48fHbg888ECN6nEkElFRUZGysrJiwdlxHGVlZam0tLTW0G2M0axZszRlyhTdeOONSktLS3huq1ev1llnnaVQKKS//vWvys3NjX0g0LFjR6WkpGjSpEk1PiTAnsc13QAAAAAsVVV59jg47qiut2nTRn369Ind3b59+xoV6UAgoFAoVG0/bGOMIpGIgsFgrddVb9myRTfccIPOOOMM9ejRQ9FoNOEpvvfeeyouLtY///lP5eTk6IYbbog9lpSUpAMPPFAzZ85UJBJROBxO+PURP0I3AAAAAHu5ruR1B27jSkYaPny4Tj/99F0empSUpEaNGmnt2rXVmqD9+OOPatCggVJTU2s8Z8GCBfriiy/UsGFDnXPOOXJdV19//bVWrVqliRMn6uabb1Z2dvYux12xYoVatWqlFi1aqLi4uMbjGRkZ2rp1K9d1e4DQDQAAAMBqfi6R3t211klJSTrooIP00UcfqaSkROnp6SorK9Ps2bN18MEHKxQK1Zh/x44d9dBDD8Uq3NFoVHPnzlV+fr4GDBigpKSk3c6rYcOGKiwsVElJSY3HotGo5s+fr8aNGysYDCZwtvgluKYbAAAAgJ2MqQysXt/cqqZqu+c4jsaNG6e1a9fqwQcf1LJly/Twww9rxYoVOvXUU2Oh/cEHH9TNN9+sSCSi/Px8jRkzRuPGjdO4ceM0duxYNW3aVB07dtRvf/vbWqvjPzdw4EBt2LBBU6ZM0fbt22P3l5WVacqUKXrrrbd09NFHE7o9QKUbAAAAgL18qHIbmYT6t3Xr1k3/+Mc/9Oc//1mTJ09WXl6eHnzwQfXs2VOO48gYo+XLl2v16tW1Vu0dx1F+fr4aNmwYdxfzHj166LLLLtMNN9ygyZMna9OmTXr44Yf1wAMPaO7cuRo8eLDGjRuXcFd0JI7QDQAAAMBu9bwDdyAQ0LBhw3TooYeqvLxcSUlJSk5OrhZ4b731VrmuW2tTs2AwqIceeqjWpms7EwqFNHHiRHXr1k1PPvmkWrZsqRUrVqhx48a64YYbdM455ygnJ2dPnB52g9ANAAAAwE7G7Gik5vG4blSJblXmOI6Sk5OVnJxc62Pp6em7fG5GRkZc4xhjVFZWpuXLl6uwsFBdunTR008/HeuYnpKSUiPwo24RugEAAABYzIctw+opY4xWrVqlSy+9VB988IHKysqUnp6uo48+Wvfee6/y8/P9nuI+idANAAAAwFImtn2Xp1wfxoxDNBrVzTffrH//+986/vjj1blzZ33xxRd6+eWX1aJFC/3xj39MaIk69gxCNwAAAAB7+RJ+4+9e7qWCggLNmDFDl112mW688UaFQiFt375dl156qd566y1dd911yszM9Hua+xxCt8W2bt2qlStXVrsvFAqpY8eOsf3+Fi9erPnz52v9+vUKBALab7/91KdPHyUlJXEdBwAAAOxm9L9twzwdt/4FbqkyHxQXF2vYsGEKhUKx68iHDx+u119/XaWlpYRuHxC6Lfbxxx/rrLPOUvv27RUKVf5T5uXl6dFHH411IvzrX/+q7777Tt26ddO2bdv0l7/8Rcccc4zuuuuuWps4AAAAALYwMjI+NFIzrut90I+D67pyXVcpKSnVCmzJyckyxigajfo4u30XodtikUhEGRkZevbZZ9WwYUNJlZ0N09LSYsfcfvvtysrKUjgcljFGb731ls444wyNHTtWBx54oF9TBwAAAH69qtxbDwOwX1zX1RdffKHS0tLYfV9//bW2b9+uWbNmqUGDBrH7W7VqpTZt2rACto4Rui0XCASUlpYW22Lgp98wjuMoLy+v2t87deqkUCikTZs2eT5XAAAAYI8zrmQ8bg5Wj0N+JBLRpZdeWi0XuK6rSCSiMWPGVLv/97//vW677TY/prlPIXRbbsuWLfrzn/+sUCikHj16aPjw4WrQoEG1b6aKigoVFxerrKxMkyZNUrNmzdSrV68ar1W15OSny04ikYgn5wEAAAD8In7k33oaups0aaIHHngg7t/h99tvvzqeESRCt9XS0tJ06KGHKi8vTyUlJfrzn/+sRx55RE8//bSaNWsWC95z5szRNddcow0bNqikpER///vf1aRJk1pf8y9/+YveeOON2N83btwok0yzBQAAANRHPm0ZZupn9/KcnByNHz/e72ngZwjdFhs4cKAGDRoUa6J22mmn6cgjj9Tjjz+u6667LnZcr1699MQTT6ioqEjPPPOMrrzySrVu3Vrdu3evcf3GUUcdpZ49e8b+/umnn2ryG+96c0IAAABAInZ0L/e88uxH0Ie1CN0WS0pKqvb31q1bq3fv3vryyy+r3Z+enq527drFjnnzzTf1xhtvqHv37tWOcxxH++23X7VlJtu3b9dzbxK6AQAAUH/Vx07iQBVCt6V++oOlqlpdUlKiNWvWxEKz67qKRqOxPfqq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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "!ls {dest_path}/raw_traces/*.ecsv | trace_pearsons --pipe -O {dest_path}\n", "\n", "# Display the updated correlation matrix\n", "img = mpimg.imread(f\"{dest_path}/trace_correlation_matrix.png\")\n", "fig, ax = plt.subplots(figsize=(10, 10))\n", "ax.imshow(img)\n", "ax.axis('off')\n", "plt.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "cell-10", "metadata": {}, "source": [ "## Step 5: Merge trace files" ] }, { "cell_type": "code", "execution_count": 36, "id": "cell-11", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "------- Running trace_merge.py --------\n", "This script will merge trace tables provided as inputs.\n", "\n", "Number of trace files to merge: 4\n", " $ Merged trace file will contain 83031 traces\n", "Read and accumulated 4 trace files\n", "$ Saving output table as /mnt/grey/DATA/users/zidoum/traceraptops/jupyterlab_amel/output/merged_traces.ecsv ...\n", "Finished execution\n" ] } ], "source": [ "!ls {dest_path}/raw_traces/*.ecsv | trace_merge -F {dest_path} -N merged_traces.ecsv" ] }, { "cell_type": "markdown", "id": "cell-12", "metadata": {}, "source": [ "## Step 6: Compute basic statistics" ] }, { "cell_type": "code", "execution_count": 37, "id": "cell-13", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "------- Running trace_stats.py --------\n", "Compute basic statistics for chromatin trace files.\n", "\n", "$ Importing table from pyHiM format\n", "Successfully loaded trace table: /mnt/grey/DATA/users/zidoum/traceraptops/jupyterlab_amel/output/merged_traces.ecsv\n", "Statistics for /mnt/grey/DATA/users/zidoum/traceraptops/jupyterlab_amel/output/merged_traces.ecsv:\n", "- Number of unique ROIs: 4\n", "- Number of unique chromatin traces: 16777\n", "- Number of unique barcodes: 31\n" ] } ], "source": [ "!trace_stats --input {dest_path}/merged_traces.ecsv" ] }, { "cell_type": "markdown", "id": "cell-14", "metadata": {}, "source": [ "## Next steps\n", "\n", "The merged trace file is ready for downstream analysis.\n", "\n", "Continue with **Tutorial 2 — Quality Control** to:\n", "- Generate detailed quality metrics with `trace_analyzer`\n", "- Interpret barcode detection, neighbor distances, and barcode frequency plots\n", "- Decide on filtering thresholds for Tutorial 3" ] }, { "cell_type": "markdown", "id": "cell-15", "metadata": {}, "source": [ "## Summary\n", "\n", "| Step | Script | Output |\n", "|------|--------|--------|\n", "| Collect | `collect_files` | `raw_traces/` (one .ecsv per ROI) |\n", "| Correlations | `trace_pearsons` | `trace_correlation_matrix.png` + `.npy` |\n", "| Filter ROIs | Python (numpy) | removed outlier files from `raw_traces/` |\n", "| Merge | `trace_merge` | `merged_traces.ecsv` |\n", "| Statistics | `trace_stats` | stdout |\n", "\n", "**Output location:** `data/output/`" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.15" } }, "nbformat": 4, "nbformat_minor": 5 }