%TODO: add some references (63, 62, 61, 59, 58) to final sentence
\documentclass[%
%preprint,
 reprint,
superscriptaddress,
%groupedaddress,
%unsortedaddress,
%runinaddress,
%frontmatterverbose,
showpacs,preprintnumbers,
%nofootinbib,
%nobibnotes,
%bibnotes,
 amsmath,amssymb,
 aps,
 prl,
%pra,
%prb,
%rmp,
%prstab,
%prstper,
floatfix,
]{revtex4-1}
\usepackage{natbib}
\usepackage{xcolor}
\usepackage{graphicx}% Include figure files
% \setlength{\intextsep}{0mm}
\usepackage{siunitx}
\usepackage{dcolumn}% Align table columns on decimal point
\usepackage{bm}% bold math
\usepackage{hyperref}% add hypertext capabilities
\usepackage[mathlines]{lineno}% Enable numbering of text and display math
\usepackage{mathtools}
\usepackage[caption=false]{subfig}
\usepackage[percent]{overpic}
% \linenumbers\relax % Commence numbering lines %WARNING: not work with subfig!
\usepackage[mathscr]{euscript}
\graphicspath{{figures/}{.}}

% Copied from mathrsfs.sty
\DeclareSymbolFont{rsfs}{U}{rsfs}{m}{n}
\DeclareSymbolFontAlphabet{\mathscrsfs}{rsfs}

