<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Welcome on Shubham Dutta, Ph.D. | Personal Website</title><link>https://shubhamdutta.com/</link><description>Recent content in Welcome on Shubham Dutta, Ph.D. | Personal Website</description><generator>Hugo</generator><language>en</language><lastBuildDate>Wed, 20 May 2026 09:00:00 +0800</lastBuildDate><atom:link href="https://shubhamdutta.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Splines in ggplot2</title><link>https://shubhamdutta.com/posts/splines_ggplot2/</link><pubDate>Wed, 20 May 2026 09:00:00 +0800</pubDate><guid>https://shubhamdutta.com/posts/splines_ggplot2/</guid><description>&lt;p&gt;When visualizing trend data, standard line plots can sometimes look a bit too rigid or jagged. If you want to create a smoother, more aesthetically pleasing curve through your data points, splines are a great solution.&lt;/p&gt;
&lt;p&gt;In this post, we&amp;rsquo;ll look at how to easily replace standard lines with X-splines in &lt;code&gt;ggplot2&lt;/code&gt; using the &lt;code&gt;geom_xspline()&lt;/code&gt; function from the &lt;code&gt;ggfun&lt;/code&gt; package.&lt;/p&gt;
&lt;h2 id="the-jagged-baseline"&gt;
 The Jagged Baseline
 &lt;a class="anchor" href="#the-jagged-baseline"&gt;&amp;sect;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;First, let&amp;rsquo;s look at the default behavior. We&amp;rsquo;ll set up a simple dataset with two groups and plot it using the standard &lt;code&gt;geom_line()&lt;/code&gt;. Notice how the lines connect point-to-point with sharp angles.&lt;/p&gt;</description></item><item><title>Shubham Dutta, Ph.D.</title><link>https://shubhamdutta.com/about/</link><pubDate>Sat, 10 Jan 2026 17:09:00 +0000</pubDate><guid>https://shubhamdutta.com/about/</guid><description>&lt;p&gt; &lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt;I am a Senior Research Scientist at Massbiologics Non-Human Primate Reagent Research (NHPRR) group. I lead antibody development in the neotropic NHP part of the group. My work here is to develop validated antibodies that are used in both &lt;em&gt;in vitro&lt;/em&gt; and &lt;em&gt;in vivo&lt;/em&gt; in preclinical NHP studies.&lt;/p&gt;
&lt;p&gt;I completed my Ph.D. in Biomedical Sciences from University of Massachusetts Medical School in 2018. Previously, I did my MS in Biophysics and Molecular Biology and BS in Microbiology from University of Calcutta.&lt;/p&gt;</description></item><item><title>Dose response in R</title><link>https://shubhamdutta.com/posts/elisa_fit/</link><pubDate>Sun, 14 Dec 2025 09:00:00 +0800</pubDate><guid>https://shubhamdutta.com/posts/elisa_fit/</guid><description>&lt;p&gt;In this post, I will walk through a complete workflow for dose-response analysis using 4-parameter logistic (4PL) modeling. I will cover importing raw microplate data, fitting 4PL curves to extract EC&lt;sub&gt;50&lt;/sub&gt; values with the &lt;code&gt;drc&lt;/code&gt; package, and finally, demonstrating how to use &lt;code&gt;ggplot2&lt;/code&gt; to visualize dose-response curves.&lt;/p&gt;
&lt;h2 id="setup"&gt;
 Setup
 &lt;a class="anchor" href="#setup"&gt;&amp;sect;&lt;/a&gt;
&lt;/h2&gt;
&lt;p&gt;Let&amp;rsquo;s begin by loading a few packages that we will need:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-r" data-lang="r"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;dplyr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ggplot2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;tidyplate&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;drc&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nf"&gt;library&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;ggtext&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;We import dose-response &lt;a href="quarto_docs/elisa-curve-fitting/data/elisa_example.xlsx"&gt;data&lt;/a&gt; using the &lt;code&gt;tidy_plate&lt;/code&gt; function from the &lt;code&gt;tidyplate&lt;/code&gt;&lt;sup id="fnref:1"&gt;&lt;a href="#fn:1" class="footnote-ref" role="doc-noteref"&gt;1&lt;/a&gt;&lt;/sup&gt; package.&lt;/p&gt;</description></item><item><title>Page Not Found</title><link>https://shubhamdutta.com/404/</link><pubDate>Sat, 13 Dec 2025 22:23:00 +0000</pubDate><guid>https://shubhamdutta.com/404/</guid><description>&lt;p&gt;That page couldn&amp;rsquo;t be found (404 error).&lt;/p&gt;</description></item><item><title>Subscribed</title><link>https://shubhamdutta.com/subscribed/</link><pubDate>Sat, 13 Dec 2025 22:06:00 +0000</pubDate><guid>https://shubhamdutta.com/subscribed/</guid><description>&lt;p&gt;Now, you are subscribed.&lt;/p&gt;</description></item></channel></rss>