{ "cells": [ { "cell_type": "markdown", "id": "cell-1", "metadata": {}, "source": [ "# Tutorial : 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": 1, "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", "%matplotlib inline" ] }, { "cell_type": "markdown", "id": "0f7d0189", "metadata": {}, "source": [ "Download datasets from docs/source/...\n", "\n", "Set up your folder data path:" ] }, { "cell_type": "code", "execution_count": 2, "id": "b78d25aa", "metadata": {}, "outputs": [], "source": [ "data_path = \"/mnt/grey/DATA/users/zidoum/traceraptops/data/Boettiger/Replicate2\"" ] }, { "cell_type": "markdown", "id": "c4caa4da", "metadata": {}, "source": [ "Set up destination folder for output:\n" ] }, { "cell_type": "code", "execution_count": 3, "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": 4, "id": "757b6dd0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Data path: /mnt/grey/DATA/users/zidoum/traceraptops/data/Boettiger/Replicate2\n", "Output path: /mnt/grey/DATA/users/zidoum/traceraptops/data/Boettiger/Replicate2/output\n", "\n", "Available ROIs:\n", " FOV_26\n", " FOV_27\n", " FOV_28\n", " FOV_29\n", " FOV_30\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 \"FOV\" 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": 5, "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 (5):\n", " FOV_26 -> /mnt/grey/DATA/users/zidoum/traceraptops/data/Boettiger/Replicate2/FOV_26/FOV_26_4DNFI2HV38L6.csv\n", " FOV_27 -> /mnt/grey/DATA/users/zidoum/traceraptops/data/Boettiger/Replicate2/FOV_27/FOV_27_4DNFI2HV38L6.csv\n", " FOV_28 -> /mnt/grey/DATA/users/zidoum/traceraptops/data/Boettiger/Replicate2/FOV_28/FOV_28_4DNFI2HV38L6.csv\n", " FOV_29 -> /mnt/grey/DATA/users/zidoum/traceraptops/data/Boettiger/Replicate2/FOV_29/FOV_29_4DNFI2HV38L6.csv\n", " FOV_30 -> /mnt/grey/DATA/users/zidoum/traceraptops/data/Boettiger/Replicate2/FOV_30/FOV_30_4DNFI2HV38L6.csv\n", "\n", "Copied 5 file(s) to /mnt/grey/DATA/users/zidoum/traceraptops/data/Boettiger/Replicate2/output/raw_traces\n" ] } ], "source": [ "!collect_files --root {data_path} --example-file \"FOV_26_4DNFI2HV38L6.csv\" --variable-part \"26\" --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": 6, "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 5 trace files...\n", "Processing FOV_26_4DNFI2HV38L6.csv\n", "Processing FOV_27_4DNFI2HV38L6.csv\n", "Processing FOV_28_4DNFI2HV38L6.csv\n", "Processing FOV_29_4DNFI2HV38L6.csv\n", "Processing FOV_30_4DNFI2HV38L6.csv\n", "$ Saved correlation matrix as /mnt/grey/DATA/users/zidoum/traceraptops/data/Boettiger/Replicate2/output/trace_correlation_matrix.png\n", "$ Saved correlation matrix data in NPY format: /mnt/grey/DATA/users/zidoum/traceraptops/data/Boettiger/Replicate2/output/trace_correlation_matrix.npy\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAMcCAYAAABNesaXAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlcelbwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAmFVJREFUeJzs3Xd8VFXex/HvmZIGaRBCr9LLigurUqWrKIoVFBW7YmFVdi1rb2vZXXV5dHdde2VRbFgQEBurgCiiAiJFihSBQEIS0uee54+QWWMCTJTcmwuf9+s1Pg8zd+acO2TYfOd37u8Ya60VAAAAAADY7wJeTwAAAAAAgAMVoRsAAAAAgFpC6AYAAAAAoJYQugEAAAAAqCWEbgAAAAAAagmhGwAAAACAWkLoBgAAAACglhC6AQAAAACoJYRuAAAAAABqCaEbAAAAAIBaQugGAAAAAKCWELoBAAAAAKglhG4AAAAAAGoJoRsAAAAAgFpC6AYAAAAAoJYQugEAAAAAqCWEbgAAAAAAagmhGwAAAACAWkLoBgAAAACglhC6AQAAAACoJYRuAAAAAABqCaEbAAAAAIBaQugGAAAAAKCWELoBAAAAAKglhG4AAAAAAGoJoRsAAAAAgFpC6AYAAAAAoJYQugEAAAAAqCWEbgAAAAAAagmhGwAAAACAWkLoBgAAAACglhC6AQAAAACoJYRuAAAAAABqCaEbAAAAAIBaQugGAAAAAKCWELoBAAAAAKglhG4AAAAAAGoJoRsAAAAAgFpC6AYAAAAAoJYQugEAAAAAqCUhrycAAKibSktLtXPnToVCIaWmpsoYU6PnhcNhpaSkxPw8t5SVlWnnzp0KBoM1Oq9fwnEc5eTkSJLS0tIUCJR/122t1c6dOxWJRJSamqpQqPb/57ioqEj5+flKSEhQvXr16tzfi9/k5eWpuLhYycnJio+P93o6AIA6jNANwHestVq8eLFWrFhRo+dlZGRo8ODB0eDjZzt27NAHH3ygsrKymJ8TCAQ0ZMgQNWzYMKbjly5dquOPP16//e1v9dprrykYDMb0vEWLFunUU09Vv3799Pzzz9dqoLTWKicnRx999JHmzZunzZs3yxij5s2b69BDD1Xv3r3VqlUrhcPh6HNWr16tkSNHqn379nrjjTeUkJBQa/PLycnR8OHDVVpaqvfee0+ZmZmSpJKSEp1xxhlavny53nnnHXXp0qXW5lDhzTff1MSJE3XOOefonnvuiYZua22l42o7jBcWFmr27NkqLCxUIBBQv3791KxZs2qPjUQiev/997Vjxw5JUs+ePdWxY8dfNcf9cb7WWt1yyy2aMmWKHn30UZ144om/eD4AgAMfoRuALz399NOaPHlyjZ7Tt29fffDBB4qLi6ulWblnzZo1Ouecc1RQUBDzc0KhkObOnRtz6C4tLdXWrVuVnZ1do7n99Hk/Dzj7k7VW8+fP11VXXaVFixZVqqzv2rVLBQUFatCggW699VZdfvnl0edFIhFt3bpV6enptTq/ijlmZWWptLRUjuNUemzHjh3aunVrjb44+TWKioq0detW5eXlVbr/m2++0W233abf/va3+tOf/lTroXvHjh2aMGGCNm3aJEm6/fbbdfPNN1c77tq1a3X22Wdry5YtkqS//e1v6tix468af9OmTZo0aZKaNGmi++677xdXqXNzc7VlyxYVFRX9qvkAAA58hG4AvnTppZfq2GOPrXTfzp07dcUVVyg3N1f33XefOnfuXOnxtLQ0V5bxuqF9+/Z6/fXXFYlEKt3/73//W6+99pqOO+44XXHFFZUeM8ZUeU/8ylqrH374Qeeff75WrlypMWPG6PLLL1fbtm0VDAa1detWLVy4UFOnTtXWrVsrPTctLU3nnXeeGjduHHP1/peKj4/XGWecoUgkosTExFoda186dOigCy+8UP369asUcLOysjR9+nSVlpbW+pcQPxUIBBQKhfTaa6/p97//vVJTUys9bq3VjBkztG3bNiUkJOy3cJufn6+3335bhxxySJXPT00MHDhQwWBQ7dq12y/zAgAcuA6M3z4BHFSMMerSpUuVJbkVv5zv2rVLRx55pI488sg9voa1NnozxlS61lZSpaqkMSZ625ufvmYsz/v58RVziKXSmJqaquHDh1e5f+bMmZKkli1b6uijj670WhXj/DRoxHpuP59vTZ63r9eSanbuFd544w1999136t+/v/7xj39Uun48MzNT3bp109ixY6tUdps1axbTKol9nW8s70f9+vV17733xnxO1b12hZq8R9X9fO/rM+G2evXq6cgjj9TcuXO1cOFCDR06tNK5FRUVadq0aWrYsKE6d+6suXPnVvs6v+YzG4ufv34gEJAxRuPHj9f48eN/9esDAA58hG4ABzxrrT7//HN9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mppqP/jgg32eu+M4durUqTYUCkW/EFm6dKnNz8+3ZWVle33+vkJ3QkKC7dixo33++eft9u3bbW5urn311Vdtenq6zcjIsOecc4496qij7GeffWbz8vLsli1b7B//+EcbCATsMcccU+kLgF8Sul988UX7zDPP2FWrVtmdO3fagoIC+8MPP9h77rnHJiUl2W7dutktW7ZUek5F6G7UqJEdOnSo/fzzz21eXp7NycmxOTk51tqqobviS5B///vfNhAI2IEDB9pFixbZxYsX28WLF9vvv//eRiIR+8gjj9hAIGDHjx9f5csgx3HsLbfcYo0xdtKkSTYSiez1783ayqF75cqV9o477rDBYNA+99xz0b+37du3R780+PHHH/cYupcuXWrvvfde++WXX1b6zL711lu2Q4cONjEx0b7zzjvRuW7atMm+8cYbNjEx0Xbs2NHOnz8/er7fffedLSsri4ZuSbZp06Z2woQJdvXq1XbXrl3RMfYUuiu+hGjVqpVNSUmxb775pnUcx0YiEfvEE0/YhIQE26NHD7t27dpf9PkGAPgToRvAASOW0J2RkWEXL15c7S+8juPs8f5p06bZcDhsx40bFw0ejuPY559/3oZCIfub3/zGbty4sdpKYEUQcRzHPvPMMzYUCtlRo0bZ/Pz8KhXLJ554IhpKf0m1e0+he2/n9txzz9lgMGgvuuiiSqGpInQHAgH7wAMPVHrMcRw7ffp0m5CQYLt27Wq3b98efay60O04jn3ppZdsOBy2w4YNszt37qwyvxdffNGGw2E7ZsyYmKrdubm59vTTT7fBYNAaY2xaWpo97LDD7DnnnGP/8Y9/2GXLllX7OvsK3cYY+7e//a3S+ZaWltqzzjqr2p+hijDXqlUr27BhQ7t69ero835J6K4IxD9XUlJizznnHBsMBu0rr7xS6TkVobtJkyZ22bJl1T7/56G7wpw5c2wwGLTHH398tT9z69evty1btrRNmza133//faXHtm/fbrt162aTk5PtZ599FlOQ/GnoXrVqlf3qq69samqqHTVqlC0uLraO49g333zTxsXF2UmTJtnS0tI9hu69/Vy//PLLNhQK2bPPPrvS+S5fvtzWr1/fHnroodVWm38augcMGGBzcnKq/VxXF7orHnvxxRdtYmKi7dSpk121apVduHChbdasmU1PT7ezZ88mcAPAQcb/m9UCQA0cccQR6tq1a7XXIFc0XrLWqqioSHl5ecrNzVVeXp46deqk5ORkLV26VIWFhZLKGytNnz5dkUhE55xzjpo2bVrtdcUV18hGIhG9/vrrstbqrLPOUlJSUqXjjTEaPny4GjZsqPnz5ys/P3+/nffezq1Lly6qV6+elixZouLi4irPzcjI0EknnVRlroMGDVLHjh21evVqLV++fK/jW2v1xhtvKBKJ6Kyzzqp0rWvF6w0ePFiZmZlauHChcnNz93lO9evX17///W898MAD6t27tyKRiL766is9++yzuvzyy9W/f39dddVVVbqX70t6erqOP/74StdmB4NB/fa3v5Uk9erVq9LPkDFGGRkZatu2rfLz87V58+YajfdTP/95KSgoUG5urnJzc1VYWBg9z8WLF1f7/H79+qlDhw77dduvZs2a6fjjj9eWLVs0ffr0aGMxa60+/PBDrVixQn369FGPHj1+0bidOnVSnz599Mknn2j16tVyHEcvvfSSQqGQTjnllL2+5r4+sykpKZU+szVhjNHJJ59cbb+AfT3vlFNO0cUXX6yVK1fqyiuv1JVXXqmtW7fq2muv1eDBg2t9WzYAQN1CIzUAB5WOHTvucdswa62WL1+uZ555Rp9++ql+/PHHaAiNRCLKyclRamqqSktLJUnFxcVauXKlQqGQfve73+3zF+mioiKtWLFC1lq9+OKLmj17dnTcnx5TUFCgQCCgvLy8Ktso/VKO42jZsmV65plnNH/+fP34448qKSmRJJWVlSk/P1/Z2dnV7hndvHlzZWZmVjm/evXqqUOHDlqyZIlWr16tvn377nH84uJiLV++XNZaTZs2Tf/9738lVT734uJi7dq1S8XFxcrJyVGDBg32ek7GGKWkpOjKK6/U+eefr7Vr12rp0qX6/PPP9d577+mbb77RP/7xD2VlZempp56Kecuu5ORkZWZmVjuWVN4Z/uc/Q8YYJScny3GcGu2dXp2SkhLNmTNH//nPf7RkyRJlZ2dHO87v2rVLUnkzuOp06tRpvzfhCwQCGjdunJ599ln95z//0QUXXKD69eurrKxML7zwghzH0bhx437xftdxcXE6/fTTNWvWLL355psaM2aM5syZo549e+o3v/nNXp/788/s5s2boz/XFZ/ZnTt3Rj+zNVGxS8IvCcjhcFg33nijFi1apBkzZkiSRo8ercsvv7zW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1bJlS/3www96+umntWTJEq1YsULr1q371WHYcRw98cQTevnll9W7d2/deuutiouLU9OmTfXAAw8oOTlZd9xxhxYsWFBrlXYAQN1D6AYAlVf7rr/+eqWnp+vPf/6z+vTpo/79+6tPnz76v//7v+hjP5eamqp//vOf6t+/v958800NGjRI/fr1U//+/XXEEUdo7Nix+uabb6LHp6en67HHHtOQIUP0xhtvaNCgQerbt68GDBigvn376ogjjtD48eP36y/l9evX1/XXX6/k5GTdeuut6tOnjwYMGKA+ffro8ccf15/+9Ke9NoLr1q2bevfurbPOOkt9+/ZVv379NHLkSC1fvlxnnnmmLr744piWF6ekpOif//ynjj76aM2YMUNDhgypdO6HH364zjrrLH3yyScxnXv9+vW1aNEiXXLJJTryyCPVt29f9e/fX3379tWQIUM0c+ZMde/eXf/85z/VqFGjGr1nXunRo4cuuOAC7dixQ6eddpr69eunfv36afDgwdqyZYsmTpy438ds2rSpLr30UpWVlemiiy5S79691bNnT1155ZVVKt89evRQ3759Za1Vq1atdPTRR3t2ffJPP7N33313pc/sww8/rOuvv77apnzJycmaOHGikpKSdN111+nwww9Xz549NWbMmF/Ved5aq08//VR33nmn0tLS9OCDD6px48bRbc369++vG2+8UTt27NA111xT7coYAMCBiUZqAA4YSUlJuvrqq1VQUKDmzZtXeqxPnz665ZZbdNRRR1X73IprVt944w099dRTWrZsmYwxGjlypM455xx16dJFJSUlCoVClSp7xhh17NhRr732ml5//XW9++67Wr9+vYwx+u1vf6tevXrp5JNPrnR8+/btNW3aNM2YMUMzZszQqlWrVFJSokaNGumwww5Tjx499tlEak+OPvpopaamVmogZYzR6NGj1ahRIz399NNavny5gsGgTjjhBI0fP16HHHKICgsLlZSUVGnbp2bNmummm25SixYtNHr0aE2ZMkUzZszQ1q1bNXDgQI0ePbrajswtW7bUTTfdpDZt2lQK48YYtWnTRlOnTtW7776rd955RytXrlRxcbEyMjLUs2dPde/eXSNHjozp3K+55hoNHz5cn376qb766iutX79eBQUFatCggXr16qWjjjpKI0eOjAafChkZGbrhhhuUkZFRqcKfkpKi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6+kCAAAAdZqRR43UPBizptq3b6+hQ4fq3HPP1YUXXqju3bsrPj6+0jEtWrRQq1atWGJeywjdLopEInIcJ7q0fOnSpSotLVWfPn1kjFGDBg2UkJCg7Oxsr6cKAAAA+IbrjdTcHe4X+e677/Tiiy+qqKhI1157bbXN1CZNmqQ77rjDg9kdXAjdLmrQoIHS0tI0e/Zs/e53v9PLL7+sNm3aqGXLlpKk7OxsFRYWKj093eOZAgAAAP7gTQCu+7G7U6dOeuWVV/a6tLxNmzbuTeggRuh2UUpKisaPH6+77rpLr776qrZv36777rtP9erVk7VWc+bMUVJSEj/8AAAAQKyMcX15dN2P3FJaWpqGDRvm9TQgQrerAoGAJk6cqA4dOuibb75Rjx49NHLkSBljVFpaKsdxdM0116hJkyZeTxUAAADAnvghde9WUlKiDRs26IcfflBZWZkaNWqkdu3aqV69elzL7RJCt8sSEhI0evRojR49OnqftVahUEhXXXWVZ/MCAAAA/MazRmqq+7nbWqvvv/9eN998s2bPnq28vDxZaxUfH69u3brppptu0rHHHlvttd7YvwjdLrPWauvWrZoxY4a++eYbNW/eXFdeeaWMMfr888/VpEkTtW7d2utpAgAAAHXf7uTrSSO1Op66s7Ozde6552rFihU666yz1KdPH8XHx2vFihV68cUXde655+qVV17RgAEDqHjXMkK3i6y1WrZsmcaPH69169bJcRz16NFDl112meLi4vTqq69q1apVmjJlSpV2/gAAAACqIi5Wb86cOVq6dKlefPFFjRgxIlrRttbqzDPP1Mknn6x///vf6tevn4LBoMezPbCxlsBFpaWluvXWWxUMBjVnzhydf/750ceMMTrxxBM1f/58rVu3zsNZAgAAAP5iPLjVdd9++606dOiggQMHVlpCboxRs2bNdPzxx2v58uUqKyvzcJYHByrdLsrKytLChQt19913q0ePHoqLi4s+ZoxRq1atJElr165Vx44d9/pa1lpFIhH9+OOPWrdunUpKStS2bVu1bNlSgUAgukTEWqudO3fqu+++U35+vpo3b6527dopHA6zjAQAAAD4JXzwe3S9evWUl5enwsJCJSYmVvrd31qrrKwsJSYmck23CwjdLiouLlYkElFmZqZMNVsblJWVKRKJ7HUvvQrWWt1999165ZVXlJmZqVAopLVr12r8+PGaNGmS4uLiZK3V4sWLddlll8lxHDVq1EirVq3S8OHDde+996pevXq1daoAAABArStvpGZopFaNfv366a677tI999yjP/zhD2rYsKGMMSoqKtKMGTM0depUXXrppSwtdwGh20Xp6elKTU3Vl19+qeHDh1d6zFqrDz74QI7jxNxI7dBDD9WYMWPUtm1bGWP09ttv6+KLL9aRRx6pQYMGKRKJ6K677lJaWppeeOEFJScna968eTr11FM1dOhQnXjiiVS7AQAA4Hv8TltVr169dOWVV+rBBx/UK6+8ok6dOikuLk7r16/XqlWr1KdPH11yySW8dy4gdLsoJSVFY8aM0T/+8Q8dcsgh2rlzp0pLS7V+/Xp99NFHuu222zRs2DC1bdt2n69VcQ14xf8vSUOGDFFaWpq+/PJLDRo0SCUlJVq/fr1Gjhyp9PR0GWN02GGHKS0tTevXr6/VcwUAAAAOVH7IqeFwWDfddJOOPPJIvfTSS1qxYoXKysrUqlUrXXzxxRozZowaNGhA6HYBodtFgUBAv//977Vp0yZdcsklKi4uVllZmfr376+8vDwNHDhQ99xzT6Vrvfekug/Hxo0blZOTo8aNG0sq3xO8b9++mj9/vrZu3arU1FTNnz9fJSUl6t27934/PwAAAMBtxvgjBHshLi5Oxx57rI455hiVlZXJcRyFw+FKPaBQ+wjdLktJSdHf//53nX322Zo7d642b96s+vXr6/DDD9fgwYOVnJz8iz4AhYWFuu+++9S0aVMNHTo0+ho33HCDJkyYoKFDh6pJkyZavXq1rrvuOh1++OFVxrHWauHChfr++++j933++efa9xXmAAAAgIdi6Im0P9XVuFrx+/zGjRt1zDHHRBuoGWOihT1rrb788kutWbNGxxxzDH2eXEDodpkxRvHx8erbt6/69u1b5bFforS0VA8++KDmzJmjp556KlrpdhxHzz33nNatW6errrpKLVq00KxZs/TEE0+oX79+6tGjR5UxP/nkE7377rvRP2/dulWhBD6IAAAAqJuMy4G7LsvNzdWECRPUp08fjRo1ao/HFRUVacKECXrsscd0wgknUPWuZYTuWlZcXKz8/PyYOpJL5UvQ09LSYm7dH4lE9OSTT+qRRx7R3/72t0pV7m3btmny5Mm65ZZbdMEFF0iSBg4cqJEjR+rf//63/u///q/K602cOFFXXnll9M/Tp0/XvX99MKa5AAAAAF5wPXjX0aC/bNkyrVu3Tv/617/22JXcGKPevXurV69eeuuttzRq1ChCdy0jdNey999/X5dffnnMm843a9ZM06dPV2Zm5j6PdRxHL7/8su68807ddtttOu200yqF9eLiYhUUFCgjI0NS+QcsHA4rNTVV2dnZVV7PGFPlw8m+fQAAAKi7rGQdub/g2+6+1S3fffedGjRoEN3daE/C4bB69+6t999/X5FIhN/5axmhu5a1adNG559/vhzHien4lJQUJSUl7fM4a61mzZqlSZMm6aKLLtLJJ5+s/Px8SVJ8fLzi4+PVqFEjHXrooXriiSfUo0cPpaena968eVq4cKFuv/32X3VeAAAAwEGrjla68/PzFQ6HY2rMXL9+fRUUFCgSiSgcDrswu4MXobuWdenSRTfddNN+f13HcfTkk0+qtLRUM2bM0Jw5c6KPjRs3TpdccokSExP197//XTfeeKNOO+00JSQkqLCwUBdffLHOPPNMlpEAAADA3yqyrxeN1Opg7m7QoIF27typ7OxspaSk7PE4a63Wrl2rtLS0PS5Dx/5D6PapQCCgBx54QAUFBVUeS09Pl1S+XLx79+56+eWXlZWVpaKiIqWnpys1NZUPFwAAAHzPSDIeLS+vi+WrQw89VEVFRXrjjTd0xRVXVLts3FqrdevWadasWTr99NPJBS4gdNeyVatW6e2331bnzp01dOhQTZ8+XevXr9/j8fXr19cZZ5yxz9b9xhi1aNFin+NXdEtv3rx5jecOAAAA+IHrAbgOVrklqUOHDjruuON01113qX79+jrllFNUv359BQIBWWtVVlamZcuW6Y9//KMKCws1btw4Vr+6gNBdy1asWKG//vWvOvnkkzVo0CBNnTpVH3/88R6Pb9asmU444QT2ywMAAAD2yZYvLbex9U/afxzVxeQdDod15513av369br88sv197//XT179lRGRoaKi4u1YsUKLVq0KLpqtmvXroRuFxC6a9mgQYP06aefKikpSXFxcXr44YdVVFS0x+ODwaAaNmzo4gwBAAAAP6t74dcrxhi1bNlSL730kh5//HG9/PLLevPNN1VUVKRAIKCMjAyNGDFCEydO1OGHH07XcpcQumtZQkKC3nnnHYVCIZ133nlq1KiRCgsLtW7dOrVu3VqJiYleTxEAAADw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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "!ls {dest_path}/raw_traces/*.csv | 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": 7, "id": "cell-7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Kept FOV_26_4DNFI2HV38L6.csv (mean Pearson = 0.797)\n", "Kept FOV_27_4DNFI2HV38L6.csv (mean Pearson = 0.799)\n", "Removed FOV_28_4DNFI2HV38L6.csv (mean Pearson = 0.573)\n", "Kept FOV_29_4DNFI2HV38L6.csv (mean Pearson = 0.785)\n", "Kept FOV_30_4DNFI2HV38L6.csv (mean Pearson = 0.714)\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(\"*.csv\"))\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.70\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": 8, "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 FOV_26_4DNFI2HV38L6.csv\n", "Processing FOV_27_4DNFI2HV38L6.csv\n", "Processing FOV_29_4DNFI2HV38L6.csv\n", "Processing FOV_30_4DNFI2HV38L6.csv\n", "$ Saved correlation matrix as /mnt/grey/DATA/users/zidoum/traceraptops/data/Boettiger/Replicate2/output/trace_correlation_matrix.png\n", "$ Saved correlation matrix data in NPY format: /mnt/grey/DATA/users/zidoum/traceraptops/data/Boettiger/Replicate2/output/trace_correlation_matrix.npy\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA90AAAMcCAYAAABNesaXAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjExLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlcelbwAAAAlwSFlzAAAPYQAAD2EBqD+naQAAkUxJREFUeJzs3XecVNX9xvHnTNnGNmBZelN6UQxYqEq1gWIFBcGOvRFLYm/RmMQk/DTRaGyoiB0bASWiKIIoogIiRYoCAgssu8v2uef3x7IT111gRtl798Ln/XoNkZk7c84ddgjPfM/9HmOttQIAAAAAAPtcwOsJAAAAAACwvyJ0AwAAAABQSwjdAAAAAADUEkI3AAAAAAC1hNANAAAAAEAtIXQDAAAAAFBLCN0AAAAAANQSQjcAAAAAALWE0A0AAAAAQC0hdAMAAAAAUEsI3QAAAAAA1BJCNwAAAAAAtYTQDQAAAABALSF0AwAAAABQSwjdAAAAAADUEkI3AAAAAAC1hNANAAAAAEAtIXQDAAAAAFBLCN0AAAAAANQSQjcAAAAAALWE0A0AAAAAQC0hdAMAAAAAUEsI3QAAAAAA1BJCNwAAAAAAtYTQDQAAAABALSF0AwAAAABQSwjdAAAAAADUEkI3AAAAAAC1hNANAAAAAEAtIXQDAAAAAFBLCN0AAAAAANQSQjcAAAAAALWE0A0AAAAAQC0hdAMAAAAAUEsI3QAAAAAA1BJCNwAAAAAAtYTQDQAAAABALSF0AwAAAABQSwjdAAAAAADUEkI3AAAAAAC1JOT1BAAAdVNZWZl27NihUCikjIwMGWPiel44HFZ6enrMz3NLeXm5duzYoWAwGNd5/RKO4yg3N1eSlJmZqUCg4rtua6127NihSCSijIwMhUK1/3/HxcXFKigoUFJSkurVq1fn/lz8Jj8/XyUlJUpLS1NiYqLX0wEA1GGEbgC+Y63VokWLtHz58riel5WVpYEDB0aDj59t27ZN77//vsrLy2N+TiAQ0KBBg9SwYcOYjl+yZImGDx+u3/zmN3rttdcUDAZjet7ChQt1+umnq2/fvnr22WdrNVBaa5Wbm6sPPvhAn3zyiTZu3ChjjJo3b65DDz1UvXr1UqtWrRQOh6PPWbVqlU444QS1a9dO06ZNU1JSUq3NLzc3V0OHDlVZWZnee+89ZWdnS5JKS0t11llnadmyZXrnnXfUuXPnWptDpTfffFNXXXWVxo0bp/vuuy8auq21VY6r7TBeVFSkd999V0VFRQoEAurbt6+aNWtW47GRSET//e9/tW3bNklSjx491KFDh181x31xvtZa3XbbbZoyZYoeffRRnXzyyb94PgCA/R+hG4AvPfXUU5o0aVJcz+nTp4/ef/99JSQk1NKs3LN69WqNGzdOhYWFMT8nFAppzpw5MYfusrIybd68Wdu3b49rbj993s8Dzr5krdW8efN0zTXXaOHChVUq6zt37lRhYaEaNGig22+/XZdffnn0eZFIRJs3b1b9+vVrdX6Vc8zJyVFZWZkcx6ny2LZt27R58+a4vjj5NYqLi7V582bl5+dXuf/rr7/WHXfcod/85jf6/e9/X+uhe9u2bbr00ku1YcMGSdKdd96pW2+9tcZx16xZo3POOUebNm2SJP3lL39Rhw4dftX4GzZs0MSJE9WkSRP98Y9//MVV6ry8PG3atEnFxcW/aj4AgP0foRuAL11yySU6/vjjq9y3Y8cOXXHFFcrLy9Mf//hHderUqcrjmZmZrizjdUO7du30+uuvKxKJVLn/X//6l1577TWdeOKJuuKKK6o8Zoyp9p74lbVW33//vc4//3ytWLFCo0aN0uWXX662bdsqGAxq8+bNWrBggaZOnarNmzdXeW5mZqbOO+88NW7cOObq/S+VmJios846S5FIRMnJybU61t60b99eF154ofr27Vsl4Obk5OiNN95QWVlZrX8J8VOBQEChUEivvfaarr76amVkZFR53Fqr6dOna8uWLUpKStpn4bagoEBvv/22Dj744Gqfn3gMGDBAwWBQBx100D6ZFwBg/7V//OsTwAHFGKPOnTtXW5Jb+Y/znTt36qijjtJRRx2129ew1kZvxpgq19pKqlKVNMZEb3vy09eM5Xk/P75yDrFUGjMyMjR06NBq98+YMUOS1LJlSx177LFVXqtynJ8GjVjP7efzjed5e3stKb5zrzRt2jR9++236tevn/7xj39UuX48OztbXbt21ejRo6tVdps1axbTKom9nW8s70dqaqruv//+mM+ppteuFM97VNPP994+E26rV6+ejjrqKM2ZM0cLFizQ4MGDq5xbcXGxXn75ZTVs2FCdOnXSnDlzanydX/OZjcXPXz8QCMgYo/Hjx2v8+PG/+vUBAPs/QjeA/Z61Vp999plmz56t3r17q1u3bnrxxRc1c+ZMbdq0SRdeeKHGjRungoICzZgxQ59++qlWrFih7du3KxwOq0OHDho5cqSOPvpohcPhav+Qt9YqPz9fM2bM0IwZM7R69Wo5jqOmTZuqV69eOu2009S6desqx+/YsUNvv/22Zs6cqXXr1ikcDuvQQw/V6NGj1aNHj31egd2xY4f+85//aMGCBVq5cqW2b9+uxMREderUSaeccor69etX5brnn8vPz9frr7+ud955R5s2bVKTJk00cuRInXzyyUpOTo453FS+V9OnT9d//vMfrVmzRuFwWN27d9eZZ56pXr16xXzuS5YskbVWvXr1qrFhmzFGycnJ1SrMOTk5eu6559SgQQOdddZZ0dUP+fn5euqpp5SYmKhzzjlH8+fP13PPPaeVK1eqQYMGOuOMM3TKKacoISFBBQUFevnll/X2228rJydH7dq10wUXXKAjjzyySs+AoqIiPfPMM4pEIho/frzq1au31/dn9erVmjFjhhYtWqR169Zp586dyszMVK9evTRq1Khq1zRXLrP/6KOP1L9/f3Xo0EFTp07Vu+++qy1btujyyy/X6NGjtWTJEk2fPl2HHnqohgwZImut3nrrLb399ttyHEerVq3Sn//85+j8DzroIB199NF6/vnnlZiYqLFjx9Y4/7KyMk2ZMkU5OTk688wz1aJFi5j+/AKBgM444wx9+OGHeumllzRo0KAq15kvXrxYn3/+uU444YTd/mxWfu4qP7Pbtm1TQkKCOnbsqJEjR2rAgAHRz6y1VnPmzNFbb72l0tJSbd68WX/729+ir52dna2zzjpL4XBYL730ktatW6fRo0erpKREkydP1vz581VSUqJJkyapa9eumjFjhr7++muNGDEiuoJk5cqVeuONN5SSkqKzzz5baWlpVc5py5YteuGFF2St1ZlnnqmmTZvG9F4BAHzOAsB+YvPmzbZFixY2OTnZfvLJJ9H7Hcexf/7zn60ke/nll9uTTz7ZNmjQwHbu3Nl27NjR/uUvf7GO49i5c+fa1NRUm5qaag8++GDbvXt3265dO5uUlGRTUlLs73//e1tcXFxlTMdx7KpVq+yxxx5rw+GwTUtLsx07drRdu3a1TZo0seFw2D7wwANVjl+5cqUdPHiwDYfDtmHDhrZr1662ffv2NikpyWZlZdnHH3/clpeX/6L34JprrrGS7CWXXGIdx4neP2vWLJuSkmLT0tJsu3btbPfu3e3BBx9sExMTbWpqqr3zzjttaWlpldf69NNPbTgctoceeqgdPXq0rVevnm3Xrp3t1KmTrVevnk1ISLAXXXSRzc/Pr/K8OXPm2ISEBDts2LAqr+k4jl2zZo09/vjjbTgctg0aNLBdunSxHTp0sMnJybZ+/fr2oYcesmVlZXs9T8dx7NVXX20l2dNOO63an8ueLFmyxKamptqePXvawsLC6P3r1q2zmZmZtnXr1vZvf/ubzc7Otu3atbOdO3e2KSkpNjEx0d5zzz02JyfHjh492jZs2NB26dLFtm3b1oZCIdu4cWM7e/bsKu97Tk6ObdWqlW3atKnduHFj9P7i4mJ7xBFH2JSUFPvVV19VOa/f/e53NhQK2aysLNupUyfbvXt327x5cxsMBm2rVq3s9OnTq4zhOI69++67rSR77bXX2hNOOCH63nbs2NE+/PDD1lprn3nmGRsIBOyll15qI5GILSsrs2eddZYNhUJWkjXG2ISEhOjt5JNPttu3b7d9+vSxSUlJdubMmVXGrRz7q6++spmZmbZdu3b2xx9/3Ov7/8MPP9hmzZrZjIwMu3DhQnvYYYfZ1q1b2/Xr11d53ZtuusmGw2H78ssv2/Hjx1tJ0c9qpY8//rjaZ/bggw+OfmZvvvlmW1JSEn3Nm2++2YbD4RrPt1evXjYvL8+Wl5fbIUOG2EAgYCdNmmQ7d+5smzRpYrt162Y7d+5s58+fbx3Hseeff76VZF944YXofLZt22aHDRtmg8Ggvf3226v8LBcXF9uLLrrIBgIBO2bMGLtz5869vlcAgP0DoRvAfiOW0N2oUSM7YMAAO3/+fJuXl2dzc3Pt9u3brbXWLl261N5///124cKFNicnxxYWFtqtW7fat99+OxoM33rrrSpj5ubm2mHDhtlAIGCPPfZYO2/ePJubm2sLCgrs2rVr7eTJk+0bb7xR5fihQ4facDhsJ0yYYJctW2YLCgrstm3b7CuvvGJbtGhhGzRoYOfOnVst4MRid6F70aJF9oEHHrCLFi2yW7dutYWFhTYnJ8e+/vrrtm3btrZevXp21qxZVV6rMnQHg0HbtGlTO2XKFLtt2za7Y8cO++6779qOHTvaUChkJ02aVGWs3YXu/Px8O2LECBsKhex5551nlyxZYvPz8+327dvtG2+8Ydu0aWMzMjLs+++/v9dzdxzHTp061YZCoegXIkuWLLEFBQW2vLx8j8/fW+hOSkqyHTp0sM8++6zdunWrzcvLs6+++qqtX7++zcrKsuPGjbNHH320/fTTT21+fr7dtGmTvf76620gELDHHXdclS8Afknofv755+3TTz9tV65caXfs2GELCwvt999/b++77z6bkpJiu3btajdt2lTlOZWhu1GjRnbw4MH2s88+s/n5+TY3N9fm5uZaa6uH7sovQf71r3/ZQCBgBwwYYBcuXGgXLVpkFy1aZL/77jsbiUTsww8/bAOBgB0/fny1L4Mcx7G33XabNcbYiRMn2kgkssc/N2urhu4VK1bYu+66ywaDQTt58uTon9vWrVujXxr8+OOPuw3dS5Yssffff7/94osvqnxm33rrLdu+fXubnJxs33nnnehcN2zYYKdNm2aTk5Nthw4d7Lx586Ln++2339ry8vJo6JZkmzZtai+99FK7atUqu3PnzugYuwvdlV9CtGrVyqanp9s333zTOo5jI5GI/fe//22TkpJs9+7d7Zo1a37R5xsA4E+EbgD7jVhCd1ZWll20aFGN/+B1HGe397/88ss2HA7bMWPGRIOH4zj22WeftaFQyB5yyCF2/fr1NVYCK4OI4zj26aeftqFQyI4YMcIWFBRUq1j++9//jobSX1Lt3l3o3tO5TZ482QaDQXvRRRdVCU2VoTsQCNgHH3ywymOO49g33njDJiUl2S5dutitW7dGH6spdDuOY1988UUbDoftkCFD7I4dO6rN7/nnn7fhcNiOGjUqpmp3Xl6ePfPMM20wGLTGGJuZmWkPO+wwO27cOPuPf/zDLl26tMbX2VvoNsbYv/zlL1XOt6yszI4dO7bGn6HKMNeqVSvbsGFDu2rVqujzfknorgzEP1daWmrHjRtng8GgfeWVV6o8pzJ0N2nSxC5durTG5/88dFeaNWuWDQaDdvjw4TX+zK1bt862bNnSNm3a1H733XdVHtu6davt2rWrTUtLs59++mlMQfKnoXvlypX2yy+/tBkZGXbEiBG2pKTEOo5j33zzTZuQkGAnTpxoy8rKdhu69/Rz/dJLL9lQKGTPOeecKue7bNkym5qaag899NAaq80/Dd39+/e3ubm5NX6uawrdlY89//zzNjk52Xbs2NGuXLnSLliwwDZr1szWr1/fvvvuuwRuADjA+H+zWgCIw5FHHqkuXbrUeA1yZeMla62Ki4uVn5+vvLw85efnq2PHjkpLS9OSJUtUVFQkqaKx0htvvKFIJKJx48apadOmNV5XXHmNbCQS0euvvy5rrcaOHauUlJQqxxtjNHToUDVs2FDz5s1TQUHBPjvvPZ1b586dVa9ePS1evFglJSXVnpuVlaVTTjml2lyPOeYYdejQQatWrdKyZcv2OL61VtOmTVMkEtHYsWOrXOta+XoDBw5Udna2FixYoLy8vL2eU2pqqv71r3/pwQcfVK9evRSJRPTll1/qmWee0eWXX65+/frpmmuuqda9fG/q16+v4cOHV7k2OxgM6je/+Y0kqWfPnlV+howxysrKUtu2bVVQUKCNGzfGNd5P/fznpbCwUHl5ecrLy1NRUVH0PBctWlTj8/v27av27dvv022/mjVrpuHDh2vTpk164403oo3FrLWaPXu2li9frt69e6t79+6/aNyOHTuqd+/e+vjjj7Vq1So5jqMXX3xRoVBIp5122h5fc2+f2fT09Cqf2XgYY3TqqafW2C9gb8877bTTdPHFF2vFihW68sordeWVV2rz5s264YYbNHDgwFrflg0AULfQSA3AAaVDhw673TbMWqtly5bp6aef1ty5c/Xjjz9GQ2gkElFubq4yMjJUVlYmSSopKdGKFSsUCoV0+OGH7/Uf0sXFxVq+fLmstXr++ef17rvvRsf96TGFhYUKBALKz8+vto3SL+U4jpYuXaqnn35a8+bN048//qjS0lJJUnl5uQoKCrR9+/Ya94xu3ry5srOzq51fvXr11L59ey1evFirVq1Snz59djt+SUmJli1bJmutXn75ZX300UeSqp57SUmJdu7cqZKSEuXm5qpBgwZ7PCdjjNLT03XllVfq/PPP15o1a7RkyRJ99tlneu+99/T111/rH//4h3JycvTkk0/GvGVXWlqasrOzaxxLqugM//OfIWOM0tLS5DhOXHun16S0tFSzZs3SCy+8oMWLF2v79u3RjvM7d+6UVNEMriYdO3bc5034AoGAxowZo2eeeUYvvPCCLrjgAqWmpqq8vFzPPfecHMfRmDFjfvF+1wkJCTrzzDM1c+ZMvfnmmxo1apRmzZqlHj166JBDDtnjc3/+md24cWP057ryM7tjx47oZzYelbsk/JKAHA6HdfPNN2vhwoWaPn26JGnkyJG6/PLLa32bOgBA3UPoBnBA2V33aGutPvroI51zzjn64Ycf1LJlS7Vp00ZpaWkKBoMqLi5WTk5Ole22SktLVVxcXCWQ7UlJSYmKi4vlOI4+/PDD3f7jOzExUZmZmftsz2RrrWbNmqXzzjtPmzZtUqtWrdS6dWulpaUpEAiosLBQW7ZskeM4NY6ZnJy82+7R6enpstbutSpfWlqqwsLC6Pu8uy8+QqGQMjMzYz63ykCUmpqqbt26qWvXrjrzzDOVm5urv/71r7rvvvs0bdo0LViwQAMGDIjpNQOBQI1/NpVj7e69qHz8p1tXxau8vFwPPPCA7rvvPknSwQcfrPbt20c7xP/www/aunVrjV+OSLv/+f41jDE67LDDdMQRR+iTTz7RggULdMwxx2jFihWaPXu2WrVqpWHDhv3i6q0xRkOGDFHTpk316quvKhwOa9OmTZo4caJSUlJ2+37aXd3IzznnHG3YsEEtWrTY7Wf2l36Wfun7aYxRgwYNdMQRR2jOnDkKhUI688wzlZqa+oteDwDgb4RuAAeU3QWDkpIS3XXXXVq/fr1uvvlmXXbZZapfv75CoZCMMVq3bp169epV5TnhcFhJSUnRbbD2JhwOKxwOKzExUS+99JK6d+++x3nurdIbq8LCQt15553avHmz7rrrLl144YXKyMiIhseVK1fqiCOO2G0wKS4uVllZWY1hMz8/X8aYvYaTUCikxMREhcNhPffcc9Xey58yxqh+/fpxnGHV50oVS8SvvfZavfrqq1qyZIkWLVoUc+j20jfffKMHH3xQ6enp+ve//61+/fopJSUl+iXAk08+qQsuuGC3z6+tZcvJyckaO3asPvjgAz3//PMaMGCAXnnlFW3fvl3jxo2rtjIgXs2aNdPQoUP1wgsv6Pvvv1dmZqZOPPHEPZ5PcXGx7rrrLm3YsEG33HKLLr30UmVmZkY/s2vXrt3jz1ltqvyi6/HHH1e9evVUUlKi+++/X/369VOLFi1YXg4ABxiu6QYASdu3b9dXX32lpk2b6vLLL1fjxo2VkJAQvb72+++/r1bNTUpK0sEHH6zy8nItXLhwr9W0lJQUtW3bVmVlZVq3bp0aNWqk7OzsGm+NGjXaZ8tQc3JytHTpUrVq1UqXXHKJGjVqpISEhOg//NesWbPHJdEbNmxQTk5OtfMrLCzUypUrFQqFdNBBB+1xDklJSTrooINUXl6uNWvW7PXcd1cJj0dKSoqysrIkVQS0us5aqy+//FK5ubk67rjjdNxxxyk9PT0aIqWKUF6b4+/uZ9gYo+OPP16tW7fW9OnTtWTJEr300kuqV6+eRo8eXeX6918iGAzqzDPPlOM42rBhg/r376+2bdvu8Tk//cxedtllys7O3utntvJcKs+3NlhrtW7dOk2cOFElJSV68MEHNW7cOC1evFg333yzL34WAQD7FqEbAHbZ3fLqsrIyPfvss9X+sRwIBHTSSScpGAzqmWee0ebNm6s9/6dBJhgM6uSTT5YxRk888YS2b99e43iVz9mXy8t3t0S3tLRUkydPjl4HW5MtW7bozTffrPaaH330kb799lu1bdtWnTp12uMcAoGARo4cqWAwqKeeekpbtmz5VedurdXKlSuVl5e329fZsGGDVq1apUAgoHbt2u3x9eqKn577T8/LWqsffvhBb7zxxj4fMzk5WaFQSPn5+btdti5JjRs31imnnKKNGzfqlltu0bJly3TkkUfu9brrWPXt21fXXXedJkyYoKuuumq3y/gr7ennpKysTJMnT66xMWDlapOioqJaCcBFRUX6/e9/r6VLl+rcc8/V+PHjdffdd+uwww7T1KlT9eSTT/6qSxAAAP5D6AYASRkZGerUqZM2btyohx9+WDk5OSotLdXGjRv1pz/9SdOmTasWAowxGjFihPr3769Fixbpkksu0VdffRVtBvbjjz/q9ddf14wZM6LHn3HGGerXr5/mzp2rCRMm6Msvv1RBQYFKS0uVn5+v7777TlOmTNGUKVP22bk1bNhQ7du317p16/TPf/5T27ZtU0lJiTZs2KB7771XM2fO3GNl2Vqr+++/X2+88Yby8/NVWFiouXPn6vrrr1dpaakuvPDCmJqenXTSSRo8eLA+//xzXXTRRVq4cKHy8/Oj575mzRq9+OKLevrpp2M6r0cffVQnnHCCnnjiCa1atUo7d+5UWVmZ8vLy9Pnnn+uKK67Q+vXr1a1bN/Xr1y+u98wLxhh16dJF6enpmj59umbOnKmdO3eqqKhIS5Ys0eWXX67t27fv83Fbtmyphg0b6quvvtLUqVO1dOlSLV++XOvXr68SagOBgEaPHq169erprbfeUiQS0ZgxY5SUlLRP5pGenq777rtPjzzySEwdvuvXr6+OHTtqw4YN1T6zDzzwgN58880ag3vDhg3VsmVLff/993rqqae0ePFiLV++XGvXrv3VYdhxHP373//WSy+9pF69eun2229XQkKCmjZtqgcffFBpaWm66667NH/+/FqrtAMA6h5CNwCootp30003qX79+vrDH/6g3r17q1+/furdu7f+7//+L/rYz2VkZOif//yn+vXrpzfffFPHHHOM+vbtq379+unII4/U6NGj9fXXX0ePr1+/vh577DENGjRI06ZN0zHHHKM+ffqof//+6tOnj4488kiNHz9+n/6jPDU1VTfddJPS0tJ0++23q3fv3urfv7969+6txx9/XL///e/32Aiua9eu6tWrl8aOHas+ffqob9++OuGEE7Rs2TKdffbZuvjii2NaXpyenq5//vOfOvbYYzV9+nQNGjSoyrkfccQRGjt2rD7++OOYzj01NVULFy7UhAkTdNRRR6lPnz7q16+f+vTpo0GDBmnGjBnq1q2b/vnPf6pRo0ZxvWde6d69uy644AJt27ZNZ5xxhvr27au+fftq4MCB2rRpk6666qp9PmbTpk11ySWXqLy8XBdddJF69eqlHj166Morr6xW+e7evbv69Okja61atWqlY4891rPrk3/6mb333nurfGYfeugh3XTTTTU25UtLS9NVV12llJQU3XjjjTriiCPUo0cPjRo16ld1nrfWau7cubr77ruVmZmpv/71r2rcuHF0W7N+/frp5ptv1rZt23TdddfVuDIGALB/opEagP1GSkqKrr32WhUWFqp58+ZVHuvdu7duu+02HX300TU+t/Ka1WnTpunJJ5/U0qVLZYzRCSecoHHjxqlz584qLS1VKBSqUtkzxqhDhw567bXX9Prrr+s///mP1q1bJ2OMfvOb36hnz5469dRTqxzfrl07vfzyy5o+fbqmT5+ulStXqrS0VI0aNdJhhx2m7t2777WJ1O4ce+yxysjIqNJAyhijkSNHqlGjRnrqqae0bNkyBYNBnXTSSRo/frwOPvhgFRUVKSUlpcq2T82aNdMtt9yiFi1aaOTIkZoyZYqmT5+uzZs3a8CAARo5cmSNHZlbtmypW265RW3atKkSxo0xatOmjaZOnar//Oc/euedd7RixQqVlJQoKytLPXr0ULdu3XTCCSfEdO7XXXedhg4dqrlz5+rLL7/UunXrVFhYqAYNGqhnz546+uijdcIJJ0SDT6WsrCz97ne/U1ZWVpUKf3p6um688UYlJSUpISGh2ng9evTQ7bffrsMPP7zaY4FAQGeddZZ69eqlgw8+OHp/cnKyrrnmGkUikSrvUzAY1IUXXqjNmzdXaUIWDod1zz33qEePHnr11Ve1ceNGZWRk6PTTT9f48eOjncsr9wyvNGDAAN122217rOgfcsghuu2229SzZ88q70cwGNSNN96oYcOGacGCBdq6dascx1GHDh2qfZmSmJiobt26acaMGTrppJPUpEmT3Y63O2lpabruuutUWloaU8M8Y4xOPvlktW7dWkcddVSV+0844YS9fmYrGx7+9HnnnHOOevbsqXnz5mnTpk0qLy9XkyZNFA6Ho4/369dPrVq12u28TjrpJLVs2VJdu3aVVBG6N23apMsuu0w9evTQUUcdVeV9DgQCmjBhgsLhsLZu3ar169f/6gZ0AAB/MJavWQEgqvL658plpsFgMFqpive5xpjo8/d2vLVWxhgFAgEFAoFaqR7+mnOrfH4kEpHjONFttX7pPPflubv9Prqhpvdaqr3u5LHavn27jjnmGK1atUrvvfdelRDslV/7cw0AQG2j0g0AP1EZlH9J5/B4n/trxvolfu14xph90lV8X8yltl6rrtiX7/W+UPklwMsvv6ylS5dqyJAh6tGjh9fTkrR//vkDAPYvdef/0QEAQJ2zfv16PfDAA9q0aZNmzJihlJQUXXfddVUuRQAA7FlJSYnWr1+vTZs2qaCgQJ07d1aLFi32+JzKnTheeuklrV69Wp07d9bpp5+uhg0bsprHZ2ikBgAAdis3N1evvPKK3nvvPbVu3Vp/+9vfYuouDgD4n48//lhjx47V7373O5166ql655139vqcH3/8UaNHj9Z///tfHXTQQXrppZd03nnnKS8vz4UZY1+i0g0AAHarQ4cO+uyzz2StVb169ZSWlkbgBoA49enTR2+//baKi4s1YMCAve5eYK3VM888o7y8PL366qvKysrSySefrMGDB+vNN9/UmDFj+LvYR6h0AwCA3QqHw2rSpImaNm2q9PR0/pEHAL9AUlKS6tevr4SEhJj+Hi0rK9OMGTN0zDHHKCsrS8YYtWjRQocffrimT5/OloM+Q6Ube1ReXq6ysjIa1AAAABwAIpGIwuFwnWrmuDuRSESRSMSz8a21stZW2V7x1+7uUWnnzp1av369Ro4cGX2tYDCotm3b6sMPP1RZWRm9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tfrqq6/0+uuva9GiRSorK9Ohhx6qCy64QG3bto3+xWOt1datW/X000/rww8/lOM46tChg2666SY1atTI47MAAAAAfgUjmYA8qXSzVzdiRej2Kcdx9Pjjj8txHJ177rkKh8N67LHHdOaZZ2ratGlq3ry5rLXavn27zjvvPCUnJ+uCCy5QQkKCPvroI+3cuZPQDQAAgP2AR43UgBgRun0qEAjorrvuUnp6uoLBoKy16tatm/r06aOZM2fq3HPPlSQ98cQTKigo0OTJk5WRkSFJGjZsmIczBwAAAPYhTwrOVLkRO0K3TxljVL9+/Sq/r1evnsLhsHbs2CFJKioq0iuvvKLhw4dr1qxZWrJkiVq0aKETTjhBjRs39mrqAAAAwL5hdlW5XV9eTuxG7NgybD9hrdXMmTOVl5enww8/XJK0Y8cOrV27VlOmTNHTTz8tY4yeffZZnXbaafr++++jjdV++hqFhYXavn179LZz504vTgcAAACImdkVvt26AfGg0r0fsNZq8eLFuv322zV69GgdfvjhMsaovLxcRUVFSklJ0ZNPPqkGDRroggsu0JAhQ/Tkk0/qtttuq/Y6999/v1599dXoffn5+dXCOQAAAFAXGFX0M3M9BhO8EQdCt89Za7V27VpdfPHF6tq1q+6++26Fw2FJUigUUlJSkvr27asGDRrIGKPGjRvr8MMP1/z582WtrfJNnTFGF110kU499dTofbNnz9bEW//o+nkBAAAAsTAeNFKTFevLETNCt49Za/Xjjz/q4osvVmpqqv7xj3+ofv360b900tLS1KxZMwUC/7uKYE9LYowxatmypVq2bBm9b82aNeJvFAAAAAD4Zbim28dyc3N1xRVXqKCgQI899piaNGkiSdHl4PXq1dOQIUM0f/585eXlyVqrnJwcLVy4UEcccQTXowAAAMD3ovt0u3gzgcrfAHtHpdunHMfRXXfdpRkzZuiKK67Qf//73+hjhxxyiHr27ClJuvTSS/X+++/rwgsv1NFHH63//Oc/qlevns4//3yvpg4AAADsG6biF/bpRl1G6Pax1q1b65xzztGOHTu0YMGC6P3169dXz549ZYxR69at9fLLL+vll1/WihUrdNxxx+nUU09V06ZNqXQDAADA96KVbjfHNIZeaogZodunAoGArrnmmr0eZ4xRq1atdN1119X+pAAAAAAXmV3rvV2v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hN0u8bbWatGiRbrtttv0448/KhQKqaSkRJMmTVK/fv1iGresrEwff/yxXn75ZS1btkxlZWVq3ry5hg0bplNOOaXG5mrY9wjdAAAAAHzJmF2N1FzOjfE2b5s3b57uuece/f3vf9fQoUP1wQcf6LLLLlO3bt109NFHVwu+1lr98MMPuvjii3XGGWfovPPOU3JystasWaPMzMyYxiwvL9df/vIX3XfffapXr57atGmjcDiszz//XK+//rpeeeUVPfHEE3u85hv7Bov4AQAAAPhWZfB28xZPyLfWasqUKerSpYuGDx+u9PR0HXfccerRo4emTJkia22Nz3v22WeVkZGhSy+9VCkpKQqFQuratatatGgR07iLFi3Sn/70J40aNUoff/yxZs+erVmzZumTTz7RpEmTNHfuXD322GO7HR/7DqEbAAAAAGpJcXGxvvrqK/Xo0UMJCQmSpFAopMMOO0yLFi1SWVlZteeUlZXpvffeU4sWLXT99ddr6NChOvHEE/XEE0+otLQ0pnHnzJmjrKws3XPPPWrTpo0SEhIUCoXUoEEDnXfeeTrzzDM1Y8YMlZeX79PzRXUsLwcAAADgS0YeNVLbVe2eO3dulaZmrVq1Ur9+/ao0SCsrK9O2bdvUqFGjKsvIs7KylJeXp6KiIiUmJlZ5/aKiIm3atEmfffaZrr32Wl111VWaP3++br75ZiUmJmrMmDF7vRY7Pz9f9evXV1paWrVjA4GAWrRooQULFshxnF/zViAGhG4AAAAAvuZ+M7CK8ebPn68ffvghem/fvn3Vt2/fakfHu4TbWivHcdS+fXtNnDhRqamp6tixoz788EM9/fTTOvPMM6NV893p0KGDJk2apAULFqh///4VszZG1lrl5ORoxowZateunUIhImFt4x0GAAAA4E9xNjTb166++mqdc845/5uOMdW2AQuHw8rMzNS2bdtkrY1+QbB9+3alpqYqKSmp2usmJiYqPT1drVq1UnJysowxCgaD6tSpkz777DMVFRXtNXQPHjxYbdu21dixY3XhhRfq8MMPVzgc1po1a/TMM89o8eLFuvXWW9mr2wWEbgAAAAD+5UH38srxAoHAXivFiYmJ6tq1q77++muVlZUpISFBkUhEX331lbp161ZjeE5KSlK3bt20Zs0aRSIRhUKhaIU6NTV1r4Fbqli+/vTTT+t3v/udHnzwQRUV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0FVXXaX27dvr66+/Vvfu3XXCCSfIGKOysjI5jqPrrrtOTZo08XqqAAAAAHbHD6l7l9LSUv3www/6/vvvVV5erkaNGumggw5SvXr1uJbbJYRulyUlJWnkyJEaOXJk9D5rrUKhkK655hrP5gUAAAD4jWeN1FT3c7e1Vt99951uvfVWvfvuu8rPz5e1VomJieratatuueUWHX/88TVe6419i9DtMmutNm/erOnTp+vrr79W8+bNdeWVV8oYo88++0xNmjRR69atvZ4mAAAAUPftSr6eNFKr46l7+/btOvfcc7V8+XKNHTtWvXv3VmJiopYvX67nn39e5557rl555RX179+finctI3S7yFqrpUuXavz48Vq7dq0cx1H37t112WWXKSEhQa+++qpWrlypKVOmVGvnDwAAAKA64mLNZs2apSVLluj555/XsGHDohVta63OPvtsnXrqqfrXv/6lvn37KhgMejzb/RtrCVxUVlam22+/XcFgULNmzdL5558ffcwYo5NPPlnz5s3T2rVrPZwlAAAA4C/Gg1td980336h9+/YaMGBAlSXkxhg1a9ZMw4cP17Jly1ReXu7hLA8MhG4X5eTkaMGCBbryyivVvXt3JSQkRB8zxqhVq1aSpDVr1ng0QwAAAAB75YPl2PXq1VN+fr6KioqqbRtmrVVOTo6Sk5O5ptsFvMMuKikpUSQSUXZ2tkwNWxuUl5crEonscS89AAAAABUqGqkZTyrddT129+3bVxs3btR9992nTZs2qaysTOXl5SooKNArr7yiqVOnavDgwSwtdwHXdLuofv36ysjI0BdffKGhQ4dWecxaq/fff1+O49BIDQAAAIgDjcCq69mzp6688kr99a9/1SuvvKKOHTsqISFB69at08qVK9W7d29NmDCB984FhG4Xpaena9SoUfrHP/6hgw8+WDt27FBZWZnWrVunDz74QHfccYeGDBmitm3bej1VAAAAALvhh5waDod1yy236KijjtKLL76o5cuXq7y8XK1atdLFF1+sUaNGqUGDBoRuFxC6XRQIBHT11Vdrw4YNmjBhgkpKSlReXq5+/fopPz9fAwYM0H333VflWm8AAAAAu2eMP0KwFxISEnT88cfruOOOU3l5uRzHUTgcViAQIGy7iNDtsvT0dP3973/XOeecozlz5mjjxo1KTU3VEUccoYEDByotLa3ufQD8sBEh9ksmEFAglCDR5wCeMIqUl3o9CRyAjIysY+Xwdx9cZmUl+fTnzuXPS139l7G1VgsWLND69et13HHHKTk5OdpLqrKwZ63VF198odWrV+u4445TvXr1PJ71/o/Q7TJjjBITE9WnTx/16dOn2mN1USAQVEJKskyAJgtwVzg5SUnpx3g9DRygCjav04aF73s9DRyQjLKyBssJN/F6IjjAWCei8oj/QrfhC6qovLw8XXrpperdu7dGjBix2+OKi4t16aWX6rHHHtNJJ51UZ3PI/oLQXctKSkpUUFAQc0fyQCCgzMzMOte63xgjU8fmhP2fkRSgoyY8YxQpLfF6EjhAORGHRT5wnbW+rXO7H7zr6Ad06dKlWrt2rR555JHddiU3xqhXr17q2bOn3nrrLY0YMYLQXcsI3bXsv//9ry6//PKYN51v1qyZ3njjDWVnZ9fyzAAAAAC/s5J15P6C77q5FP/bb79VgwYN1LZt2z0G6XA4rF69eum///2vIpFInSv47W8I3bWsTZs2Ov/88+U4TkzHp6enKyUlpZZnBQAAAOAXq6OV7oKCAoXD4ZgaM6empqqwsFCRSEThcNiF2R24CN21rHPnzrrlllu8ngYAAACw/6nMvl40UquDubtBgwbasWOHtm/frvT09N0eZ63VmjVrlJmZudtl6Nh3WEcAAAAAwJeMJGMd/W+5t3u3ungV9KGHHqri4mJNmzZttyttrbVau3atZs6cqaOOOorQ7QIq3bVs5cqVevvtt9WpUycNHjxYb7zxhtatW7fb41NTU3XWWWfRuh8AAACIkesBuA5WuSWpffv2OvHEE3XPPfcoNTVVp512mlJTUxUIBGStVXl5uZYuXarrr79eRUVFGjNmDE3UXEDormXLly/Xn//8Z5166qk65phjNHXqVH344Ye7Pb5Zs2Y66aSTCN0AAADAXtldbddj65+071RW1+uWcDisu+++W+vWrdPll1+uv//97+rRo4eysrJUUlKi5cuXa+HChQoEAnrwwQfVpUsXQrcLCN217JhjjtHcuXOVkpKihIQEPfTQQyouLt7t8cFgUA0bNnRxhgAAAICf1b3w6xVjjFq2bKkXX3xRjz/+uF566SW9+eabKi4uViAQUFZWloYNG6arrrpKRxxxBF3LXULormVJSUl65513FAqFdN5556lRo0YqKirS2rVr1bp1ayUn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Wrm5uerUqZMmT54c7ZielJRULfCjdhG6AQAAAPiYB1uG1VHWWq1bt05XXXWV3n//fRUXF6tevXo68cQT9eCDDyo7O9vrKR6QCN0AAAAAfMpGt+9ylePBmDGIRCK644479N///lennnqqOnbsqC+++EKvvvqqWrRooT/84Q9xLVHHvkHoBgAAAOBfnoTf2LuXuyknJ0ezZ8/WNddco9tuu02hUEilpaW66qqr9M477+jmm29WWlqa19M84BC6fcpaq4KCAi1evFhLly5VaWmpunbtqsMPP1xJSUnRazQcx9Hq1av10UcfqbCwUL169dJhhx2mUIg/egAAAPic1f+2DXN13LoXuCUpLy9PBQUFGjp0qEKhUPQ68mHDhunNN99UUVERodsDrC3wKWutbr75Zl155ZX65JNP9PXXX2vChAm66qqrVFhYGD3mvffe04knnqi33npLX3zxhcaOHat//OMfikQiHp8BAAAA8OtYWVnHqVju7eLNOo77QT8GjuPIcZwqRThJSkxMlLWWDOARyp0+ZYzROeeco9tvv10NGjSQJM2bN08nn3yyRowYoREjRqigoEC33nqrhg0bpj//+c8KhUJ66aWXdP3112vYsGHq1KmTx2cBAAAA/AqVubcOBmCvOI6jL774QkVFRdH7Fi9erNLSUs2bNy+aHSSpVatWatOmDZ3Maxmh26eMMerVq1eVD0iXLl2UkZGhFStWSJLWr1+vFStW6A9/+IMSEhIkSQMHDpQxRrNmzVLHjh35gAEAAMDfrCNZlxfw1uGQX15erquuuqrKv/Mdx1F5eblGjx5d5f7f/va3uvvuu72Y5gGF0O1jP/3AWGu1bNkybd26VQcddJCkig+c4zjRwC0pem3H0qVLq71e5ZKTny47KS8vr8UzAAAAAH4lL/JvHQ3dTZo00UMPPRTzv+EPOeSQWp4RJEL3fsFaq9zcXN1+++3q3r17tJrduHFjZWVlae7cuerbt6+MMVqyZIlycnKUm5tb42v95S9/0VtvvRX9/datW2Xd/uYQAAAAiIlHW4bZutm9PDMzU+PHj/d6GvgZQvd+oLCwUL///e+1Zs0avfDCC8rIyJAkNWzYUJdddpkmTZokY4waNmyoJ598UgkJCUpOTq7xtY4//nh17949+vtPPvlEf3nydTdOAwAAAIjPru7lrleevQj68C1Ct8+VlJTo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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "!ls {dest_path}/raw_traces/*.csv | 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": 9, "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 94893 traces\n", "Read and accumulated 4 trace files\n", "$ Saving output table as /mnt/grey/DATA/users/zidoum/traceraptops/data/Boettiger/Replicate2/output/merged_traces.ecsv ...\n", "Finished execution\n" ] } ], "source": [ "!ls {dest_path}/raw_traces/*.csv | 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": 10, "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/data/Boettiger/Replicate2/output/merged_traces.ecsv\n", "Statistics for /mnt/grey/DATA/users/zidoum/traceraptops/data/Boettiger/Replicate2/output/merged_traces.ecsv:\n", "- Number of unique ROIs: 4\n", "- Number of unique chromatin traces: 1792\n", "- Number of unique barcodes: 70\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/`\n", "\n", "**Next:** [Tutorial — Check quality control of traces](tutorial_quality_control_traces.ipynb)" ] } ], "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 }