PageSourceSearch

https://xin-huang.github.io/software/

html xin-huang.github.io collected 2026-10-03 10:11:41 UTC 32,295 bytes, 713 lines download raw bytes

1
2<!doctype html>
3<html lang="en" class="no-js">
4  <head>
5    
6      <meta charset="utf-8">
7      <meta name="viewport" content="width=device-width,initial-scale=1">
8      
9      
10      
11        <link rel="canonical" href="https://xin-huang.github.io/software/">
12      
13      
14        <link rel="prev" href="../publications/">
15      
16      
17        <link rel="next" href="../development/">
18      
19      
20        
21      
22      
23      <link rel="icon" href="../assets/favicon.png">
24      <meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.6">
25    
26    
27      
28        <title>Selected Software - Xin Huang, PhD</title>
29      
30    
31    
32      <link rel="stylesheet" href="../assets/stylesheets/main.484c7ddc.min.css">
33      
34        
35        <link rel="stylesheet" href="../assets/stylesheets/palette.ab4e12ef.min.css">
36      
37      
38
39
40    
41    
42      
43    
44    
45      
46        
47        
48        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
49        <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
50        <style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
51      
52    
53    
54      <link rel="stylesheet" href="../stylesheets/extra.css">
55    
56    
56<script>__md_scope=new URL("..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
56
57    
58      
59  
60
61
62  
63  
64
65<script id="__analytics">function __md_analytics(){function e(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],e("js",new Date),e("config","G-LKTXJ0SE20"),document.addEventListener("DOMContentLoaded",(function(){document.forms.search&&document.forms.search.query.addEventListener("blur",(function(){this.value&&e("event","search",{search_term:this.value})}));document$.subscribe((function(){var t=document.forms.feedback;if(void 0!==t)for(var a of t.querySelectorAll("[type=submit]"))a.addEventListener("click",(function(a){a.preventDefault();var n=document.location.pathname,d=this.getAttribute("data-md-value");e("event","feedback",{page:n,data:d}),t.firstElementChild.disabled=!0;var r=t.querySelector(".md-feedback__note [data-md-value='"+d+"']");r&&(r.hidden=!1)})),t.hidden=!1})),location$.subscribe((function(t){e("config","G-LKTXJ0SE20",{page_path:t.pathname})}))}));var t=document.createElement("script");t.async=!0,t.src="https://www.googletagmanager.com/gtag/js?id=G-LKTXJ0SE20",document.getElementById("__analytics").insertAdjacentElement("afterEnd",t)}</script>
65
66  
67    
67<script>"undefined"!=typeof __md_analytics&&__md_analytics()</script>
67
68  
69
70    
71    
72  </head>
73  
74  
75    
76    
77      
78    
79    
80    
81    
82    <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="lime" data-md-color-accent="indigo">
83  
84    
85    <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
86    <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
87    <label class="md-overlay" for="__drawer"></label>
88    <div data-md-component="skip">
89      
90        
91        <a href="#selected-software" class="md-skip">
92          Skip to content
93        </a>
94      
95    </div>
96    <div data-md-component="announce">
97      
98        <aside class="md-banner">
99          <div class="md-banner__inner md-grid md-typeset">
100            
101              <button class="md-banner__button md-icon" aria-label="Don't show this again">
102                
103                <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
104              </button>
105            
106            
107<!-- <p style="text-align: center; font-size: 14px; font-family: 'STFangsong', 'FangSong_GB2312', 'FangSong', 'Apple LiSung Light';">霽月難逢,彩雲易散。心比天高,身為下賤。<br>風流靈巧招人怨。壽夭多因毀謗生,多情公子空牽念。</p> -->
108<!-- <p style="text-align: center; font-size: 14px; font-family: 'STFangsong', 'FangSong_GB2312', 'FangSong', 'Apple LiSung Light';">白玉堂前春解舞,東風捲得均勻。蜂團蝶陣亂紛紛,幾曾隨逝水,豈必委芳塵?<br>萬縷千絲終不改,任他隨聚隨分。韶華休笑本無根,好風頻借力,送我上青雲。</p> -->
109<!-- <p class="poem">初度人人綺宴開,我逢初度不勝哀。<br>慈顏一去無消息,忍對南山瀉壽杯。</p> -->
110<!-- <p class="poem">苗逢旱天漸漸衰,幸得天恩降雨來。<br>憂去喜來能變化,求謀諸事遂心懷。</p> -->
111<!-- <p class="poem">勸君耐守舊生涯,把定身心莫聽邪。<br>直待有人輕著力,滿園枯木再開花。</p> -->
112<!-- <p class="poem">爛柯真訣妙通神,一局曾經幾度春。<br>自出洞來無敵手,得饒人處且饒人。</p> -->
113<!-- <p class="poem">半神半聖亦半仙,通儒通道是通賢。<br>腦中玄機用不盡,掌握文武半邊天。</p> -->
114<!-- <p class="poem">自小刺頭深草裡,而今漸覺出蓬蒿。<br>時人不識凌雲木,直待凌雲始道高。</p> -->
115<!-- <p class="poem">相見時難別亦難,東風無力百花殘。春蠶到死絲方盡,蠟炬成灰淚始乾。<br>曉鏡但愁雲鬢改,夜吟應覺月光寒。蓬山此去無多路,青鳥殷勤為探看。</p> -->
116<!-- <p class="poem">極目襄垣道,蕭蕭落葉秋。人猶避騘馬,夢已隔丹丘。<br>比穴看明鏡,同歸想玉樓。餘芳知未歇,孫子在瀛洲。</p> -->
117<!-- <p class="poem">拔山蓋世何為者?三尺青龍不切泥。<br>且向斷崖聊一試,如聞鬼母夜悲啼。</p> -->
118<!-- <p class="poem">白日依山盡,黃河入海流。<br>欲窮千里目,更上一層樓。</p> -->
119<!-- <p class="poem">海上生明月,天涯共此時。<br>情人怨遙夜,竟夕起相思。</p> -->
120<!-- <p class="poem">袖手窮山一少年,何曾有夢到澶淵。<br>英雄正自無人識,蓋世功名却偶然。</p> -->
121<p class="poem">楊家紅拂識英雄,著帽宵奔李衛公。<br>莫道英雄今沒有,誰人看在眼睛中?</p>
122
123          </div>
124          
125            
125<script>var el=document.querySelector("[data-md-component=announce]");if(el){var content=el.querySelector(".md-typeset");__md_hash(content.innerHTML)===__md_get("__announce")&&(el.hidden=!0)}</script>
125
126          
127        </aside>
128      
129    </div>
130    
131    
132      <!--
133  Copyright (c) 2016-2025 Martin Donath <[email protected]>
134
135  Permission is hereby granted, free of charge, to any person obtaining a copy
136  of this software and associated documentation files (the "Software"), to
137  deal in the Software without restriction, including without limitation the
138  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
139  sell copies of the Software, and to permit persons to whom the Software is
140  furnished to do so, subject to the following conditions:
141
142  The above copyright notice and this permission notice shall be included in
143  all copies or substantial portions of the Software.
144
145  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
146  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
147  FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
148  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
149  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
150  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
151  IN THE SOFTWARE.
152-->
153
154<!-- Determine classes -->
155
156
157  
158
159
160<!-- Header -->
161<header class="md-header md-header--shadow" data-md-component="header">
162  <nav
163    class="md-header__inner md-grid"
164    aria-label="Header"
165  >
166
167    <!-- Link to home -->
168    <a
169      href=".."
170      class="md-header__button md-logo"
171      aria-label="Xin Huang, PhD"
172      data-md-component="logo"
173    >
174      
175  <img src="../assets/seal.svg" alt="logo">
176
177    </a>
178
179    <!-- Button to open drawer -->
180    <label class="md-header__button md-icon" for="__drawer">
181      
182      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
183    </label>
184
185    <!-- Header title -->
186    <div class="md-header__title" data-md-component="header-title">
187      <div class="md-header__ellipsis">
188        <div class="md-header__topic">
189          <span class="md-ellipsis">
190            Xin Huang, PhD
191          </span>
192        </div>
193        <div class="md-header__topic" data-md-component="header-topic">
194          <span class="md-ellipsis">
195            
196              Selected Software
197            
198          </span>
199        </div>
200      </div>
201    </div>
202
203    <!-- Color palette toggle -->
204    
205      
206        <form class="md-header__option" data-md-component="palette">
207  
208    
209    
210    
211    <input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="lime" data-md-color-accent="indigo"  aria-label="Switch to dark mode"  type="radio" name="__palette" id="__palette_0">
212    
213      <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
214        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3"/></svg>
215      </label>
216    
217  
218    
219    
220    
221    <input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="yellow" data-md-color-accent="indigo"  aria-label="Switch to light mode"  type="radio" name="__palette" id="__palette_1">
222    
223      <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
224        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 6H7c-3.31 0-6 2.69-6 6s2.69 6 6 6h10c3.31 0 6-2.69 6-6s-2.69-6-6-6m0 10H7c-2.21 0-4-1.79-4-4s1.79-4 4-4h10c2.21 0 4 1.79 4 4s-1.79 4-4 4M7 9c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3"/></svg>
225      </label>
226    
227  
228</form>
229      
230    
231
232    <!-- User preference: color palette -->
233    
234      
234<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
234
235    
236
237    <!-- Site language selector -->
238    
239
240    <!-- Button to open search modal -->
241    
242      
243
244      <!-- Check if search is actually enabled - see https://t.ly/DT_0V -->
245      
246        <label class="md-header__button md-icon" for="__search">
247          
248          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
249        </label>
250
251        <!-- Search interface -->
252        <div class="md-search" data-md-component="search" role="dialog">
253  <label class="md-search__overlay" for="__search"></label>
254  <div class="md-search__inner" role="search">
255    <form class="md-search__form" name="search">
256      <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
257      <label class="md-search__icon md-icon" for="__search">
258        
259        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
260        
261        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
262      </label>
263      <nav class="md-search__options" aria-label="Search">
264        
265        <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
266          
267          <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
268        </button>
269      </nav>
270      
271    </form>
272    <div class="md-search__output">
273      <div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
274        <div class="md-search-result" data-md-component="search-result">
275          <div class="md-search-result__meta">
276            Initializing search
277          </div>
278          <ol class="md-search-result__list" role="presentation"></ol>
279        </div>
280      </div>
281    </div>
282  </div>
283</div>
284      
285    
286
287    <!-- Repository information -->
288    
289      <div class="md-header__source">
290        <!--
291  Copyright (c) 2016-2025 Martin Donath <[email protected]>
292
293  Permission is hereby granted, free of charge, to any person obtaining a copy
294  of this software and associated documentation files (the "Software"), to
295  deal in the Software without restriction, including without limitation the
296  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
297  sell copies of the Software, and to permit persons to whom the Software is
298  furnished to do so, subject to the following conditions:
299
300  The above copyright notice and this permission notice shall be included in
301  all copies or substantial portions of the Software.
302
303  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
304  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
305  FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
306  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
307  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
308  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
309  IN THE SOFTWARE.
310-->
311
312<!-- Repository information -->
313<a
314  href="https://xin-huang.github.io/cv/Xin_Huang_CV.pdf"
315  class="md-source"
316  data-md-component="source"
317>
318  <div class="md-source__icon md-icon">
319    
320    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M6 2a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm0 2h7v5h5v11H6zm2 8v2h8v-2zm0 4v2h5v-2z"/></svg>
321  </div>
322  <div class="md-source__repository">
323    CV
324  </div>
325</a>
326      </div>
327    
328  </nav>
329
330  <!-- Navigation tabs (sticky) -->
331  
332</header>
333    
334    <div class="md-container" data-md-component="container">
335      
336      
337        
338          
339        
340      
341      <main class="md-main" data-md-component="main">
342        <div class="md-main__inner md-grid">
343          
344            
345              
346              <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
347                <div class="md-sidebar__scrollwrap">
348                  <div class="md-sidebar__inner">
349                    
350
351
352
353<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
354  <label class="md-nav__title" for="__drawer">
355    <a href=".." title="Xin Huang, PhD" class="md-nav__button md-logo" aria-label="Xin Huang, PhD" data-md-component="logo">
356      
357  <img src="../assets/seal.svg" alt="logo">
358
359    </a>
360    Xin Huang, PhD
361  </label>
362  
363    <div class="md-nav__source">
364      <!--
365  Copyright (c) 2016-2025 Martin Donath <[email protected]>
366
367  Permission is hereby granted, free of charge, to any person obtaining a copy
368  of this software and associated documentation files (the "Software"), to
369  deal in the Software without restriction, including without limitation the
370  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
371  sell copies of the Software, and to permit persons to whom the Software is
372  furnished to do so, subject to the following conditions:
373
374  The above copyright notice and this permission notice shall be included in
375  all copies or substantial portions of the Software.
376
377  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
378  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
379  FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
380  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
381  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
382  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
383  IN THE SOFTWARE.
384-->
385
386<!-- Repository information -->
387<a
388  href="https://xin-huang.github.io/cv/Xin_Huang_CV.pdf"
389  class="md-source"
390  data-md-component="source"
391>
392  <div class="md-source__icon md-icon">
393    
394    <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
394<path d="M6 2a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8l-6-6zm0 2h7v5h5v11H6zm2 8v2h8v-2zm0 4v2h5v-2z"/></svg>
395  </div>
396  <div class="md-source__repository">
397    CV
398  </div>
399</a>
400    </div>
401  
402  <ul class="md-nav__list" data-md-scrollfix>
403    
404      
405      
406  
407  
408  
409  
410    <li class="md-nav__item">
411      <a href=".." class="md-nav__link">
412        
413  
414  
415  <span class="md-ellipsis">
416    
417  
418    About
419  
420
421    
422  </span>
423  
424  
425
426      </a>
427    </li>
428  
429
430    
431      
432      
433  
434  
435  
436  
437    <li class="md-nav__item">
438      <a href="../publications/" class="md-nav__link">
439        
440  
441  
442  <span class="md-ellipsis">
443    
444  
445    Selected Publications
446  
447
448    
449  </span>
450  
451  
452
453      </a>
454    </li>
455  
456
457    
458      
459      
460  
461  
462    
463  
464  
465  
466    <li class="md-nav__item md-nav__item--active">
467      
468      <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
469      
470      
471        
472      
473      
474      <a href="./" class="md-nav__link md-nav__link--active">
475        
476  
477  
478  <span class="md-ellipsis">
479    
480  
481    Selected Software
482  
483
484    
485  </span>
486  
487  
488
489      </a>
490      
491    </li>
492  
493
494    
495      
496      
497  
498  
499  
500  
501    <li class="md-nav__item">
502      <a href="../development/" class="md-nav__link">
503        
504  
505  
506  <span class="md-ellipsis">
507    
508  
509    Development Guideline
510  
511
512    
513  </span>
514  
515  
516
517      </a>
518    </li>
519  
520
521    
522  </ul>
523</nav>
524                  </div>
525                </div>
526              </div>
527            
528            
529              
530              <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
531                <div class="md-sidebar__scrollwrap">
532                  <div class="md-sidebar__inner">
533                    
534
535<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
536  
537  
538  
539    
540  
541  
542</nav>
543                  </div>
544                </div>
545              </div>
546            
547          
548          
549            <div class="md-content" data-md-component="content">
550              
551              <article class="md-content__inner md-typeset">
552                
553                  
554
555
556
557<h1 id="selected-software">Selected Software</h1>
558<table class="no-borders">
559  <tr>
560    <td><strong>•</strong> <a href="https://github.com/xin-huang/dadi-cli" target="_blank">dadi-cli</a>: Automated and Distributed Population Genetic Model Inference from Allele Frequency Spectra</td>
561    <td align="right"><a href="https://dadi-cli.readthedocs.io/en/latest/?badge=latest" target="_blank"><img alt="dadi-cli-manual" src="https://img.shields.io/badge/Manual-red?style=for-the-badge"></a></td>
562  </tr>
563  <tr>
564    <td><strong>•</strong> <a href="https://github.com/xin-huang/sstar" target="_blank">sstar</a>: Detecting Archaic Introgression from Population Genetic Data with <i>S</i>*</td>
565    <td align="right"><a href="https://xin-huang.github.io/sstar" target="_blank"><img alt="sstar-manual" src="https://img.shields.io/badge/Manual-orange?style=for-the-badge"></a></td>
566  </tr>
567  <tr>
568    <td><strong>•</strong> <a href="https://github.com/xin-huang/sai" target="_blank">SAI</a>: Statistics for Adaptive Introgression</td>
569    <td align="right"><a href="https://xin-huang.github.io/sai" target="_blank"><img alt="sai-manual" src="https://img.shields.io/badge/Manual-yellow?style=for-the-badge"></a></td>
570  </tr>
571  <tr>
572    <td><strong>•</strong> <a href="https://github.com/xin-huang/selscape" target="_blank">selscape</a>: Snakemake Workflow for Investigating Genomic Landscapes of Natural Selection</td>
573    <td align="right"><a href="https://xin-huang.github.io/selscape" target="_blank"><img alt="selscape-manual" src="https://img.shields.io/badge/Manual-green?style=for-the-badge"></a></td>
574  </tr>
575  <tr>
576    <td><strong>•</strong> <a href="https://github.com/xin-huang/gaishi" target="_blank">GAISHI</a>: Genomic Analysis of Introgressed-Site and -Haplotype Identification</td>
577    <td align="right"><a href="https://xin-huang.github.io/gaishi" target="_blank"><img alt="gaishi-manual" src="https://img.shields.io/badge/Manual-blue?style=for-the-badge"></a></td>
578  </tr>
579</table>
580
581
582
583
584
585
586
587
588
589  
590
591
592
593
594                
595              </article>
596            </div>
597          
598          
599<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
599
600        </div>
601        
602      </main>
603      
604        <footer class="md-footer">
605  
606  <div class="md-footer-meta md-typeset">
607    <div class="md-footer-meta__inner md-grid">
608      <div class="md-copyright">
609  
610    <div class="md-copyright__highlight">
611      Copyright &copy; 2017–2026 Xin Huang
612    </div>
613  
614  
615    Made with
616    <a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
617      Material for MkDocs
618    </a>
619  
620</div>
621      
622        
623<div class="md-social">
624  
625    
626    
627    
628    
629      
630      
631    
632    <a href="https://orcid.org/0000-0002-9918-9602" target="_blank" rel="noopener" title="orcid.org" class="md-social__link">
633      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 0C5.372 0 0 5.372 0 12s5.372 12 12 12 12-5.372 12-12S18.628 0 12 0M7.369 4.378c.525 0 .947.431.947.947s-.422.947-.947.947a.95.95 0 0 1-.947-.947c0-.525.422-.947.947-.947m-.722 3.038h1.444v10.041H6.647zm3.562 0h3.9c3.712 0 5.344 2.653 5.344 5.025 0 2.578-2.016 5.025-5.325 5.025h-3.919zm1.444 1.303v7.444h2.297c3.272 0 4.022-2.484 4.022-3.722 0-2.016-1.284-3.722-4.097-3.722z"/></svg>
634    </a>
635  
636    
637    
638    
639    
640      
641      
642    
643    <a href="https://scholar.google.com/citations?hl=en&user=U_jbftIAAAAJ&view_op=list_works&sortby=pubdate" target="_blank" rel="noopener" title="scholar.google.com" class="md-social__link">
644      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M5.242 13.769 0 9.5 12 0l12 9.5-5.242 4.269C17.548 11.249 14.978 9.5 12 9.5c-2.977 0-5.548 1.748-6.758 4.269M12 10a7 7 0 1 0 0 14 7 7 0 0 0 0-14"/></svg>
645    </a>
646  
647    
648    
649    
650    
651      
652      
653    
654    <a href="https://www.researchgate.net/profile/Xin-Huang-26" target="_blank" rel="noopener" title="www.researchgate.net" class="md-social__link">
655      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19.586 0q-1.226.001-2.073.565-.846.565-1.213 1.68a3 3 0 0 0-.112.437 8 8 0 0 0-.078.53 9 9 0 0 0-.05.727q-.014.423-.013 1.016a31.121 31.123 0 0 0 .014 1.017 9 9 0 0 0 .05.727 8 8 0 0 0 .077.53h-.005a3 3 0 0 0 .113.438q.368 1.114 1.214 1.68.847.564 2.075.564c.8 0 1.536-.213 2.105-.603.57-.39.94-.916 1.175-1.65.076-.235.135-.558.177-.93a11 11 0 0 0 .043-1.207v-.82q0-.142-.14-.142h-3.064q-.14 0-.14.141v.956q0 .14.14.14h1.666q.084.001.084.086c0 .36 0 .62-.036.865-.038.244-.1.447-.147.606-.108.385-.348.664-.638.876s-.738.35-1.227.35c-.545 0-.901-.15-1.21-.353-.306-.203-.517-.454-.67-.915a3.1 3.1 0 0 1-.147-.762 17.366 17.367 0 0 1-.034-.656q-.015-.39-.014-.939a26.401 26.403 0 0 1 .014-.938 16 16 0 0 1 .035-.656 3.2 3.2 0 0 1 .148-.76 1.9 1.9 0 0 1 .742-1.01c.344-.244.593-.352 1.137-.352.508 0 .815.096 1.144.303.33.207.528.492.764.925q.069.141.198.07l1.044-.43q.113-.072.042-.199a3.6 3.6 0 0 0-.466-.742 3 3 0 0 0-.679-.607 3.3 3.3 0 0 0-.903-.41A4 4 0 0 0 19.586 0M8.217 5.836c-1.69 0-3.036.086-4.297.086-1.146 0-2.291 0-3.007-.029v.831l1.088.2c.744.144 1.174.488 1.174 2.264v11.288c0 1.777-.43 2.12-1.174 2.263l-1.088.2v.832c.773-.029 2.12-.086 3.465-.086 1.29 0 2.951.057 3.667.086v-.831l-1.49-.2c-.773-.115-1.174-.487-1.174-2.264v-4.784c.688.057 1.29.057 2.206.057 1.748 3.123 3.41 5.472 4.355 6.56.86 1.032 2.177 1.691 3.839 1.691.487 0 1.003-.086 1.318-.23v-.744c-1.031 0-2.063-.716-2.808-1.518-1.26-1.376-2.95-3.582-4.355-6.074 2.32-.545 4.04-2.722 4.04-4.9 0-3.208-2.492-4.698-5.758-4.698zm-.515 1.29c2.406 0 3.839 1.26 3.839 3.552 0 2.263-1.547 3.782-4.097 3.782-.974 0-1.404-.03-2.063-.086v-7.19c.66-.059 1.547-.059 2.32-.059z"/></svg>
656    </a>
657  
658    
659    
660    
661    
662      
663      
664    
665    <a href="https://github.com/xin-huang" target="_blank" rel="noopener" title="github.com" class="md-social__link">
666      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12"/></svg>
667    </a>
668  
669    
670    
671    
672    
673      
674      
675    
676    <a href="https://huggingface.co/xin-huang" target="_blank" rel="noopener" title="huggingface.co" class="md-social__link">
677      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
677<path d="M12.025 1.13c-5.77 0-10.449 4.647-10.449 10.378 0 1.112.178 2.181.503 3.185.064-.222.203-.444.416-.577a.96.96 0 0 1 .524-.15c.293 0 .584.124.84.284.278.173.48.408.71.694.226.282.458.611.684.951v-.014c.017-.324.106-.622.264-.874s.403-.487.762-.543c.3-.047.596.06.787.203s.31.313.4.467c.15.257.212.468.233.542.01.026.653 1.552 1.657 2.54.616.605 1.01 1.223 1.082 1.912.055.537-.096 1.059-.38 1.572.637.121 1.294.187 1.967.187.657 0 1.298-.063 1.921-.178-.287-.517-.44-1.041-.384-1.581.07-.69.465-1.307 1.081-1.913 1.004-.987 1.647-2.513 1.657-2.539.021-.074.083-.285.233-.542.09-.154.208-.323.4-.467a1.08 1.08 0 0 1 .787-.203c.359.056.604.29.762.543s.247.55.265.874v.015c.225-.34.457-.67.683-.952.23-.286.432-.52.71-.694.257-.16.547-.284.84-.285a.97.97 0 0 1 .524.151c.228.143.373.388.43.625l.006.04a10.3 10.3 0 0 0 .534-3.273c0-5.731-4.678-10.378-10.449-10.378M8.327 6.583a1.5 1.5 0 0 1 .713.174 1.487 1.487 0 0 1 .617 2.013c-.183.343-.762-.214-1.102-.094-.38.134-.532.914-.917.71a1.487 1.487 0 0 1 .69-2.803m7.486 0a1.487 1.487 0 0 1 .689 2.803c-.385.204-.536-.576-.916-.71-.34-.12-.92.437-1.103.094a1.487 1.487 0 0 1 .617-2.013 1.5 1.5 0 0 1 .713-.174m-10.68 1.55a.96.96 0 1 1 0 1.921.96.96 0 0 1 0-1.92m13.838 0a.96.96 0 1 1 0 1.92.96.96 0 0 1 0-1.92M8.489 11.458c.588.01 1.965 1.157 3.572 1.164 1.607-.007 2.984-1.155 3.572-1.164.196-.003.305.12.305.454 0 .886-.424 2.328-1.563 3.202-.22-.756-1.396-1.366-1.63-1.32q-.011.001-.02.006l-.044.026-.01.008-.03.024q-.018.017-.035.036l-.032.04a1 1 0 0 0-.058.09l-.014.025q-.049.088-.11.19a1 1 0 0 1-.083.116 1.2 1.2 0 0 1-.173.18q-.035.029-.075.058a1.3 1.3 0 0 1-.251-.243 1 1 0 0 1-.076-.107c-.124-.193-.177-.363-.337-.444-.034-.016-.104-.008-.2.022q-.094.03-.216.087-.06.028-.125.063l-.13.074q-.067.04-.136.086a3 3 0 0 0-.135.096 3 3 0 0 0-.26.219 2 2 0 0 0-.12.121 2 2 0 0 0-.106.128l-.002.002a2 2 0 0 0-.09.132l-.001.001a1.2 1.2 0 0 0-.105.212q-.013.036-.024.073c-1.139-.875-1.563-2.317-1.563-3.203 0-.334.109-.457.305-.454m.836 10.354c.824-1.19.766-2.082-.365-3.194-1.13-1.112-1.789-2.738-1.789-2.738s-.246-.945-.806-.858-.97 1.499.202 2.362c1.173.864-.233 1.45-.685.64-.45-.812-1.683-2.896-2.322-3.295s-1.089-.175-.938.647 2.822 2.813 2.562 3.244-1.176-.506-1.176-.506-2.866-2.567-3.49-1.898.473 1.23 2.037 2.16c1.564.932 1.686 1.178 1.464 1.53s-3.675-2.511-4-1.297c-.323 1.214 3.524 1.567 3.287 2.405-.238.839-2.71-1.587-3.216-.642-.506.946 3.49 2.056 3.522 2.064 1.29.33 4.568 1.028 5.713-.624m5.349 0c-.824-1.19-.766-2.082.365-3.194 1.13-1.112 1.789-2.738 1.789-2.738s.246-.945.806-.858.97 1.499-.202 2.362c-1.173.864.233 1.45.685.64.451-.812 1.683-2.896 2.322-3.295s1.089-.175.938.647-2.822 2.813-2.562 3.244 1.176-.506 1.176-.506 2.866-2.567 3.49-1.898-.473 1.23-2.037 2.16c-1.564.932-1.686 1.178-1.464 1.53s3.675-2.511 4-1.297c.323 1.214-3.524 1.567-3.287 2.405.238.839 2.71-1.587 3.216-.642.506.946-3.49 2.056-3.522 2.064-1.29.33-4.568 1.028-5.713-.624"/></svg>
678    </a>
679  
680    
681    
682    
683    
684      
685      
686    
687    <a href="https://pypi.org/user/xin-huang" target="_blank" rel="noopener" title="pypi.org" class="md-social__link">
688      <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m14.25.18.9.2.73.26.59.3.45.32.34.34.25.34.16.33.1.3.04.26.02.2-.01.13V8.5l-.05.63-.13.55-.21.46-.26.38-.3.31-.33.25-.35.19-.35.14-.33.1-.3.07-.26.04-.21.02H8.77l-.69.05-.59.14-.5.22-.41.27-.33.32-.27.35-.2.36-.15.37-.1.35-.07.32-.04.27-.02.21v3.06H3.17l-.21-.03-.28-.07-.32-.12-.35-.18-.36-.26-.36-.36-.35-.46-.32-.59-.28-.73-.21-.88-.14-1.05-.05-1.23.06-1.22.16-1.04.24-.87.32-.71.36-.57.4-.44.42-.33.42-.24.4-.16.36-.1.32-.05.24-.01h.16l.06.01h8.16v-.83H6.18l-.01-2.75-.02-.37.05-.34.11-.31.17-.28.25-.26.31-.23.38-.2.44-.18.51-.15.58-.12.64-.1.71-.06.77-.04.84-.02 1.27.05zm-6.3 1.98-.23.33-.08.41.08.41.23.34.33.22.41.09.41-.09.33-.22.23-.34.08-.41-.08-.41-.23-.33-.33-.22-.41-.09-.41.09zm13.09 3.95.28.06.32.12.35.18.36.27.36.35.35.47.32.59.28.73.21.88.14 1.04.05 1.23-.06 1.23-.16 1.04-.24.86-.32.71-.36.57-.4.45-.42.33-.42.24-.4.16-.36.09-.32.05-.24.02-.16-.01h-8.22v.82h5.84l.01 2.76.02.36-.05.34-.11.31-.17.29-.25.25-.31.24-.38.2-.44.17-.51.15-.58.13-.64.09-.71.07-.77.04-.84.01-1.27-.04-1.07-.14-.9-.2-.73-.25-.59-.3-.45-.33-.34-.34-.25-.34-.16-.33-.1-.3-.04-.25-.02-.2.01-.13v-5.34l.05-.64.13-.54.21-.46.26-.38.3-.32.33-.24.35-.2.35-.14.33-.1.3-.06.26-.04.21-.02.13-.01h5.84l.69-.05.59-.14.5-.21.41-.28.33-.32.27-.35.2-.36.15-.36.1-.35.07-.32.04-.28.02-.21V6.07h2.09l.14.01zm-6.47 14.25-.23.33-.08.41.08.41.23.33.33.23.41.08.41-.08.33-.23.23-.33.08-.41-.08-.41-.23-.33-.33-.23-.41-.08-.41.08z"/></svg>
689    </a>
690  
691</div>
692      
693    </div>
694  </div>
695</footer>
696      
697    </div>
698    <div class="md-dialog" data-md-component="dialog">
699      <div class="md-dialog__inner md-typeset"></div>
700    </div>
701    
702    
703    
704      
705      
706      
706<script id="__config" type="application/json">{"annotate": null, "base": "..", "features": ["announce.dismiss", "content.tooltips"], "search": "../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
706
707    
708    
709      
709<script src="../assets/javascripts/bundle.79ae519e.min.js"></script>
709
710      
711    
712  </body>
713</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.