%\usepackage[showframe,%Uncomment any one of the following lines to test
%%scale=0.7, marginratio={1:1, 2:3}, ignoreall,% default settings
%%text={7in,10in},centering,
%%margin=1.5in,
%%total={6.5in,8.75in}, top=1.2in, left=0.9in, includefoot,
%%height=10in,a5paper,hmargin={3cm,0.8in},
%]{geometry}
\DeclareSIUnit\basepair{bp}
%macros
\newcommand{\gwlc}[2][\Omega_0; L_1]{G_\text{\tiny TWLC}(#2|#1)}
\newcommand{\ghat}[2][\Omega_0; L_1]{\hat{G}_\text{\tiny TWLC}(#2|#1)}
\newcommand{\greens}[2][\Omega_0; L]{G(#2|#1)}
%TODO: change path integral D to be different from mathcal (D)
\newcommand{\pathd}[1]{\mathscrsfs{D}\left[#1\right]}
\newcommand{\energy}{\mathcal{E}}
\newcommand{\wigD}{\mathcal{D}}
\newcommand{\RR}{\left\langle{}R^2\right\rangle{}}
\newcommand{\meanli}{\left\langle{}L_i\right\rangle}

\begin{document}
%\preprint{APS/123-QED}
\title{Geometrical Heterogeneity Dominates
Thermal Fluctuations in {\color{red} Facilitating Chromatin Contacts}}%
\author{Bruno Beltran}%
\thanks{These authors contributed equally to this work.}%
\affiliation{%
    Biophysics Program, Stanford University, Stanford, California 94305, USA%
}%
\author{Deepti Kannan}%
\thanks{These authors contributed equally to this work.}%
\author{Quinn MacPherson}%
\affiliation{%
    Department of Physics, Stanford University, Stanford, California 94305, USA%
}%
\author{Andrew J. Spakowitz}%
\email{ajspakow@stanford.edu}%
% \homepage{http://web.stanford.edu/~ajspakow/}%
\affiliation{%
    Chemical Engineering Department, Stanford University, Stanford, California 94305, USA%
}%
\affiliation{%
    Department of Materials Science and Engineering, Stanford University Stanford, California 94305, USA%
}%
\affiliation{%
    Department of Applied Physics, Stanford University, Stanford, CA 94305%
}%
\date{\today}% It is always \today, today,
             %  but any date may be explicitly specified

\begin{abstract}
Within a living cell, the myriad of proteins that bind DNA introduce heterogeneously spaced kinks into an otherwise semiflexible DNA double helix.
To investigate the effects of heterogeneous nucleosome binding on chromatin organization, we extend the wormlike chain (WLC) model to include statistically spaced, rigid kinks.
On time scales where nucleosome positions are fixed, we find that the probability of chromatin loop formation can vary by up to six orders of magnitude between two sets of nucleosome positions drawn from the same distribution.
On longer time scales, we show that continuous re-randomization due to nucleosome turnover results in chromatin tracing out an effective WLC with a dramatically smaller Kuhn length than bare DNA.
Together, these observations {\color{red} demonstrate that nucleosome spacing
    acts as the primary source of the structural heterogeneity that dominates local and global chromatin organization.}
\end{abstract}

% PACS, the Physics and Astronomy Classification Scheme.
\pacs{05.20.--y, 05.40.Fb, 36.20.Ey, 87.10.Ca, 87.14.gk, 87.15--v, 87.16.Sr}
%Use showkeys class option if keyword display desired
%\keywords{chromatin \| nucleosome \| kinked TWLC}
\maketitle

% \section{\label{sec:intro}Introduction}

The spatial organization of chromatin---genomic DNA and its associated proteins---is critical
    to many biological processes, from controlling gene expression~\cite{hubner2013}
    to facilitating DNA damage repair~\cite{hauer2017,stadler2017}.
The fundamental unit of eukaryotic chromatin organization is the
    nucleosome, which consists of 147 basepairs of DNA wrapped around a histone-protein
    octamer~\cite{cutter2015a}.
Linker DNA connecting adjacent nucleosomes ranges from less than \SI{10}{\basepair} on
    average in fission yeast~\cite{givens2012} to more than \SI{80}{\basepair} in sea urchin sperm cells~\cite{spadafora1976}.

\textit{In vitro} images of chromatin have historically contained regular, ``30-nm fiber'' helical structures, motivating
models of chromatin with constant nucleosome spacing~\cite{%
    grigoryev2016,kepper2008, ben2001,
    koslover2010,langowski2007,muller2014,schiessel2001,scipioni2010,wedemann2002,bascom2018,koslover2013a}.
However, recent measurements indicate that \textit{in vivo}, interphase mammalian chromatin instead forms a disordered, ``beads-on-a-string" structure~\cite{ou2017, ricci2015, nozaki2017}.
Additionally, modern \textit{in vivo} nucleosome positioning data suggests that linkers are extremely heterogeneous.
The occupancy profiles of even the most well-positioned nucleosomes---such as those near
    transcription start sites---are well described by a model where nucleosomes bind
    uniformly along the DNA~\cite{kornberg1988, chevereau2009, chereji2011,
    beshnova2014, chou2007, kornberg1981, mavrich2008, mobius2010, mobius2013,
    teif2010, tesoro2016, muller2014%
    } and are merely excluded from certain areas~\cite{ozonov2013}.

Previous works addressing linker length heterogeneity are either simulation studies~\cite{collepardo-guevara2014, bascom2017a} or purely geometrical models~\cite{grigoryev1981, woodcock1993}.
These models can produce individual ``beads-on-a-string'' configurations qualitatively similar to those observed in bulk chromatin.
However, there remains a need for an analytical approach that can systematically characterize how and when linker length heterogeneity leads to structural disorder.

In this paper, we present a model combining thermal fluctuations in the DNA
linkers with the geometric effects of experimentally-relevant linker length heterogeneity.
We show that almost any linker length heterogeneity is sufficient to produce the disordered chromatin structures that are now believed to dominate nuclear architecture.
The intuition behind our structural claims extends to any polymer composed of
    aperiodic kinks, such as the dihedral ``kinks'' found at junctions of
    block copolymers.
More broadly, our results contribute to a large class of problems in which quenched
    disorder competes with thermal fluctuations to determine the structural
    properties of a system.

%\section{\label{sec:model}Model}

We model each DNA linker as a twistable wormlike chain (TWLC), and the nucleosomes as the
    points where these linker strands connect.
We label the orientation of the DNA entering the $i$th nucleosome by the matrix
    $\Omega^{(i)}_\text{entry}\in SO(3)$.
The exit orientation $\Omega^{(i)}_\text{exit}$ must then satisfy $\Omega^{(i)}_\text{exit}
    = \Omega^{(i)}_\text{entry} \cdot \Omega_\text{kink}$, where
    $\Omega_\text{kink}$ is the fixed "kink" rotation shown in
    Fig.~\ref{fig:nuc-geo}.

We represent a TWLC of length $L$ as a space curve $\vec{R}(s),\;s\in[0,L]$.
The chain's orientation at each point along this curve, $\Omega(s)$, is represented
    by an orthonormal triad $\vec{t}_{i}$, where $\vec{t}_{3} \coloneqq
    \partial_s \vec{R}(s)$.
We track the bend and twist of our polymer via the angular ``velocity'' vector
    $\vec{\omega}(s)$, which operates as $\partial_s \vec{t}_{i}(s) =
    \vec{\omega}(s) \times \vec{t}_{i}(s)$.
The Green's function
    \begin{equation}\label{eq:path}
        \gwlc[\Omega_0;L_1]{\vec{R}, \Omega} =\! \int_{\Omega(0)=\Omega_0}^{\Omega(s)=\Omega}
        \hspace{-0.3in}
        \pathd{\Omega(s)}
                e^{-\beta \mathcal{E}}\delta(\vec{R} - \!\int_{0}^{L_1} \!\!\vec{t_3} ds),
    \end{equation}
of the first linker represents the probability that a
    polymer of length $L_1$ that begins at the origin with initial
    orientation $\Omega_0$ ends at position $\vec{R}$ with end
    orientation $\Omega$.
For a TWLC with no kinks, the energy is quadratic in bending and twist deformations
    \begin{equation}\label{eq:energy}
        \beta\energy = \frac{l_p}{2}\int_{0}^{L_1} \!\ \! ds \,
        (\omega_1^2 + \omega_2 ^2) + \frac{l_t}{2}\int_{0}^{L_1} \! \! ds \,
        {\left(\omega_3 - \tau\right)}^2
    \end{equation}
The natural twist of DNA gives $\tau = 2 \pi {(\SI{10.5}{\basepair})}^{-1}$,
    and we set the persistence length $l_p = \SI{50}{\nano\metre}$ and twist
    persistence length {$l_t = \SI{100}{\nano\metre}$} to match
    measurements of DNA elasticity~\cite{hagerman1988,bustamante1994,bryant2003,marko1995}.

Reference~\cite{spakowitz2006} solves Equation~\ref{eq:path} analytically in Fourier space
    ($\vec{R} \rightarrow \vec{k}$) by computing the coefficients of the Wigner D-function expansion
\begin{gather}\label{eq:expansion}
    \ghat{\vec{k}, \Omega} = \sum_{\substack{ l;\hspace{0.1em}l_0 m_0 j_0}} \!\!
    g_{l_0 m_{0} j_{0}}^{l m_0 j_0}
%    g_{l\hspace{0.2em}l_0}^{m_0 j_0}
        \wigD_{l}^{m_0j_0}(\Omega)\wigD_{l_0}^{m_0 j_0 *}(\Omega_0).
\raisetag{0.5\baselineskip}
\end{gather}
To account for $\Omega_\text{kink}$, we rotate
    the final orientation of the linker DNA, ${\Omega = \Omega_\text{entry}}$, to
    $\Omega_\text{exit}$ using the formula
    \begin{equation}\label{eq:coeffs}
        \wigD_l^{m_0j_0}(\Omega \cdot \Omega_\text{kink}) = \sum_j \sqrt{\frac{8\pi}{2l+1}} \wigD_l^{m_0j}(\Omega_\text{kink}) \wigD_l^{jj_0}(\Omega).
    \end{equation}
The resulting Green's function combines the effects of a DNA linker and a nucleosome, but is still a Wigner D-function expansion with modified coefficients
%$B_{j\hspace{0.1em}l\hspace{0.1em}l_0}^{m_0 j_0}$
$B_{l_{0} m_{0} j_{0}}^{l m_0 j}$
(first computed in Ref.~\cite{zhou2003}).
We present an alternative derivation in Supplemental Material~\cite{supplemental}.

\begin{figure}[t]
    \centering
    \includegraphics[width=0.48\textwidth]{fig1.png}%
    \caption{(a) The structure of a
        human nucleosome~\cite{wakamori2015} with straight linkers extrapolated
        from the entry ($\Omega_\text{entry}$) and exit ($\Omega_\text{exit}$)
        orientations of the bound DNA\@.
    The amount of DNA wrapping the nucleosome dictates the spherical angle
        $\theta$.
    (b) Two adjacent nucleosomes at zero
        temperature.
    The DNA double helix has an intrinsic twist density
        ($\tau=2\pi/(\SI{10.5}{\basepair})$), and the binding orientation of the
        histone octamer must align with the major groove of the double helix.
    Therefore, as the linker length $L$ connecting two nucleosomes gets
        longer or shorter, the relative orientations of adjacent octamers
        change to create an angle $\phi = \tau L$.
    }\label{fig:nuc-geo}
\end{figure}

We extract $\Omega_\text{kink}$ as a function of the number of nucleotides bound
to the histone core from X-ray crystallography~\cite{white2001,richmond2003,cutter2015a} and
    %with H1: bednar, zhou; H4 acetlyation: wakamori; whole fiber: wakamori,
    %song2014b, eltsov2018, bilokapic.
    cryo-EM~\cite{bednar2017,bilokapic2018,eltsov2018,wakamori2015,zhou2015}
    measurements.
In what follows, we fix the wrapping level to that found in the crystal
    structure (\SI{147}{\basepair}).
Using different values for the wrapping level rescales our
    results (see Supplemental Material~\cite{supplemental}, Fig.~S3 and Fig.~S10).

To compose monomers of the nucleosome chain with prescribed linker lengths, we
    perform iterated convolution of the Green's functions for each
    nucleosome-linker pair.
In Fourier space, this corresponds to multiplying the matrices $B_{l_{0} m_{0} j_{0}}^{l m_0 j}(L_i)$.
%$B_{j\hspace{0.1em}l\hspace{0.1em}l_0}^{m_0 j_0}(L_i)$.

A key property of our model is that the relative orientation of adjacent
    nucleosomes is not only determined by $\Omega_\text{kink}$ and the thermal
    fluctuations of the linker strand, but also by
changing the length of the
    linker strand (as demonstrated in Fig.~\ref{fig:nuc-geo}b).
Our propagator $G$ takes this into account implicitly due to the inclusion of $\tau$
    in Eq.~\ref{eq:energy}.

\begin{figure}[t]
    \centering
    \includegraphics[width=0.48\textwidth]{fig2.png}%
    \caption{(a) Average end-to-end distances for
    homogeneous chromatin chains with \SI{36}{\basepair} and \SI{38}{\basepair} linkers, compared to
    bare DNA and the best-fit WLCs. Rigid rod ($L^1$), Gaussian chain ($L^{1/2}$), and cross-over regimes highlighted.
    (b)
    Kuhn lengths of homogeneous chromatin
    chains are 10.5bp periodic in linker length.
    Example zero-temperature chain
    configurations are shown, including two example Monte Carlo (fluctuating) structures for the \SI{41}{\basepair} case.
    Compact structures (36, \SI{47}{\basepair}) {\color{red}have smaller Kuhn lengths} than less compact structures (\SI{41}{\basepair}).}
    \label{fig:homo-chain}
\end{figure}

%\section{\label{sec:results}Results}

We begin by computing the end-to-end distance $\sqrt{\RR}$ of the
    chain using the formula $\lim_{k\to0} \frac{\partial^{n} B_{000}^{000}}{\partial k^{n}} = i^n \left\langle
    R^n\right\rangle$.
From this, we extract the Kuhn length, $b = \lim_{N\to\infty} \RR/\sum_{i=0}^N L_i$, {\color{red}where a smaller Kuhn length corresponds to a more compact chain. For a WLC, $b=2l_p$ and thus increases with the polymer's stiffness.}

In Fig.~\ref{fig:homo-chain}a, we plot $\sqrt{\RR}$ as a function of chain
    length for homogeneous chains of nucleosomes with \SI{36}{\basepair} and \SI{38}{\basepair}
    linkers. We compare these curves to the $\sqrt{\RR}$ of a TWLC with the same Kuhn length but without kinks.
At short length scales, the slope of $\sqrt{\RR}$ for all chains is one,
    corresponding to rigid-rod behavior.
At the persistence length, the bare WLC's slope smoothly transitions to $1/2$ (on a log-log scale), corresponding to random-walk behavior. In contrast, the homogeneous chain $\sqrt{\RR}$ jumps from that of bare DNA to that of the best-fit WLC, whose Kuhn length is dramatically smaller than twice the persistence length of bare DNA\@.

To build a geometric intuition for how the kinks create this modified Kuhn
    length, we compare the Kuhn lengths of homogeneous, fluctuating chains to their
    zero-temperature configurations, where the entire chain is composed of
    rigid-rod linkers.
Every homogeneous chain at zero temperature forms a helix of nucleosomes.
The rise per basepair of the helix is determined by the spherical angles
    $\theta$ and $\phi$ connecting adjacent linkers (see Fig.~\ref{fig:nuc-geo}).
The nucleosome structure fixes $\theta$, but $\phi$ depends linearly on the
    linker length, and is \SI{10.5}{\basepair}-periodic due to the DNA's helicity.
Select values of $\phi$ lead to more compact zero-temperature structures with a
    smaller rise per basepair.
As seen in Figure~\ref{fig:homo-chain}b, the fluctuating structures with
smaller rise per basepair have smaller Kuhn lengths.

The \SI{10.5}{\basepair} periodicity of $\phi$ as linker length changes leads
    to the periodicity in Figure~\ref{fig:homo-chain}b.
As $L_i\to\infty$, the Kuhn length approaches that of bare DNA only slowly (see Supplemental Material~\cite{supplemental}, Fig.~S4).

\begin{figure}[t]
    \centering
    \includegraphics[width=0.48\textwidth]{fig3.pdf}%
    \caption{Kuhn length of a heterogeneous chromatin chain with uniformly
    distributed linker lengths chosen from the range $\mu \pm \sigma$, where
    $\mu = \SI{41}{\basepair}$. Example zero-temperature chains composed of rigid
    rod linkers are shown for $\sigma = 0, 2, \SI{6}{\basepair}$. Kuhn length
    rapidly approaches that of the exponential chain (black line) in which linker lengths are exponentially distributed about the same $\mu$. }\label{fig:hetero-geom}
\end{figure}

We next consider heterogeneous chains where the linker lengths are drawn uniformly from a
    range $\mu \pm \sigma$.
In Fig.~\ref{fig:hetero-geom}, we see that as we increase $\sigma$, the
    zero-temperature configuration of the chain interpolates between a helix at
    $\sigma = 0$ and a random walk at larger $\sigma$.
As a result, the zero-temperature structure itself has a Kuhn length, which describes the compactness of the random walk.
As in the homogeneous case, the Kuhn length of the zero-temperature chain
    qualitatively predicts that of the fluctuating structure, as seen in
    Fig.~\ref{fig:hetero-geom}.
We find that even a single basepair of variance in nucleosome positions (see e.g.\ Supplemental Material~\cite{supplemental}, Fig.~S5) can create enough geometric stochasticity at zero-temperature to prevent the formation of regular fibers.

\begin{figure}[t]
    \centering
    \includegraphics[width=0.48\textwidth]{fig4.pdf}%
    \caption{Kuhn lengths of chromatin chains with exponentially
    distributed linkers as a function of the average linker length, which
    varies by cell type. Kuhn lengths for \textit{S. cerevisiae}
    ($\meanli=\SI{15}{\basepair}$), mice embryonic stem cells
    (\SI{45}{\basepair}), and human T cells
    (\SI{56}{\basepair}) are labeled.}\label{fig:exp-chain}
\end{figure}

In the simplest model of nucleosome binding, nucleosomes bind uniformly randomly along the DNA~\cite{beshnova2014}, resulting in nucleosome spacings that are exponentially distributed (hereafter ``the exponential chain").
While this picture ignores some details of \textit{in vivo} nucleosome formation, Fig.~\ref{fig:hetero-geom} shows how any linker length distribution with sufficiently large variance ($\sigma$) will exhibit behavior similar to the exponential chain.
Thus, the results that follow are likely robust to adding more detail to the nucleosome binding model.

When averaged over the distribution of possible nucleosome
    positions, the end-to-end distance of our exponential chain takes the form of a WLC with a rescaled Kuhn length (see Supplemental Material~\cite{supplemental},
    Fig.~S6).
This makes sense because at zero temperature our model differs from a freely rotating chain only in the correlation between linker length and $\phi$, and the freely rotating chain is known to converge to a wormlike chain under
    appropriate scaling~\cite{kilanowski2017}.
We extract the rescaled Kuhn length as a function of $\meanli$ in
    Fig.~\ref{fig:exp-chain}.

Unlike the homogeneous case, where changing $L_i$ selects between zero-temperature helices,
    increasing $\meanli$ in the heterogeneous case scales the zero-temperature random walk.
As a result, Fig.~\ref{fig:exp-chain} lacks
    the \SI{10.5}{\basepair} periodicity of the homogeneous chain.
Thus, for the purposes of coarse-graining, an approximate knowledge of $\meanli$ should be sufficient to capture chromatin's average behavior as a WLC.
A table of these Kuhn lengths is available in the Supplemental Material~\cite{supplemental}, Table~S1.

\begin{figure}[t]
    \centering
    \includegraphics[width=0.48\textwidth]{fig5.pdf}%
    \caption{Looping probabilities as a function of genomic separation for exponential chains. Each purple line designates an individual chain with linker lengths drawn from an exponential distribution with $\mu = \SI{56}{\basepair}$. The red shaded area corresponds to 95\% confidence intervals around the mean over the individual chains (red line). A wormlike chain
    (black dashed line) with the same Kuhn length as this average chain captures the
    looping probability for loops with at least three intervening nucleosomes. Three
    random individual chains are bolded.\label{fig:looping}}
\end{figure}

    To characterize the chain's {\color{red}structure} on shorter length scales, we calculate the
    probability of genomic contacts (\emph{i.e.} the looping probability).
By numerically inverting the Fourier transform in Eq.~\ref{eq:expansion}, we
    can analytically evaluate $P_\text{loop}=\greens[L]{\vec{R}=0}$, a
    modified $J$-factor with no orientational component.
In Fig.~\ref{fig:looping}, we plot this probability as a function of the loop size.

Strikingly, we observe that for a fixed genomic separation, different nucleosome
spacings can change the contact probability by up to six orders of magnitude.
The average looping probability, which is relevant at
    timescales where nucleosome positions can re-randomize, is captured well by a single
    WLC.
Due to this effective WLC's reduced Kuhn length, we predict that chromatin's propensity for forming
    sub-kilobase-scale loops should be one to four orders of magnitude larger than that of bare DNA.
The predicted looping propensity peaks at a length scale typical of promoter contacts \textit{in vivo}
    and consistent with Hi-C looping data~\cite{sanborn2015} (see Supplemental
    Material~\cite{supplemental}, Fig.~S8).
This result highlights how even without models of DNA more detailed than the
WLC---for example those including DNA
melting~\cite{shimada1984,liu2011a,wiggins2005}---the propensity of small DNA
loops can be enhanced by proteins that promote stochastically spaced kinks in the DNA.

Additionally, we find that the average looping probability is higher than that of most of the individual chains.
Thus, even an ``informationless'' chromatin remodeler that merely promotes random
    nucleosome repositioning will greatly facilitate sub-kilobase loop formation.
At longer length scales, the looping probabilities approach the characteristic $L^{-3/2}$
    Gaussian scaling.
However, individual chains retain memory of their kinks, as indicated by
    how the highlighted chains persist above or below the average.
Using a uniform linker length distribution
    leads to qualitatively similar results (see Supplemental Materials~\cite{supplemental}, Fig.~S9).

In conclusion, we provide rigorous justification for using
    an effective WLC to model \textit{in vivo} chromatin. Due to the lack of experimental consensus on the persistence length $l_p$ of chromatin~\cite{langowski2006a},  coarse-grained models of chromatin have historically used a range of values for $l_p$, sometimes even just using that of bare DNA~\cite{benedetti2017,macpherson2018,nuebler2018}.
We show that this choice leads to at least a
    two-fold overestimation of the polymer's {\color{red}persistence length}
    %a concomitant underestimation of the looping probabilities at long length scales,
    and a
    several orders-of-magnitude underestimation of looping at short length scales.
Some past models have extracted a parameter that describes the linear compaction of
    chromatin (bp per nm of fiber) from Hi-C looping probabilities
    (see e.g.~\cite{ghosh2018, rosa2008}).
Our model's parameter-free estimate of chromatin's {\color{red}looping propensity} provides a theoretical explanation for the effective
    Kuhn length predicted from these experimental measurements.

% \section{\label{sec:discussion}Discussion}

Our model excludes various important facets of chromatin's structure, such as
    interaction energies (sterics and stacking) and nucleosome ``breathing''.
Since nucleosome breathing simply corresponds to choosing a different distribution for the angle $\theta \in [0, \pi]$
    between adjacent nucleosomes, incorporating breathing leaves our results qualitatively unchanged (see Supplemental Material~\cite{supplemental}, Fig.~S10).
However, a more careful inclusion of breathing will likely require an explicit treatment of the
    effects of DNA sequence and linker histone on the nucleosome particle.

Our work highlights that the geometric effects of heterogeneous nucleosome binding
    dominate thermal fluctuations {\color{red}in driving chromatin contacts} \textit{in vivo}.
Our insights into chromatin's {\color{red}stiffness} will also inform future studies on the effects of
    loop extrusion factors~\cite{nuebler2018,brackley2017} and epigenetic
    states~\cite{macpherson2018,michieletto2016,brackley2017}
    on chromatin organization.\@

\begin{acknowledgements}
Financial support for this work is provided by the National Science Foundation
    (NSF), Physics of Living Systems Program (PHY-1707751). Q.M. and B.B.
    acknowledge funding support from the NSF Graduate Fellowship program
    (DGE-1656518). B.B. acknowledges support from NIH Training Grant
    T32GM008294.
\end{acknowledgements}

\bibliography{chromatin}

\end{document}


\section{Galois objects}
We will start to discuss the preliminaries. All rings will be assume to be in $\mrm{UCRng}$.

\subsection{Extension objects}
Given a category $\calc$


\section{Korean connection} The analysis of algorithms and data
structures studies the efficiency of algorithms and properties of data
structures according to some characteristic parameters. It has become
popular after the publication of the books [2] by D. Knuth; in the last
decades, it was developed in a large number of papers and books, among
which [1,3]. The aim is to give precise information on the efficiency of
any kind of algorithm looking for its worst, best and average behavior
and to precisely define the data structures used by it. By using the
results so obtained, it is then possible to choose the best among
different algorithms performing the same task or between different data
structures to store the data of interests. These goals can be reached by
using some formal tools belonging to the field of analytic
combinatorics, such as generating functions, Riordan arrays and the
symbolic method. The purpose of this proposal is twofold: on the one
hand we want to delve the study of these methods from a theoretical
point of view. On the other hand, we are interested to apply these
techniques in combinatorial and algorithmic contexts arising from areas
such as multidimensional lattice paths and queueing theory.

The partners of this proposal are expert in formal methods for the
analysis of algorithms and combinatorial data structures; these
methods belong to the field of analytic combinatorics. In this
community, the groups in Italy and in Korea are related by the common
interest in generating functions and Riordan arrays, for what concerns
the algebraic aspects, and in lattice paths, words, trees,
permutations, graphs, and so on, for what concerns the
combinatorics. Therefore, the aim of the present proposal is to deepen
the study of formal methods for the analysis of algorithms from an
algebraic and combinatorial point of view. In general, data structures
used in computer science can be considered as combinatorial objects
and the study of these structures is fundamental for the correct
analysis of the corresponding algorithms. For example, the random and
exhaustive generation of these structures can be used both to examine
the behaviour of the same structures and to evaluate the performance
of the algorithms that use them. Analytic combinatorics is a branch of
combinatorics that describes combinatorial classes using generating
functions and aims at predicting precisely the properties of large
structured combinatorial configurations. This approach starts from an
exact enumerative description of combinatorial structures by means of
generating functions; the next step consists in extracting their
coefficients in exact or asymptotic form and thus finding results for
the corresponding counting sequences. When a bivariate generating
function describes a sequence which depends on two indexes and has a
particular form, we call it a Riordan Array. Riordan arrays strongly
simplify computations about this kind of sequences in addition to
having an interesting algebraic structure and to provide a powerful
and simple method to obtain the solution of combinatorial sums and
lattice path counting problems. At international level, the partners
of this proposal are among the main experts

The general effort to precisely predict the performance of algorithms
has come to involve research in analytic combinatorics, the analysis
of random discrete structures, asymptotic analysis, exact and limiting
distributions, and other fields of inquiry in computer science,
probability theory, and enumerative combinatorics. In this project we
will study these aspects by using an approach based on (probability)
generating functions and the method of coefficients, Riordan arrays,
combinatorial sums and the symbolic method. The relevance of these
concepts in the context of the analysis of algorithms and data
structures has been illustrated in the books [1,2,3] listed below and
in many others books and papers. Generating functions are used in
combinatorics since 300 years and in the last two decades they have
been one of the mostly used devices in the analysis of algorithms. In
fact, they serve both as a combinatorial tool to facilitate Counting
and as an analytic tool to develop precise estimates for quantities of
interest. The method of coefficients represents a completion of the
previous concept while the symbolic method allows to develop
relationships between combinatorial structures and the associated
generating functions. Riordan arrays have been introduced in [4] with
the aim of defining a class of infinite lower triangular arrays with
properties analogous to those of the Pascal triangle. Few years later,
it was pointed out the importance of these matrices in the computation
of combinatorial sums. Since then, Riordan arrays have attracted, and
continue to attract, much attention in the literature. In particular,
the algebraic structure of these matrices, their relationship with the
computation of combinatorial sums and many combinatorial applications
have been studied over the years. Combinatorial identities have
received attention since very old times, and part of this literature
has a strong connection with the analysis of algorithms. In this
project, the role of the Italian group will focus on the theoretical
aspect related to the concept of Riordan arrays, with particular
emphasis on their characterization in terms of A-sequence and
A-matrix, and on their application to various combinatorial contexts,
such as lattice paths and words avoiding a specific pattern, as well
as on their use to analyse algorithms related to such combinatorial
structures. Another field of research will be the study of Riordan
arrays in modular arithmetic with the aim of detecting regularities in
the combinatorial structures which can be enumerated in terms of this
kind of matrices. All these studies will be accompained by simulation
with a system for symbolic computation. The role of the Korean group
will focus on the algebraic and combinatorial properties of the
multidimensional and multivariate Riordan arrays, with particular
emphasis on the analysis of algorithms and data structures in
analysing large-scale and high dimensional data. Riordan arrays can be
interpreted as another way to organize the data of Riordan bases using
matrices. Schauder bases provide a flexible way to represent power
series. A special type of Schauder bases, Riordan bases, is convenient
for computations. The idea carries over to the multivariate Riordan
arrays. The group will also study on their applications to queuing
theory together with high dimensional lattice path counting problems.


\section{Anomaly Detection using Particle Level EFPs}
\label{sec:anomaly}

\textcolor{yellow}{
    Write about the following here:
    \begin{itemize}
        \item How EFP preserves inner rotational symmetry therefore does not encode useless information.
        \item Sampling technique to escape computational complexity
        \item Example of how this adds to the resilliance against clustering errors.
    \end{itemize}
}

\textcolor{red}{Energy Flow Polynomials will be used as inputs to auto-encoders which are easier to construct} ~\cite{tuhin_autoencoder}.

\textcolor{red}{The proof of concept for this will be shown using a similar toy model as proposed in the abstract for the LDA paper which is also doing similar Beyond-Standard-Model searches (like the toy vector-scalar boson model)} ~\cite{lda_jets}.


\par
\subsection{Distributed Symbolic Factorization}
\label{subsection:DChvMtx:symbolic-factorization}
\par
The symbolic factorization takes very little time when compared to the
numeric factorization or a solve, but it can still be necessary to
compute it in a distributed manner.
For example, consider the case when the entries in the
original matrix do not fit on one processor.
\par
Here is what we assume that can be present on one processor.
\begin{enumerate}
\item
An {\tt ETree} front tree object
contains five vectors whose length is the number of fronts
(three tree vectors and two vectors to hold the number of internal
and external vertices in a front)
and one vector whose length is the number of vertices
(that maps vertices to fronts).
\item
An {\tt IV} object that holds the map from a front to its owner.
\item
A {\tt DInpMtx} object that holds only those entries in the
original matrix that will be mapped to fronts owned by the process.
\end{enumerate}
\par
A process does not need to know about every front in the tree,
only those that it owns, that it will update during the
factorization, and those that it will interact with during the
forward and backsolves.
We {\it could} design a front tree data structure that holds
only information about the fronts that a process needs to know about.
However, it is quite likely that the overhead to store the entire
front tree on each processor is acceptable.
\par
It is not so clear that we can afford to store the entire symbolic
factorization on the front tree, so we have designed a strategy
that each process computes and holds only the indices for the
fronts that it needs.
Actually, this is not true, for we store a bit more than the
bare minimum, as we now explain.
\par
If a process owns front $J$, then it will compute the factor
entries in this front, and will compute updates to all ancestor
fronts $K$ such that $\bnd{J} \cap K \ne \emptyset$.
Let the set of {\it active} fronts be the active fronts
unioned with those fronts that will be updated by an owned front.
% Let us call the set of {\it owned} fronts and those fronts that
% will be updated by an owned front the {\it set of active fronts}.
\par
It is not necessarily true that an owned front $J$ will update
{\it all} of its ancestors.
However, to determine what ancestors of owned fronts will be updated
by the owned fronts, we need to know the boundary indices for each
front, and that is what we are trying to determine by computing the
symbolic factorization.
So we settle for a superset that is (hopefully) not too much larger
than the active fronts.
To use a different term, we will easily find a set of
{\it supported fronts} that contains the active fronts.
These supported fronts consists of the owned fronts and all
ancestors of owned fronts, and we can determine this set just by
using the front tree and the owners map vector.
\par
To compute the factorization, a process will need to have the
indices for each of its active fronts, so at the end of the
symbolic factorization, each process must contain an {\tt IVL}
object that contains the front indices for all supported
processors.
\par
How do we compute the front indices for the supported fronts?
There are four steps.
\begin{enumerate}
\item
From the front tree we know the number of internal and number of
external indices in each front via the {\tt nodwghts[]} and {\tt
bndwghts[]} vectors.
So we initialize the {\tt IVL} object that will hold the supported
portions of the symbolic factorization.
\item
For each owned front, we load the internal vertices using the
{\tt vtxToFront[]} vector from the front tree.
\item
For each owned front $J$ we add some of the indices in $\bnd{J}$ by
examining the entries in the local {\tt DInpMtx} object.
\item
Now we need to cooperate with the other processes.
First we compute the number of messages that we expect to receive
from other processes.
There will be one message for each supported but unowned front,
and one message for each unsupported front whose parent is owned.
We keep track of the number of missing indices for each owned front.
When all indices for an owned front are present (after step 2
any root front has this property, and after step 3 all leaf fronts
have this property), we put the front into a list of {\it ready}
fronts.
\begin{tabbing}
XXX\=XXX\=XXX\=XXX\=XXX\=\kill
\WHILE\ the ready list is not empty or there are messages remaining \\
\> \WHILE\ the ready list is not empty \\
\>\> remove owned front $J$ from the ready list \\
\>\> store $J \cup \bnd{J}$ in the {\tt IVL} object \\
\>\> send $J \cup \bnd{J}$ to all processes that contain $J$ in
     their support sets \\
\>\> \IF\ the $J$ has a parent $K$ \THEN\ \\
\>\>\> \IF\ $K$ is owned and not complete \THEN\ \\
\>\>\>\> merge $\bnd{J}$ into $K \cup \bnd{K}$ \\
\>\>\>\> \IF\ $K \cup \bnd{K}$ is complete \THEN\ \\
\>\>\>\>\> put $K$ on the ready list \\
\>\>\>\> \END\ \IF \\
\>\>\> \ELSE\ \IF\ $J$ not supported by the owner of $K$ \THEN\ \\
\>\>\>\> send $J \cup \bnd{J}$ to the owner of $K$ \\
\>\>\> \END\ \IF \\
\>\> \END\ \IF\ \\
\> \END\ \WHILE\ \\
\> \WHILE\ there are messages waiting to be received \\
\>\> receive $J \cup \bnd{J}$ \\
\>\> \IF\ $J$ is supported \THEN\ \\
\>\>\> store $J \cup \bnd{J}$ in the {\tt IVL} object \\
\>\> \END\ \IF \\
\>\> \IF\ $J$ has a parent $K$, $K$ is owned and not complete \THEN\ \\
\>\>\> merge $\bnd{J}$ into $K \cup \bnd{K}$ \\
\>\>\> \IF\ $K \cup \bnd{K}$ is complete \THEN\ \\
\>\>\>\> put $K$ on the ready list \\
\>\>\> \END\ \IF \\
\>\> \END\ \IF \\
\> \END\ \WHILE \\
end \WHILE\
\end{tabbing}
\end{enumerate}


\subsubsection{\stid{3.12} Sub-project: SUNDIALS}
\label{subsubsect:SUNDIALS-hypre}

\paragraph{Overview}

This project is enhancing the SUNDIALS library of numerical software packages
for evolving differential systems in time using state-of-the-art time
integration technologies for use on exascale systems.

The SUNDIALS suite of packages \cite{SUNDIALSweb} provides efficient and
adaptive time integrators and nonlinear solvers.  The packages are written using
encapsulation of both data structures and solvers, thus allowing easy
incorporation into existing codes and flexibility to take advantage of new
solver technologies and packages.  SUNDIALS provides both multistep and
multistage methods designed to evolve stiff or nonstiff ordinary (ODE) and
differential algebraic (DAE) systems with efficient accuracy-driven time step
selection.  SUNDIALS also provides both Newton and fixed point (with optional
acceleration) nonlinear solvers and scaled Krylov methods with hooks for
user-supplied preconditioners.  SUNDIALS is released with data structures and
interfaces to solvers supporting several programming environments, and users can
employ these supplied structures and interfaces or provide their own data
structures or solvers under the integrators.

Through software infrastructure developments, this project is enabling the
efficient and robust SUNDIALS time integrator packages to easily interoperate
with applications evolving time dependent systems as well as with external
linear and nonlinear solver packages developed for exascale computing.  In
addition, this project is providing support for integrating several independent
ordinary differential equation systems simultaneously on GPUs as part of
multiphysics applications.  Lastly, this project is supporting the deployment
and use of SUNDIALS packages within ECP applications, both through incorporation
into the discretization-based Co-Design Centers, AMReX and CEED, and directly
into applications.

\paragraph{Key Challenges}

Current implementations of efficient time integrators face challenges on many
fronts.  First, applications need both efficient integrators and ones that can
interface easily with efficient linear algebra packages to solve subservient
linear systems.  In addition, integrators and their interfaces to both solver
libraries and applications must be frequently updated to keep up with rapid
advances in system architectures. Some ECP applications require the solution of
many small systems of ODEs in parallel on GPUs giving rise to the specific need
for a GPU-enabled ODE time integration capability that can be used in parallel
for many systems at once and be able to run on multiple GPU-based architectures
with differing programming models.  Lastly, ECP applications require assistance
incorporating new linear solvers underneath the integrators and in updating
their interfaces to optimally use integrators on new platforms.

\paragraph{Solution Strategy}

This year, the SUNDIALS team will be performing regular performance assessments
of the SUNDIALS integrators within key ECP applications that use SUNDIALS,
including PeleC, PeleLM, and Nyx.  These assessments will involve running the
application codes on available early access hardware and evaluating SUNDIALS
performance, both due to systems aspects as well as algorithmic choices.

In addition, the SUNDIALS team will be working with the Pele team to assess a
new interface to the Ginkgo library of sparse linear solvers that will allow the
PeleLM and PelePhysics codes access to highly efficient solvers for batched
systems that work well on AMD GPUs.  This interface will provide additional
options to those available in the MAGMA solver library.  In addition, the
SUNDIALS team will evaluate the application of scaling factors for Jacobian
matrices supplied to direct linear solvers like MAGMA and Ginkgo.  These factors
have long been applied in the SUNDIALS use of iterative linear solvers, and they
drastically improve the numerical conditioning of the linear systems.

Also this year, the SUNDIALS team will evaluate the inclusion of mixed precision
linear solvers underneath its integrators.  While higher precision has generally
been necessary in time integrator algorithms due to the need to meet accuracy
tolerances, the linear solvers are used solely to update the solutions to the
nonlinear systems.  Hence these linear solvers can be fairly imprecise.  The
team will explore using the newest mixed precision solvers as a way to help
speed solutions on GPU-based systems.

Lastly, the SUNDIALS team is providing general support to ECP applications in
interfacing SUNDIALS packages into their software and in the optimal use of
advanced time integration algorithms.  This support will include working with
the application teams to help them install SUNDIALS, adjust their build systems
to appropriately link with the SUNDIALS library, choose the best algorithms for
their applications, and efficiently use (through parameter adjustments) the time
integrator methods in SUNDIALS.

\paragraph{Recent Progress}

SUNDIALS had four releases this past year, including new features in direct
support of ECP application needs.  In particular, releases in late 2020
delivered support for vectors, matrices, and solvers that make use of the HIP
programming model for use on AMD GPUs.  In addition, releases in spring and
summer of 2021 delivered similar support for the SYCL programming model for use
on Intel GPUs.  These new features are being used by the Pele and Nyx code
teams, and performance assessments are ongoing.

To support better performance evaluation within ECP applications, in FY21, the
SUNDIALS team implemented a new high performance test suite and performance
assessment layer.  The test suite consists of several short problems that can
scale to high numbers of unknowns and make use of a variety of programming
models and hybrid distributed parallel/GPU systems.  The test suite allows for
easier evaluation of performance on new platforms, including expected exascale
systems.  Moreover, the SUNDIALS team added a performance assessment layer and
enabled use of the ECP ST Caliper package for instrumentation underneath that
layer.  This year, the SUNDIALS team will conduct regular testing of this new
suite on EAS systems as a way of regularly updating build and install options
and improving library performance.

In fall of 2020, the SUNDIALS team completed initial assessments of performance
on AMD GPU systems \cite{balosEnablingGPUAccelerated2021} showing 5x speedups
using MPI+HIP over MPI+serial on advection-reaction problems using some of the
SUNDIALS advanced integrators.  In spring of 2021, the SUNDIALS team completed a
comprehensive study of the relative performance of several time integrators
within the PeleC application.  This study gave rise to new recommendations for
parameter settings that led to a 44\% reduction in runtime.

\begin{figure}[htb]
  \centering
  \includegraphics[width=0.6\linewidth]{projects/2.3.3-MathLibs/2.3.3.12-SUNDIALS-hypre/PeleC_fig.pdf}
  \caption{\label{fig:sun-many-demo} Runtimes from a pre-mixed flame test case
  in PeleC using various time integrators from SUNDIALS for chemistry evolution.
  Demonstrated 44\% reduction in runtime through algorithm choice using 2 nodes
  and 12 GPUs on Summit. Note that more efficient algorithms required fewer
  calls to the expensive right-hand-side function.}
\end{figure}

\paragraph{Next Steps}

During the remainder of FY22, this project team will:
\begin{enumerate}
  \item Perform regular assessments of SUNDIALS performance both with the new
        high performance test suite and within key applications on Early Access
        Systems.
  \item Implement new features in support of more efficient linear solves.
  \item Expand SUNDIALS support for Intel GPUs.
  \item Continue to support ECP applications in their use of SUNDIALS.
\end{enumerate}


\section{Abstract syntax}
In this section, we explain the abstract syntax of the Pip programming
language.
Pip uses a type system to ensure semi-semantically correct instructions. Instructions, known as actions, can take well-formed expressions or actions as parameters. See Section 4.3 for specification of action parameters. This section defines abstract syntax in Backus-Naur Form, an interested reader can learn more about this notation in \Cite{Aho2007} and \Cite{Pierce2000}.

\subsection{Types}

\begin{align*}
\tau ::=~& \mathct{int}(n)        & \text{integer types} \\
         & \mathct{bits}(a, o, l) & \text{bitfields} \\
         & \mathct{port}          & \text{ports} \\
         & \mathct{table}         & \text{tables} \\
\end{align*}

\begin{enumerate}
\item $\mathct{int}(n)$ types are unsigned integers with a bit-width of size \textit{n}.
\item $\mathct{bits}$ types are bitfields within the storage space of the virtual machine. Bitfields are defined as having an \textit{address space} that denote which area of storage they reside: packet, header, key, meta, ingress\_port, and physical\_port. A bitfield must also specify its length in bits as well as its offset from bit 0 of the address space, again in bits.
\item $\mathct{port}$ types represent numbered ports. Some reserved ports are named, and occupy a static number. For example, the $\mathct{drop}$ port is assigned to 0.
\item $\mathct{table}$ types are data structures that contain all other Pip constructs. A table has a \textit{key register} to be matched against. The programmer defines the value of the key register, which is computed at runtime. Tables have \textit{rules} which, if equal to the key register, will execute a block of actions.
\end{enumerate}

\subsection{Expressions}
\begin{align*}
  \text{expressions} ::=~& \mathct{int}(w) \ n    & \text{where} \ w \ \text{and} \ n \ \text{are integer literals.}\\
  & | \ \mathct{port} \ n   & \text{where } n \text{ is an integer literal.}\\
  & | \ \mathct{bits} \ as \ pos \ len &\text{where } pos \text{ and } len \text{ are integer literals.} \\ & &\text{and } as \text{ is an address space.}\\
  & | \ \mathct{miss}\\
  & | \ \mathct{ref} \ id    &\text{where } id \text{ is the name of a table.}
\end{align*}
\subsection{Actions}

Actions are instructions that either have no parameters, an expression as a parameter, or another action as a parameter.
\begin{align*}
actions::=~&  \mathct{write} \ action     & action \text{ must be an } \mathct{action}.\\
  & | \ \mathct{clear}\\
  & | \ \mathct{drop}\\
  & | \ \mathct{match}\\
  & | \ \mathct{goto} \ table             & \text{table must be of type } \mathct{table}.\\
  & | \ \mathct{output} \ port            & \text{port must be of type } \mathct{port}.\\
  & | \ \mathct{advance} \ n              & \text{n must be an integer literal.}\\
  & | \ \mathct{copy} \ src \ dst \ n       & src \text{ and } dst \text{ must be of type } \mathct{bits} \\
                                         && \text{n must be of type } \mathct{int}(w).\\
  & | \ \mathct{set} \ field \ value        & field \text{ must be of type } \mathct{bits} \text{ and }\\
                                         && value \text{ must be of type } \mathct{int}(w).
\end{align*}


\section{It Turns Out That Size Does Matter, and How You Are Using It Is Wrong}
\label{howuse}

The core of the \pkg{memuse} package is the \code{memuse} class object.  You can construct a \code{memuse} object via the \code{memuse()} or \code{mu()} constructor.  The constructor has several options.  You can pass the size of the object, the unit, the unit prefix (IEC or SI), and the unit names (short or long).  The size is the number of bytes, scaled by some factor depending on the unit.  The unit is an abstract rescaling unit, like percent, used for the sake of simple comprehension at larger scales; for example, kilobyte and kibibyte are the typical storage units to represent ``roughly a thousand'' bytes (more on this later).  Finally, the unit names are for printing, i.e., controlling whether the long version (e.g., kilobyte) or short version (kB) is used.
\begin{table}[ht]
  \centering
  \begin{tabular}{|lll|lll|}\hline
    \multicolumn{3}{|c}{IEC Prefix} & \multicolumn{3}{|c|}{SI Prefix} \\\hline
    Short & Long & Factor & Short & Long & Factor\\\hline
    b & bit & $\frac{1}{8}$ & b & bit & $\frac{1}{8}$\\
    B & byte & 1 & B & byte & 1\\
    KiB & kibibyte & $2^{10}$ & kB & kilobyte & $10^3$\\
    MiB & mebibyte & $2^{20}$ & MB & megabyte & $10^6$\\
    GiB & gibibyte & $2^{30}$ & GB & gigabyte & $10^9$\\
    TiB & tebibyte & $2^{40}$ & TB & terabyte & $10^{12}$\\
    PiB & pebibyte & $2^{50}$ & PB & petabyte & $10^{15}$\\
    EiB & exbibyte & $2^{60}$ & EB & exabyte & $10^{18}$\\
    ZiB & zebibyte & $2^{70}$ & ZB & zettabyte & $10^{21}$\\
    YiB & yobibyte & $2^{80}$ & YB & yottabyte & $10^{24}$\\\hline
  \end{tabular}
  \caption{Units, Unit Prefices, and Scaling Factors for Byte Storage}
  \label{tab:units}
\end{table}
Table~\ref{tab:units} gives a complete list of the different units for the different prefices.

So for example, 1 kilobyte (kB) is equal to 1000 bytes, but 1 kibibyte (KiB) is equal to 1024 bytes.  And so 1 kB is roughly $0.977$ KiB.

There is a great deal of ambiguity in the public regarding the meaning of these terms.  People, even those who know the difference (myself included) almost overwhelmingly use, for example, gigabyte when they mean gibibyte.  The reason for this is obvious; ``gibibyte'' sounds fucking stupid.  This actually gets all the more confusing because in addition to many conflating --- intentionally or otherwise --- 1 megabyte (MB) with 1 mebibyte (MiB), internet service providers advertise their bandwidth speeds in terms of \emph{bits}\footnote{1 byte is 8 bits} instead of bytes \emph{using the same goddamn symbols}.  So for example, when an ISP reports ``15 MB'' bandwidth speeds, they are actually offering 5 megabit, or  1.875 megabytes (MB), which is 1.788 mebibytes (MiB).  They do this because they're huge assholes.

Another example of this confusion is when people talk about \twiddle{big data}.  Often I/O people will use the term ``terabytes'' or ``exabytes'' and mean it, even though many file-on-disk-size reporting utilities (such as \code{du}) use the IEC prefix.  Rescaling reported SI units into IEC units --- the ones people are generally more familiar with --- is simple with the \code{memuse} package:
\begin{lstlisting}[language=rr]
swap.prefix(mu(size=1, unit="tb", unit.prefix="SI"))
## 0.909 TiB
swap.prefix(mu(size=1, unit="pb", unit.prefix="SI"))
## 0.888 PiB
\end{lstlisting}

These sizes represent an impressive amount of data, but this ambiguity in naming conventions allows people to lie a bit.  For all of these reasons, since the package is meant to be useful for understanding R object size, the default behavior is somewhat complicated, but can be summarized as trying to provide what most people meant in the first place.  We achieve this by offering several default string objects which the user can easily control.  These units are \code{.UNIT}, \code{.PREFIX}, and \code{.NAMES}.

In the sections to follow, we will further examine the above \pkg{memuse} functions, as well as the other utilities the package offers.


\documentclass[prd,12pt,superscriptaddress,tightenlines,nofootinbib]{revtex4}
\usepackage{amsmath,amssymb}
\usepackage{bm}
\usepackage{comment}
\usepackage{graphicx}
\usepackage{color}
\usepackage{cancel}
\usepackage{tikz}
\usetikzlibrary{shapes.misc}
\newcommand*\dstrike[2][thin]{\tikz[baseline] \node [strike out,draw,anchor=text,inner sep=0pt,text=black,#1]{#2};}
\usepackage{tabularx}
\usepackage{tabulary}

% better tables
%\usepackage{booktabs}
%\newcommand{\ra}[1]{\renewcommand{\arraystretch}{#1}}
%\setlength\heavyrulewidth{0.08em}
%

\DeclareMathOperator{\st}{str}
\DeclareMathOperator{\tr}{tr}
\DeclareMathOperator{\Erfc}{Erfc}
\DeclareMathOperator{\Erf}{Erf}
\DeclareMathOperator{\Tr}{Tr}

\def\gs{\bar{g}_0}
\def\gv{\bar{g}_1}
\def\cp{\textrm{\dstrike{CP}}}
\def\mc#1{{\mathcal #1}}

\def\a{{\alpha}}
\def\b{{\beta}}
\def\d{{\delta}}
\def\D{{\Delta}}
\def\t{\tau}
\def\e{{\varepsilon}}
\def\g{{\gamma}}
\def\G{{\Gamma}}
\def\k{{\kappa}}
\def\l{{\lambda}}
\def\L{{\Lambda}}
\def\m{{\mu}}
\def\n{{\nu}}
\def\o{{\omega}}
\def\O{{\Omega}}
\def\S{{\Sigma}}
\def\s{{\sigma}}
\def\th{{\theta}}

\def\ip{{i^\prime}}
\def\jp{{j^\prime}}
\def\kp{{k^\prime}}
\def\ap{{\alpha^\prime}}
\def\bp{{\beta^\prime}}
\def\gp{{\gamma^\prime}}
\def\rp{{\rho^\prime}}
\def\sp{{\sigma^\prime}}

\def\ol#1{{\overline{#1}}}

\def\Dslash{D\hskip-0.65em /}
\def\Dtslash{\tilde{D} \hskip-0.65em /}

\def\CPT{{$\chi$PT}}
\def\QCPT{{Q$\chi$PT}}
\def\PQCPT{{PQ$\chi$PT}}
\def\tr{\text{tr}}
\def\str{\text{str}}
\def\diag{\text{diag}}
\def\order{{\mathcal O}}

\def\cC{{\mathcal C}}
\def\cB{{\mathcal B}}
\def\cT{{\mathcal T}}
\def\cQ{{\mathcal Q}}
\def\cL{{\mathcal L}}
\def\cO{{\mathcal O}}
\def\cA{{\mathcal A}}
\def\cQ{{\mathcal Q}}
\def\cR{{\mathcal R}}
\def\cH{{\mathcal H}}
\def\cW{{\mathcal W}}
\def\cE{{\mathcal E}}
\def\cM{{\mathcal M}}
\def\cD{{\mathcal D}}
\def\cN{{\mathcal N}}
\def\cP{{\mathcal P}}
\def\cK{{\mathcal K}}
\def\Qt{{\tilde{Q}}}
\def\Dt{{\tilde{D}}}
\def\St{{\tilde{\Sigma}}}
\def\cBt{{\tilde{\mathcal{B}}}}
\def\cDt{{\tilde{\mathcal{D}}}}
\def\cTt{{\tilde{\mathcal{T}}}}
\def\cMt{{\tilde{\mathcal{M}}}}
\def\At{{\tilde{A}}}
\def\cNt{{\tilde{\mathcal{N}}}}
\def\cOt{{\tilde{\mathcal{O}}}}
\def\cPt{{\tilde{\mathcal{P}}}}
\def\cI{{\mathcal{I}}}
\def\cJ{{\mathcal{J}}}

\def\zero{{7\%}}
\def\disk{{40}}
\def\tape{{180}}
\def\store{{1.3M}}
\def\request{{37M}}
\def\cpu{{12M}}
\def\gpu{{2.4M}}

\def\eqref#1{{(\ref{#1})}}
\begin{document}

\title{Contraction code for \texttt{lalibe}}

\author{Andr\'{e}~Walker-Loud, David Brantley}

\maketitle

\section{Two-point contraction code}

Define the proton creation and annihilation operators as
\begin{align}
\bar{N}_{\gp} &= \epsilon_{\ip\jp\kp} P_{\gp\rp}\ \bar{u}^\ip_\rp (\bar{u}^{\jp}_{\ap} \G^{\dagger,src}_{\ap\bp} \bar{d}^\kp_\bp )
\\
N_{\g} &= \epsilon_{ijk} P_{\g\rho}\ u^i_\rho (u^j_\a \G^{snk}_{\a\b} d^k_\b )
\end{align}
In the Dirac basis, using only the upper and spin components of the quark spinor, the $\G$ matrices at the source and sink are given by
\begin{align}
\G_{u} = \frac{1}{\sqrt{2}}\begin{pmatrix}
	0& 1& 0& 0\\
	-1& 0& 0& 0\\
	0& 0& 0& 0\\
	0& 0& 0& 0
	\end{pmatrix} && \G_{v} =  \frac{1}{\sqrt{2}}\begin{pmatrix}
	0& 0& 0& 0\\
	0& 0& 0& 0\\
	0& 0& 0& 1\\
	0& 0& -1& 0
	\end{pmatrix}
\end{align}
This matrix satisfies $\G^\dagger = -\G$.

The proton two-point function is
\begin{align}
C_{\g\gp} &= \phantom{-}\epsilon_{ijk} \epsilon_{\ip\jp\kp} P_{\g\rho} P_{\gp\rp} \langle 0|
	u^i_\rho (u^j_\a \G^{snk}_{\a\b} d^k_\b ) \ \bar{u}^\ip_\rp (\bar{u}^{\jp}_{\ap} \G^{\dagger,src}_{\ap\bp} \bar{d}^\kp_\bp )
	|0\rangle
\nonumber\\ &=
	-\epsilon_{ijk} \epsilon_{\ip\jp\kp} P_{\g\rho} P_{\gp\rp} \G^{snk}_{\a\b} \G^{src}_{\ap\bp}
	\left[ -U^{i\ip}_{\rho\rp} U^{j\jp}_{\a\ap} D^{k\kp}_{\b\bp}
		+ U^{j\ip}_{\a\rp} U^{i\jp}_{\rho\ap} D^{k\kp}_{\b\bp}
	\right]
\nonumber\\ &=
	\phantom{-}\epsilon_{ijk} \epsilon_{\ip\jp\kp} P_{\g\rho} P_{\gp\rp} \G^{snk}_{\a\b} \G^{src}_{\ap\bp}
	\left[
		U^{i\ip}_{\rho\rp} U^{j\jp}_{\a\ap} D^{k\kp}_{\b\bp}
		+U^{i\ip}_{\a\rp} U^{j\jp}_{\rho\ap} D^{k\kp}_{\b\bp}
	\right]
\nonumber\\ &=
	\phantom{-}\epsilon_{ijk} \epsilon_{\ip\jp\kp}  P_{\gp\rp}  \G^{src}_{\ap\bp}
	\left[
		P_{\g\rho} \G^{snk}_{\a\b} + P_{\g\a} \G^{snk}_{\rho\b}
	\right]
	U^{i\ip}_{\rho\rp} U^{j\jp}_{\a\ap} D^{k\kp}_{\b\bp} \, .
\end{align}
The spin projectors to project onto the spin up and down proton are simply given by $P^{u+}_{\g\rho} = \delta_{0,\rho}$, $P^{u-}_{\g\rho} = \delta_{1,\rho}$ and $P^{v+}_{\g\rho} = \delta_{2,\rho}$, $P^{v-}_{\g\rho} = \delta_{3,\rho}$ respectively.

\section{Three-point contractions}

\subsection{FH three-point}
\bigskip
Consider a FH propagator which causes a $d\rightarrow u$ transition.
The two-point correlation function for this process is given by
\begin{align}
C^\l_{\g\gp} &= \phantom{-}\int d^4 z \epsilon_{ijk} \epsilon_{\ip\jp\kp} P_{\g\rho} P_{\gp\rp}
	\langle 0|
		u^i_\rho (u^j_\a \G^{snk}_{\a\b} d^k_\b ) \
		\bar{u}^l_\s(z) \G^\l_{\s\sp} d^l_{\sp}(z)
		\bar{d}^\ip_\rp (\bar{u}^{\jp}_{\ap} \G^{\dagger,src}_{\ap\bp} \bar{d}^\kp_\bp )
	|0\rangle
\nonumber\\&=
	-\epsilon_{ijk} \epsilon_{\ip\jp\kp} P_{\g\rho} P_{\gp\rp}
	\G^{snk}_{\a\b} \G^{src}_{\ap\bp}
	\Big[
		U^{j\jp}_{\a\ap} D^{k\ip}_{\b\rp} F^{i\kp}_{\rho\bp}
		-U^{j\jp}_{\a\ap} D^{k\kp}_{\b\bp} F^{i\ip}_{\rho\rp}
\nonumber\\&\qquad\qquad\qquad\qquad\qquad\qquad\qquad
		+U^{i\jp}_{\rho\ap} D^{k\kp}_{\b\bp} F^{j\ip}_{\a\rp}
		-U^{i\jp}_{\rho\ap} D^{k\ip}_{\b\rp} F^{j\kp}_{\a\bp}
	\Big]
\nonumber\\&=
	\epsilon_{ijk} \epsilon_{\ip\jp\kp} P_{\g\rho} P_{\gp\rp}
	\G^{snk}_{\a\b} \G^{src}_{\ap\bp}
	\Big[
		U^{i\ip}_{\a\ap} D^{j\jp}_{\b\bp} F^{k\kp}_{\rho\rp}
		+U^{i\ip}_{\rho\ap} D^{j\jp}_{\b\bp} F^{k\kp}_{\a\rp}
		+U^{i\ip}_{\a\ap} D^{j\jp}_{\b\rp} F^{k\kp}_{\rho\bp}
		+U^{i\ip}_{\rho\ap} D^{j\jp}_{\b\rp} F^{k\kp}_{\a\bp}
	\Big]
\nonumber\\&=
	\epsilon_{ijk} \epsilon_{\ip\jp\kp}
	\Big[
		P_{\g\rho} \G^{snk}_{\a\b}
		+P_{\g\a} \G^{snk}_{\rho\b}
	\Big] \Big[
		P_{\gp\rp} \G^{src}_{\ap\bp} + P_{\gp\bp} \G^{src}_{\ap\rp}
	\Big]
	U^{i\ip}_{\a\ap} D^{j\jp}_{\b\bp} F^{k\kp}_{\rho\rp}
\end{align}
where
\begin{equation}
F^{i\ip}_{\rho\rp}(y,x) = \int d^4z U^{ij}_{\rho\s}(y,z)\G_{\s\sp} D^{j\ip}_{\sp\rp}(z,x)\, .
\end{equation}

\subsection{Sequential source baryon three-point}

Consider the three-point correlation function
\begin{equation}
C^\l (t_z) = \sum_{\g = \gp}C^\l_{\g\gp} (t_z) = \phantom{-} \sum_{\g = \gp} \int d^3 z \int d^3 y  e^{- i \vec{p} \cdot \vec{y}} e^{i \vec{q} \cdot \vec{z}} \langle 0| N_{\g} (y) \mathcal{J}^{\l}(z) \bar{N}_{\gp}(x) |0\rangle \Big|_{t_y},
\end{equation}
for some bilinear current density $\mathcal{J}^{\l}(z)$ and \emph{fixed} sink time $t_y$ \footnote{This expression is general enough to account for polarized and unpolarized states, which simply require judicious choice of $P^{src}$ and $P^{snk}$. }. For the connected only component of the $d \rightarrow d$ transition, the correlation function becomes
\begin{align}
C^\l (t_z) &= \phantom{-} \int d^3 z \int d^3 y  e^{- i \vec{p} \cdot \vec{y}} e^{i \vec{q} \cdot \vec{z}} \epsilon_{ijk} \epsilon_{\ip\jp\kp} P_{\g\rho} P_{\g\rp}
	\langle 0|
		u^i_\rho (u^j_\a \G^{snk}_{\a\b} d^k_\b ) \
		\bar{d}^l_\s(z) \G^\l_{\s\sp} d^l_{\sp}(z)
		\bar{u}^\ip_\rp (\bar{u}^{\jp}_{\ap} \G^{\dagger,src}_{\ap\bp} \bar{d}^\kp_\bp )
	|0\rangle
\nonumber\\&=
\int d^3 z \int d^3 y  e^{- i \vec{p} \cdot \vec{y}} e^{i \vec{q} \cdot \vec{z}} \epsilon_{ijk} \epsilon_{\ip\jp\kp} P_{\g\rho} P_{\g\rp}  \G^{snk}_{\a\b}  \G^{\dagger,src}_{\ap\bp}
     D^{kl}_{\b\s}(y,z)\G^\l_{\s\sp} D^{l \kp}_{\sp\bp}(z,x)
     \Big[
     U^{j\ip}_{\a\rp}(y,x)U^{i\jp}_{\rho\ap}(y,x)
\nonumber\\&\qquad\qquad\qquad\qquad\qquad\qquad\qquad
     - U^{j\jp}_{\a\ap}(y,x)U^{i\ip}_{\rho\rp}(y,x)
     \Big]\Big|_{t_y}.
\end{align}
Calculation of the correlation function is aided by constructing a so called \emph{sequential source}, which for the above correlation function takes the form
\begin{align}
\chi^{ k\kp}_{\b\bp} &= \phantom{-}  e^{- i \vec{p} \cdot \vec{y}}  \epsilon_{ijk} \epsilon_{\ip\jp\kp} P_{\g\rho} P_{\g\rp} \G^{snk}_{\a\b} \G^{\dagger,src}_{\ap\bp}
  \Big[
     U^{j\ip}_{\a\rp}(y,x)U^{i\jp}_{\rho\ap}(y,x)
     - U^{j\jp}_{\a\ap}(y,x)U^{i\ip}_{\rho\rp}(y,x)
     \Big]\Big|_{t_y}.
\end{align}
The \emph{sequential propagator} $\Sigma(z,x)$ is then found by solving
\begin{equation}
D (y,z) \Sigma (z,x) = \chi (y,x),
\end{equation}
which may then be used to construct our three point function\footnote{Implicit in this construction is the requirement that sequential source be $\gamma_5$-hermitian. }
\begin{equation}
C^\l (t_z) = \int d^3 z  e^{i \vec{q} \cdot \vec{z}} \tr\Big[ \left( \gamma_{5} \Sigma(z,x) \gamma_{5}\right)^{\dagger} \G^\l D(z,x) \Big].
\end{equation}
The construction in terms of the sequential propagator allows arbitrary matrix elements to be computed without additional inversions. Since the properties of the source and sink are fixed, this technique requires an additional inversion for each source and sink spin combination, each source-sink separation time, each interpolator type used, and each unique flavor structure of the bilinear current.

%
%\bigskip
%
%Now for the FH correlator.  To make the notation simpler, let us introduce the FH propagator with a $u$-quark flavor:
%\begin{equation}
%U_{\mc{O}, \rho\ap}^{k\ip} \equiv u^k_\rho\, \bar{u}^a_\mu \G^{\mc{O}}_{\mu\nu} u^a_\nu\, \bar{u}^\ip_\ap
%\end{equation}
%
%The FH correlation function is then
%\begin{align}
%C_\mc{O} &= -\epsilon_{ijk} \epsilon_{\ip\jp\kp} P_{\g\rho} P_{\gp\rp} \langle 0|
%	(u^i_\a \G^{snk}_{\a\b} d^j_\b ) u^k_\rho\,
%	\bar{u}^a_\mu \G^{\mc{O}}_{\mu\nu} u^a_\nu\,
%	(\bar{u}^{\ip}_{\ap} \G^{src}_{\ap\bp} \bar{d}^\jp_\bp ) \bar{u}^\kp_\rp
%	|0\rangle
%\nonumber\\&=
%	-\epsilon_{ijk} \epsilon_{\ip\jp\kp} P_{\g\rho} P_{\gp\rp} \G^{snk}_{\a\b} \G^{src}_{\ap\bp}
%	\bigg[
%	U^{i\kp}_{\a\rp} D^{j\jp}_{\b\bp} U^{k\ip}_{\mc{O},\rho\ap}
%	+U^{i\kp}_{\mc{O},\a\rp} D^{j\jp}_{\b\bp} U^{k\ip}_{\rho\ap}
%\nonumber\\&\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad
%	-U^{i\ip}_{\mc{O},\a\ap} D^{j\jp}_{\b\bp} U^{k\kp}_{\rho\rp}
%	-U^{i\ip}_{\a\ap} D^{j\jp}_{\b\bp} U^{k\kp}_{\mc{O},\rho\rp}
%	\bigg]
%\nonumber\\&=
%	\epsilon_{ijk} \epsilon_{\ip\jp\kp} P_{\g\rho} P_{\gp\rp} \G^{snk}_{\a\b} \G^{src}_{\ap\bp}
%	\bigg[
%	U^{i\ip}_{\a\rp} D^{j\jp}_{\b\bp} U^{k\kp}_{\mc{O},\rho\ap}
%	+U^{i\ip}_{\mc{O},\a\rp} D^{j\jp}_{\b\bp} U^{k\kp}_{\rho\ap}
%\nonumber\\&\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad\qquad
%	+U^{i\ip}_{\mc{O},\a\ap} D^{j\jp}_{\b\bp} U^{k\kp}_{\rho\rp}
%	+U^{i\ip}_{\a\ap} D^{j\jp}_{\b\bp} U^{k\kp}_{\mc{O},\rho\rp}
%	\bigg]
%\end{align}
%Comparing with Eq.~\eqref{eq:C2pt_precontract} above, we see this is achieved with a simple replacement of each U propagator, one at a time, with the FH propagator $U_\mc{O}$.
%We then arrive at the final U-FH correlation function
%\begin{align}
%C_\mc{O} &= P_{\g\rho} P_{\gp\rp} \bigg[
%	qC_{13}(\G^{snk} D,  U_\mc{O} \G^{src})^{\kp k}_{\bp\bp} U^{k\kp}_{\rho\rp}
%	+qC_{13}(\G^{snk} D,  U \G^{src})^{\kp k}_{\bp\bp} U^{k\kp}_{\mc{O},\rho\rp}
%\nonumber\\&\qquad\qquad\quad
%	+(U_\mc{O}\G^{src})^{k\kp}_{\rho\bp}\, qC_{13}( \G^{snk} D, U)^{\kp k}_{\bp\rp}
%	+(U\G^{src})^{k\kp}_{\rho\bp}\, qC_{13}( \G^{snk} D, U_\mc{O})^{\kp k}_{\bp\rp}
%	\bigg]
%\end{align}
%
%The D-FH correlation function for the proton will be trivially the same as Eq.~\eqref{eq:prot_qc} with the replacement $D\rightarrow D_\mc{O}$.

\bibliography{c51_bib}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\end{document}