API: xsmc package

class xsmc.XSMC(ts: dataclasses.InitVar, focal: int, panel: List[int], theta: float = None, rho_over_theta: float = 1.0, w: int = None, robust: bool = False)

Sample from, or maximize, the posterior distribution \(p(X_{1:N} | \mathbf{Y})\) of the sequentially Markov coalescent.

Parameters
  • ts – Tree sequence containing the data.

  • focal – Leaf node in ts corresponding to focal haplotype.

  • panel – Leaf node(s) in ts corresponding to panel haplotypes.

  • theta – Population-scaled mutation rate. If None, Watterson’s estimator is used.

  • rho_over_theta – Ratio of recombination to mutation rates.

  • w – Window size. Observations are binned into windows of this size. Recombinations are assumed to occur between adjacent bins, but not within them. If None, try to calculate a sensible default based on rho.

  • robust – If True, use robust model in which bins are classified as either segregating or nonsegregating, as in PSMC. Otherwise, allow for any number of mutations per bin.

Notes

The height of segments returned by this class are expressed in coalescent units. To convert to generations, rescale them by 2 * self.theta / (4 * mu), where mu is the biological mutation rate.

sample(k: int = 1, seed: int = None) → List[xsmc.segmentation.Segmentation]

Sample path(s) from the posterior distribution.

Parameters
  • k – Number of posterior path samples to draw, default 1.

  • seed – Random seed used for sampling.

Returns

A list of k posterior samples for the positional min-TMRCA of focal with panel.

Notes

If sampling many paths at once, it is more efficient to set k > 1 than to call sample() repeatedly.

viterbi(beta: float = None)xsmc.segmentation.Segmentation

Compute the maximum a posteriori (a.k.a. Viterbi) path in haplotype copying model.

Parameters

beta – Penalty parameter for changepoint formation. See manuscript for details about this parameter.

Returns

A segmentation containing the MAP path.

class xsmc.segmentation.Segmentation(segments: List[xsmc.segmentation.Segment], panel: List[int])

A path through a haplotype copying model.

Parameters
  • segments – list of segments composing the path.

  • panel_size – size of panel used to construct this path.

draw(axis: matplotlib.axis.Axis = None, **kwargs) → None

Plot this segmentation as a step function.

Parameters
  • axis – Axis on which to draw plot. If None, current axis is used.

  • kwargs – Additional arguments passed to axis.plot().

Notes

Only plots segment heights. Segment haplotype is currently ignored.

classmethod from_ts(ts: tskit.TreeSequence, focal: int, panel: List[int]) → Segmentation

Return a segmentation consisting of the genealogical MRCA of focal among panel.

Parameters
  • ts – Tree sequence containing the data.

  • focal – Focal leaf node in ts.

  • panel – Panel leaf nodes in ts over which to compute GMRCA.

Returns

Computed segmentation.

Notes

The returned segmentation is not necessarily unique. If there is >1 GMRCA for a given IBD segment, one is chosen arbitrarily.

property panel

Alias for field number 1

rescale(x: float)xsmc.segmentation.Segmentation

Return a new segmentation where each height is multiplied by x.

property segments

Alias for field number 0

to_pp() → scipy.interpolate.interpolate.PPoly

Return a piecewise polynomial representation of this segmentation.

Notes

Only represents segments heights. Identity of haplotype panel is currently ignored.