<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal Publishing DTD v2.3 20070202//EN" "journalpublishing.dtd">
<article xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" article-type="research-article" dtd-version="2.3" xml:lang="EN">
<front>
<journal-meta>
<journal-id journal-id-type="publisher-id">Front. Immunol.</journal-id>
<journal-title>Frontiers in Immunology</journal-title>
<abbrev-journal-title abbrev-type="pubmed">Front. Immunol.</abbrev-journal-title>
<issn pub-type="epub">1664-3224</issn>
<publisher>
<publisher-name>Frontiers Media S.A.</publisher-name>
</publisher>
</journal-meta>
<article-meta>
<article-id pub-id-type="doi">10.3389/fimmu.2024.1378512</article-id>
<article-categories>
<subj-group subj-group-type="heading">
<subject>Immunology</subject>
<subj-group>
<subject>Technology and Code</subject>
</subj-group>
</subj-group>
</article-categories>
<title-group>
<article-title>PyPop: a mature open-source software pipeline for population genomics</article-title>
</title-group>
<contrib-group>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Lancaster</surname><given-names>Alexander K.</given-names>
</name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<xref ref-type="aff" rid="aff2"><sup>2</sup></xref>
<xref ref-type="aff" rid="aff3"><sup>3</sup></xref>
<xref ref-type="author-notes" rid="fn001"><sup>*</sup></xref>
<uri xlink:href="https://loop.frontiersin.org/people/2581285"/>
<role content-type="https://credit.niso.org/contributor-roles/conceptualization/"/>
<role content-type="https://credit.niso.org/contributor-roles/formal-analysis/"/>
<role content-type="https://credit.niso.org/contributor-roles/project-administration/"/>
<role content-type="https://credit.niso.org/contributor-roles/software/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-review-editing/"/>
<role content-type="https://credit.niso.org/contributor-roles/investigation/"/>
<role content-type="https://credit.niso.org/contributor-roles/methodology/"/>
<role content-type="https://credit.niso.org/contributor-roles/validation/"/>
<role content-type="https://credit.niso.org/contributor-roles/visualization/"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Single</surname><given-names>Richard M.</given-names>
</name>
<xref ref-type="aff" rid="aff4"><sup>4</sup></xref>
<xref ref-type="author-notes" rid="fn001"><sup>*</sup></xref>
<role content-type="https://credit.niso.org/contributor-roles/conceptualization/"/>
<role content-type="https://credit.niso.org/contributor-roles/funding-acquisition/"/>
<role content-type="https://credit.niso.org/contributor-roles/resources/"/>
<role content-type="https://credit.niso.org/contributor-roles/software/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-review-editing/"/>
<role content-type="https://credit.niso.org/contributor-roles/investigation/"/>
<role content-type="https://credit.niso.org/contributor-roles/project-administration/"/>
<role content-type="https://credit.niso.org/contributor-roles/validation/"/>
<role content-type="https://credit.niso.org/contributor-roles/methodology/"/>
</contrib>
<contrib contrib-type="author" corresp="yes">
<name>
<surname>Mack</surname><given-names>Steven J.</given-names>
</name>
<xref ref-type="aff" rid="aff5"><sup>5</sup></xref>
<xref ref-type="author-notes" rid="fn001"><sup>*</sup></xref>
<uri xlink:href="https://loop.frontiersin.org/people/820163"/>
<role content-type="https://credit.niso.org/contributor-roles/funding-acquisition/"/>
<role content-type="https://credit.niso.org/contributor-roles/methodology/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-review-editing/"/>
<role content-type="https://credit.niso.org/contributor-roles/validation/"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Sochat</surname><given-names>Vanessa</given-names>
</name>
<xref ref-type="aff" rid="aff6"><sup>6</sup></xref>
<role content-type="https://credit.niso.org/contributor-roles/software/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-review-editing/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-original-draft/"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Mariani</surname><given-names>Michael P.</given-names>
</name>
<xref ref-type="aff" rid="aff4"><sup>4</sup></xref>
<xref ref-type="aff" rid="aff7"><sup>7</sup></xref>
<uri xlink:href="https://loop.frontiersin.org/people/1138095"/>
<role content-type="https://credit.niso.org/contributor-roles/software/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-review-editing/"/>
<role content-type="https://credit.niso.org/contributor-roles/validation/"/>
</contrib>
<contrib contrib-type="author">
<name>
<surname>Webster</surname><given-names>Gordon D.</given-names>
</name>
<xref ref-type="aff" rid="aff1"><sup>1</sup></xref>
<xref ref-type="aff" rid="aff2"><sup>2</sup></xref>
<role content-type="https://credit.niso.org/contributor-roles/software/"/>
<role content-type="https://credit.niso.org/contributor-roles/writing-review-editing/"/>
</contrib>
</contrib-group>
<aff id="aff1"><sup>1</sup><institution>Amber Biology LLC</institution>, <addr-line>Cambridge, MA</addr-line>, <country>United States</country></aff>
<aff id="aff2"><sup>2</sup><institution>Ronin Institute</institution>, <addr-line>Montclair, NJ</addr-line>, <country>United States</country></aff>
<aff id="aff3"><sup>3</sup><institution>Institute for Globally Distributed Open Research and Education (IGDORE)</institution>, <addr-line>Cambridge, MA</addr-line>, <country>United States</country></aff>
<aff id="aff4"><sup>4</sup><institution>Department of Mathematics and Statistics, University of Vermont</institution>, <addr-line>Burlington, VT</addr-line>, <country>United States</country></aff>
<aff id="aff5"><sup>5</sup><institution>Department of Pediatrics, University of California, San Francisco</institution>, <addr-line>Oakland, CA</addr-line>, <country>United States</country></aff>
<aff id="aff6"><sup>6</sup><institution>Livermore Computing, Lawrence Livermore National Laboratory</institution>, <addr-line>Livermore, CA</addr-line>, <country>United States</country></aff>
<aff id="aff7"><sup>7</sup><institution>Mariani Systems LLC</institution>, <addr-line>Hanover, NH</addr-line>, <country>United States</country></aff>
<author-notes>
<fn fn-type="edited-by">
<p>Edited by: Aisha Souquette, University of Maryland, United States</p>
</fn>
<fn fn-type="edited-by">
<p>Reviewed by: Jonathan Shortt, University of Colorado Anschutz Medical Campus, United States</p>
<p>Jos&#xe9; Manuel Nunes, University of Geneva, Switzerland</p>
</fn>
<fn fn-type="corresp" id="fn001">
<p>*Correspondence: Alexander K. Lancaster, <email xlink:href="mailto:alancaster@amberbiology.com">alancaster@amberbiology.com</email>; Richard M. Single, <email xlink:href="mailto:richard.single@uvm.edu">richard.single@uvm.edu</email>; Steven J. Mack, <email xlink:href="mailto:steven.mack@ucsf.edu">steven.mack@ucsf.edu</email>
</p>
</fn>
</author-notes>
<pub-date pub-type="epub">
<day>02</day>
<month>04</month>
<year>2024</year>
</pub-date>
<pub-date pub-type="collection">
<year>2024</year>
</pub-date>
<volume>15</volume>
<elocation-id>1378512</elocation-id>
<history>
<date date-type="received">
<day>29</day>
<month>01</month>
<year>2024</year>
</date>
<date date-type="accepted">
<day>08</day>
<month>03</month>
<year>2024</year>
</date>
</history>
<permissions>
<copyright-statement>Copyright &#xa9; 2024 Lancaster, Single, Mack, Sochat, Mariani and Webster</copyright-statement>
<copyright-year>2024</copyright-year>
<copyright-holder>Lancaster, Single, Mack, Sochat, Mariani and Webster</copyright-holder>
<license xlink:href="http://creativecommons.org/licenses/by/4.0/">
<p>This is an open-access article distributed under the terms of the Creative Commons Attribution License (CC BY). The use, distribution or reproduction in other forums is permitted, provided the original author(s) and the copyright owner(s) are credited and that the original publication in this journal is cited, in accordance with accepted academic practice. No use, distribution or reproduction is permitted which does not comply with these terms.</p>
</license>
</permissions>
<abstract>
<p>Python for Population Genomics (PyPop) is a software package that processes genotype and allele data and performs large-scale population genetic analyses on highly polymorphic multi-locus genotype data. In particular, PyPop tests data conformity to Hardy-Weinberg equilibrium expectations, performs Ewens-Watterson tests for selection, estimates haplotype frequencies, measures linkage disequilibrium, and tests significance. Standardized means of performing these tests is key for contemporary studies of evolutionary biology and population genetics, and these tests are central to genetic studies of disease association as well. Here, we present PyPop 1.0.0, a new major release of the package, which implements new features using the more robust infrastructure of GitHub, and is distributed via the industry-standard Python Package Index. New features include implementation of the asymmetric linkage disequilibrium measures and, of particular interest to the immunogenetics research communities, support for modern nomenclature, including colon-delimited allele names, and improvements to meta-analysis features for aggregating outputs for multiple populations.</p>
<p>Code available at: <ext-link ext-link-type="uri" xlink:href="https://zenodo.org/records/10080668">https://zenodo.org/records/10080668</ext-link> and <ext-link ext-link-type="uri" xlink:href="https://github.com/alexlancaster/pypop">https://github.com/alexlancaster/pypop</ext-link>
</p>
</abstract>
<kwd-group>
<kwd>HLA</kwd>
<kwd>MHC</kwd>
<kwd>population genomics</kwd>
<kwd>software</kwd>
<kwd>bioinformatics</kwd>
</kwd-group>
<contract-num rid="cn001">R01AI128775</contract-num>
<contract-num rid="cn002">HHSN272201200028C</contract-num>
<contract-num rid="cn003">R01GM109030</contract-num>
<contract-sponsor id="cn001">National Institute of Allergy and Infectious Diseases<named-content content-type="fundref-id">10.13039/100000060</named-content>
</contract-sponsor>
<contract-sponsor id="cn002">National Institutes of Health<named-content content-type="fundref-id">10.13039/100000002</named-content>
</contract-sponsor>
<contract-sponsor id="cn003">National Institute of General Medical Sciences<named-content content-type="fundref-id">10.13039/100000057</named-content>
</contract-sponsor>
<counts>
<fig-count count="2"/>
<table-count count="3"/>
<equation-count count="0"/>
<ref-count count="44"/>
<page-count count="8"/>
<word-count count="3830"/>
</counts>
<custom-meta-wrap>
<custom-meta>
<meta-name>section-in-acceptance</meta-name>
<meta-value>Molecular Innate Immunity</meta-value>
</custom-meta>
</custom-meta-wrap>
</article-meta>
</front>
<body>
<sec id="s1" sec-type="intro">
<label>1</label>
<title>Introduction</title>
<p>Since its principles were established a century ago (<xref ref-type="bibr" rid="B1">1</xref>&#x2013;<xref ref-type="bibr" rid="B5">5</xref>), population genetics has been a computational science. The advent of electronic computing, and its widespread adoption for academic research in the 1980s and 1990s, fostered the development of computational genetics software (e.g., <xref ref-type="bibr" rid="B6">6</xref>, <xref ref-type="bibr" rid="B7">7</xref>) that could perform multiple analyses and return results in standardized, human and machine-readable formats. PyPop (Python for Population Genomics) was initially developed between 2002 and 2007 (<xref ref-type="bibr" rid="B8">8</xref>, <xref ref-type="bibr" rid="B9">9</xref>) as a Python 2-based framework that performed multiple population genetic analyses on highly-polymorphic, multilocus genotype data, and generated both standardized, &#x201c;publication ready&#x201d; text-formatted outputs and machine-readable XML outputs, allowing for further downstream analyses and meta-analyses.</p>
<p>A standard PyPop analysis is initiated by running the &#x201c;pypop&#x201d; command-line program that is supplied with one or more plaintext input &#x201c;population&#x201d; or &#x201c;dataset&#x201d; files (with the suffix &#x201c;.pop&#x201d;), along with a plaintext input configuration file (with the suffix &#x201c;.ini&#x201d;). The input configuration file defines both the expected input format, as well as the specific analyses that will be run, including tests of Hardy-Weinberg equilibrium expectations, Ewens-Watterson tests of selection, and estimation of haplotype frequencies and linkage disequilibrium [a full list of the configuration options is available in the <italic>PyPop User Guide</italic> (<xref ref-type="bibr" rid="B10">10</xref>)]. Each input file results in a corresponding set of output files: a machine-readable XML file, and a human readable plain-text file. These primary analyses can be aggregated to generate cross-dataset meta analyses using &#x201c;popmeta&#x201d;, another tool in the PyPop suite. Here, we describe PyPop version 1.0.0, which is built using Python 3 and includes new features and improvements as well as a new development platform.</p>
<p>We first document the ongoing use of PyPop in the immunogenetics and other research communities in the years since the last release of PyPop (version 0.7.0). Next we describe new features and analytical methods, including measure of asymmetric linkage disequilibrium (ALD), and updates to support the current nomenclatures for major histocompatibility complex (MHC) and human leukocyte antigen (HLA) genes. We also note the streamlining and improvement of existing features such as the custom grouping of alleles and output of tab-separated value (TSV) files. We close by describing features in development, as well the porting of the project to GitHub to support future Python versions and new machine architectures, providing a stable home for PyPop to evolve as a community resource.</p>
</sec>
<sec id="s2">
<label>2</label>
<title>Methods and results</title>
<sec id="s2_1">
<label>2.1</label>
<title>PyPop in the human immunogenetics community and beyond</title>
<p>Since the first public release of the software in 2003 and the subsequent publication of descriptions in 2003 (<xref ref-type="bibr" rid="B8">8</xref>) and 2007 (<xref ref-type="bibr" rid="B9">9</xref>), PyPop has been in regular and continuous use within the HLA and the larger genomics communities, as shown in an analysis of Google Scholar citations (<xref ref-type="fig" rid="f1"><bold>Figure&#xa0;1</bold></xref>). This analysis estimates that there have been 433 unique citations of PyPop since its inception (134 for the 2003 paper alone, 220 for the 2007 paper, and 79 for both). Of those unique citations, 367 are from 2007 or later. PyPop has been applied extensively within the immunogenetics community since its first release, as expected given its origins as part of the 13th International Histocompatibility Workshop (IHWS) in 2002 (<xref ref-type="bibr" rid="B11">11</xref>). A notable early meta-analysis of the action of natural selection on HLA polymorphism across 497 populations (<xref ref-type="bibr" rid="B12">12</xref>), relied heavily on PyPop 0.7.0 analyses and has 360 citations in Google Scholar at the time of writing.</p>
<fig id="f1" position="float">
<label>Figure&#xa0;1</label>
<caption>
<p>Number of unique citations over time for the two previous PyPop publications: <italic>Pacific Symposium in Biocomputing</italic> (<italic>PSB</italic>) (<xref ref-type="bibr" rid="B8">8</xref>) and <italic>Tissue Antigens</italic> (<xref ref-type="bibr" rid="B9">9</xref>). Some publications cited both PyPop papers. Google Scholar was used for the counts.</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fimmu-15-1378512-g001.tif"/>
</fig>
<p>Many of these citations are from researchers studying human immune system genes. However, PyPop has been used in many studies, far from its home research community. These include studies that are both taxonomically distinct (genetic heterogeneity of urban foxes (<xref ref-type="bibr" rid="B13">13</xref>)) and genetically distinct [population genetics of cytochrome enzyme proteins (<xref ref-type="bibr" rid="B14">14</xref>)] from human immunogenetics. These two examples illustrate the wide utility of PyPop as a computational population genomics resource.</p>
</sec>
<sec id="s2_2">
<label>2.2</label>
<title>New features and improvements</title>
<sec id="s2_2_1">
<label>2.2.1</label>
<title>Asymmetric linkage disequilibrium measures</title>
<p>The conditional asymmetric linkage disequilibrium (ALD) measures, first described by Thomson and Single (<xref ref-type="bibr" rid="B15">15</xref>), are the major new analytic feature of PyPop 1.0.0. Previous PyPop versions computed two measures of overall linkage disequilibrium: <italic>D&#x2019;</italic> (<xref ref-type="bibr" rid="B16">16</xref>), which uses the product of pairwise allele frequencies to weight the individual haplotype-level coefficients of LD, and <italic>W<sub>n</sub>
</italic> (<xref ref-type="bibr" rid="B17">17</xref>), which is a multi-allelic extension of the &#x201c;<italic>r&#x201d;</italic> correlation measure commonly used for LD with bi-allelic SNPs. ALD further extends the <italic>W<sub>n</sub>
</italic> measure, accounting for asymmetries that arise from different numbers of alleles at different loci. The two measures, <italic>W<sub>12</sub>
</italic> and <italic>W<sub>21</sub>
</italic>, assess LD conditional on the second and first locus, respectively, and are both equal to the usual <italic>r</italic> statistic for SNPs (<xref ref-type="table" rid="T1"><bold>Table&#xa0;1</bold></xref>).</p>
<table-wrap id="T1" position="float">
<label>Table&#xa0;1</label>
<caption>
<p>Comparison of the default text-based output for a single two-locus pairwise LD measures for a pre-1.0.0 version (a) and 1.0.0 version (b) of PyPop, which include the new ALD measures, <italic>W<sub>12</sub>
</italic> and <italic>W<sub>21</sub>
</italic>, denoted by ALD_1_2 and ALD_2_1 in the output, respectively.</p>
<p><graphic mimetype="image" mime-subtype="tiff" xlink:href="fimmu-15-1378512-i001.tif"/></p>
</caption>
<table-wrap-foot>
<fn>
<p>Note that the # permu and p-value columns are now only displayed if a permutation test is run.</p>
</fn>
</table-wrap-foot>
</table-wrap>
<p>ALD is particularly useful when investigating LD in highly polymorphic gene-systems, where each locus displays large and very different numbers of alleles in a population. These ALD measures, computed using PyPop, have been used in anthropological studies dissecting LD in human populations (<xref ref-type="bibr" rid="B18">18</xref>, <xref ref-type="bibr" rid="B19">19</xref>); studies of permissible mismatches in HLA donor registries (<xref ref-type="bibr" rid="B20">20</xref>); and studies of HLA haplotypes and amino acid motifs that predispose for disease (<xref ref-type="bibr" rid="B21">21</xref>). Additional publications, using different implementations of the ALD, include studies of the impact of anti-malarial drugs on parasite populations among individuals with complex infection status (<xref ref-type="bibr" rid="B22">22</xref>, <xref ref-type="bibr" rid="B23">23</xref>). ALD measures allow one to condition on known disease genes in association studies when searching for additional genetic effects in a region. Similarly, by conditioning on putative targets of selection ALD measures can help characterize other potentially selected variants.</p>
</sec>
<sec id="s2_2_2">
<label>2.2.2</label>
<title>Support for modern HLA/MHC nomenclature</title>
<p>Since the major release of PyPop 0.7.0 in 2008, the allele-name nomenclatures for MHC and HLA genes have changed significantly. In 2010 (<xref ref-type="bibr" rid="B24">24</xref>) the format of HLA and MHC allele names was changed to include colon-delimited fields, where previous formats had relied on &#x2018;digit-based&#x2019; fields. An allele denoted as 0101 before 2010 is now denoted as 01:01. This nomenclature change also means that much longer HLA allele names (eg., A*02:01:01:134Q or DPB1*1372:01:01:02) are now valid, and PyPop can continue to process such data. In addition, the ~ operator, defined in the text-based Genotype List (GL) String syntax for describing HLA and Killer-cell Immunoglobulin-like receptor (KIR) genotyping results (<xref ref-type="bibr" rid="B25">25</xref>, <xref ref-type="bibr" rid="B26">26</xref>), has been the standard for delimiting alleles in multi-locus haplotypes with the immunogenetics community. In PyPop 1.0.0, a two locus haplotype of alleles at two loci, A and B respectively, is represented as A~B, where this haplotype had been represented as A:B in earlier PyPop releases.</p>
<p>Although previously there was nothing actively preventing a user of PyPop from using the 2010 HLA/MHC nomenclature for PyPop input data, PyPop 0.7.0&#x2019;s separation of haplotype elements with colons meant that a &#x201c;:&#x201d; <italic>within</italic> an allele name could lead to ambiguous output. We introduced changes in version 1.0.0 to seamlessly handle the 2010 nomenclature, and now PyPop output includes the GL String &#x2018;~&#x2019; separator by default, facilitating use of the output in publications or further downstream analyses (<xref ref-type="table" rid="T2"><bold>Table&#xa0;2</bold></xref>). We have updated all documentation, examples and unit tests to reflect these changes.</p>
<table-wrap id="T2" position="float">
<label>Table&#xa0;2</label>
<caption>
<p>Comparison of haplotype estimation output indicating use of both the new nomenclature and the GL String haplotype separator.</p>
<p><graphic mimetype="image" mime-subtype="tiff" xlink:href="fimmu-15-1378512-i002.tif"/></p>
</caption>
</table-wrap>
</sec>
<sec id="s2_2_3">
<label>2.2.3</label>
<title>Cross-platform support for custom grouping (&#x201c;binning&#x201d;) filters</title>
<p>PyPop&#x2019;s capacity for &#x201c;custom binning&#x201d;, which combines allele-names into specific categories for analysis, is now available on all platforms. This capacity extends to commonly used allele groupings (e.g., G- and P-groups (<xref ref-type="bibr" rid="B24">24</xref>), supertype groups (<xref ref-type="bibr" rid="B27">27</xref>), HLA T-cell epitope (TCE) groups (<xref ref-type="bibr" rid="B28">28</xref>, <xref ref-type="bibr" rid="B29">29</xref>), and National Marrow Donor Program [NMDP] allele codes (<xref ref-type="bibr" rid="B30">30</xref>, <xref ref-type="bibr" rid="B31">31</xref>)) that group distinct variants by common aspects. For example, as of January 2024, the A*01:01:01G G-group designation represents 240 HLA-A alleles that share identical exon 2 and exon 3 nucleotide sequences. Supertypes are groups of alleles with similar peptide-binding features; for example DPB1 alleles with identical peptide sequences for amino-acid positions 11, 69 and 84 are sorted into eight supertypes groups (<xref ref-type="bibr" rid="B27">27</xref>).</p>
<p>TCE groups identify sets of DPB1 alleles with shared amino acid motifs that result in permissive mismatches in the context of hematopoietic stem cell transplantation (<xref ref-type="bibr" rid="B29">29</xref>). NMDP allele codes identify groups of alleles that cannot be distinguished by genotyping methods that do not sequence the entire HLA gene. For example, the DRB1*11AD allele code is used to represent a genotyping result that could be either DRB1*1101 or DRB1*1104 (<xref ref-type="bibr" rid="B31">31</xref>).</p>
<p>PyPop custom binning is not restricted to these specific community-defined examples; variant names can be combined into any user-defined category for PyPop analysis. An example custom binning filter for converting alleles to a G-group designation is presented in <xref ref-type="fig" rid="f2"><bold>Figure&#xa0;2</bold></xref>. Additional examples are provided in <xref ref-type="supplementary-material" rid="SM2"><bold>Supplementary File 1</bold></xref>.</p>
<fig id="f2" position="float">
<label>Figure&#xa0;2</label>
<caption>
<p>Extract of an example PyPop &#x201c;CustomBinning&#x201d; filter that could be included within the configuration &#x201c;.ini&#x201d; file for a PyPop run. The three elements of a custom binning filter for five HLA loci are shown. <bold>(A)</bold>: Header block. Every custom binning filter begins with the [CustomBinning] keyword. <bold>(B)</bold>: Comment block (optional). Comments are indicated with double semicolons. This comment block identifies the type of filter (here, &#x201c;GCode&#x201d;) and includes specific details about the source of the data used to inform the filter. <bold>(C)</bold>: Filters block. Filters for DQA1, DQB1, DRB3, DRB4 and DRB5 are shown. Each filter starts with an exclamation point, which is followed by the group identifier (shown in bold). The group identifier and its constituent alleles are delimited by forward slashes. Multiple groups for a locus are defined on separate lines, and all groups after the first start with a whitespace. When the filter is applied, any alleles in the dataset that are in a group will be converted to the group identifier for PyPop analysis. (A full plain-text version with additional rules for more loci - including the five shown - is contained in the file &#x201c;G-Filter_config.ini&#x201d; within <xref ref-type="supplementary-material" rid="SM2"><bold>Supplementary File 1</bold></xref>).</p>
</caption>
<graphic mimetype="image" mime-subtype="tiff" xlink:href="fimmu-15-1378512-g002.tif"/>
</fig>
</sec>
<sec id="s2_2_4">
<label>2.2.4</label>
<title>Improved support for downstream analyses: enhancements to TSV output</title>
<p>PyPop analyses are always output as machine-readable XML files, with one XML file per population or dataset. Previous versions of PyPop included a feature to aggregate these individual dataset or population-level XML files into a set of files in tab-separated value (TSV) format, suitable for input into spreadsheets or other downstream software (<xref ref-type="table" rid="T3"><bold>Table&#xa0;3</bold></xref>). However, this feature was originally tuned to the needs of the 13th IHWS (<xref ref-type="bibr" rid="B11">11</xref>) and required adaptation for use outside this context. In PyPop 1.0.0, we have overhauled and re-tooled the output mechanism for general use. The changes include:</p>
<list list-type="simple">
<list-item>
<p>1. Previously the list of output TSV files was hardcoded, and this set of files was generated regardless of whether the analysis created any relevant data. For example, a 3-locus-haplo.tsv file was generated even if estimation of 3 locus haplotypes was not requested by the user - resulting in a file with headers, but no data. The output files are now dynamically generated based on the analyses that were requested by the user (ultimately based on aggregating the contents of the separate XML outputs generated by each input.pop dataset). In addition, we have also enabled generation of TSV output for haplotype estimation involving five or more loci, e.g. 5-locus-haplo.tsv, 6-locus-haplo.tsv, etc. (see the last two rows of <xref ref-type="table" rid="T3"><bold>Table&#xa0;3</bold></xref>).</p>
</list-item>
<list-item>
<p>2. Output files now use the standard &#x201c;.tsv&#x201d; suffix (rather than &#x201c;.dat&#x201d;) so they are more easily identified as tab separated value files that are parsable by other software. We have also renamed the command-line options accordingly (e.g. &#x2013;generate-dat to &#x2013;enable-tsv).</p>
</list-item>
<list-item>
<p>3. Previous versions included fixed metadata columns that were only relevant for the analyses performed for the 13th IHWS. These additional columns are now disabled by default (we have added a new &#x201c;&#x2013;enable-ihwg&#x201d; option which will re-enable them).</p>
</list-item>
<list-item>
<p>4. We have added new options to enable TSV files to be saved in a separate directory (&#x2013;outputdir) and include a prefix (&#x2013;prefix-tsv).</p>
</list-item>
</list>
<table-wrap id="T3" position="float">
<label>Table&#xa0;3</label>
<caption>
<p>List of possible types of TSV files, their row data type and a brief description, including the generation of files containing multi-locus analyses with an arbitrary number of <italic>n</italic> loci.</p>
</caption>
<table frame="hsides">
<thead>
<tr>
<th valign="top" align="left">Default file name suffix</th>
<th valign="top" align="left">Row data</th>
<th valign="top" align="left">Description</th>
</tr>
</thead>
<tbody>
<tr>
<td valign="top" align="left">1-locus-summary.tsv</td>
<td valign="top" align="left">locus</td>
<td valign="top" align="left">Consists of a line for population and locus, with fields for number of gametes, number of distinct alleles, HWP p-value for the Chi-square test and all other single locus statistics.</td>
</tr>
<tr>
<td valign="top" align="left">1-locus-allele.tsv</td>
<td valign="top" align="left">allele</td>
<td valign="top" align="left">Consists of a line for each combination of population, locus and allele. The line of data contains the allele frequency (allele.freq) and count (allele.count)</td>
</tr>
<tr>
<td valign="top" align="left">1-locus-genotype.tsv</td>
<td valign="top" align="left">genotype</td>
<td valign="top" align="left">Consists of a line for each combination of population, locus and genotype, with individual genotypes statistics (only output if individual statistics are selected by the user)</td>
</tr>
<tr>
<td valign="top" align="left">1-locus-hardyweinberg.tsv</td>
<td valign="top" align="left">locus</td>
<td valign="top" align="left">Consists of a line for each population and locus, with fields for number of distinct alleles and several versions of computing p-values for HWP (Guo and Thompson original and monte-carlo method, full enumeration when possible, heterozygotes, homozygotes)</td>
</tr>
<tr>
<td valign="top" align="left">2-locus-summary.tsv</td>
<td valign="top" align="left">locus</td>
<td valign="top" align="left">Consists of a line for each combination of population, and locus group. Columns representing locus-level statistics. If a pairwise analysis has been requested, it will also include the pairwise LD statistics discussed above, D&#x2019;, W<sub>n</sub> and ALD<sub>12</sub>, ALD<sub>21</sub>.</td>
</tr>
<tr>
<td valign="top" align="left">2-locus-haplo.tsv</td>
<td valign="top" align="left">haplotype</td>
<td valign="top" align="left">This is analogous to the 1-locus-allele.tsv, except with information for each population&#x2019;s haplotype, such as the estimated haplotype count and frequency. If pairwise analysis has been selected, it will also include individual haplotype D&#x2019; and W<sub>n</sub> measures.</td>
</tr>
<tr>
<td valign="top" align="left"><italic>n</italic>-locus-summary.tsv</td>
<td valign="top" align="left">locus</td>
<td valign="top" align="left">Analogous to the 2-locus-summary.tsv output, but no pairwise statistics</td>
</tr>
<tr>
<td valign="top" align="left"><italic>n</italic>-locus-haplo.tsv</td>
<td valign="top" align="left">haplotype</td>
<td valign="top" align="left">Analogous to the 2-locus-haplo.tsv output, but omits the individual pairwise LD measurements</td>
</tr>
</tbody>
</table>
</table-wrap>
<p>These changes should increase the utility of PyPop for meta-analyses in a wider range of research use-cases, particularly for studies that need to aggregate analyses where haplotypes were estimated at more than four loci.</p>
</sec>
</sec>
<sec id="s2_3">
<label>2.3</label>
<title>Development updates</title>
<p>When PyPop development started in late 2001 Python was at version 2. Soon after the last release of PyPop (0.7.0) in 2008, Python 3 was released. Python 3 unfortunately introduced breaking changes (breaking the existing PyPop code). With the end-of-life of Python 2 in 2020, migration from PyPop to Python 3 became an imperative. In addition to the new scientific features described above, and the desired transition to Python 3, other major goals of the PyPop 1.0.0 release were (a) to improve ease of installation and the overall experience for end-users, (b) to make it easier to contribute to PyPop, and (c) reduce &#x201c;technical debt&#x201d; (<xref ref-type="bibr" rid="B32">32</xref>) and thus improve overall project longevity. In this section, we discuss these changes to the development process, the Python 3 migration, improvements in packaging, deployment, provenance, and documentation to further these end-goals.</p>
<sec id="s2_3_1">
<label>2.3.1</label>
<title>Development moved to the GitHub platform</title>
<p>In 2013 we migrated the source code version control system of PyPop from an internal Concurrent Versions System (CVS) repository to Git, and subsequently imported it as a public project on the GitHub platform. GitHub supports advanced features for developers including issue and milestone tracking, discussions, collaborative code review (pull requests), security scanning, and automation of testing via continuous integration (CI). With this change, the development process became more open to the community. Updates that added support for codon-delimited alleles and increased capacity for multi-locus analyses were made as part of the 17th International HLA &amp; Immunogenetics Workshop, which was held in 2017 (<xref ref-type="bibr" rid="B33">33</xref>) and made available via GitHub, although no formal release was made at this time.</p>
</sec>
<sec id="s2_3_2">
<label>2.3.2</label>
<title>Migration to Python 3</title>
<p>Migration commenced in 2017, by an author of this paper (<xref ref-type="bibr" rid="B34">34</xref>) - outside the original development team - via a &#x201c;pull-request&#x201d;, illustrating the benefits of moving to the GitHub platform. Initially the process was largely manual, including fixing of print statements, addition of modules, and rearranging of module imports. We included Singularity (<xref ref-type="bibr" rid="B35">35</xref>), an upcoming container technology for high performance computing, and a pull request to update from the deprecated &#x201c;Numeric&#x201d; to the &#x201c;numpy&#x201d; library was merged later in 2017 (<xref ref-type="bibr" rid="B36">36</xref>). In early 2023, we merged a modified version of the pull request, including additional changes, back into the main branch, which finalized the conversion to Python 3.</p>
</sec>
<sec id="s2_3_3">
<label>2.3.3</label>
<title>New test suite and continuous integration</title>
<p>During the port, we created a test suite that included both unit tests, and end-to-end &#x201c;pipeline&#x201d; tests, emulating end-user runs. As a result of this process, we refactored code, and removed obsolete or outdated code, helping to reduce technical debt. Apart from its direct utility in detecting regressions introduced during development, this test suite has resulted in a wider set of configuration (&#x201c;.ini&#x201d;) and data (&#x201c;.pop&#x201d;) files that provide examples for end-users of PyPop to emulate. We also leveraged GitHub&#x2019;s CI feature, known as GitHub Actions, so that these tests are automatically run upon a commit to the repository.</p>
</sec>
<sec id="s2_3_4">
<label>2.3.4</label>
<title>Generating source distributions and binary wheels for Windows, MacOS X and Linux</title>
<p>The cibuildwheel system (<xref ref-type="bibr" rid="B37">37</xref>) generates &#x201c;wheels&#x201d; (architecture-specific installable versions of a Python package containing pre-compiled extensions), installs each wheel in a virtual environment, and then runs unit tests within the virtual environment with that installed wheel. Key to this process is that cibuildwheel automates the process of compiling and testing wheels across multiple operating systems and Python versions, ensuring that they will work on each of those end-user systems. We deployed cibuildwheel as part of our GitHub Action workflow, resulting in over 40 different tested wheels on a wider range of architectures and Python versions (<xref ref-type="supplementary-material" rid="SM1"><bold>Supplementary Table 1</bold></xref>) - compared with only two binary packages available previously (one for Linux, and one for Windows). These wheels include, for the first time, an official pre-compiled MacOS X version of PyPop, on both Intel (x86) and Apple Silicon (arm64) architectures. In addition to the automated CI testing, we did manual testing on several Windows, Linux and Android platforms (<xref ref-type="supplementary-material" rid="SM1"><bold>Supplementary Table 2</bold></xref>).</p>
</sec>
<sec id="s2_3_5">
<label>2.3.5</label>
<title>Deploying releases via the Python Package Index (PyPI)</title>
<p>When a release is made via GitHub&#x2019;s &#x201c;tag-and-release&#x201d; interface, our workflow triggers a build of all binary wheels and source distribution via GitHub&#x2019;s CI system, as described above, but includes an additional step in the workflow of uploading a versioned release to the PyPI repository. This vastly simplifies installation for end users who can install PyPop directly from PyPI via a single &#x201c;pip install pypop-genomics&#x201d; command.</p>
</sec>
<sec id="s2_3_6">
<label>2.3.6</label>
<title>Provenance via Zenodo DOI</title>
<p>We configured the workflow so that, upon a production release via GitHub, it will deposit the source and metadata about the release to the Zenodo repository (<xref ref-type="bibr" rid="B38">38</xref>). This generates version-specific archives of the source code, together with a unique Digital Object Identifier [DOI]. Users can then cite the specific version used for their analyses as a DOI in their paper to enable more effective reproducibility (<xref ref-type="bibr" rid="B39">39</xref>). For example, the DOI for the 1.0.0 release being described in this paper is 10.5281/zenodo.1008066 (<xref ref-type="bibr" rid="B40">40</xref>).</p>
</sec>
<sec id="s2_3_7">
<label>2.3.7</label>
<title>Maintainable documentation</title>
<p>The previous version of the <italic>PyPop User Guide</italic> (<xref ref-type="bibr" rid="B10">10</xref>) was written using DocBook XML (<xref ref-type="bibr" rid="B41">41</xref>) which, while powerful, has a steep learning curve. For this new release, we converted all documentation to reStructuredText (<xref ref-type="bibr" rid="B42">42</xref>) which, as a simple plaintext-like language, is more intuitive for contributors. We created another GitHub Action workflow that runs the sphinx documentation generator (<xref ref-type="bibr" rid="B43">43</xref>) to generate both HTML and PDF versions of the <italic>User Guide</italic> and the website from the reStructuredText documents. This GitHub workflow ensures that all changes are automatically deployed to the pypop.org website with each commit to the repository. In addition, some of the documentation (e.g. command-line options) is either generated directly from the code, or pulled in from configuration and data files in the unit tests, further ensuring that documentation is always kept in sync with the current codebase.</p>
</sec>
</sec>
</sec>
<sec id="s3" sec-type="discussion">
<label>3</label>
<title>Discussion</title>
<p>PyPop development continues beyond this 1.0.0 release. A set of features in development related to the estimation of haplotype frequencies and LD include a reworking of the existing implementation of the Expectation-Maximization algorithm; computing LD between loci when allelic phase is known; and moving less computationally-intensive aspects of code currently implemented in C extensions into Python. This will allow for an increase in the number of loci for which haplotypes can be estimated, relative to the existing implementation, because the new implementation doesn&#x2019;t require retention of all possible haplotype combinations. A preliminary, but incomplete implementation is already contained within PyPop 1.0.0 for alpha testing, but should not be used for production analyses.</p>
<p>Since the last release 16 years ago, PyPop has been in active and continuous use across a range of research communities. Despite a relative stasis in development during that period, PyPop has illustrated its durability as a framework for producing standardized reports for population genomics analyses. With the updated development platform, unit testing, packaging and deployment system in place, we have set a foundation to allow for more frequent, and well-tested releases, in addition to improving maintainability and encouraging contributions.</p>
</sec>
<sec id="s4">
<title>Software information</title>
<list list-type="bullet">
<list-item>
<p><bold>Project links</bold>: <ext-link ext-link-type="uri" xlink:href="http://pypop.org">http://pypop.org</ext-link> (home page), <ext-link ext-link-type="uri" xlink:href="https://github.com/alexlancaster/pypop/">https://github.com/alexlancaster/pypop/</ext-link> (development page)</p>
</list-item>
<list-item>
<p><bold>Operating systems</bold>: Linux, MacOS X, Android, Windows</p>
</list-item>
<list-item>
<p><bold>Programming languages</bold>: Python and C</p>
</list-item>
<list-item>
<p><bold>License</bold>: GNU GPLv2: <ext-link ext-link-type="uri" xlink:href="https://www.gnu.org/licenses/gpl">https://www.gnu.org/licenses/gpl</ext-link>
</p>
</list-item>
<list-item>
<p>Any restrictions for non-academic use? None</p>
</list-item>
<list-item>
<p><bold>Zenodo record</bold>: <ext-link ext-link-type="uri" xlink:href="https://zenodo.org/records/10080668">https://zenodo.org/records/10080668</ext-link>
</p>
</list-item>
</list>
</sec>
<sec id="s5" sec-type="data-availability">
<title>Data availability statement</title>
<p>Publicly available datasets were analyzed in this study. This data can be found here: <uri xlink:href="https://zenodo.org/records/10080668">https://zenodo.org/records/10080668</uri> (Zenodo software archive).</p>
</sec>
<sec id="s6" sec-type="author-contributions">
<title>Author contributions</title>
<p>AL: Conceptualization, Formal analysis, Project administration, Software, Writing &#x2013; original draft, Writing &#x2013; review &amp; editing, Investigation, Methodology, Validation, Visualization. RS: Conceptualization, Funding acquisition, Resources, Software, Writing &#x2013; original draft, Writing &#x2013; review &amp; editing, Investigation, Project administration, Validation, Methodology. SM: Funding acquisition, Methodology, Writing &#x2013; original draft, Writing &#x2013; review &amp; editing, Validation. VS: Software, Writing &#x2013; review &amp; editing, Writing &#x2013; original draft. MM: Software, Writing &#x2013; review &amp; editing, Validation. GW: Software, Writing &#x2013; review &amp; editing.</p>
</sec>
</body>
<back>
<sec id="s7" sec-type="funding-information">
<title>Funding</title>
<p>The author(s) declare financial support was received for the research, authorship, and/or publication of this article. The work described here was supported in part by National Institutes of Health (NIH) National Institute of Allergy and Infectious Disease (NIAID) grant R01AI128775 (SM), NIH National Institute of General Medical Sciences (NIGMS) grant R01GM109030 (SM), and NIH Contract HHSN272201200028C (RS).</p>
</sec>
<ack>
<title>Acknowledgments</title>
<p>We would like to acknowledge Owen D. Solberg, Mark P. Nelson, Diogo Meyer, Yingssu Tsai, Karl Kornel and Jurriaan H. Spaaks, for contributions to the PyPop code base, software testing and documentation. We also thank original project lead, Glenys Thomson. We thank the Histocompatibility, Immunogenetics and Disease Profiling Laboratory in the Department of Pathology at Stanford University Medical School for support in upgrading PyPop to enable analysis of colon-delimited allele names and increase its multi-locus analysis capacity as part of the 17th International HLA &amp; Immunogenetics Workshop. The manuscript of this current paper was deposited as a preprint to the Zenodo repository (<xref ref-type="bibr" rid="B44">44</xref>). No artificial intelligence systems were applied in the writing of the paper or for the work described.</p>
</ack>
<sec id="s8" sec-type="COI-statement">
<title>Conflict of interest</title>
<p>Authors AL and GW are co-owners of Amber Biology LLC. Author MM is the owner of Mariani Systems LLC.</p>
<p>The remaining authors declare that the research was conducted in the absence of any commercial or financial relationships that could be construed as a potential conflict of interest.</p>
</sec>
<sec id="s9" sec-type="disclaimer">
<title>Publisher&#x2019;s note</title>
<p>All claims expressed in this article are solely those of the authors and do not necessarily represent those of their affiliated organizations, or those of the publisher, the editors and the reviewers. Any product that may be evaluated in this article, or claim that may be made by its manufacturer, is not guaranteed or endorsed by the publisher.</p>
</sec>
<sec id="s10" sec-type="disclaimer">
<title>Author disclaimer</title>
<p>The content is solely the responsibility of the authors and does not necessarily reflect the official views of the NIAID, NIGMS, NIH, or the United States Government.</p>
</sec>
<sec id="s11" sec-type="supplementary-material">
<title>Supplementary material</title>
<p>The Supplementary Material for this article can be found online at: <ext-link ext-link-type="uri" xlink:href="https://www.frontiersin.org/articles/10.3389/fimmu.2024.1378512/full#supplementary-material">https://www.frontiersin.org/articles/10.3389/fimmu.2024.1378512/full#supplementary-material</ext-link>
</p>
<supplementary-material xlink:href="DataSheet_1.pdf" id="SM1" mimetype="application/pdf"/>
<supplementary-material xlink:href="DataSheet_2.zip" id="SM2" mimetype="application/zip"/>
</sec>
<ref-list>
<title>References</title>
<ref id="B1">
<label>1</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Wright</surname> <given-names>S</given-names>
</name>
</person-group>. <article-title>Systems of mating. I. The biometric relations between parent and offspring</article-title>. <source>Genetics</source>. (<year>1921</year>) <volume>6</volume>:<page-range>111&#x2013;23</page-range>. doi:&#xa0;<pub-id pub-id-type="doi">10.1093/genetics/6.2.111</pub-id>
</citation>
</ref>
<ref id="B2">
<label>2</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Wright</surname> <given-names>S</given-names>
</name>
</person-group>. <article-title>Systems of mating. II. The effects of inbreeding on the genetic composition of a population</article-title>. <source>Genetics</source>. (<year>1921</year>) <volume>6</volume>:<page-range>124&#x2013;43</page-range>. doi:&#xa0;<pub-id pub-id-type="doi">10.1093/genetics/6.2.124</pub-id>
</citation>
</ref>
<ref id="B3">
<label>3</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Fisher</surname> <given-names>RA</given-names>
</name>
</person-group>. <article-title>On the dominance ratio</article-title>. <source>Proc R Soc Edinb</source>. (<year>1923</year>) <volume>42</volume>:<page-range>321&#x2013;41</page-range>. doi:&#xa0;<pub-id pub-id-type="doi">10.1017/S0370164600023993</pub-id>
</citation>
</ref>
<ref id="B4">
<label>4</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Haldane</surname> <given-names>JBS</given-names>
</name>
</person-group>. <article-title>A mathematical theory of natural and artificial selection. Part I</article-title>. <source>Trans Camb Philos Soc</source>. (<year>1924</year>) <volume>23</volume>:<fpage>19</fpage>&#x2013;<lpage>41</lpage>.</citation>
</ref>
<ref id="B5">
<label>5</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Haldane</surname> <given-names>JBS</given-names>
</name>
</person-group>. <article-title>A mathematical theory of natural and artificial selection. Part ii the influence of partial self-fertilization, inbreeding, assortative mating, and selective fertilization on the composition of mendelian populations, and on natural selection</article-title>. <source>Proc Camb Philos Soc</source>. (<year>1924</year>) <volume>1</volume>:<page-range>158&#x2013;63</page-range>. doi:&#xa0;<pub-id pub-id-type="doi">10.1111/j.1469-185X.1924.tb00546.x</pub-id>
</citation>
</ref>
<ref id="B6">
<label>6</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Felsenstein</surname> <given-names>J</given-names>
</name>
</person-group>. <article-title>PHYLIP-phylogeny inference package (Version 3.2)</article-title>. <source>Cladistics</source>. (<year>1989</year>) <volume>5</volume>:<page-range>164&#x2013;6</page-range>. doi:&#xa0;<pub-id pub-id-type="doi">10.1111/j.1096-0031.1989.tb00562.x</pub-id>
</citation>
</ref>
<ref id="B7">
<label>7</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Kumar</surname> <given-names>S</given-names>
</name>
<name>
<surname>Tamura</surname> <given-names>K</given-names>
</name>
<name>
<surname>Nei</surname> <given-names>M</given-names>
</name>
</person-group>. <article-title>MEGA: Molecular Evolutionary Genetics Analysis software for microcomputers</article-title>. <source>Comput Appl Biosci</source>. (<year>1994</year>) <volume>10</volume>:<page-range>189&#x2013;91</page-range>. doi:&#xa0;<pub-id pub-id-type="doi">10.1093/bioinformatics/10.2.189</pub-id>
</citation>
</ref>
<ref id="B8">
<label>8</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lancaster</surname> <given-names>AK</given-names>
</name>
<name>
<surname>Nelson</surname> <given-names>MP</given-names>
</name>
<name>
<surname>Meyer</surname> <given-names>D</given-names>
</name>
<name>
<surname>Single</surname> <given-names>RM</given-names>
</name>
<name>
<surname>Thomson</surname> <given-names>G</given-names>
</name>
</person-group>. <article-title>PyPop: a software framework for population genomics: analyzing large-scale multi-locus genotype data</article-title>. <source>Pac Symp Biocomput</source>. (<year>2003</year>) <volume>8</volume>:<page-range>514&#x2013;25</page-range>.</citation>
</ref>
<ref id="B9">
<label>9</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lancaster</surname> <given-names>AK</given-names>
</name>
<name>
<surname>Single</surname> <given-names>RM</given-names>
</name>
<name>
<surname>Solberg</surname> <given-names>OD</given-names>
</name>
<name>
<surname>Nelson</surname> <given-names>MP</given-names>
</name>
<name>
<surname>Thomson</surname> <given-names>G</given-names>
</name>
</person-group>. <article-title>PyPop update &#x2013; a software pipeline for large-scale multilocus population genomics</article-title>. <source>Tissue Antigens</source>. (<year>2007</year>) <volume>69</volume>:<page-range>192&#x2013;7</page-range>. doi:&#xa0;<pub-id pub-id-type="doi">10.1111/j.1399-0039.2006.00769.x</pub-id>
</citation>
</ref>
<ref id="B10">
<label>10</label>
<citation citation-type="web">
<person-group person-group-type="author">
<name>
<surname>Lancaster</surname> <given-names>AK</given-names>
</name>
<name>
<surname>Nelson</surname> <given-names>MP</given-names>
</name>
<name>
<surname>Meyer</surname> <given-names>D</given-names>
</name>
<name>
<surname>Single</surname> <given-names>RM</given-names>
</name>
<name>
<surname>Solberg</surname> <given-names>O</given-names>
</name>
</person-group>. <article-title>PyPop user guide: User Guide for Python for Population Genomics. 1.0.0</article-title> (<year>2024</year>). Available online at: <uri xlink:href="http://pypop.org/docs/">http://pypop.org/docs/</uri> (Accessed <access-date>January 21, 2024</access-date>).</citation>
</ref>
<ref id="B11">
<label>11</label>
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Lancaster</surname> <given-names>AK</given-names>
</name>
<name>
<surname>Nelson</surname> <given-names>MP</given-names>
</name>
<name>
<surname>Single</surname> <given-names>RM</given-names>
</name>
<name>
<surname>Meyer</surname> <given-names>D</given-names>
</name>
<name>
<surname>Thomson</surname> <given-names>G</given-names>
</name>
</person-group>. <article-title>Software framework for the biostatistics core of the international histocompatibility working group</article-title>. In: <person-group person-group-type="editor">
<name>
<surname>Hansen</surname> <given-names>JA</given-names>
</name>
</person-group>, editor. <source>Immunobiology of the Human MHC: Proceedings of the 13th International Histocompatibility Workshop and Conference</source>. <publisher-name>IHWG Press</publisher-name>, <publisher-loc>Seattle, WA</publisher-loc> (<year>2007</year>). p. <page-range>510&#x2013;7</page-range>.</citation>
</ref>
<ref id="B12">
<label>12</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Solberg</surname> <given-names>OD</given-names>
</name>
<name>
<surname>Mack</surname> <given-names>SJ</given-names>
</name>
<name>
<surname>Lancaster</surname> <given-names>AK</given-names>
</name>
<name>
<surname>Single</surname> <given-names>RM</given-names>
</name>
<name>
<surname>Tsai</surname> <given-names>Y</given-names>
</name>
<name>
<surname>Sanchez-Mazas</surname> <given-names>A</given-names>
</name>
<etal/>
</person-group>. <article-title>Balancing selection and heterogeneity across the classical human leukocyte antigen loci: A meta-analytic review of 497 population studies</article-title>. <source>Hum Immunol</source>. (<year>2008</year>) <volume>69</volume>:<page-range>443&#x2013;64</page-range>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.humimm.2008.05.001</pub-id>
</citation>
</ref>
<ref id="B13">
<label>13</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>DeCandia</surname> <given-names>AL</given-names>
</name>
<name>
<surname>Brzeski</surname> <given-names>KE</given-names>
</name>
<name>
<surname>Heppenheimer</surname> <given-names>E</given-names>
</name>
<name>
<surname>Caro</surname> <given-names>CV</given-names>
</name>
<name>
<surname>Camenisch</surname> <given-names>G</given-names>
</name>
<name>
<surname>Wandeler</surname> <given-names>P</given-names>
</name>
<etal/>
</person-group>. <article-title>Urban colonization through multiple genetic lenses: The city-fox phenomenon revisited</article-title>. <source>Ecol Evol</source>. (<year>2019</year>) <volume>9</volume>:<page-range>2046&#x2013;60</page-range>. doi:&#xa0;<pub-id pub-id-type="doi">10.1002/ece3.4898</pub-id>
</citation>
</ref>
<ref id="B14">
<label>14</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hern&#xe1;ndez-Verdin</surname> <given-names>E</given-names>
</name>
<name>
<surname>Ganel&#xf3;n-R&#xed;os</surname> <given-names>A</given-names>
</name>
<name>
<surname>Pettet-Ruiz</surname> <given-names>G</given-names>
</name>
<name>
<surname>S&#xe1;nchez-Garza</surname> <given-names>M</given-names>
</name>
<name>
<surname>Reinoso-Reyes</surname> <given-names>J</given-names>
</name>
<name>
<surname>L&#xf3;pez-Revilla</surname> <given-names>R</given-names>
</name>
</person-group>. <article-title>CYP2C9, CYP2D6, G6PD, GCLC, GSTM1 and NAT2 gene polymorphisms and risk of adverse reactions to sulfamethoxazole and ciprofloxacin in San Luis Potos&#xed;, Mexico</article-title>. <source>Meta Gene</source>. (<year>2019</year>) <volume>21</volume>:<elocation-id>100574</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.mgene.2019.100574</pub-id>
</citation>
</ref>
<ref id="B15">
<label>15</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Thomson</surname> <given-names>G</given-names>
</name>
<name>
<surname>Single</surname> <given-names>RM</given-names>
</name>
</person-group>. <article-title>Conditional asymmetric linkage disequilibrium (ALD): extending the bi-allelic r<sup>2</sup> measure</article-title>. <source>Genetics</source>. (<year>2014</year>) <volume>198</volume>:<page-range>321&#x2013;31</page-range>. doi:&#xa0;<pub-id pub-id-type="doi">10.1534/genetics.114.165266</pub-id>
</citation>
</ref>
<ref id="B16">
<label>16</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hedrick</surname> <given-names>PW</given-names>
</name>
</person-group>. <article-title>Gametic disequilibrium measures: proceed with caution</article-title>. <source>Genetics</source>. (<year>1987</year>) <volume>117</volume>:<page-range>331&#x2013;41</page-range>. doi:&#xa0;<pub-id pub-id-type="doi">10.1093/genetics/117.2.331</pub-id>
</citation>
</ref>
<ref id="B17">
<label>17</label>
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Cram&#xe9;r</surname> <given-names>H</given-names>
</name>
</person-group>. <source>Mathematical Methods of Statistics</source>. <publisher-loc>Princeton, NJ</publisher-loc>: <publisher-name>Princeton University Press</publisher-name> (<year>1946</year>). p. <fpage>592</fpage>.</citation>
</ref>
<ref id="B18">
<label>18</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Kulski</surname> <given-names>JK</given-names>
</name>
<name>
<surname>Mawart</surname> <given-names>A</given-names>
</name>
<name>
<surname>Marie</surname> <given-names>K</given-names>
</name>
<name>
<surname>Tay</surname> <given-names>GK</given-names>
</name>
<name>
<surname>AlSafar</surname> <given-names>HS</given-names>
</name>
</person-group>. <article-title>MHC class I polymorphic <italic>Alu</italic> insertion (POALIN) allele and haplotype frequencies in the Arabs of the United Arab Emirates and other world populations</article-title>. <source>Int J Immunogenet</source>. (<year>2019</year>) <volume>46</volume>:<page-range>247&#x2013;62</page-range>. doi:&#xa0;<pub-id pub-id-type="doi">10.1111/iji.12426</pub-id>
</citation>
</ref>
<ref id="B19">
<label>19</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Nunes</surname> <given-names>K</given-names>
</name>
<name>
<surname>Maia</surname> <given-names>MHT</given-names>
</name>
<name>
<surname>Dos Santos</surname> <given-names>EJM</given-names>
</name>
<name>
<surname>Dos Santos</surname> <given-names>SEB</given-names>
</name>
<name>
<surname>Guerreiro</surname> <given-names>JF</given-names>
</name>
<name>
<surname>Petzl-Erler</surname> <given-names>ML</given-names>
</name>
<etal/>
</person-group>. <article-title>How natural selection shapes genetic differentiation in the MHC region: A case study with Native Americans</article-title>. <source>Hum Immunol</source>. (<year>2021</year>) <volume>82</volume>:<page-range>523&#x2013;31</page-range>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.humimm.2021.03.005</pub-id>
</citation>
</ref>
<ref id="B20">
<label>20</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Gragert</surname> <given-names>L</given-names>
</name>
<name>
<surname>Spellman</surname> <given-names>SR</given-names>
</name>
<name>
<surname>Shaw</surname> <given-names>BE</given-names>
</name>
<name>
<surname>Maiers</surname> <given-names>M</given-names>
</name>
</person-group>. <article-title>Unrelated stem cell donor HLA match likelihood in the US registry incorporating HLA-DPB1 permissive mismatching</article-title>. <source>Transplant Cell Ther</source>. (<year>2023</year>) <volume>29</volume>:<page-range>244&#x2013;52</page-range>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.jtct.2022.12.027</pub-id>
</citation>
</ref>
<ref id="B21">
<label>21</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Mack</surname> <given-names>SJ</given-names>
</name>
<name>
<surname>Udell</surname> <given-names>J</given-names>
</name>
<name>
<surname>Cohen</surname> <given-names>F</given-names>
</name>
<name>
<surname>Osoegawa</surname> <given-names>K</given-names>
</name>
<name>
<surname>Hawbecker</surname> <given-names>SK</given-names>
</name>
<name>
<surname>Noonan</surname> <given-names>DA</given-names>
</name>
<etal/>
</person-group>. <article-title>High resolution HLA analysis reveals independent class I haplotypes and amino-acid motifs protective for multiple sclerosis</article-title>. <source>Genes Immun</source>. (<year>2019</year>) <volume>20</volume>:<page-range>308&#x2013;26</page-range>. doi:&#xa0;<pub-id pub-id-type="doi">10.1038/s41435-017-0006-8</pub-id>
</citation>
</ref>
<ref id="B22">
<label>22</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Pacheco</surname> <given-names>MA</given-names>
</name>
<name>
<surname>Schneider</surname> <given-names>KA</given-names>
</name>
<name>
<surname>C&#xe9;spedes</surname> <given-names>N</given-names>
</name>
<name>
<surname>Herrera</surname> <given-names>S</given-names>
</name>
<name>
<surname>Ar&#xe9;valo-Herrera</surname> <given-names>M</given-names>
</name>
<name>
<surname>Escalante</surname> <given-names>AA</given-names>
</name>
</person-group>. <article-title>Limited differentiation among Plasmodium vivax populations from the northwest and to the south Pacific Coast of Colombia: A malaria corridor</article-title>? <source>PLoS Negl Trop Dis</source>. (<year>2019</year>) <volume>13</volume>:<elocation-id>e0007310</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.1371/journal.pntd.0007310</pub-id>
</citation>
</ref>
<ref id="B23">
<label>23</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Pacheco</surname> <given-names>MA</given-names>
</name>
<name>
<surname>Forero-Pe&#xf1;a</surname> <given-names>DA</given-names>
</name>
<name>
<surname>Schneider</surname> <given-names>KA</given-names>
</name>
<name>
<surname>Chavero</surname> <given-names>M</given-names>
</name>
<name>
<surname>Gamardo</surname> <given-names>A</given-names>
</name>
<name>
<surname>Figuera</surname> <given-names>L</given-names>
</name>
<etal/>
</person-group>. <article-title>Malaria in Venezuela: changes in the complexity of infection reflects the increment in transmission intensity</article-title>. <source>Malar J</source>. (<year>2020</year>) <volume>19</volume>:<fpage>176</fpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1186/s12936-020-03247-z</pub-id>
</citation>
</ref>
<ref id="B24">
<label>24</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Marsh</surname> <given-names>SGE</given-names>
</name>
<name>
<surname>Albert</surname> <given-names>ED</given-names>
</name>
<name>
<surname>Bodmer</surname> <given-names>WF</given-names>
</name>
<name>
<surname>Bontrop</surname> <given-names>RE</given-names>
</name>
<name>
<surname>Dupont</surname> <given-names>B</given-names>
</name>
<name>
<surname>Erlich</surname> <given-names>HA</given-names>
</name>
<etal/>
</person-group>. <article-title>Nomenclature for factors of the HLA system, 2010</article-title>. <source>Tissue Antigens</source>. (<year>2010</year>) <volume>75</volume>:<fpage>291</fpage>&#x2013;<lpage>455</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1111/j.1399-0039.2010.01466.x</pub-id>
</citation>
</ref>
<ref id="B25">
<label>25</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Milius</surname> <given-names>RP</given-names>
</name>
<name>
<surname>Mack</surname> <given-names>SJ</given-names>
</name>
<name>
<surname>Hollenbach</surname> <given-names>JA</given-names>
</name>
<name>
<surname>Pollack</surname> <given-names>J</given-names>
</name>
<name>
<surname>Heuer</surname> <given-names>ML</given-names>
</name>
<name>
<surname>Gragert</surname> <given-names>L</given-names>
</name>
<etal/>
</person-group>. <article-title>Genotype List String: a grammar for describing HLA and KIR genotyping results in a text string</article-title>. <source>Tissue Antigens</source>. (<year>2013</year>) <volume>82</volume>:<page-range>106&#x2013;12</page-range>. doi:&#xa0;<pub-id pub-id-type="doi">10.1111/tan.12150</pub-id>
</citation>
</ref>
<ref id="B26">
<label>26</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Mack</surname> <given-names>SJ</given-names>
</name>
<name>
<surname>Schefzyk</surname> <given-names>D</given-names>
</name>
<name>
<surname>Millius</surname> <given-names>RP</given-names>
</name>
<name>
<surname>Maiers</surname> <given-names>M</given-names>
</name>
<name>
<surname>Hollenbach</surname> <given-names>JA</given-names>
</name>
<name>
<surname>Pollack</surname> <given-names>J</given-names>
</name>
<etal/>
</person-group>. <article-title>Genotype List String 1.1: Extending the Genotype List String grammar for describing HLA and Killer-cell Immunoglobulin-like Receptor genotypes</article-title>. <source>HLA</source>. (<year>2023</year>) <volume>102</volume>:<page-range>206&#x2013;12</page-range>. doi:&#xa0;<pub-id pub-id-type="doi">10.1111/tan.15126</pub-id>
</citation>
</ref>
<ref id="B27">
<label>27</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Taylor</surname> <given-names>GM</given-names>
</name>
<name>
<surname>Hussain</surname> <given-names>A</given-names>
</name>
<name>
<surname>Lightfoot</surname> <given-names>TJ</given-names>
</name>
<name>
<surname>Birch</surname> <given-names>JM</given-names>
</name>
<name>
<surname>Eden</surname> <given-names>TOB</given-names>
</name>
<name>
<surname>Greaves</surname> <given-names>MF</given-names>
</name>
</person-group>. <article-title>HLA-associated susceptibility to childhood B-cell precursor ALL: definition and role of HLA-DPB1 supertypes</article-title>. <source>Br J Cancer</source>. (<year>2008</year>) <volume>98</volume>:<page-range>1125&#x2013;31</page-range>. doi:&#xa0;<pub-id pub-id-type="doi">10.1038/sj.bjc.6604257</pub-id>
</citation>
</ref>
<ref id="B28">
<label>28</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Zino</surname> <given-names>E</given-names>
</name>
</person-group>. <article-title>A T-cell epitope encoded by a subset of HLA-DPB1 alleles determines nonpermissive mismatches for hematologic stem cell transplantation</article-title>. <source>Blood</source>. (<year>2003</year>) <volume>103</volume>:<page-range>1417&#x2013;24</page-range>. doi:&#xa0;<pub-id pub-id-type="doi">10.1182/blood-2003-04-1279</pub-id>
</citation>
</ref>
<ref id="B29">
<label>29</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Sizzano</surname> <given-names>F</given-names>
</name>
<name>
<surname>Zito</surname> <given-names>L</given-names>
</name>
<name>
<surname>Crivello</surname> <given-names>P</given-names>
</name>
<name>
<surname>Crocchiolo</surname> <given-names>R</given-names>
</name>
<name>
<surname>Vago</surname> <given-names>L</given-names>
</name>
<name>
<surname>Zino</surname> <given-names>E</given-names>
</name>
<etal/>
</person-group>. <article-title>Significantly higher frequencies of alloreactive CD4+ T cells responding to nonpermissive than to permissive HLA-DPB1 T-cell epitope disparities</article-title>. <source>Blood</source>. (<year>2010</year>) <volume>116</volume>:<page-range>1991&#x2013;2</page-range>. doi:&#xa0;<pub-id pub-id-type="doi">10.1182/blood-2010-05-284687</pub-id>
</citation>
</ref>
<ref id="B30">
<label>30</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Maiers</surname> <given-names>M</given-names>
</name>
<name>
<surname>Hurley</surname> <given-names>CK</given-names>
</name>
<name>
<surname>Perlee</surname> <given-names>L</given-names>
</name>
<name>
<surname>Fernandez-Vina</surname> <given-names>M</given-names>
</name>
<name>
<surname>Baisch</surname> <given-names>J</given-names>
</name>
<name>
<surname>Cook</surname> <given-names>D</given-names>
</name>
<etal/>
</person-group>. <article-title>Maintaining updated DNA-based HLA assignments in the National Marrow Donor Program Bone Marrow Registry</article-title>. <source>Rev Immunogenet</source>. (<year>2000</year>) <volume>2</volume>:<page-range>449&#x2013;60</page-range>.</citation>
</ref>
<ref id="B31">
<label>31</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hurley</surname> <given-names>CK</given-names>
</name>
<name>
<surname>Setterholm</surname> <given-names>M</given-names>
</name>
<name>
<surname>Lau</surname> <given-names>M</given-names>
</name>
<name>
<surname>Pollack</surname> <given-names>MS</given-names>
</name>
<name>
<surname>Noreen</surname> <given-names>H</given-names>
</name>
<name>
<surname>Howard</surname> <given-names>A</given-names>
</name>
<etal/>
</person-group>. <article-title>Hematopoietic stem cell donor registry strategies for assigning search determinants and matching relationships</article-title>. <source>Bone Marrow Transplant</source>. (<year>2004</year>) <volume>33</volume>:<page-range>443&#x2013;50</page-range>. doi:&#xa0;<pub-id pub-id-type="doi">10.1038/sj.bmt.1704365</pub-id>
</citation>
</ref>
<ref id="B32">
<label>32</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Hinsen</surname> <given-names>K</given-names>
</name>
</person-group>. <article-title>Technical debt in computational science</article-title>. <source>Comput Sci Eng</source>. (<year>2015</year>) <volume>17</volume>:<page-range>103&#x2013;7</page-range>. doi:&#xa0;<pub-id pub-id-type="doi">10.1109/MCSE.2015.113</pub-id>
</citation>
</ref>
<ref id="B33">
<label>33</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Chang</surname> <given-names>C-J</given-names>
</name>
<name>
<surname>Osoegawa</surname> <given-names>K</given-names>
</name>
<name>
<surname>Milius</surname> <given-names>RP</given-names>
</name>
<name>
<surname>Maiers</surname> <given-names>M</given-names>
</name>
<name>
<surname>Xiao</surname> <given-names>W</given-names>
</name>
<name>
<surname>Fernandez-Vi&#x148;a</surname> <given-names>M</given-names>
</name>
<etal/>
</person-group>. <article-title>Collection and storage of HLA NGS genotyping data for the 17th International HLA and Immunogenetics Workshop</article-title>. <source>Hum Immunol</source>. (<year>2018</year>) <volume>79</volume>:<fpage>77</fpage>&#x2013;<lpage>86</lpage>. doi:&#xa0;<pub-id pub-id-type="doi">10.1016/j.humimm.2017.12.004</pub-id>
</citation>
</ref>
<ref id="B34">
<label>34</label>
<citation citation-type="web">
<person-group person-group-type="author">
<name>
<surname>Sochat</surname> <given-names>V</given-names>
</name>
</person-group>. <article-title>Remove/numeric, update to python 3.0</article-title> (<year>2017</year>). <publisher-name>GitHub</publisher-name>. Available online at: <uri xlink:href="https://github.com/alexlancaster/pypop/pull/12">https://github.com/alexlancaster/pypop/pull/12</uri> (Accessed <access-date>December 15, 2023</access-date>).</citation>
</ref>
<ref id="B35">
<label>35</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Kurtzer</surname> <given-names>GM</given-names>
</name>
<name>
<surname>Sochat</surname> <given-names>V</given-names>
</name>
<name>
<surname>Bauer</surname> <given-names>MW</given-names>
</name>
</person-group>. <article-title>Singularity: Scientific containers for mobility of compute</article-title>. <source>PLoS One</source>. (<year>2017</year>) <volume>12</volume>:<elocation-id>e0177459</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.1371/journal.pone.0177459</pub-id>
</citation>
</ref>
<ref id="B36">
<label>36</label>
<citation citation-type="web">
<person-group person-group-type="author">
<name>
<surname>Lancaster</surname> <given-names>AK</given-names>
</name>
</person-group>. <article-title>Port PyPop to Numpy</article-title> (<year>2017</year>). <publisher-name>GitHub</publisher-name>. Available online at: <uri xlink:href="https://github.com/alexlancaster/pypop/pull/24">https://github.com/alexlancaster/pypop/pull/24</uri> (Accessed <access-date>December 15, 2023</access-date>).</citation>
</ref>
<ref id="B37">
<label>37</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Rickerby</surname> <given-names>J</given-names>
</name>
<name>
<surname>Jadoul</surname> <given-names>Y</given-names>
</name>
<name>
<surname>Schreiner</surname> <given-names>H</given-names>
</name>
<name>
<surname>Darbois</surname> <given-names>M</given-names>
</name>
<name>
<surname>Bokota</surname> <given-names>G</given-names>
</name>
<name>
<surname>Dower</surname> <given-names>S</given-names>
</name>
<etal/>
</person-group>. <article-title>pypa/cibuildwheel: v2.12.1</article-title>. <source>Zenodo</source> (<year>2023</year>). doi:&#xa0;<pub-id pub-id-type="doi">10.5281/zenodo.7722899</pub-id>
</citation>
</ref>
<ref id="B38">
<label>38</label>
<citation citation-type="book">
<person-group person-group-type="author">
<collab>European Organization For Nuclear Research</collab>
</person-group>. <source>OpenAIRE. Zenodo</source>. <publisher-loc>Geneva, Switzerland</publisher-loc>. (<year>2013</year>). doi:&#xa0;<pub-id pub-id-type="doi">10.25495/7GXK-RD71</pub-id>.</citation>
</ref>
<ref id="B39">
<label>39</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>McKiernan</surname> <given-names>EC</given-names>
</name>
<name>
<surname>Bourne</surname> <given-names>PE</given-names>
</name>
<name>
<surname>Brown</surname> <given-names>CT</given-names>
</name>
<name>
<surname>Buck</surname> <given-names>S</given-names>
</name>
<name>
<surname>Kenall</surname> <given-names>A</given-names>
</name>
<name>
<surname>Lin</surname> <given-names>J</given-names>
</name>
<etal/>
</person-group>. <article-title>How open science helps researchers succeed</article-title>. <source>eLife</source>. (<year>2016</year>) <volume>5</volume>:<elocation-id>e16800</elocation-id>. doi:&#xa0;<pub-id pub-id-type="doi">10.7554/eLife.16800</pub-id>
</citation>
</ref>
<ref id="B40">
<label>40</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lancaster</surname> <given-names>AK</given-names>
</name>
<name>
<surname>Nelson</surname> <given-names>MP</given-names>
</name>
<name>
<surname>Single</surname> <given-names>RM</given-names>
</name>
<name>
<surname>Solberg</surname> <given-names>OD</given-names>
</name>
<name>
<surname>Tsai</surname> <given-names>Y</given-names>
</name>
<name>
<surname>Meyer</surname> <given-names>D</given-names>
</name>
<etal/>
</person-group>. <article-title>PyPop: Python for population genomics</article-title>. <source>Zenodo</source> (<year>2023</year>). doi:&#xa0;<pub-id pub-id-type="doi">10.5281/zenodo.10080667</pub-id>
</citation>
</ref>
<ref id="B41">
<label>41</label>
<citation citation-type="book">
<person-group person-group-type="author">
<name>
<surname>Walsh</surname> <given-names>N</given-names>
</name>
</person-group>. <article-title>DocBook 5: The Definitive Guide: The Official Documentation for DocBook</article-title>. <edition>1st edition</edition>. <person-group person-group-type="editor">
<name>
<surname>Hamilton</surname> <given-names>RL</given-names>
</name>
</person-group>, editor. <publisher-loc>Beijing</publisher-loc>: <publisher-name>Sebastopol: O&#x2019;Reilly Media</publisher-name> (<year>2010</year>). p. <fpage>548</fpage>. Available at: <uri xlink:href="https://tdg.docbook.org/tdg/5.0/docbook">https://tdg.docbook.org/tdg/5.0/docbook</uri>.</citation>
</ref>
<ref id="B42">
<label>42</label>
<citation citation-type="web">
<person-group person-group-type="author">
<collab>reStructuredText</collab>
</person-group>. (<year>2021</year>). Available online at: <uri xlink:href="https://docutils.sourceforge.io/rst.html">https://docutils.sourceforge.io/rst.html</uri> (Accessed <access-date>January 12, 2024</access-date>).</citation>
</ref>
<ref id="B43">
<label>43</label>
<citation citation-type="web">
<person-group person-group-type="author">
<name>
<surname>Brandl</surname> <given-names>G</given-names>
</name>
</person-group>. <article-title>Sphinx: Python Documentation Generator</article-title> (<year>2010</year>). Available online at: <uri xlink:href="https://www.sphinx-doc.org/">https://www.sphinx-doc.org/</uri> (Accessed <access-date>January 17, 2024</access-date>).</citation>
</ref>
<ref id="B44">
<label>44</label>
<citation citation-type="journal">
<person-group person-group-type="author">
<name>
<surname>Lancaster</surname> <given-names>AK</given-names>
</name>
<name>
<surname>Single</surname> <given-names>RM</given-names>
</name>
<name>
<surname>Mack</surname> <given-names>SJ</given-names>
</name>
<name>
<surname>Sochat</surname> <given-names>V</given-names>
</name>
<name>
<surname>Mariani</surname> <given-names>MP</given-names>
</name>
<name>
<surname>Webster</surname> <given-names>GD</given-names>
</name>
</person-group>. <article-title>PyPop: A mature open-source software pipeline for population genomics</article-title>. <source>Zenodo</source> (<year>2024</year>). doi:&#xa0;<pub-id pub-id-type="doi">10.5281/zenodo.10602940</pub-id>
</citation>
</ref>
</ref-list>
</back>
</article>
