<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Python on Badran Elshenawy</title>
    <link>https://badran-elshenawy.netlify.app/categories/python/</link>
    <description>Recent content in Python on Badran Elshenawy</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Mon, 25 May 2026 09:00:00 +0000</lastBuildDate>
    <atom:link href="https://badran-elshenawy.netlify.app/categories/python/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>From Tidyverse to Scverse – Post 7: GlassBox UMAP — Making Dimensionality Reduction Interpretable</title>
      <link>https://badran-elshenawy.netlify.app/posts/tidyverse-to-scverse-glassbox-umap/</link>
      <pubDate>Mon, 25 May 2026 09:00:00 +0000</pubDate>
      <guid>https://badran-elshenawy.netlify.app/posts/tidyverse-to-scverse-glassbox-umap/</guid>
      <description>Your pipeline is fast and reproducible. But the UMAP step is still a black box. GlassBox UMAP changes that.</description>
    </item>
    <item>
      <title>Lockfiles – Post 2: uv.lock vs renv.lock in Practice</title>
      <link>https://badran-elshenawy.netlify.app/posts/uv-lock-vs-renv-lock-practical-comparison/</link>
      <pubDate>Sat, 23 May 2026 09:00:00 +0000</pubDate>
      <guid>https://badran-elshenawy.netlify.app/posts/uv-lock-vs-renv-lock-practical-comparison/</guid>
      <description>Both Python and R have lockfiles, but they do not work the same way. Here is the practical difference between &lt;code&gt;uv.lock&lt;/code&gt;, &lt;code&gt;renv.lock&lt;/code&gt;, and the newer R tools closing the gap.</description>
    </item>
    <item>
      <title>Lockfiles – Post 1: The Reproducibility Layer You&#39;re Probably Missing</title>
      <link>https://badran-elshenawy.netlify.app/posts/lockfiles-reproducibility-layer/</link>
      <pubDate>Mon, 18 May 2026 09:00:00 +0000</pubDate>
      <guid>https://badran-elshenawy.netlify.app/posts/lockfiles-reproducibility-layer/</guid>
      <description>Your code is on GitHub, your README is clean, and your pipeline worked perfectly six months ago. Here is why lockfiles are the missing piece.</description>
    </item>
    <item>
      <title>From Tidyverse to Scverse – Post 6: Scanpy Done Right — The Modern PBMC 3k Pipeline</title>
      <link>https://badran-elshenawy.netlify.app/posts/tidyverse-to-scverse-scanpy-done-right/</link>
      <pubDate>Thu, 07 May 2026 09:00:00 +0000</pubDate>
      <guid>https://badran-elshenawy.netlify.app/posts/tidyverse-to-scverse-scanpy-done-right/</guid>
      <description>Every tool from this series — Polars, uv, Marimo, and now Plotnine — converge in a real scRNA-seq pipeline. Clone it, run it, make it yours.</description>
    </item>
    <item>
      <title>From Tidyverse to Scverse – Post 5: marimo: The Notebook That&#39;s Actually a .py File</title>
      <link>https://badran-elshenawy.netlify.app/posts/tidyverse-to-scverse-marimo-notebooks/</link>
      <pubDate>Wed, 06 May 2026 09:00:00 +0000</pubDate>
      <guid>https://badran-elshenawy.netlify.app/posts/tidyverse-to-scverse-marimo-notebooks/</guid>
      <description>marimo stores notebooks as .py files — not JSON. Reactive, reproducible, git-friendly, and the most LLM-compatible notebook format available.</description>
    </item>
    <item>
      <title>From Tidyverse to Scverse – Post 4: qmd vs ipynb: Why Quarto Notebooks Are the Future</title>
      <link>https://badran-elshenawy.netlify.app/posts/tidyverse-to-scverse-qmd-vs-ipynb/</link>
      <pubDate>Sun, 03 May 2026 09:00:00 +0000</pubDate>
      <guid>https://badran-elshenawy.netlify.app/posts/tidyverse-to-scverse-qmd-vs-ipynb/</guid>
      <description>Jupyter notebooks are JSON with embedded images. Quarto notebooks are plain text. For version control, LLMs, and reproducibility, qmd wins.</description>
    </item>
    <item>
      <title>From Tidyverse to Scverse – Post 3: uv vs conda: Package Management That Finally Just Works</title>
      <link>https://badran-elshenawy.netlify.app/posts/tidyverse-to-scverse-uv-vs-conda/</link>
      <pubDate>Fri, 01 May 2026 09:00:00 +0000</pubDate>
      <guid>https://badran-elshenawy.netlify.app/posts/tidyverse-to-scverse-uv-vs-conda/</guid>
      <description>conda made you hate Python before you even started coding. uv fixes it: 10-100x faster installs, deterministic environments, and zero confusion.</description>
    </item>
    <item>
      <title>From Tidyverse to Scverse – Post 2: Polars vs Pandas for Tidyverse Users</title>
      <link>https://badran-elshenawy.netlify.app/posts/tidyverse-to-scverse-polars-vs-pandas/</link>
      <pubDate>Tue, 28 Apr 2026 09:00:00 +0000</pubDate>
      <guid>https://badran-elshenawy.netlify.app/posts/tidyverse-to-scverse-polars-vs-pandas/</guid>
      <description>Pandas felt wrong after dplyr? Polars fixes almost everything: method chaining, lazy evaluation, and syntax that reads like tidyverse pipes.</description>
    </item>
    <item>
      <title>From Tidyverse to Scverse – Post 1: Why I&#39;m Making the Switch to Python</title>
      <link>https://badran-elshenawy.netlify.app/posts/tidyverse-to-scverse-why-switching/</link>
      <pubDate>Fri, 24 Apr 2026 09:00:00 +0000</pubDate>
      <guid>https://badran-elshenawy.netlify.app/posts/tidyverse-to-scverse-why-switching/</guid>
      <description>After 33 posts in R and building my own package, I&amp;rsquo;m adding Python to the toolkit. Here&amp;rsquo;s why — and what&amp;rsquo;s coming next.</description>
    </item>
    <item>
      <title>Advanced scRNA-seq for Biologists – Post 4: RNA Velocity with scVelo</title>
      <link>https://badran-elshenawy.netlify.app/posts/advanced-scrnaseq-rna-velocity-scvelo/</link>
      <pubDate>Mon, 13 Apr 2026 09:00:00 +0000</pubDate>
      <guid>https://badran-elshenawy.netlify.app/posts/advanced-scrnaseq-rna-velocity-scvelo/</guid>
      <description>Pseudotime shows position. Velocity shows direction. Add arrows to your trajectory map with scVelo.</description>
    </item>
  </channel>
</rss>
