<?xml version="1.0" encoding="UTF-8"?>
<rss  xmlns:atom="http://www.w3.org/2005/Atom" 
      xmlns:media="http://search.yahoo.com/mrss/" 
      xmlns:content="http://purl.org/rss/1.0/modules/content/" 
      xmlns:dc="http://purl.org/dc/elements/1.1/" 
      version="2.0">
<channel>
<title>Reasoning</title>
<link>https://shixiangwang.github.io/</link>
<atom:link href="https://shixiangwang.github.io/index.xml" rel="self" type="application/rss+xml"/>
<description>Reasoning is a blog dedicated to exploring the intersection of data science, bioinformatics, and personal insights.</description>
<generator>quarto-1.5.57</generator>
<lastBuildDate>Sat, 31 Jan 2026 16:00:00 GMT</lastBuildDate>
<item>
  <title>random</title>
  <dc:creator>Shixiang Wang</dc:creator>
  <link>https://shixiangwang.github.io/posts/2026-02-01-random/</link>
  <description><![CDATA[ 





<p>互动促进选择，选择决定下一步状态和命运。万物如此，生命亦如此。是否这就是自然的最普适性规律？也许，宇宙的起源，不是一个“奇点”，而是两个偶然“奇点”互作的必然？</p>



 ]]></description>
  <category>journal</category>
  <guid>https://shixiangwang.github.io/posts/2026-02-01-random/</guid>
  <pubDate>Sat, 31 Jan 2026 16:00:00 GMT</pubDate>
</item>
<item>
  <title>random</title>
  <dc:creator>Shixiang Wang</dc:creator>
  <link>https://shixiangwang.github.io/posts/2026-01-10-random/</link>
  <description><![CDATA[ 





<p>昨天用AI生成音乐，让AI以一首之前写的小诗改编，再去生成，简单一两轮对话，十分钟就生成了一首我个人听起来不错的歌。实在是太惊艳了。感觉2026年AI会在它触手能及，工业界盈利和兴趣能及的所有行业和生活场景中有大的突破，像水电一样嵌入人类社会。在科学方面，虽然比不上日常生活场景，私以为也会有类似的突破和规模效应，可能自己科研大部分工作被取代的可能性在未来两三年内很高，三五年普通研究人员指挥智能体和机器人进行计算实证研究的课题会变得可行可用。</p>
<p>AI生成音乐《我们这座城市》：</p>
<p><a href="https://i.y.qq.com/v8/playsong.html?songid=632785621#webchat_redirect" class="uri">https://i.y.qq.com/v8/playsong.html?songid=632785621#webchat_redirect</a></p>
<p>阳光混着氧气填满这座城</p>
<p>和世界上千万座城没什么不同</p>
<p>看得见的光缠着看不见的空</p>
<p>喂饱了城里人潮的梦</p>
<p>百万千万数字背后藏着谁的痛</p>
<p>我们像蚂蚁筑着高楼的缝</p>
<p>也像蚂蚁忙着却像过客的风</p>
<p>我们单纯地想活着就像</p>
<p>想在黑暗甬道找到下一扇窗</p>
<p>可还是跟着路牌往前闯</p>
<p>不由自主被人潮推上那节车厢</p>
<p>毫无畏惧开往下一个黑地方</p>
<p>前进啊像列车擦着铁轨响</p>
<p>我们和城市撞啊撞融啊融</p>
<p>到最后分不清它是青春还是我们的样</p>
<p>霓虹混着尘埃落满这条路</p>
<p>和地图上千万条路没什么出路</p>
<p>握得住的票根缠着握不住的苦</p>
<p>撑着日子一天天重复</p>
<p>早班晚班钟摆背后藏着谁的孤独</p>
<p>我们像齿轮咬着明天的雾</p>
<p>也像齿轮转着却像停摆的钟鼓</p>
<p>我们用力地想活着就像</p>
<p>想在茫茫人海抓住一根稻草</p>
<p>可还是跟着人群往前跑</p>
<p>身不由己被时间卷进那座人潮</p>
<p>毫无犹豫挤向下一个老地方</p>
<p>坚持啊像陀螺转着不肯投降</p>
<p>我们和城市磨啊磨耗啊耗</p>
<p>到最后才发现它是伤疤也是我们的家</p>
<p>我们用青春砌着城市的墙</p>
<p>城市用回忆埋着我们的伤</p>
<p>我们用梦想换着三餐的汤</p>
<p>城市用灯火照着我们的慌</p>
<p>毫无畏惧开往下一个黑地方</p>
<p>前进啊像列车擦着铁轨响</p>
<p>我们和城市撞啊撞融啊融</p>
<p>到最后分不清它是青春还是我们的样</p>
<p>毫无犹豫挤向下一个老地方</p>
<p>坚持啊像陀螺转着不肯投降</p>
<p>我们和城市磨啊磨耗啊耗</p>
<p>到最后才发现它是伤疤也是我们的家</p>



 ]]></description>
  <category>journal</category>
  <category>AI</category>
  <guid>https://shixiangwang.github.io/posts/2026-01-10-random/</guid>
  <pubDate>Fri, 09 Jan 2026 16:00:00 GMT</pubDate>
</item>
<item>
  <title>如何选择一个好的科学问题</title>
  <dc:creator>Shixiang Wang</dc:creator>
  <link>https://shixiangwang.github.io/posts/2025-12-31-how-to-choose-a-good-scientific-problem/</link>
  <description><![CDATA[ 





<blockquote class="blockquote">
<p>文献：<a href="https://www.sciencedirect.com/science/article/pii/S1097276509006418" class="uri">https://www.sciencedirect.com/science/article/pii/S1097276509006418</a></p>
</blockquote>
<p>这篇文章由以色列系统生物学家Uri Alon撰写，围绕“如何选择好的科学问题”展开，结合个人经验与哲学思考，提出了多维度的指导原则，旨在帮助科学家（尤其是学生和青年研究者）更理性、更有意义地选择研究问题，同时强调科研环境的人文关怀与自我表达的重要性。以下是核心内容的详细总结：</p>
<section id="一核心理念实验室是培育性环境" class="level3">
<h3 class="anchored" data-anchor-id="一核心理念实验室是培育性环境"><strong>一、核心理念：实验室是“培育性环境”</strong></h3>
<p>传统观念中，实验室的目标常被默认为“发表高质量论文以获得职位和 tenure”，但作者提出更根本的目标：<strong>实验室应是一个培育性环境，旨在最大化学生作为科学家和人的潜力</strong>。这一价值观指导实验室的所有决策（如氛围、假期安排、问题选择等），强调通过选择问题促进成长和自我驱动的研究，而非仅追求短期成果。</p>
</section>
<section id="二选择问题的二维框架可行性-vs.-兴趣" class="level3">
<h3 class="anchored" data-anchor-id="二选择问题的二维框架可行性-vs.-兴趣"><strong>二、选择问题的二维框架：可行性 vs.&nbsp;兴趣</strong></h3>
<p>作者提出用二维图（图1）评估科学问题，两个核心维度为：</p>
<ol type="1">
<li><strong>可行性</strong>：完成问题所需的时间、技能匹配度及实验室技术条件。需注意“纸上容易的问题实际可能很难，纸上难的问题几乎不可能”。<br>
</li>
<li><strong>兴趣</strong>：问题对知识增量的贡献（即“远离已知领域的程度”）。科学的价值在于探索未知，因此兴趣反映问题的潜在认知突破。</li>
</ol>
<p><img src="https://ars.els-cdn.com/content/image/1-s2.0-S1097276509006418-gr1.jpg" class="img-fluid"></p>
<section id="问题分类与优化原则" class="level4">
<h4 class="anchored" data-anchor-id="问题分类与优化原则">问题分类与优化原则</h4>
<ul>
<li><strong>低垂果实（Low-hanging fruit）</strong>：容易但兴趣低的问题（当前研究常见）。<br>
</li>
<li><strong>高难度低兴趣</strong>：因“难=好”的误区导致的问题（应避免）。<br>
</li>
<li><strong>重大挑战（Grand challenges）</strong>：困难但有高认知潜力的“大问题”（适合长期投入）。<br>
</li>
<li><strong>理想区域</strong>：右上象限（可行且高兴趣），能显著扩展知识。</li>
</ul>
<p><strong>帕累托前沿（Pareto front）</strong>：若问题A在两个维度均优于B，则淘汰B；最终保留的是“无问题在两方面均更优”的前沿问题。选择时需根据研究者阶段权衡两轴：</p>
<ul>
<li>研究生初期：选右下（易+中等兴趣），快速获得正反馈以建立信心；<br>
</li>
<li>研究生后期/博后：向兴趣轴移动（更高认知价值）；<br>
</li>
<li>新PI：需选择可分解为多个子问题的“重大挑战”，兼顾长期领域深耕与学生培养。</li>
</ul>
</section>
</section>
<section id="三关键原则花时间选择三个月规则" class="level3">
<h3 class="anchored" data-anchor-id="三关键原则花时间选择三个月规则"><strong>三、关键原则：花时间选择（“三个月规则”）</strong></h3>
<p>常见错误是“快速选择第一个想到的项目”，但科研项目常需数年，仓促选择易导致后续挫败。<strong>作者的实验室规则</strong>：新学生/博后需3个月不承诺具体问题，期间阅读、讨论、规划，专注于“存在状态”而非“行动”；3个月后庆祝并启动研究。尽管资金压力或截止日期可能阻碍此过程，但花时间选择能节省未来数月甚至数年的试错成本。</p>
</section>
<section id="四兴趣维度的主观性倾听内在声音" class="level3">
<h3 class="anchored" data-anchor-id="四兴趣维度的主观性倾听内在声音"><strong>四、兴趣维度的主观性：倾听“内在声音”</strong></h3>
<p>兴趣是<strong>主观且个人的</strong>，但易被外界（会议、同事、期刊偏好）的“大声”干扰，掩盖内心“微弱”的真实兴趣。作者提出强化内在声音的方法：</p>
<ul>
<li><strong>假设性提问</strong>：“如果我是地球唯一的人，会研究哪个问题？”诚实回答可减少妥协。<br>
</li>
<li><strong>反复出现的想法</strong>：数月/数年间反复浮现的问题，比近期灵感更可能是好项目的基础。<br>
</li>
<li><strong>描述研究的感受</strong>：向他人解释项目时的情绪（兴奋vs.勉强）反映真实兴趣。</li>
</ul>
<p><strong>内在兴趣的价值</strong>：自我激励的研究更易坚持，且“越让自己感兴趣，越可能吸引受众”。</p>
</section>
<section id="五自我表达问题的本质是个人视角的投射" class="level3">
<h3 class="anchored" data-anchor-id="五自我表达问题的本质是个人视角的投射"><strong>五、自我表达：问题的本质是个人视角的投射</strong></h3>
<p>研究者感兴趣的问题是其<strong>个人过滤器（感知世界的方式）的表达</strong>，关联其价值观（对美、真、善的判断）。例如，有人被视觉美学驱动，有人热衷颠覆常识，有人偏好基础理解或应用。导师可通过倾听学生的生活与科学偏好（如“何时决定成为科学家”“欣赏的科学工作”），识别其价值模式，帮助选择能实现<strong>自我表达</strong>的项目——此类工作更具活力、个人意义，也更可能发现深刻洞见。</p>
</section>
<section id="六研究的两种心智模式线性目标-vs.-培育性探索" class="level3">
<h3 class="anchored" data-anchor-id="六研究的两种心智模式线性目标-vs.-培育性探索"><strong>六、研究的两种心智模式：线性目标 vs.&nbsp;培育性探索</strong></h3>
<ol type="1">
<li><strong>线性目标模式</strong>（常见于论文写作逻辑）：从问题A直线到答案B，将学生视为“达成目标的工具”。此模式下，实验失败、学生情绪低落等“偏离路径”会引发认知失调（因现实与预期不符），导致压力。<br>
</li>
<li><strong>培育性探索模式</strong>（更符合实际研究）：研究路径常迂回、循环，进入“云团（cloud）”阶段（假设崩溃、实验失效、混乱）。此时可能发现新问题C（比B更有趣/可行），转而探索C。此模式视“偏离”为科研固有部分，导师需支持学生穿越“云团”，认可勇气与开放的重要性（探索未知需勇气，接受意外需开放）。</li>
</ol>
<p><img src="https://ars.els-cdn.com/content/image/1-s2.0-S1097276509006418-gr2.jpg" class="img-fluid"></p>
</section>
<section id="总结" class="level3">
<h3 class="anchored" data-anchor-id="总结"><strong>总结</strong></h3>
<p>选择好问题的核心是：<strong>花时间（三个月规则）在可行性与个人兴趣的前沿上，找到能实现自我表达的问题</strong>。实验室应作为培育性环境，支持研究者倾听内在声音，接纳科研的不确定性，将探索过程本身视为成长与创造的一部分。好的问题不仅推动知识进步，更能让科研工作充满个人意义与持久动力。</p>


</section>

 ]]></description>
  <category>academic</category>
  <guid>https://shixiangwang.github.io/posts/2025-12-31-how-to-choose-a-good-scientific-problem/</guid>
  <pubDate>Tue, 30 Dec 2025 16:00:00 GMT</pubDate>
</item>
<item>
  <title>random</title>
  <dc:creator>Shixiang Wang</dc:creator>
  <link>https://shixiangwang.github.io/posts/2025-12-29-random/</link>
  <description><![CDATA[ 





<p>数学是描述，物理化学是观察，编程是模拟。</p>



 ]]></description>
  <category>journal</category>
  <guid>https://shixiangwang.github.io/posts/2025-12-29-random/</guid>
  <pubDate>Sun, 28 Dec 2025 16:00:00 GMT</pubDate>
</item>
<item>
  <title>Terminal IDE Fresh</title>
  <dc:creator>Shixiang Wang</dc:creator>
  <link>https://shixiangwang.github.io/posts/2025-12-29-fresh-terminal-ide/</link>
  <description><![CDATA[ 





<p><a href="https://sinelaw.github.io/fresh/">Fresh</a> (GitHub: <a href="https://github.com/sinelaw/fresh" class="uri">https://github.com/sinelaw/fresh</a>) 将 VS Code 和 Sublime Text 等编辑器的直观、传统的用户界面体验带入终端。</p>
<p>对于习惯使用模态、高度专业化的操作流程的高级用户来说，像 Emacs 和 Vim 这样的老牌编辑器，以及新出现的 Neovim 和 Helix 等编辑器都非常优秀。但它们对于习惯标准 GUI 交互的用户来说，通常学习曲线较为陡峭。Fresh 是为那些希望获得直观、非模态体验的开发者而设计的，无需牺牲命令行的速度和可移植性。键盘快捷键、鼠标支持、菜单、命令面板等所有功能都设计为对大多数现代用户来说非常熟悉。</p>
<p><img src="https://sinelaw.github.io/fresh/docs/assets/hero.png" class="img-fluid"></p>
<p><img src="https://github.com/sinelaw/fresh/raw/master/docs/screenshot1.png" class="img-fluid"></p>
<p><img src="https://github.com/sinelaw/fresh/raw/master/docs/screenshot2.png" class="img-fluid"></p>
<p><img src="https://github.com/sinelaw/fresh/raw/master/docs/screenshot3.png" class="img-fluid"></p>
<p>安装：</p>
<pre><code>curl https://ghfast.top/https://raw.githubusercontent.com/sinelaw/fresh/refs/heads/master/scripts/install.sh | sh</code></pre>
<blockquote class="blockquote">
<p>上面加了 GitHub Proxy加速（<a href="https://ghfast.top/" class="uri">https://ghfast.top/</a>），可以删除和更改。</p>
</blockquote>
<p>另外可以电脑直接通过 release 下载安装。</p>
<ul>
<li><a href="https://github.com/sinelaw/fresh/releases">releases</a></li>
</ul>



 ]]></description>
  <category>Linux</category>
  <guid>https://shixiangwang.github.io/posts/2025-12-29-fresh-terminal-ide/</guid>
  <pubDate>Sun, 28 Dec 2025 16:00:00 GMT</pubDate>
</item>
<item>
  <title>乙巳年题冬至</title>
  <dc:creator>Shixiang Wang</dc:creator>
  <link>https://shixiangwang.github.io/posts/2025-12-21-dongzhi/</link>
  <description><![CDATA[ 





<center>
<p>秃枝落叶，经年又冬，湘江一夜起霜风。</p>
<p>周天眺望云难尽，浮尘升降随西东。</p>
<p>假山流水，残翠枫红，几多忙人与闲童。</p>
去寒还暖论不休，生命不必四时同。
</center>
<hr>
<blockquote class="blockquote">
<p>来自 Kimi 的评析，博一乐 这首诗写得很有画面感，也藏着不少情绪与哲思。下面逐联拆解，看看你在“冬至”这个节点上，到底把什么放进了诗里。</p>
</blockquote>
<hr>
<p>首联</p>
<p>“秃枝落叶，经年又冬，湘江一夜起霜风。”</p>
<p>一上来用“秃枝”“落叶”把冬天最直观的“杀伐感”钉住，再用“经年又冬”把个人时间与自然节律并置：一年就这么被偷走了，人还没回过神，湘江却已“一夜”换肤。</p>
<p>“一夜”写出天气变化之骤，也暗示心理落差——仿佛昨天还秋高，今晨已披霜。</p>
<p>湘江是地域锚点，也是你个人记忆的坐标；风带霜气，先吹冷的是景，再吹冷的是心。</p>
<hr>
<p>颔联</p>
<p>“周天眺望云难尽，浮尘升降随西东。”</p>
<p>把镜头猛地拉远，做成“上帝视角”。“周天”二字让空间变得圆转、无棱角，仿佛人站在一个玻璃球里向外看；云“难尽”，既指视野尽头的混沌，也指心思没有落点。</p>
<p>下句“浮尘升降”把俯瞰再推进一层：万物只是光柱里忽上忽下的尘埃，西东随风，毫无自主权。</p>
<p>这两句在写景，却在写“失控”——对时间、对命运、对时代尘埃的无力感；冬至的寒色在这里转成了“存在之寒”。</p>
<hr>
<p>颈联</p>
<p>“假山流水，残翠枫红，几多忙人与闲童。”</p>
<p>突然收拢视角，回到人间烟火。“假山流水”是人工打造的“小山水”，嵌在城市的缝隙里；“残翠枫红”是冬日仍倔强的色块，与首联“秃枝”形成对冲——自然与人工、衰败与艳色、真与假并置，像给冷灰画面开了饱和度。</p>
<p>“忙人与闲童”同框，时间被切成两种流速：一种被日程表鞭打，一种被糖纸黏住。</p>
<p>冬至本该“闭关”，你却把“动”与“静”硬塞在同一画框，让节气的“止”与生活的“行”撞出反差。</p>
<hr>
<p>尾联</p>
<p>“去寒还暖论不休，生命不必四时同。”</p>
<p>前一句把日常对话里最俗的“天气吐槽”写进诗，却用“论不休”给它升格：人们争来争去，只想在气候里找一点确定性。</p>
<p>后一句突然拔高，把“天气话题”翻成“生存命题”——既然气温可以反复，生命节奏凭啥不能错乱？</p>
<p>冬至是阴气至盛、阳气暗生的转折点，你借这个“阴阳交割”的刻度，给所有“不合时宜”的人一个豁免权：</p>
<p>不必跟着节气走，不必跟着主流节奏走。</p>
<p>一句“不必四时同”，既是对他人的宽慰，也是对自己的特赦。</p>
<hr>
<p>整体看</p>
<p>你用“湘江”做地理锚，用“冬至”做时间锚，却故意在“冷—暖”“动—静”“真—假”“宏观—微观”之间来回折返，让情绪不断错位。</p>
<p>前四句把“寒意”推到宇宙级，后四句又把它缩回假山旁、孩童边；最后一句“生命不必四时同”把整首诗从“节气诗”改写成“反节气诗”——</p>
<p>不是赞美阴极阳生，而是宣布：</p>
<p>人可以选择不在此刻阳生，可以永远做一株反季节的植物。</p>
<p>如果硬要挑一点可再琢之处：</p>
<ol type="1">
<li>中间两联的意象跳转稍大，可在色彩或动势上再埋一点暗线，让“云难尽”到“假山流水”的转场更丝滑。<br>
</li>
<li>“残翠枫红”已带“残”字，既留色又带季节痕迹，比“层翠”更妥帖；若再狠一点，可把“枫红”提前，做成“残翠点枫红”，让颜色更有剥落感。<br>
</li>
<li>“去寒还暖论不休”已很口语，若想再狠一寸，可试“争不休”，让市井气再抬一分。</li>
</ol>
<p>但瑕不掩瑜。整首诗最动人的，是你用“冬至”这个最讲“顺时”的节点，公开支持“逆时”的人。</p>
<p>节气书告诉你“冬藏”，你说“不藏也行”；世人劝你“合群”，你说“不必四时同”。</p>
<p>这份“反骨”被霜风一吹，反而更亮。</p>



 ]]></description>
  <category>poem</category>
  <guid>https://shixiangwang.github.io/posts/2025-12-21-dongzhi/</guid>
  <pubDate>Sat, 20 Dec 2025 16:00:00 GMT</pubDate>
</item>
<item>
  <title>随笔</title>
  <dc:creator>Shixiang Wang</dc:creator>
  <link>https://shixiangwang.github.io/posts/2025-11-30-random/</link>
  <description><![CDATA[ 





<p>角色不同，仔细回头突然感觉到过去的不适应。 过去别人认识到我的工作，主要是通过技术，而我的时间却在远离技术， 我所谓的工作生命。那我工作的生命力是什么？</p>



 ]]></description>
  <category>journal</category>
  <guid>https://shixiangwang.github.io/posts/2025-11-30-random/</guid>
  <pubDate>Sat, 29 Nov 2025 16:00:00 GMT</pubDate>
</item>
<item>
  <title>霍莉的职业规划框架</title>
  <dc:creator>Shixiang Wang</dc:creator>
  <link>https://shixiangwang.github.io/posts/2025-10-08-holly-post/</link>
  <description><![CDATA[ 





<section id="保留舍弃增加职业规划框架" class="level3">
<h3 class="anchored" data-anchor-id="保留舍弃增加职业规划框架">1.&nbsp;<strong>“保留、舍弃、增加”职业规划框架</strong></h3>
<ul>
<li><p><strong>提出者</strong>：英国伯明翰大学职业指导从业者霍莉·普雷斯科特（Holly Prescott）。</p></li>
<li><p><strong>核心内容</strong>：</p>
<ul>
<li><p><strong>保留（Keep）</strong>：思考当前角色中你热爱的部分，比如日常任务、工作环境、合作的人或工作生活平衡等。</p></li>
<li><p><strong>舍弃（Lose）</strong>：识别你不喜欢的元素，可能是重复性劳动、孤独的工作方式或不符合你价值观的任务。</p></li>
<li><p><strong>增加（Add）</strong>：想象你希望在工作中引入但目前没有机会做的事情，比如教学、公共演讲或跨学科合作。</p></li>
</ul></li>
<li><p><strong>目的</strong>：通过定期反思这些问题，帮助研究人员主动处理当前经历的信息，理解自己希望更多或更少地从事什么，从而逐步向理想职业靠近，而不是被动地基于逃避做出决定。</p></li>
</ul>
</section>
<section id="计划性偶然性理论planned-happstance" class="level3">
<h3 class="anchored" data-anchor-id="计划性偶然性理论planned-happstance">2.&nbsp;<strong>计划性偶然性理论（Planned Happstance）</strong></h3>
<ul>
<li><p><strong>核心观点</strong>：职业道路很少是线性的，应停止将运气视为随机，而是培养把握偶然机会的技能。</p></li>
<li><p><strong>五个关键品质</strong>：</p>
<ul>
<li><p><strong>好奇心</strong>：探索新领域。</p></li>
<li><p><strong>坚持</strong>：在事情停滞时继续努力。</p></li>
<li><p><strong>灵活性</strong>：适应变化。</p></li>
<li><p><strong>乐观</strong>：看到可能性。</p></li>
<li><p><strong>冒险精神</strong>：在不确定的情况下迈出步伐。</p></li>
</ul></li>
<li><p><strong>实践建议</strong>：不要试图完美规划一切，而是期待并准备迎接意外，通过培养上述技能来抓住偶然出现的机会。</p></li>
</ul>
</section>
<section id="对传统职业规划方法的反思" class="level3">
<h3 class="anchored" data-anchor-id="对传统职业规划方法的反思">3.&nbsp;<strong>对传统职业规划方法的反思</strong></h3>
<ul>
<li><p><strong>问题</strong>：传统的“设定目标—制定计划—朝着目标前进”方法在快速变化的世界中可能不再适用，因为未来难以预测，新技术、生活事件等可能带来新机会。</p></li>
<li><p><strong>新思路</strong>：更注重培养适应变化的能力，而不是僵化地坚持一个长期目标。例如，不设定一个具体的职位目标，而是专注于发展可转移的技能和保持开放的心态，以便能够灵活调整方向。</p></li>
</ul>
</section>
<section id="实际案例分享" class="level3">
<h3 class="anchored" data-anchor-id="实际案例分享">4.&nbsp;<strong>实际案例分享</strong></h3>
<ul>
<li><p><strong>托马斯·奥克斯兰德（Thomas Oxland）的经历</strong>：</p>
<ul>
<li><p>他最初计划在工业界发展，但偶然获得读硕士的机会，从而对研究产生热情，继续攻读博士学位。</p></li>
<li><p>在职业选择中，他不断评估自己的技能和兴趣，比如在工业界工作几年后又回到学术界，强调在职业发展中保持与学术界的联系、探索不同路径的重要性。</p></li>
<li><p>他的故事体现了计划性偶然性理论的实际应用，即通过不断评估和抓住机遇，找到符合自己价值观和技能的职位。</p></li>
</ul></li>
</ul>


</section>

 ]]></description>
  <category>journal</category>
  <guid>https://shixiangwang.github.io/posts/2025-10-08-holly-post/</guid>
  <pubDate>Tue, 07 Oct 2025 16:00:00 GMT</pubDate>
</item>
<item>
  <title>生命科学学院2025级研究生入院教育发言</title>
  <dc:creator>Shixiang Wang</dc:creator>
  <link>https://shixiangwang.github.io/posts/2025-09-13-share-as-rep-teacher/</link>
  <description><![CDATA[ 





<p>尊敬的各位领导、老师，亲爱的同学们：</p>
<p>大家好！我是生物医学信息系的王诗翔，非常高兴今天能作为教师代表，与各位同学共同开启这场人生新旅程。我谨代表全体教师，向2025级新同学们致以最热烈的欢迎和最诚挚的祝贺！！</p>
<p>作为学院的一名青年教师，在这重要时刻与大家分享经验和感悟，我既深感荣幸，也觉责任重大。作为指导老师，经验尚浅，今年入学的几位同学是我指导的首届研究生。因此，我从学生视角出发，认真回顾了自身的学术与成长历程，期待以几个关键词为引，与大家交流心得，为大家的科研之路提供些许有益的启发。</p>
<p>首先是“多一点自主”。研究生阶段是大家学术生涯中至关重要的一个时期。相比本科，这一阶段的学习更加自主，更加独立。大家需要学会规划自己的时间，自主学习、自主思考、自主行动。这种自主，是成长中不可或缺的，没有人会比你对你自己的人生更负责。</p>
<p>其次是“多一点逻辑”。逻辑是学术研究的基石。大家会接触大量的数据、文献以及实验，有时候会觉得复杂难懂。但大家要尝试和学会从混乱中寻找规律，从无序中辨明方向。无论是文章的写作，还是实验的设计，锤炼自己的逻辑思维是大家必须修炼的基本能力。</p>
<p>还要“多一点坚持”。坚持不是蛮干到底，而是尽心而为。无论是学习还是科研，只要自己“逻辑”上判断前方有路，那就果断坚持走下去。在小白阶段，很容易遇到问题碰壁，不仅不懂专业知识技能，而且思绪混乱。这时候要适当结合思考和实践，通过实践学习和体会，事情优先捡重要的、紧要的做，坚持下去，做到关关难过关关过，关关过了有收获。</p>
<p>更要“多一点理解”。生活是在与人的相处中前进的。虽然都说学校是象牙塔，但近年师生问题频发，教师猝死、学生自杀，大家都有压力，都不容易。因此需要多一点理解和沟通，多包容你的导师、多包容你的同学，多包容你的父母亲人，也多包容你自己。学习通过沟通和理解去消弭误会和偏见，通过兴趣爱好去释放和转移压力。</p>
<p>最后请“多一点阅读”。我们人往往困于现实的世界，受到物理的限制，阅读为我们提供了精神自由遨游宇宙的途径。闲暇时，不妨多阅读一些人文科普图书。这里我自己简要推荐两本，一本是薛定谔的《生命是什么》，非常短小精悍的一本书，可以看看一百年前的物理学家是如何思考生命；另一本是赫拉利的《人类简史：从动物到上帝》，可以看看我们人类是如何从动物演变为改造世界的主角。这两本书都是我在研究生阶段阅读过的，对我思想的冲击很大。作为中南大学的研究生，我相信每一位同学都有充足的智力和能力跳出生活去思考和探索世界，反过来也可能对更好的生活带来新的理解。</p>
<p>同学们，研究生阶段充满了机遇，也充满了挑战。希望大家能够充分发挥自己的潜力，不断进步、不断成长。相信大家的努力，将会结出丰硕的果实，为生命科学的发展贡献自己的智慧和力量。</p>
<p>再次欢迎你们的到来，祝愿你们在未来的学术和职业道路上取得卓越的成就！祝愿学院的领导和老师们事业顺遂、身体健康！</p>
<p>谢谢大家！</p>



 ]]></description>
  <category>journal</category>
  <guid>https://shixiangwang.github.io/posts/2025-09-13-share-as-rep-teacher/</guid>
  <pubDate>Fri, 12 Sep 2025 16:00:00 GMT</pubDate>
</item>
<item>
  <title>Shiny session 和 namespace</title>
  <dc:creator>Shixiang Wang</dc:creator>
  <link>https://shixiangwang.github.io/posts/2025-08-05-shiny-session-and-namespace/</link>
  <description><![CDATA[ 





<blockquote class="blockquote">
<p>记录下我对这个问题的提问和AI的回答，相对而言还是容易理解的。</p>
</blockquote>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
提问
</div>
</div>
<div class="callout-body-container callout-body">
<p>如何理解Shiny中的session 和 namespace及其区别？</p>
</div>
</div>
<hr>
<p>在 Shiny 中，<code>session</code> 和 <code>namespace</code> 是两个重要的概念，它们在构建 Shiny 应用程序时发挥着不同的作用，以下是对其的理解及其区别的说明：</p>
<section id="session" class="level3">
<h3 class="anchored" data-anchor-id="session">session</h3>
<ul>
<li><p><strong>概念</strong> ：在 Shiny 应用中，<code>session</code> 表示用户与应用之间的一次会话。当用户访问 Shiny 应用时，会创建一个 <code>session</code> 对象，该对象包含了与当前会话相关的信息和状态，如用户输入、输出、会话 ID、用户代理等。</p></li>
<li><p><strong>作用</strong> ：</p>
<ul>
<li><strong>管理用户状态</strong> ：可用于存储和管理用户特定的状态信息，如用户的偏好设置、登录状态等。通过 <code>session$userData</code> 可以存储和访问用户私有的数据，这些数据在会话期间可以被服务器逻辑中的各个部分共享和使用。</li>
<li><strong>处理并发</strong> ：在多用户并发访问 Shiny 应用时，每个用户都有自己独立的 <code>session</code>，这确保了不同用户之间的操作和数据相互隔离，不会相互干扰。</li>
<li><strong>实现高级功能</strong> ：如实现页面导航、条件面板显示、动态 UI 更新等功能时，<code>session</code> 对象提供了相关的方法和回调函数，允许开发者根据用户的交互和会话状态来动态地修改 UI 和服务器逻辑。</li>
</ul></li>
</ul>
</section>
<section id="namespace" class="level3">
<h3 class="anchored" data-anchor-id="namespace">namespace</h3>
<ul>
<li><p><strong>概念</strong> ：<code>namespace</code> 是一种用于解决 Shiny 应用中命名冲突的机制，尤其是在使用模块化开发时。它通过为 UI 组件和服务器端对象创建一个独立的作用域，使得不同模块或组件之间的名称不会相互干扰。</p></li>
<li><p><strong>作用</strong> ：</p>
<ul>
<li><strong>避免命名冲突</strong> ：在大型复杂的 Shiny 应用中，可能会有多个模块或组件使用相同的名字来定义输入控件、输出对象等。通过使用 <code>namespace</code>，可以为每个模块或组件生成唯一的名称前缀，从而避免了这些命名冲突。</li>
<li><strong>模块化开发</strong> ：在构建可重用的模块时，<code>namespace</code> 是必不可少的。它确保了模块内部的 UI 和服务器逻辑可以独立于外部作用域进行定义和运行，使得模块可以在不同的应用或不同的部分中重复使用，而不会出现名称冲突或相互依赖的问题。</li>
<li><strong>组织代码结构</strong> ：使用 <code>namespace</code> 可以帮助开发者更好地组织和管理代码结构，将相关的 UI 和服务器逻辑封装在一个独立的命名空间中，提高代码的可读性和可维护性。</li>
</ul></li>
</ul>
</section>
<section id="两者的区别" class="level3">
<h3 class="anchored" data-anchor-id="两者的区别">两者的区别</h3>
<ul>
<li><strong>关注点不同</strong> ：<code>session</code> 主要关注于用户与应用之间的会话管理和状态维护，而 <code>namespace</code> 则侧重于解决命名冲突和实现模块化开发。</li>
<li><strong>适用场景不同</strong> ：<code>session</code> 通常用于需要处理用户特定数据、管理会话状态、实现页面导航等场景；<code>namespace</code> 则多用于构建大型复杂应用、开发可重用模块以及避免命名冲突等场景。</li>
<li><strong>使用方式不同</strong> ：<code>session</code> 是 Shiny 应用自动创建的对象，开发者可以通过在服务器函数的参数中获取它来使用其相关功能；而 <code>namespace</code> 需要开发者通过调用 <code>NS</code> 函数来创建和使用，通常在定义模块的 UI 和服务器逻辑时使用，将 UI 组件的 <code>id</code> 和服务器端对象的名称等传递给 <code>NS</code> 函数进行封装，以生成带有命名空间前缀的唯一名称。</li>
</ul>


</section>

 ]]></description>
  <category>shiny</category>
  <guid>https://shixiangwang.github.io/posts/2025-08-05-shiny-session-and-namespace/</guid>
  <pubDate>Mon, 04 Aug 2025 16:00:00 GMT</pubDate>
</item>
<item>
  <title>结合micromamba和module管理集群软件</title>
  <dc:creator>Shixiang Wang</dc:creator>
  <link>https://shixiangwang.github.io/posts/2025-07-29-module-and-mamba/</link>
  <description><![CDATA[ 





<section id="micromamba-安装" class="level2">
<h2 class="anchored" data-anchor-id="micromamba-安装">micromamba 安装</h2>
<p>带一些自定义设置。</p>
<div class="sourceCode" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode sh code-with-copy"><code class="sourceCode bash"><span id="cb1-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 可以指定安装 mamba 构建基础的软件</span></span>
<span id="cb1-2"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># https://mamba.readthedocs.io/en/latest/installation/micromamba-installation.html</span></span>
<span id="cb1-3"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 这样后续安装软件比编译安装会更快</span></span>
<span id="cb1-4"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">curl</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-Ls</span> https://micro.mamba.pm/api/micromamba/linux-64/latest <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">|</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">tar</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-xvj</span> bin/micromamba</span>
<span id="cb1-5"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">./bin/micromamba</span> shell init <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-s</span> bash <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-r</span> /data/modules/micromamba</span></code></pre></div>
</section>
<section id="软件安装" class="level2">
<h2 class="anchored" data-anchor-id="软件安装">软件安装</h2>
<p>构建了2个环境分别安装常见生信软件和Python数据科学的一些包。</p>
<div class="sourceCode" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode sh code-with-copy"><code class="sourceCode bash"><span id="cb2-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># https://bioconda.github.io/</span></span>
<span id="cb2-2"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">micromamba</span> config append channels bioconda</span>
<span id="cb2-3"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">micromamba</span> config append channels conda-forge</span>
<span id="cb2-4"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">micromamba</span> config set channel_priority strict</span>
<span id="cb2-5"></span>
<span id="cb2-6"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">micromamba</span> create <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-n</span> biosoft fastqc multiqc fastp bedtools bwa minimap2 samtools bcftools star star-fusion bowtie bowtie2 </span>
<span id="cb2-7"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">micromamba</span> install <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-n</span> biosoft  gatk4 picard spades</span>
<span id="cb2-8"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">micromamba</span> install <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-n</span> biosoft flye raven hisat2 stringtie </span>
<span id="cb2-9"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">micromamba</span> install <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-n</span> biosoft salmon kallisto plink admixture</span>
<span id="cb2-10"></span>
<span id="cb2-11"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">micromamba</span> create <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-n</span> pyds python=3.9 ipython numpy pandas matplotlib scikit-learn scipy</span>
<span id="cb2-12"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">micromamba</span> activate pyds</span>
<span id="cb2-13"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">pip</span> install pyds seaborn statsmodels xgboost catboost lightgbm </span>
<span id="cb2-14"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">pip</span> install keras torch torchvision torchaudio plotly <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">--extra-index-url</span> https://download.pytorch.org/whl/cpu </span>
<span id="cb2-15"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">pip</span> install transformers fastapi lightning blis nltk </span>
<span id="cb2-16"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">pip</span> install jupyter jupyterlab jupyterlab-git jupyterlab-lsp polars dash</span></code></pre></div>
</section>
<section id="module" class="level2">
<h2 class="anchored" data-anchor-id="module">module</h2>
<p>通过 module，可以简单的释放给所有用户访问使用</p>
</section>
<section id="安装-module" class="level2">
<h2 class="anchored" data-anchor-id="安装-module">安装 module</h2>
<div class="sourceCode" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode sh code-with-copy"><code class="sourceCode bash"><span id="cb3-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 默认环境变量文件 /etc/environment-modules/modulespath</span></span>
<span id="cb3-2"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 添加 /opt/modulefiles (每个节点都要加)</span></span>
<span id="cb3-3"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">#</span></span>
<span id="cb3-4"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># https://blog.csdn.net/m0_37201243/article/details/129632603</span></span>
<span id="cb3-5"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">#</span></span>
<span id="cb3-6"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Install module</span></span>
<span id="cb3-7"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># https://modules.readthedocs.io/en/latest/INSTALL.html</span></span>
<span id="cb3-8"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">cd</span> /opt</span>
<span id="cb3-9"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">curl</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-LJO</span> https://github.com/envmodules/modules/releases/download/v5.5.0/modules-5.5.0.tar.gz</span>
<span id="cb3-10"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">tar</span> xfz modules-5.5.0.tar.gz</span>
<span id="cb3-11"></span>
<span id="cb3-12"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">cd</span> modules-5.5.0</span>
<span id="cb3-13"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">./configure</span></span>
<span id="cb3-14"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># ./configure --prefix=/data/modules  # 自定义软件安装目录</span></span>
<span id="cb3-15"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">make</span> <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">&amp;&amp;</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">make</span> install</span></code></pre></div>
<section id="modulefile" class="level3">
<h3 class="anchored" data-anchor-id="modulefile">modulefile</h3>
<div class="sourceCode" id="cb4" style="background: #f1f3f5;"><pre class="sourceCode sh code-with-copy"><code class="sourceCode bash"><span id="cb4-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">#%Module1.0######################################################################</span></span>
<span id="cb4-2"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">##</span></span>
<span id="cb4-3"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">## pyds modulefile</span></span>
<span id="cb4-4"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">##</span></span>
<span id="cb4-5"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">proc</span> ModulesHelp { } {</span>
<span id="cb4-6">    <span class="ex" style="color: null;
background-color: null;
font-style: inherit;">puts</span> stderr <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"\tThe pyds Module\n"</span></span>
<span id="cb4-7">    <span class="ex" style="color: null;
background-color: null;
font-style: inherit;">puts</span> stderr <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"\tpyds: a list of predefined python data science software (installed by mamba)"</span></span>
<span id="cb4-8"><span class="er" style="color: #AD0000;
background-color: null;
font-style: inherit;">}</span></span>
<span id="cb4-9"></span>
<span id="cb4-10"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">module-whatis</span>   <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"adds micromamba and an env of a list of python data science software to your PATH environment variable"</span></span>
<span id="cb4-11"></span>
<span id="cb4-12"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 设置环境变量和路径（始终执行）</span></span>
<span id="cb4-13"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">append-path</span>     PATH            /data/modules/bin</span>
<span id="cb4-14"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">append-path</span>     PATH            /data/modules/micromamba/envs/pyds/bin</span>
<span id="cb4-15"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">setenv</span>          MAMBA_ROOT_PREFIX /data/modules/micromamba</span>
<span id="cb4-16"></span>
<span id="cb4-17"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 仅在 module load 时执行初始化检查和提示</span></span>
<span id="cb4-18"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">{</span> <span class="ex" style="color: null;
background-color: null;
font-style: inherit;">[module-info</span> mode] eq <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"load"</span> } {</span>
<span id="cb4-19">    <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">set</span> BASHRC [file join [getenv HOME] <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">".bashrc"</span>]</span>
<span id="cb4-20">    <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">set</span> PATTERN <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"MAMBA_ROOT_PREFIX"</span></span>
<span id="cb4-21"></span>
<span id="cb4-22">    <span class="ex" style="color: null;
background-color: null;
font-style: inherit;">puts</span> stderr <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"第一次使用时会提示错误'Module ERROR: Running </span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">`</span><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">shell</span> init<span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">`</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'，请再次运行 'module load pyds' 并重启terminal以完成初始化。"</span></span>
<span id="cb4-23">    <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 检查是否已经初始化</span></span>
<span id="cb4-24">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">{</span> <span class="ex" style="color: null;
background-color: null;
font-style: inherit;">[catch</span> {exec grep <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-q</span> <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$PATTERN</span> <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$BASHRC</span>} result] } {</span>
<span id="cb4-25">        <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 如果未初始化，执行初始化</span></span>
<span id="cb4-26">        <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">exec</span> /data/modules/bin/micromamba shell init <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-s</span> bash</span>
<span id="cb4-27">        <span class="ex" style="color: null;
background-color: null;
font-style: inherit;">puts</span> stderr <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Initialized micromamba in your ~/.bashrc"</span></span>
<span id="cb4-28">    <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">}</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span> <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">{</span></span>
<span id="cb4-29">        <span class="ex" style="color: null;
background-color: null;
font-style: inherit;">puts</span> stderr <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"micromamba is already initialized in your ~/.bashrc"</span></span>
<span id="cb4-30">    <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">}</span></span>
<span id="cb4-31"></span>
<span id="cb4-32">    <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 输出激活命令，提示用户在 shell 中执行</span></span>
<span id="cb4-33">    <span class="ex" style="color: null;
background-color: null;
font-style: inherit;">puts</span> stderr <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"To activate the 'pyds' environment, run the following command in your shell:"</span></span>
<span id="cb4-34">    <span class="ex" style="color: null;
background-color: null;
font-style: inherit;">puts</span> stderr <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">""</span></span>
<span id="cb4-35">    <span class="ex" style="color: null;
background-color: null;
font-style: inherit;">puts</span> stderr <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"micromamba activate pyds"</span></span>
<span id="cb4-36">    <span class="ex" style="color: null;
background-color: null;
font-style: inherit;">puts</span> stderr <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">""</span></span>
<span id="cb4-37">    <span class="ex" style="color: null;
background-color: null;
font-style: inherit;">puts</span> stderr <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"deactivate with 'micromamba deactivate'"</span></span>
<span id="cb4-38"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">}</span></span>
<span id="cb4-39"></span>
<span id="cb4-40"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">{</span> <span class="ex" style="color: null;
background-color: null;
font-style: inherit;">[module-info</span> mode] eq <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"unload"</span> } {</span>
<span id="cb4-41">    <span class="ex" style="color: null;
background-color: null;
font-style: inherit;">puts</span> stderr <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"请确定已运行 'micromamba deactivate' 以退出当前环境。"</span></span>
<span id="cb4-42"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">}</span></span></code></pre></div>
</section>
<section id="测试" class="level3">
<h3 class="anchored" data-anchor-id="测试">测试</h3>
<div class="sourceCode" id="cb5" style="background: #f1f3f5;"><pre class="sourceCode sh code-with-copy"><code class="sourceCode bash"><span id="cb5-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">[wsx@master</span> ~]$ module load pyds</span>
<span id="cb5-2"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">micromamba</span> is already initialized in your ~/.bashrc</span>
<span id="cb5-3"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">To</span> activate the <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'pyds'</span> environment, run the following command in your shell:</span>
<span id="cb5-4"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">micromamba</span> activate pyds</span>
<span id="cb5-5"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">[wsx@master</span> ~]$ micromamba activate pyds</span>
<span id="cb5-6"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">(</span><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">pyds</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">)</span> <span class="ex" style="color: null;
background-color: null;
font-style: inherit;">[wsx@master</span> ~]$ ipython</span>
<span id="cb5-7"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">Python</span> 3.9.15 <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">|</span> <span class="ex" style="color: null;
background-color: null;
font-style: inherit;">packaged</span> by conda-forge <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">|</span> <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">(</span><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">main,</span> Nov 22 2022, 08:45:29<span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">)</span> </span>
<span id="cb5-8"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">Type</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'copyright'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'credits'</span> or <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'license'</span> for more information</span>
<span id="cb5-9"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">IPython</span> 8.18.1 <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">--</span> An enhanced Interactive Python. Type <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'?'</span> for help.</span>
<span id="cb5-10"></span>
<span id="cb5-11"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">In</span> <span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">[</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">1</span><span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">]</span>: import pandas</span>
<span id="cb5-12"></span>
<span id="cb5-13"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">In</span> <span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">[</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">2</span><span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">]</span>: import torch</span>
<span id="cb5-14"></span>
<span id="cb5-15"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">In</span> <span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">[</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">3</span><span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">]</span>: import transformers</span></code></pre></div>


</section>
</section>

 ]]></description>
  <category>bioinformatics</category>
  <category>Linux</category>
  <guid>https://shixiangwang.github.io/posts/2025-07-29-module-and-mamba/</guid>
  <pubDate>Mon, 28 Jul 2025 16:00:00 GMT</pubDate>
</item>
<item>
  <title>R 并行时怎么输出消息</title>
  <dc:creator>Shixiang Wang</dc:creator>
  <link>https://shixiangwang.github.io/posts/2025-07-18-echo-in-shell-for-r-parallel/</link>
  <description><![CDATA[ 





<p>并行计算可以加快一些耗时流程的分析，但 R 如果调用如 <code>mclapply()</code> 等进行并行计算， 无法输出调用函数内部的打印信息，这里有一个小技巧，记录一下。</p>
<p>构建一个新的消息函数，在调用函数内部进行使用，用来打印提示信息。</p>
<div class="sourceCode" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb1-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">#' Function which prints a message using shell echo; useful for printing messages from inside mclapply when running in Rstudio</span></span>
<span id="cb1-2">message_parallel <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span>(...){</span>
<span id="cb1-3">  <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">system</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sprintf</span>(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'echo "</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">%s</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">\n</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"'</span>, <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">paste0</span>(..., <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">collapse=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">""</span>)))</span>
<span id="cb1-4">}</span></code></pre></div>
<blockquote class="blockquote">
<p>这里多个 <code>\n</code> 可根据情况进行去除。</p>
</blockquote>
<section id="mcprogress" class="level3">
<h3 class="anchored" data-anchor-id="mcprogress">mcprogress</h3>
<p>找到一个包<a href="https://github.com/myles-lewis/mcprogress">mcprogress</a>可以直接解决这个问题。</p>
<div class="sourceCode" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb2-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(mcprogress)</span>
<span id="cb2-2"></span>
<span id="cb2-3"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># toy example</span></span>
<span id="cb2-4">res <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">pmclapply</span>(letters[<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">20</span>], <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">function</span>(i) {</span>
<span id="cb2-5">                 <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">Sys.sleep</span>(<span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.2</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">runif</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span>) <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">*</span> <span class="fl" style="color: #AD0000;
background-color: null;
font-style: inherit;">0.1</span>)</span>
<span id="cb2-6">                 <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">setNames</span>(<span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">rnorm</span>(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>), <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">paste0</span>(i, <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">:</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">5</span>))</span>
<span id="cb2-7">                 }, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">mc.cores =</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span>, <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">title =</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"Working"</span>)</span></code></pre></div>
<p>最核心的输出技术还是和上面的函数是相同的。</p>
<hr>
<blockquote class="blockquote">
<p>参考：<a href="https://stackoverflow.com/questions/17345837/printing-from-mclapply-in-r-studio" class="uri">https://stackoverflow.com/questions/17345837/printing-from-mclapply-in-r-studio</a></p>
</blockquote>


</section>

 ]]></description>
  <category>R</category>
  <guid>https://shixiangwang.github.io/posts/2025-07-18-echo-in-shell-for-r-parallel/</guid>
  <pubDate>Thu, 17 Jul 2025 16:00:00 GMT</pubDate>
</item>
<item>
  <title>用来测试端口 work 的Demo app</title>
  <dc:creator>Shixiang Wang</dc:creator>
  <link>https://shixiangwang.github.io/posts/2025-07-09-python-web-demo-app/</link>
  <description><![CDATA[ 





<p>Python 自带就能 run，方便测试端口和映射是否能 work。</p>
<div class="sourceCode" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode python code-with-copy"><code class="sourceCode python"><span id="cb1-1"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> http.server</span>
<span id="cb1-2"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> socketserver</span>
<span id="cb1-3"><span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">import</span> argparse</span>
<span id="cb1-4"></span>
<span id="cb1-5"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">class</span> DemoHandler(http.server.SimpleHTTPRequestHandler):</span>
<span id="cb1-6">    <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">def</span> do_GET(<span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">self</span>):</span>
<span id="cb1-7">        <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">self</span>.path <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'/'</span>:</span>
<span id="cb1-8">            <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">self</span>.send_response(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">200</span>)</span>
<span id="cb1-9">            <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">self</span>.send_header(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Content-type'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'text/html'</span>)</span>
<span id="cb1-10">            <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">self</span>.end_headers()</span>
<span id="cb1-11">            <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">self</span>.wfile.write(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">b'Hello, World! This is a demo app.'</span>)</span>
<span id="cb1-12">        <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">elif</span> <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">self</span>.path <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'/about'</span>:</span>
<span id="cb1-13">            <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">self</span>.send_response(<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">200</span>)</span>
<span id="cb1-14">            <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">self</span>.send_header(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Content-type'</span>, <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'text/html'</span>)</span>
<span id="cb1-15">            <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">self</span>.end_headers()</span>
<span id="cb1-16">            <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">self</span>.wfile.write(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">b'This is a simple demo application.'</span>)</span>
<span id="cb1-17">        <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">else</span>:</span>
<span id="cb1-18">            <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">super</span>().do_GET()</span>
<span id="cb1-19"></span>
<span id="cb1-20"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">def</span> run(port):</span>
<span id="cb1-21">    <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">with</span> socketserver.TCPServer((<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">""</span>, port), DemoHandler) <span class="im" style="color: #00769E;
background-color: null;
font-style: inherit;">as</span> httpd:</span>
<span id="cb1-22">        <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">print</span>(<span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">f"Serving at port </span><span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">{</span>port<span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">}</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span>)</span>
<span id="cb1-23">        httpd.serve_forever()</span>
<span id="cb1-24"></span>
<span id="cb1-25"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">def</span> main():</span>
<span id="cb1-26">    parser <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> argparse.ArgumentParser(description<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Run the demo app on a specified port.'</span>)</span>
<span id="cb1-27">    parser.add_argument(<span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'--port'</span>, <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">type</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">int</span>, default<span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">8000</span>, <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">help</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'Port to run the server on'</span>)</span>
<span id="cb1-28">    args <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span> parser.parse_args()</span>
<span id="cb1-29">    run(args.port)</span>
<span id="cb1-30"></span>
<span id="cb1-31"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">__name__</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">==</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'__main__'</span>:</span>
<span id="cb1-32">    main()</span></code></pre></div>



 ]]></description>
  <category>Python</category>
  <guid>https://shixiangwang.github.io/posts/2025-07-09-python-web-demo-app/</guid>
  <pubDate>Tue, 08 Jul 2025 16:00:00 GMT</pubDate>
</item>
<item>
  <title>slurm 管理记录</title>
  <dc:creator>Shixiang Wang</dc:creator>
  <link>https://shixiangwang.github.io/posts/2025-07-08-slurm-manage/</link>
  <description><![CDATA[ 





<section id="相关-services" class="level2">
<h2 class="anchored" data-anchor-id="相关-services">相关 services</h2>
<p>Master:</p>
<ul>
<li>munge</li>
<li>slurmctld</li>
</ul>
<p>Node(s)</p>
<ul>
<li>munge</li>
<li>slurmd</li>
</ul>
<p>查看状态：</p>
<div class="sourceCode" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode sh code-with-copy"><code class="sourceCode bash"><span id="cb1-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">systemctl</span> status slurmctld</span>
<span id="cb1-2"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">systemctl</span> status slurmd</span>
<span id="cb1-3"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">systemctl</span> status munge</span></code></pre></div>
</section>
<section id="节点测试" class="level2">
<h2 class="anchored" data-anchor-id="节点测试">节点测试</h2>
<div class="sourceCode" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode sh code-with-copy"><code class="sourceCode bash"><span id="cb2-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">srun</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-w</span> node1 hostname</span>
<span id="cb2-2"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">#node1</span></span></code></pre></div>
<p>io 检查</p>
<div class="sourceCode" id="cb3" style="background: #f1f3f5;"><pre class="sourceCode sh code-with-copy"><code class="sourceCode bash"><span id="cb3-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">nfsiostat</span> /data 5</span></code></pre></div>
<p>io 测试</p>
<div class="sourceCode" id="cb4" style="background: #f1f3f5;"><pre class="sourceCode sh code-with-copy"><code class="sourceCode bash"><span id="cb4-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">fio</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">--name</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>nfs-test <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">--ioengine</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>libaio <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">--rw</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>randrw <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">--bs</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>4k     <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">--size</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>1G <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">--numjobs</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>16 <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">--runtime</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>60 <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">--group_reporting</span>     <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">--directory</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>/data</span></code></pre></div>
</section>
<section id="节点状态查看和修改" class="level2">
<h2 class="anchored" data-anchor-id="节点状态查看和修改">节点状态查看和修改</h2>
<div class="sourceCode" id="cb5" style="background: #f1f3f5;"><pre class="sourceCode sh code-with-copy"><code class="sourceCode bash"><span id="cb5-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">scontrol</span> show master</span>
<span id="cb5-2"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">scontrol</span> show node</span>
<span id="cb5-3"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">scontrol</span> show node node1</span></code></pre></div>
<div class="sourceCode" id="cb6" style="background: #f1f3f5;"><pre class="sourceCode sh code-with-copy"><code class="sourceCode bash"><span id="cb6-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">scontrol</span> update NodeName=node<span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">[</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">1</span><span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">-</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">4</span><span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">]</span> State=RESUME</span></code></pre></div>
<p>节点批量运行命令</p>
<div class="sourceCode" id="cb7" style="background: #f1f3f5;"><pre class="sourceCode sh code-with-copy"><code class="sourceCode bash"><span id="cb7-1"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">pdsh</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-w</span> master,node<span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">[</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">1</span><span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">-</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">4</span><span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">]</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"id wsx"</span></span></code></pre></div>
</section>
<section id="创建用户" class="level2">
<h2 class="anchored" data-anchor-id="创建用户">创建用户</h2>
<blockquote class="blockquote">
<p>bioinfo, gid, 密码等需要根据注意</p>
</blockquote>
<section id="外部" class="level3">
<h3 class="anchored" data-anchor-id="外部">外部</h3>
<div class="sourceCode" id="cb8" style="background: #f1f3f5;"><pre class="sourceCode sh code-with-copy"><code class="sourceCode bash"><span id="cb8-1"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">#!/bin/bash</span></span>
<span id="cb8-2"></span>
<span id="cb8-3"><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">user</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$1</span></span>
<span id="cb8-4"><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">gid</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>1000  <span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># bioinfo</span></span>
<span id="cb8-5"><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">shared_home</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span>/data/home/<span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">${user}</span></span>
<span id="cb8-6"></span>
<span id="cb8-7"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># get 10 开头的最大 uid</span></span>
<span id="cb8-8"><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">max_uid</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$(</span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">awk</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-F:</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">'{print $3}'</span> /etc/passwd <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">|</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">grep</span> 10 <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">|</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sort</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-n</span> <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">|</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">tail</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-1</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">)</span></span>
<span id="cb8-9"></span>
<span id="cb8-10"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 将最大的 UID 加 1</span></span>
<span id="cb8-11"><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">uid</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$((max_uid</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> <span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">))</span></span>
<span id="cb8-12"></span>
<span id="cb8-13"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">pdsh</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-w</span> master,node<span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">[</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">1</span><span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">-</span><span class="ss" style="color: #20794D;
background-color: null;
font-style: inherit;">4</span><span class="pp" style="color: #AD0000;
background-color: null;
font-style: inherit;">]</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"/opt/create_user_in.sh </span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">${user}</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;"> </span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">${uid}</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;"> </span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">${gid}</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;"> no"</span></span>
<span id="cb8-14"></span>
<span id="cb8-15"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 设置无缝 ssh</span></span>
<span id="cb8-16"><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">username</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$user</span></span>
<span id="cb8-17"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Create SSH key pair for the new user, and input an empty passphrase</span></span>
<span id="cb8-18"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">sudo</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-u</span> <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$username</span> ssh-keygen <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-t</span> rsa <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-N</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">""</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-f</span> <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$shared_home</span>/.ssh/id_rsa</span>
<span id="cb8-19"></span>
<span id="cb8-20"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># Copy the public key to the new user's authorized_keys file to enable passwordless login</span></span>
<span id="cb8-21"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">cat</span> <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$shared_home</span>/.ssh/id_rsa.pub <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;&gt;</span> <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$shared_home</span>/.ssh/authorized_keys</span>
<span id="cb8-22"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">chown</span> <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$username</span>:bioinfo <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$shared_home</span>/.ssh/authorized_keys <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">&amp;&amp;</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">chmod</span> 600 <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$shared_home</span>/.ssh/authorized_keys</span>
<span id="cb8-23"></span>
<span id="cb8-24"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">echo</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"User </span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$username</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;"> created successfully."</span></span></code></pre></div>
</section>
<section id="内部" class="level3">
<h3 class="anchored" data-anchor-id="内部">内部</h3>
<div class="sourceCode" id="cb9" style="background: #f1f3f5;"><pre class="sourceCode sh code-with-copy"><code class="sourceCode bash"><span id="cb9-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">cat</span> create_user_in.sh </span>
<span id="cb9-2"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">#!/bin/bash</span></span>
<span id="cb9-3"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 参数校验</span></span>
<span id="cb9-4"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">[</span> <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$#</span> <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">-ne</span> 4 <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">]</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">;</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">then</span></span>
<span id="cb9-5">  <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">echo</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"用法：</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$0</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;"> 用户名 UID GID 是否管理员(yes/no)"</span></span>
<span id="cb9-6">  <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">exit</span> 1</span>
<span id="cb9-7"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">fi</span></span>
<span id="cb9-8"></span>
<span id="cb9-9"><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">USERNAME</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$1</span></span>
<span id="cb9-10"><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">CUSTOM_UID</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$2</span></span>
<span id="cb9-11"><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">CUSTOM_GID</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$3</span></span>
<span id="cb9-12"><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">IS_ADMIN</span><span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">=</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$4</span></span>
<span id="cb9-13"></span>
<span id="cb9-14"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 检查UID/GID是否被占用</span></span>
<span id="cb9-15"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">getent</span> passwd <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$CUSTOM_UID</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;&gt;</span>/dev/null<span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">;</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">then</span></span>
<span id="cb9-16">  <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">echo</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"错误：UID </span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$CUSTOM_UID</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;"> 已被占用"</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;&amp;</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span></span>
<span id="cb9-17">  <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">exit</span> 1</span>
<span id="cb9-18"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">fi</span></span>
<span id="cb9-19"></span>
<span id="cb9-20"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">! </span><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">getent</span> group <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$CUSTOM_GID</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&amp;&gt;</span>/dev/null<span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">;</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">then</span></span>
<span id="cb9-21">  <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">echo</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"错误：GID </span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$CUSTOM_GID</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;"> 不存在，请先创建组"</span> <span class="op" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">&gt;&amp;</span><span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">2</span></span>
<span id="cb9-22">  <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">exit</span> 1</span>
<span id="cb9-23"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">fi</span></span>
<span id="cb9-24"></span>
<span id="cb9-25"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 创建用户</span></span>
<span id="cb9-26"><span class="ex" style="color: null;
background-color: null;
font-style: inherit;">useradd</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-m</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-d</span> /data/home/<span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$USERNAME</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">\</span></span>
<span id="cb9-27">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-u</span> <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$CUSTOM_UID</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">\</span></span>
<span id="cb9-28">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-g</span> <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$CUSTOM_GID</span> <span class="dt" style="color: #AD0000;
background-color: null;
font-style: inherit;">\</span></span>
<span id="cb9-29">  <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-s</span> /bin/bash <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$USERNAME</span> <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">||</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">exit</span> 1</span>
<span id="cb9-30"></span>
<span id="cb9-31"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 设置初始密码</span></span>
<span id="cb9-32"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">echo</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"设置初始密码..."</span></span>
<span id="cb9-33"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">echo</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$USERNAME</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">:xxx"</span> <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">|</span> <span class="ex" style="color: null;
background-color: null;
font-style: inherit;">chpasswd</span> <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">||</span> <span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">{</span></span>
<span id="cb9-34">  <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">echo</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"密码设置失败！"</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">;</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">exit</span> 1</span>
<span id="cb9-35"><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">}</span></span>
<span id="cb9-36"></span>
<span id="cb9-37"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 强制首次修改密码</span></span>
<span id="cb9-38"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">#chage -d 0 $USERNAME  # [1,5](@ref)</span></span>
<span id="cb9-39"></span>
<span id="cb9-40"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 设置管理员权限</span></span>
<span id="cb9-41"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">if</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">[</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$IS_ADMIN</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span> <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">=</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"yes"</span> <span class="bu" style="color: null;
background-color: null;
font-style: inherit;">]</span><span class="kw" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">;</span> <span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">then</span></span>
<span id="cb9-42">  <span class="ex" style="color: null;
background-color: null;
font-style: inherit;">usermod</span> <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">-aG</span> sudo <span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$USERNAME</span></span>
<span id="cb9-43"><span class="cf" style="color: #003B4F;
background-color: null;
font-weight: bold;
font-style: inherit;">fi</span></span>
<span id="cb9-44"></span>
<span id="cb9-45"><span class="co" style="color: #5E5E5E;
background-color: null;
font-style: inherit;"># 验证信息</span></span>
<span id="cb9-46"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">echo</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"用户创建成功！"</span></span>
<span id="cb9-47"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">echo</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"用户名: </span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$USERNAME</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;"> | UID: </span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$CUSTOM_UID</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;"> | GID: </span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$CUSTOM_GID</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span></span>
<span id="cb9-48"><span class="bu" style="color: null;
background-color: null;
font-style: inherit;">echo</span> <span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"家目录: /data/home/</span><span class="va" style="color: #111111;
background-color: null;
font-style: inherit;">$USERNAME</span><span class="st" style="color: #20794D;
background-color: null;
font-style: inherit;">"</span></span></code></pre></div>


</section>
</section>

 ]]></description>
  <category>Linux</category>
  <category>bioinformatics</category>
  <guid>https://shixiangwang.github.io/posts/2025-07-08-slurm-manage/</guid>
  <pubDate>Mon, 07 Jul 2025 16:00:00 GMT</pubDate>
</item>
<item>
  <title>理解 lmer(Reaction ~ Days + (Days | Subject), sleepstudy)</title>
  <dc:creator>Shixiang Wang</dc:creator>
  <link>https://shixiangwang.github.io/posts/2025-06-11-lmer/</link>
  <description><![CDATA[ 





<blockquote class="blockquote">
<p>大部分信息来自于 Kimi AI</p>
</blockquote>
<p>User: 怎么理解r中的公式语法：lmer(Reaction ~ Days + (Days | Subject), sleepstudy)</p>
<p>Kimi:</p>
<ol type="1">
<li><strong>首先整体理解公式结构</strong>
<ul>
<li>这是一个用于线性混合效应模型（linear mixed - effects model）的公式，格式为<code>lmer (固定效应部分 + 随机效应部分, 数据集)</code>。</li>
<li>在这个例子<code>lmer (Reaction ~ Days + (Days | Subject), sleepstudy)</code>中，“Reaction”是因变量，它被建模为“Days”这个固定效应变量以及“Subject”这个随机效应变量的函数。</li>
</ul></li>
<li><strong>固定效应部分（Reaction ~ Days）</strong>
<ul>
<li>固定效应是指我们假设其对因变量的影响在所有个体或群体中是相同的。这里“Days”是固定效应变量，表示我们关注随着天数的增加，反应时间（Reaction）如何变化。模型会估计一个整体的回归系数来描述“Days”对“Reaction”的影响，这个系数被认为在总体中是一个固定的值，不会因不同的个体（在这个数据中是不同的受试者）而改变。</li>
</ul></li>
<li><strong>随机效应部分（(Days | Subject)）</strong>
<ul>
<li>随机效应部分是用来考虑个体差异的。这里的“Subject”是随机效应变量，表示每个受试者（Subject）可能会有不同的反应模式。</li>
<li><code>(Days | Subject)</code>表示允许每个受试者（Subject）都有自己的截距（当 Days = 0 时的反应时间）和斜率（反应时间随天数变化的速率）。具体来说：
<ul>
<li>截距在这里代表的是每个受试者在研究开始时（假设 Days = 0 是研究的起始点）的反应时间。由于个体差异，不同受试者在研究开始时的反应时间可能不同。</li>
<li>斜率代表的是每个受试者反应时间随天数变化的趋势。例如，有些受试者可能随着天数增加反应时间增长较快，而有些可能增长较慢或者甚至减少。</li>
</ul></li>
<li>同时，这种写法还会估计截距和斜率之间的协方差。也就是说，模型会考虑受试者初始反应时间和反应时间随天数变化速率之间的相关性。比如，可能初始反应时间较高的受试者，其反应时间随天数增加的速率也较高，这就会有正的协方差。</li>
</ul></li>
<li><strong>数据集（sleepstudy）</strong>
<ul>
<li><code>sleepstudy</code>数据集就是包含因变量“Reaction”（反应时间）、自变量“Days”（天数）以及随机效应因素“Subject”（受试者）等信息的数据集。模型是基于这个数据集来拟合参数，从而研究反应时间如何随天数变化以及考虑不同受试者的个体差异。</li>
</ul></li>
</ol>
<p>通过这种公式的设定，线性混合效应模型能够同时处理固定效应和随机效应，更准确地分析数据中包含的群体趋势和个体差异。</p>
<p>User: 怎么仔细理解 Days | Subject</p>
<p>Kimi: 在 R 的公式语法中，<code>(Days | Subject)</code> 是用于指定随机效应（random effects）的关键部分，特别是在线性混合效应模型（linear mixed-effects model）中。下面将详细解释 <code>(Days | Subject)</code> 的含义以及它在模型中的作用。</p>
<section id="基本含义" class="level3">
<h3 class="anchored" data-anchor-id="基本含义">1. <strong>基本含义</strong></h3>
<p><code>(Days | Subject)</code> 表示 <strong>随机斜率和随机截距</strong> 的组合，允许每个 <code>Subject</code>（受试者）有自己独立的截距和斜率。具体来说：</p>
<ul>
<li><strong>随机截距</strong>：每个 <code>Subject</code> 在 <code>Days = 0</code> 时的反应时间（Reaction）可以不同。</li>
<li><strong>随机斜率</strong>：每个 <code>Subject</code> 的反应时间随 <code>Days</code> 变化的速率可以不同。</li>
</ul>
</section>
<section id="公式结构" class="level3">
<h3 class="anchored" data-anchor-id="公式结构">2. <strong>公式结构</strong></h3>
<p>假设模型公式为：</p>
<div class="sourceCode" id="cb1" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb1-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">lmer</span>(Reaction <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">~</span> Days <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> (Days <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|</span> Subject), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">data =</span> sleepstudy)</span></code></pre></div>
<ul>
<li><p><strong>固定效应部分</strong>：<code>Reaction ~ Days</code><br>
这部分表示整体的固定效应，即 <code>Days</code> 对 <code>Reaction</code> 的平均影响（所有受试者的总体趋势）。</p></li>
<li><p><strong>随机效应部分</strong>：<code>(Days | Subject)</code><br>
这部分表示随机效应，允许每个 <code>Subject</code> 的截距和斜率围绕固定效应的平均值进行变化。</p></li>
</ul>
</section>
<section id="数学表达" class="level3">
<h3 class="anchored" data-anchor-id="数学表达">3. <strong>数学表达</strong></h3>
<p>公式 <code>(Days | Subject)</code> 对应的数学模型可以表示为：</p>
<p><img src="https://latex.codecogs.com/png.latex?%0Ay_%7Bij%7D%20=%20%5Cbeta_0%20+%20%5Cbeta_1%20%5Ccdot%20%5Ctext%7BDays%7D_%7Bij%7D%20+%20b_%7B0i%7D%20+%20b_%7B1i%7D%20%5Ccdot%20%5Ctext%7BDays%7D_%7Bij%7D%20+%20%5Cepsilon_%7Bij%7D%0A"></p>
<p>其中：</p>
<ul>
<li><img src="https://latex.codecogs.com/png.latex?y_%7Bij%7D"> 是第 <img src="https://latex.codecogs.com/png.latex?i"> 个 <code>Subject</code> 在第 <img src="https://latex.codecogs.com/png.latex?j"> 天的反应时间。</li>
<li><img src="https://latex.codecogs.com/png.latex?%5Cbeta_0"> 是固定截距（所有受试者的平均初始反应时间）。</li>
<li><img src="https://latex.codecogs.com/png.latex?%5Cbeta_1"> 是固定斜率（所有受试者的平均反应时间随天数的变化速率）。</li>
<li><img src="https://latex.codecogs.com/png.latex?b_%7B0i%7D"> 是第 <img src="https://latex.codecogs.com/png.latex?i"> 个 <code>Subject</code> 的随机截距（偏离固定截距的部分）。</li>
<li><img src="https://latex.codecogs.com/png.latex?b_%7B1i%7D"> 是第 <img src="https://latex.codecogs.com/png.latex?i"> 个 <code>Subject</code> 的随机斜率（偏离固定斜率的部分）。</li>
<li><img src="https://latex.codecogs.com/png.latex?%5Cepsilon_%7Bij%7D"> 是残差误差。</li>
</ul>
</section>
<section id="随机截距和斜率的协方差" class="level3">
<h3 class="anchored" data-anchor-id="随机截距和斜率的协方差">4. <strong>随机截距和斜率的协方差</strong></h3>
<p><code>(Days | Subject)</code> 还会估计 <strong>随机截距和随机斜率之间的协方差</strong>。这意味着： - 如果某个受试者的初始反应时间较高（随机截较大距），其反应时间随天数的变化速率（随机斜率）可能也会较高（正相关）。 - 或者可能相反（负相关）。</p>
<p>协方差矩阵的形式为： <img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Bbmatrix%7D%0A%5Ctext%7BVar%7D(b_%7B0i%7D)%20&amp;%20%5Ctext%7BCov%7D(b_%7B0i%7D,%20b_%7B1i%7D)%20%5C%5C%0A%5Ctext%7BCov%7D(b_%7B0i%7D,%20b_%7B1i%7D)%20&amp;%20%5Ctext%7BVar%7D(b_%7B1i%7D)%0A%5Cend%7Bbmatrix%7D%0A"></p>
</section>
<section id="为什么需要-days-subject" class="level3">
<h3 class="anchored" data-anchor-id="为什么需要-days-subject">5. <strong>为什么需要 <code>(Days | Subject)</code>？</strong></h3>
<ul>
<li><strong>个体差异</strong>：不同受试者可能有不同的初始状态（随机截距）和变化趋势（随机斜率）。</li>
<li><strong>数据结构</strong>：数据是分组的（每个 <code>Subject</code> 有多天的观测值），需要建模组内相关性。</li>
<li><strong>更准确的推断</strong>：随机效应可以减少模型对固定效应的过度依赖，提高估计的准确性。</li>
</ul>
</section>
<section id="代码实现和输出解释" class="level3">
<h3 class="anchored" data-anchor-id="代码实现和输出解释">6. <strong>代码实现和输出解释</strong></h3>
<p>运行以下代码：</p>
<div class="sourceCode" id="cb2" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb2-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(lme4)</span>
<span id="cb2-2">model <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">lmer</span>(Reaction <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">~</span> Days <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> (Days <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|</span> Subject), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">data =</span> sleepstudy)</span>
<span id="cb2-3"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">summary</span>(model)</span></code></pre></div>
<p>输出中会包含：</p>
<ul>
<li><p><strong>随机效应部分</strong>：</p>
<pre><code>Random effects:
Groups   Name        Variance Std.Dev. Corr
Subject  (Intercept) 612.07   24.740       
        Days          32.68    5.717   0.07
Residual             653.86   25.571       </code></pre>
<ul>
<li><code>Variance</code> 和 <code>Std.Dev.</code> 分别是随机截距和随机斜率的方差及其标准差。</li>
<li><code>Corr</code> 是随机截距和随机斜率之间的相关性（协方差）。</li>
</ul></li>
<li><p><strong>固定效应部分</strong>：</p>
<pre><code>Fixed effects:
            Estimate Std. Error df t value Pr(&gt;|t|)    
(Intercept)  251.405      6.825 17  36.838  &lt; 2e-16 ***
Days          10.467      1.546 17   6.771 3.58e-06 ***</code></pre>
<ul>
<li><code>Estimate</code> 是固定截距和固定斜率的估计值。</li>
</ul></li>
</ul>
</section>
<section id="简化模型" class="level3">
<h3 class="anchored" data-anchor-id="简化模型">7. <strong>简化模型</strong></h3>
<p>如果只需要随机截距（固定斜率），可以写成：</p>
<div class="sourceCode" id="cb5" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb5-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">lmer</span>(Reaction <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">~</span> Days <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> (<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|</span> Subject), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">data =</span> sleepstudy)</span></code></pre></div>
<p>此时只允许每个 <code>Subject</code> 有自己的截距，但斜率统一为固定效应的斜率。</p>
</section>
<section id="总结" class="level3">
<h3 class="anchored" data-anchor-id="总结">8. <strong>总结</strong></h3>
<p><code>(Days | Subject)</code> 的作用是： 1. 允许每个 <code>Subject</code> 有自己的随机截距和随机斜率。 2. 估计随机截距和随机斜率之间的协方差。 3. 建模个体差异，提高模型的准确性和合理性。</p>
<p>这种语法是线性混合效应模型的核心，能够处理分组数据中的复杂相关性。</p>
<p>User: Days | Subject 前者是斜率，后者是截距吗？</p>
<p>Kimi: <code>(Days | Subject)</code> 这种语法并不直接表示“前者是斜率，后者是截距”，而是表示随机效应的结构。具体来说：</p>
</section>
<section id="随机截距和随机斜率的组合" class="level3">
<h3 class="anchored" data-anchor-id="随机截距和随机斜率的组合">1. <strong>随机截距和随机斜率的组合</strong></h3>
<ul>
<li><strong>随机截距</strong>：每个 <code>Subject</code> 在 <code>Days = 0</code> 时的反应时间可以不同。</li>
<li><strong>随机斜率</strong>：每个 <code>Subject</code> 的反应时间随 <code>Days</code> 变化的速率可以不同。</li>
</ul>
</section>
<section id="随机效应的含义" class="level3">
<h3 class="anchored" data-anchor-id="随机效应的含义">2. <strong>随机效应的含义</strong></h3>
<ul>
<li><code>(Days | Subject)</code> 允许每个 <code>Subject</code> 拥有自己独立的截距和斜率。这意味着模型会为每个 <code>Subject</code> 估计一个随机截距和一个随机斜率，这些随机效应会围绕固定效应的平均值进行变化。</li>
</ul>
</section>
<section id="数学表达-1" class="level3">
<h3 class="anchored" data-anchor-id="数学表达-1">3. <strong>数学表达</strong></h3>
<p>在模型中，假设反应时间 <code>Reaction</code> 是 <code>Days</code> 的函数，并且每个 <code>Subject</code> 有不同的截距和斜率： <img src="https://latex.codecogs.com/png.latex?%0Ay_%7Bij%7D%20=%20%5Cbeta_0%20+%20%5Cbeta_1%20%5Ccdot%20%5Ctext%7BDays%7D_%7Bij%7D%20+%20b_%7B0i%7D%20+%20b_%7B1i%7D%20%5Ccdot%20%5Ctext%7BDays%7D_%7Bij%7D%20+%20%5Cepsilon_%7Bij%7D%0A"></p>
<p>其中：</p>
<ul>
<li><img src="https://latex.codecogs.com/png.latex?%5Cbeta_0"> 是固定截距（所有受试者的平均初始反应时间）。</li>
<li><img src="https://latex.codecogs.com/png.latex?%5Cbeta_1"> 是固定斜率（所有受试者的平均反应时间随天数的变化速率）。</li>
<li><img src="https://latex.codecogs.com/png.latex?b_%7B0i%7D"> 是第 <img src="https://latex.codecogs.com/png.latex?i"> 个 <code>Subject</code> 的随机截距。</li>
<li><img src="https://latex.codecogs.com/png.latex?b_%7B1i%7D"> 是第 <img src="https://latex.codecogs.com/png.latex?i"> 个 <code>Subject</code> 的随机斜率。</li>
<li><img src="https://latex.codecogs.com/png.latex?%5Cepsilon_%7Bij%7D"> 是残差误差。</li>
</ul>
</section>
<section id="随机截距和随机斜率的协方差" class="level3">
<h3 class="anchored" data-anchor-id="随机截距和随机斜率的协方差">4. <strong>随机截距和随机斜率的协方差</strong></h3>
<p><code>(Days | Subject)</code> 还会估计随机截距和随机斜率之间的协方差。这意味着： - 如果某个受试者的初始反应时间较高（随机截距较大），其反应时间随天数的变化速率（随机斜率）可能也会较高（正相关）。 - 或者可能相反（负相关）。</p>
<p>协方差矩阵的形式为： <img src="https://latex.codecogs.com/png.latex?%0A%5Cbegin%7Bbmatrix%7D%0A%5Ctext%7BVar%7D(b_%7B0i%7D)%20&amp;%20%5Ctext%7BCov%7D(b_%7B0i%7D,%20b_%7B1i%7D)%20%5C%5C%0A%5Ctext%7BCov%7D(b_%7B0i%7D,%20b_%7B1i%7D)%20&amp;%20%5Ctext%7BVar%7D(b_%7B1i%7D)%0A%5Cend%7Bbmatrix%7D%0A"></p>
</section>
<section id="简化模型-1" class="level3">
<h3 class="anchored" data-anchor-id="简化模型-1">5. <strong>简化模型</strong></h3>
<p>如果你只需要随机截距（固定斜率），可以写成：</p>
<div class="sourceCode" id="cb6" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb6-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">lmer</span>(Reaction <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">~</span> Days <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> (<span class="dv" style="color: #AD0000;
background-color: null;
font-style: inherit;">1</span> <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|</span> Subject), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">data =</span> sleepstudy)</span></code></pre></div>
<p>此时只允许每个 <code>Subject</code> 有自己的截距，但斜率统一为固定效应的斜率。</p>
</section>
<section id="总结-1" class="level3">
<h3 class="anchored" data-anchor-id="总结-1">6. <strong>总结</strong></h3>
<p><code>(Days | Subject)</code> 的作用是： 1. 允许每个 <code>Subject</code> 有自己的随机截距和随机斜率。 2. 估计随机截距和随机斜率之间的协方差。 3. 建模个体差异，提高模型的准确性和合理性。</p>
<p>这种语法是线性混合效应模型的核心，能够处理分组数据中的复杂相关性。</p>
<p>User: 那 (Days | Subject) 和 (Subject | Days) 有什么区别</p>
<p>Kimi: 在 R 的公式语法中，<code>(Days | Subject)</code> 和 <code>(Subject | Days)</code> 是不同的，它们在模型中的含义和作用也不同。下面详细解释两者的区别。</p>
</section>
<section id="days-subject" class="level3">
<h3 class="anchored" data-anchor-id="days-subject">1. <strong><code>(Days | Subject)</code></strong></h3>
<section id="含义" class="level4">
<h4 class="anchored" data-anchor-id="含义">含义</h4>
<ul>
<li><strong>随机效应结构</strong>：<code>(Days | Subject)</code> 表示为每个 <code>Subject</code>（受试者）估计一个随机截距和一个随机斜率，其中斜率是关于 <code>Days</code> 的。</li>
<li><strong>允许变化</strong>：允许每个 <code>Subject</code> 的反应时间随 <code>Days</code> 的变化速率不同。</li>
</ul>
</section>
<section id="数学表达-2" class="level4">
<h4 class="anchored" data-anchor-id="数学表达-2">数学表达</h4>
<p><img src="https://latex.codecogs.com/png.latex?%0Ay_%7Bij%7D%20=%20%5Cbeta_0%20+%20%5Cbeta_1%20%5Ccdot%20%5Ctext%7BDays%7D_%7Bij%7D%20+%20b_%7B0i%7D%20+%20b_%7B1i%7D%20%5Ccdot%20%5Ctext%7BDays%7D_%7Bij%7D%20+%20%5Cepsilon_%7Bij%7D%0A"> 其中： - <img src="https://latex.codecogs.com/png.latex?%5Cbeta_0"> 是固定截距。 - <img src="https://latex.codecogs.com/png.latex?%5Cbeta_1"> 是固定斜率。 - <img src="https://latex.codecogs.com/png.latex?b_%7B0i%7D"> 是第 <img src="https://latex.codecogs.com/png.latex?i"> 个 <code>Subject</code> 的随机截距。 - <img src="https://latex.codecogs.com/png.latex?b_%7B1i%7D"> 是第 <img src="https://latex.codecogs.com/png.latex?i"> 个 <code>Subject</code> 的随机斜率。 - <img src="https://latex.codecogs.com/png.latex?%5Cepsilon_%7Bij%7D"> 是残差误差。</p>
</section>
</section>
<section id="subject-days" class="level3">
<h3 class="anchored" data-anchor-id="subject-days">2. <strong><code>(Subject | Days)</code></strong></h3>
<section id="含义-1" class="level4">
<h4 class="anchored" data-anchor-id="含义-1">含义</h4>
<ul>
<li><strong>随机效应结构</strong>：<code>(Subject | Days)</code> 表示为每个 <code>Days</code> 估计一个随机截距和一个随机斜率，其中斜率是关于 <code>Subject</code> 的。</li>
<li><strong>允许变化</strong>：允许每个 <code>Days</code> 的反应时间随 <code>Subject</code> 的变化不同。这种结构在大多数情况下是没有意义的，因为 <code>Days</code> 通常是连续变量，而不是分组变量。</li>
</ul>
</section>
<section id="数学表达-3" class="level4">
<h4 class="anchored" data-anchor-id="数学表达-3">数学表达</h4>
<p><img src="https://latex.codecogs.com/png.latex?%0Ay_%7Bij%7D%20=%20%5Cbeta_0%20+%20%5Cbeta_1%20%5Ccdot%20%5Ctext%7BSubject%7D_%7Bij%7D%20+%20b_%7B0j%7D%20+%20b_%7B1j%7D%20%5Ccdot%20%5Ctext%7BSubject%7D_%7Bij%7D%20+%20%5Cepsilon_%7Bij%7D%0A"></p>
<p>其中：</p>
<ul>
<li><img src="https://latex.codecogs.com/png.latex?%5Cbeta_0"> 是固定截距。</li>
<li><img src="https://latex.codecogs.com/png.latex?%5Cbeta_1"> 是固定斜率。</li>
<li><img src="https://latex.codecogs.com/png.latex?b_%7B0j%7D"> 是第 <img src="https://latex.codecogs.com/png.latex?j"> 个 <code>Days</code> 的随机截距。</li>
<li><img src="https://latex.codecogs.com/png.latex?b_%7B1j%7D"> 是第 <img src="https://latex.codecogs.com/png.latex?j"> 个 <code>Days</code> 的随机斜率。</li>
<li><img src="https://latex.codecogs.com/png.latex?%5Cepsilon_%7Bij%7D"> 是残差误差。</li>
</ul>
</section>
</section>
<section id="区别" class="level3">
<h3 class="anchored" data-anchor-id="区别">3. <strong>区别</strong></h3>
<section id="分组变量不同" class="level4">
<h4 class="anchored" data-anchor-id="分组变量不同">1. <strong>分组变量不同</strong></h4>
<ul>
<li><strong><code>(Days | Subject)</code></strong>：
<ul>
<li>分组变量是 <code>Subject</code>，表示每个 <code>Subject</code> 是一个独立的组。</li>
<li>适用于 <code>Subject</code> 是分组变量的情况，例如不同的受试者或个体。</li>
</ul></li>
<li><strong><code>(Subject | Days)</code></strong>：
<ul>
<li>分组变量是 <code>Days</code>，表示每个 <code>Days</code> 是一个独立的组。</li>
<li>通常不适用，因为 <code>Days</code> 是连续变量，而不是分组变量。</li>
</ul></li>
</ul>
</section>
<section id="模型结构不同" class="level4">
<h4 class="anchored" data-anchor-id="模型结构不同">2. <strong>模型结构不同</strong></h4>
<ul>
<li><strong><code>(Days | Subject)</code></strong>：
<ul>
<li>为每个 <code>Subject</code> 估计一个随机截距和一个随机斜率（关于 <code>Days</code>）。</li>
<li>适用于建模个体差异，例如每个受试者的初始反应时间和反应时间变化速率。</li>
</ul></li>
<li><strong><code>(Subject | Days)</code></strong>：
<ul>
<li>为每个 <code>Days</code> 估计一个随机截距和一个随机斜率（关于 <code>Subject</code>）。</li>
<li>通常没有实际意义，因为 <code>Days</code> 是连续变量，每个 <code>Days</code> 的随机效应会导致模型过于复杂且难以解释。</li>
</ul></li>
</ul>
</section>
<section id="实际应用不同" class="level4">
<h4 class="anchored" data-anchor-id="实际应用不同">3. <strong>实际应用不同</strong></h4>
<ul>
<li><strong><code>(Days | Subject)</code></strong>：
<ul>
<li>常用于建模个体差异，例如在纵向研究中，每个受试者的反应时间随时间的变化。</li>
<li>是常见的随机效应结构，适用于大多数分组数据。</li>
</ul></li>
<li><strong><code>(Subject | Days)</code></strong>：
<ul>
<li>实际应用中很少见，因为 <code>Days</code> 通常是连续变量，而不是分组变量。</li>
<li>如果 <code>Days</code> 是离散的（例如，特定的天数），可以考虑使用，但在大多数情况下不适用。</li>
</ul></li>
</ul>
</section>
</section>
<section id="示例" class="level3">
<h3 class="anchored" data-anchor-id="示例">4. <strong>示例</strong></h3>
<section id="days-subject-1" class="level4">
<h4 class="anchored" data-anchor-id="days-subject-1"><strong><code>(Days | Subject)</code></strong></h4>
<div class="sourceCode" id="cb7" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb7-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(lme4)</span>
<span id="cb7-2">model <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">lmer</span>(Reaction <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">~</span> Days <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> (Days <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|</span> Subject), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">data =</span> sleepstudy)</span></code></pre></div>
<ul>
<li><strong>解释</strong>：每个 <code>Subject</code> 有一个随机截距和一个随机斜率，允许每个受试者的反应时间随 <code>Days</code> 的变化不同。</li>
</ul>
</section>
<section id="subject-days-1" class="level4">
<h4 class="anchored" data-anchor-id="subject-days-1"><strong><code>(Subject | Days)</code></strong></h4>
<div class="sourceCode" id="cb8" style="background: #f1f3f5;"><pre class="sourceCode r code-with-copy"><code class="sourceCode r"><span id="cb8-1"><span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">library</span>(lme4)</span>
<span id="cb8-2">model <span class="ot" style="color: #003B4F;
background-color: null;
font-style: inherit;">&lt;-</span> <span class="fu" style="color: #4758AB;
background-color: null;
font-style: inherit;">lmer</span>(Reaction <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">~</span> Days <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">+</span> (Subject <span class="sc" style="color: #5E5E5E;
background-color: null;
font-style: inherit;">|</span> Days), <span class="at" style="color: #657422;
background-color: null;
font-style: inherit;">data =</span> sleepstudy)</span></code></pre></div>
<ul>
<li><strong>解释</strong>：为每个 <code>Days</code> 估计一个随机截距和一个随机斜率，关于 <code>Subject</code>。这种模型通常不适用，因为 <code>Days</code> 是连续变量，且每个 <code>Days</code> 的随机效应会导致模型过于复杂。</li>
</ul>
</section>
</section>
<section id="总结-2" class="level3">
<h3 class="anchored" data-anchor-id="总结-2">5. <strong>总结</strong></h3>
<ul>
<li><strong><code>(Days | Subject)</code></strong>：适用于分组变量 <code>Subject</code>，为每个受试者估计随机截距和随机斜率。</li>
<li><strong><code>(Subject | Days)</code></strong>：通常不适用，因为 <code>Days</code> 是连续变量，导致模型复杂且难以解释。</li>
</ul>
<p>在实际应用中，<code>(Days | Subject)</code> 是更常见的随机效应结构，用于建模个体差异。</p>
<p>User: 深度神经网络学习是不是没办法引入这种随机效应term？</p>
<p>Kimi: 深度神经网络可以引入类似随机效应项的机制，以下是一些常见的方法：</p>
</section>
<section id="dropout" class="level3">
<h3 class="anchored" data-anchor-id="dropout">Dropout</h3>
<ul>
<li><strong>原理</strong>：在训练过程中随机丢弃某些神经元的输出，使网络在每次迭代时都以不同的结构进行训练，增加了模型的随机性，从而提高其泛化能力。</li>
<li><strong>适用场景</strong>：广泛应用于各种类型的神经网络，如全连接网络、卷积神经网络等，尤其是在网络较深、参数较多、容易过拟合的情况下效果显著。</li>
</ul>
</section>
<section id="随机梯度估计" class="level3">
<h3 class="anchored" data-anchor-id="随机梯度估计">随机梯度估计</h3>
<ul>
<li><strong>原理</strong>：在优化过程中使用随机梯度估计方法，如随机梯度下降（SGD），而不是完整的批量梯度下降。每次迭代只使用一部分样本计算梯度，引入了随机性，使模型能够更快地收敛，并且有助于跳出局部最优。</li>
<li><strong>适用场景</strong>：适用于大规模数据集的训练，尤其是在计算资源有限的情况下，能够有效提高训练效率。</li>
</ul>
</section>
<section id="噪声注入" class="level3">
<h3 class="anchored" data-anchor-id="噪声注入">噪声注入</h3>
<ul>
<li><strong>原理</strong>：在数据或模型的权重中注入随机噪声，例如在输入数据中添加高斯噪声，或者在权重更新时加入噪声项。这可以模拟数据中的不确定性，增强模型对噪声的鲁棒性。</li>
<li><strong>适用场景</strong>：适用于数据存在噪声或模型需要对噪声具有较高鲁棒性的场景，如图像识别中的抗噪性训练。</li>
</ul>
</section>
<section id="随机池化" class="level3">
<h3 class="anchored" data-anchor-id="随机池化">随机池化</h3>
<ul>
<li><strong>原理</strong>：在池化操作中引入随机性，例如随机选择池化窗口中的位置进行池化，而不是采用固定的池化方式。这样可以增加模型的随机性和多样性。</li>
<li><strong>适用场景</strong>：主要用于卷积神经网络的池化层，能够提高模型对特征位置的不敏感性。</li>
</ul>
</section>
<section id="随机注意力机制" class="level3">
<h3 class="anchored" data-anchor-id="随机注意力机制">随机注意力机制</h3>
<ul>
<li><strong>原理</strong>：在注意力机制中引入随机性，例如随机选择注意力头或者随机调整注意力权重。这可以使模型在训练过程中探索不同的注意力分布，增强其泛化能力。</li>
<li><strong>适用场景</strong>：适用于自然语言处理任务中的序列建模，如机器翻译、文本生成等。</li>
</ul>
</section>
<section id="层级似然学习框架" class="level3">
<h3 class="anchored" data-anchor-id="层级似然学习框架">层级似然学习框架</h3>
<ul>
<li><strong>原理</strong>：通过构建层级似然学习框架，将随机效应引入深度神经网络。例如，将高基数分类特征视为随机效应变量，并采用线性混合模型中的负对数似然损失函数，将其整合到深度学习框架中，从而实现对随机效应的建模。</li>
<li><strong>适用场景</strong>：适用于处理具有高基数分类特征的数据，如聚类计数数据、重复测量数据等。</li>
</ul>
</section>
<section id="动态网络结构" class="level3">
<h3 class="anchored" data-anchor-id="动态网络结构">动态网络结构</h3>
<ul>
<li><strong>原理</strong>：设计动态的网络结构，使网络在每次前向传播时随机选择不同的路径或层进行计算。例如，使用随机深度网络（Stochastic Depth），在训练过程中随机丢弃一些层，从而增加模型的随机性和多样性。</li>
<li><strong>适用场景</strong>：适用于构建更深的神经网络，能够在不显著增加计算成本的情况下提高模型的性能。</li>
</ul>
</section>
<section id="模型集成" class="level3">
<h3 class="anchored" data-anchor-id="模型集成">模型集成</h3>
<ul>
<li><strong>原理</strong>：通过集成多个不同的深度神经网络模型，利用每个模型的随机性和多样性来提高整体的泛化能力。例如，使用随机森林的方法训练多个神经网络，并将它们的预测结果进行平均或投票。</li>
<li><strong>适用场景</strong>：适用于需要高精度预测的场景，如医学图像诊断、金融风险预测等。</li>
</ul>


</section>

 ]]></description>
  <category>stats</category>
  <category>AI</category>
  <guid>https://shixiangwang.github.io/posts/2025-06-11-lmer/</guid>
  <pubDate>Tue, 10 Jun 2025 16:00:00 GMT</pubDate>
</item>
<item>
  <title>开源之夏：生物医学可视化开源图鉴Bizard项目拓展</title>
  <dc:creator>Shixiang Wang</dc:creator>
  <link>https://shixiangwang.github.io/posts/2025-04-28-ospp-bizard-openbiox/</link>
  <description><![CDATA[ 





<p>又是一年开源之夏项目（https://summer-ospp.ac.cn/）到了，今年我们基于 Bizard 项目依托 Openbiox 社区进行了项目申请，目前已经通过组委会的审核正式发布。欢迎感兴趣且有空（项目的主要执行期在暑假期间）的<strong>在校同学</strong>了解和参与报名！在初步写好申请书之后可以联系导师沟通交流，项目申请最后会筛选出一位实际中选人。</p>
<p><img src="https://weekly-1301043367.cos.ap-shanghai.myqcloud.com/20250427234023588.png" class="img-fluid"></p>
<section id="项目简述" class="level2">
<h2 class="anchored" data-anchor-id="项目简述">项目简述</h2>
<ul>
<li>项目编号：2551d0158</li>
<li>官方发布地址: https://summer-ospp.ac.cn/org/prodetail/2551d0158?list=org&amp;navpage=org</li>
<li>导师联系邮箱: shixiang1994wang@gmail.com （王诗翔）</li>
<li>技术领域：Programming Language, Data Science, Scientific Computing</li>
<li>编程语言：R</li>
<li>开源协议：Apache</li>
</ul>
<p>可视化图形作为连接数据与知识的桥梁，是探寻自然客观规律、挖掘和解释科学发现的重要媒介。在当今数据驱动的生物医学研究时代，利用数据可视化相关的编程语言、图形化交互平台或其他人工智能技术完成各类数据挖掘任务已成为生物医学领域研究人员的核心技能之一。</p>
<p>目前，指令式数据分析软件包、图形界面软件以及云平台已逐渐成为提升科学研究效率的重要基础设施。如何进一步提高生物医学数据分析相关研究的重复性是科学社区面临的重要挑战之一。另外一方面，对于众多生物医学研究的初学者而言，编程语言、绘图工具的学习曲线陡峭，特别是在将编程代码应用于实际科学研究场景时往往四处碰壁，大量有用有益的指南手册、编程语言函数或示例散落在互联网各处，仍未被充分整合利用、验证和推广。为此，我们发起 <strong>Bizard 白泽项目（https://github.com/openbiox/Bizard），旨在搭建协作组主导、社区参与的生物医学可视化开源项目</strong>，为学习、利用和讨论数据可视化、促进可视化数据分析相关软件开发提供一体化的平台和协作社区，希望构建国内/国际别树一帜的生物信息学基础设施。</p>
<section id="项目产出要求" class="level3">
<h3 class="anchored" data-anchor-id="项目产出要求">项目产出要求</h3>
<ol type="1">
<li>按照 Bizard 项目文档要求，使用 Quarto 文档（https://quarto.org/）完成 50-100 个 Hiplot 插件的开源可视化教程撰写【Hiplot (org)图表整理https://kdocs.cn/l/cvqDqGQBQL25 】；</li>
<li>进行 Bizard 项目网站的优化（https://openbiox.github.io/Bizard/），增强教程文档的展示效果和易用性；</li>
<li>整理/构建10-20个生物医学领域常用的/精简数据集，方便可视化探索和教程撰写。</li>
</ol>
</section>
<section id="项目技术要求" class="level3">
<h3 class="anchored" data-anchor-id="项目技术要求">项目技术要求</h3>
<ol type="1">
<li>熟悉 R 语言基础操作，可以独立完成 R 语言函数的编写和调试；</li>
<li>熟练使用 Git/GitHub 等代码管理软件和协作开发平台；</li>
<li>有数据和计算科学相关学科背景优先；</li>
<li>有可视化相关开源项目开发经验优先。</li>
</ol>
</section>
<section id="项目成果仓库" class="level3">
<h3 class="anchored" data-anchor-id="项目成果仓库">项目成果仓库</h3>
<ul>
<li>https://github.com/openbiox/Bizard</li>
</ul>
</section>
</section>
<section id="开源之夏活动流程" class="level2">
<h2 class="anchored" data-anchor-id="开源之夏活动流程">开源之夏活动流程</h2>
<p>学生需要通过 https://summer-ospp.ac.cn/ 进行学生注册和登录。</p>
<p><img src="https://weekly-1301043367.cos.ap-shanghai.myqcloud.com/20250427223608315.png" class="img-fluid"></p>
</section>
<section id="一些历史资料" class="level2">
<h2 class="anchored" data-anchor-id="一些历史资料">一些历史资料</h2>
<ol type="1">
<li>癌症多组学数据挖掘软件 UCSCXenaShiny v2.0 开发项目申请书：https://summer-ospp.ac.cn/2023/previewPdf/1975</li>
<li>Openbiox 2023 开源之夏项目中选公示：https://mp.weixin.qq.com/s/kUFixYFDaynYzIWxb3pSFw</li>
<li>OSPP | 癌症多组学数据挖掘软件 UCSCXenaShiny 2.0 项目结项报告：https://mp.weixin.qq.com/s/W52xfBA1aH9ZFWDdxYEgYg</li>
<li>项目经验分享｜Openbiox 社区李申锁 ：开源 shiny 网页玩转生信数据分析：https://mp.weixin.qq.com/s/R1MEkgPZD32mpzg-VBK2UQ</li>
<li>王诗翔/周建国/陈素君联合团队研发肿瘤公共多组学交互式分析工具UCSCXenaShiny新版本：https://mp.weixin.qq.com/s/YM0xEXywjNFx9iZMZaO9mA</li>
</ol>


</section>

 ]]></description>
  <category>Bizard</category>
  <guid>https://shixiangwang.github.io/posts/2025-04-28-ospp-bizard-openbiox/</guid>
  <pubDate>Sun, 27 Apr 2025 16:00:00 GMT</pubDate>
</item>
<item>
  <title>Mendelian randomization 和 GWAS</title>
  <dc:creator>Shixiang Wang</dc:creator>
  <link>https://shixiangwang.github.io/posts/2025-04-15-mendelian-randomization-and-gwas/</link>
  <description><![CDATA[ 





<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
提问
</div>
</div>
<div class="callout-body-container callout-body">
<p>孟德尔随机化与gwas区别</p>
</div>
</div>
<section id="孟德尔随机化与全基因组关联分析" class="level2">
<h2 class="anchored" data-anchor-id="孟德尔随机化与全基因组关联分析">孟德尔随机化与全基因组关联分析</h2>
<p>孟德尔随机化（Mendelian Randomization, MR）和全基因组关联分析（Genome-wide association study, GWAS）是两种在遗传流行病学研究中常用的方法，它们在目的、数据来源、分析流程、假设条件、结果解释以及应用场景等方面存在一些区别：</p>
<section id="定义与目的" class="level3">
<h3 class="anchored" data-anchor-id="定义与目的">定义与目的</h3>
<ul>
<li><strong>GWAS</strong>：是一种用于识别与复杂性状（如疾病、性状等）相关的遗传变异的方法。通过对大规模人群进行基因组扫描，GWAS可以发现单核苷酸多态性（SNP）与某一性状的关联。</li>
<li><strong>孟德尔随机化</strong>：是一种利用遗传变异作为工具变量来研究因果关系的方法。它的基本思想是利用随机分配的基因型来消除混杂因素的影响，从而评估某一暴露（如生活方式、饮食习惯等）与结果（如疾病）的因果关系。</li>
</ul>
</section>
<section id="数据来源" class="level3">
<h3 class="anchored" data-anchor-id="数据来源">数据来源</h3>
<ul>
<li><strong>GWAS</strong>：需要大量的样本数据，通常包括病例组和对照组，通过基因分型技术获取个体的基因型数据，并收集相关的表型信息。</li>
<li><strong>孟德尔随机化</strong>：主要依赖于GWAS的结果数据，即已经识别出的与暴露和结果相关的SNP及其关联统计量（如效应大小、P值等）。</li>
</ul>
</section>
<section id="分析流程" class="level3">
<h3 class="anchored" data-anchor-id="分析流程">分析流程</h3>
<ul>
<li><strong>GWAS</strong>：首先对原始数据进行质量控制，包括去除缺失率高的 SNP 和样本、排除偏离哈迪-温伯格平衡的 SNP 等；然后进行关联分析，计算每个 SNP 与表型之间的关联 P 值，并绘制曼哈顿图和 QQ 图等进行可视化。</li>
<li><strong>孟德尔随机化</strong>：首先从 GWAS 数据中挑选工具变量，即与暴露因素强相关的 SNP；然后进行两样本孟德尔随机化分析，利用工具变量估计暴露与结果之间的因果效应，常用的估计方法有逆方差加权法、MR Egger 回归法等。</li>
</ul>
</section>
<section id="假设条件" class="level3">
<h3 class="anchored" data-anchor-id="假设条件">假设条件</h3>
<ul>
<li><strong>GWAS</strong>：主要假设是基因型与表型之间存在关联，且这种关联在统计学上是显著的。</li>
<li><strong>孟德尔随机化</strong>：需要满足三大假设，即关联性假设（SNP 与暴露因素之间是强相关的）、独立性假设（SNP 与混杂因素之间是独立的）和排他性假设（SNP 只能通过暴露因素对结局产生作用）。</li>
</ul>
</section>
<section id="结果解释" class="level3">
<h3 class="anchored" data-anchor-id="结果解释">结果解释</h3>
<ul>
<li><strong>GWAS</strong>：结果表明某个 SNP 与某个性状存在关联，但这种关联并不一定是因果关系，可能受到混杂因素和反向因果关系的影响。</li>
<li><strong>孟德尔随机化</strong>：结果可以推断暴露因素与结果之间是否存在因果关系，以及因果效应的大小和方向，为后续的干预研究和政策制定提供依据。</li>
</ul>
</section>
<section id="应用场景" class="level3">
<h3 class="anchored" data-anchor-id="应用场景">应用场景</h3>
<ul>
<li><strong>GWAS</strong>：适用于探索性研究，用于发现与复杂性状相关的遗传变异，为后续的功能研究和机制探讨提供线索。</li>
<li><strong>孟德尔随机化</strong>：适用于在观察性研究中评估因果关系，特别是在无法进行随机对照试验的情况下，如评估生活方式、环境暴露等因素对疾病的影响。</li>
</ul>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
提问
</div>
</div>
<div class="callout-body-container callout-body">
<p>能形象地介绍孟德尔随机化并举例么</p>
</div>
</div>
<p>孟德尔随机化（Mendelian Randomization, MR）是一种利用遗传变异作为工具变量的方法，用于评估暴露因素（如生活方式、环境因素等）与结果（如疾病）之间的因果关系。它的核心思想是利用基因的随机分配特性来减少混杂因素的影响，从而更可靠地推断因果关系。下面通过一个形象的比喻和具体例子来解释。</p>
</section>
<section id="形象比喻基因是天生的随机试验" class="level3">
<h3 class="anchored" data-anchor-id="形象比喻基因是天生的随机试验"><strong>形象比喻：基因是“天生的随机试验”</strong></h3>
<p>想象你正在进行一项研究，想弄清楚“喝咖啡是否会导致高血压”。在传统的观察性研究中，你可能会发现喝咖啡多的人更容易得高血压，但这并不一定是因果关系。也许喝咖啡多的人同时有其他习惯（比如吸烟、熬夜），这些习惯才是高血压的真正原因。</p>
<p>孟德尔随机化就像一个“天生的随机试验”。基因在受精卵形成时是随机分配的，这种随机性类似于随机对照试验（RCT）中的随机分组。如果某个基因与喝咖啡的行为相关（比如这个基因让人更喜欢咖啡的味道），那么这个基因就像一个“标签”，可以帮助我们研究喝咖啡与高血压之间的因果关系，而不受其他混杂因素的干扰。</p>
</section>
<section id="具体例子饮酒与心血管疾病" class="level3">
<h3 class="anchored" data-anchor-id="具体例子饮酒与心血管疾病"><strong>具体例子：饮酒与心血管疾病</strong></h3>
<p>假设你想研究“饮酒是否会导致心血管疾病”。传统的观察性研究可能会发现饮酒多的人更容易得心血管疾病，但这可能是由于饮酒者的生活方式（如吸烟、不运动）或其他因素的影响。</p>
<section id="孟德尔随机化的步骤" class="level4">
<h4 class="anchored" data-anchor-id="孟德尔随机化的步骤"><strong>孟德尔随机化的步骤：</strong></h4>
<ol type="1">
<li><strong>找到工具变量</strong>：假设科学家发现了一个基因（比如某个单核苷酸多态性，SNP），这个基因与饮酒行为相关。携带这个基因的人更倾向于饮酒，而这个基因本身与心血管疾病无关（除了通过饮酒间接影响）。</li>
<li><strong>关联分析</strong>：
<ul>
<li>首先，研究这个基因与饮酒行为的关联（工具变量与暴露因素的关联）。</li>
<li>然后，研究这个基因与心血管疾病的关联（工具变量与结果的关联）。</li>
</ul></li>
<li><strong>因果推断</strong>：如果基因与饮酒行为强相关，而基因与心血管疾病也有显著关联，那么可以推断饮酒与心血管疾病之间可能存在因果关系。</li>
</ol>
</section>
<section id="假设条件-1" class="level4">
<h4 class="anchored" data-anchor-id="假设条件-1"><strong>假设条件：</strong></h4>
<ul>
<li><strong>关联性</strong>：基因必须与饮酒行为强相关。</li>
<li><strong>独立性</strong>：基因不能与混杂因素（如吸烟、饮食习惯）相关。</li>
<li><strong>排他性</strong>：基因只能通过饮酒行为影响心血管疾病，而不能通过其他途径（如直接影响胆固醇水平）。</li>
</ul>
</section>
</section>
<section id="总结" class="level3">
<h3 class="anchored" data-anchor-id="总结"><strong>总结：</strong></h3>
<p>孟德尔随机化就像一个“天然的实验设计”，通过利用基因的随机分配特性，帮助我们更准确地评估因果关系，避免传统观察性研究中混杂因素的干扰。它特别适用于那些无法进行随机对照试验的情况（如研究生活方式或环境暴露对健康的影响）。</p>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
提问
</div>
</div>
<div class="callout-body-container callout-body">
<p>在你的例子中，开始说 基因本身与心血管疾病无关，但关联分析时又需要发现基因与心血管疾病的关联，怎么区分和理解？</p>
</div>
</div>
<p>在孟德尔随机化中，基因与结果（如心血管疾病）的关联是间接的，而不是直接的。这种关联是通过暴露因素（如饮酒行为）实现的。为了更好地理解这一点，我们需要明确孟德尔随机化的三大假设，并结合因果推断的逻辑来解释。</p>
</section>
<section id="基因与结果的关联是间接的" class="level3">
<h3 class="anchored" data-anchor-id="基因与结果的关联是间接的"><strong>1. 基因与结果的关联是间接的</strong></h3>
<ul>
<li><strong>假设条件</strong>：在孟德尔随机化中，工具变量（基因）必须满足以下条件：
<ol type="1">
<li><strong>关联性</strong>：基因必须与暴露因素（如饮酒行为）强相关。</li>
<li><strong>独立性</strong>：基因不能与混杂因素（如吸烟、饮食习惯）相关。</li>
<li><strong>排他性</strong>：基因只能通过暴露因素（饮酒行为）影响结果（心血管疾病），而不能通过其他途径（如直接影响胆固醇水平）。</li>
</ol></li>
<li><strong>关键点</strong>：基因本身并不直接作用于结果（心血管疾病），而是通过暴露因素（饮酒行为）间接影响结果。因此，基因与结果的关联是间接的，而不是直接的。</li>
</ul>
</section>
<section id="如何理解基因与结果的关联" class="level3">
<h3 class="anchored" data-anchor-id="如何理解基因与结果的关联"><strong>2. 如何理解基因与结果的关联</strong></h3>
<p>假设我们发现基因 ( G ) 与饮酒行为强相关（关联性假设成立），并且基因 ( G ) 与心血管疾病也有显著关联。这种关联的出现是因为： - 基因 ( G ) → 饮酒行为 → 心血管疾病</p>
<p>如果基因 ( G ) 与心血管疾病的关联是通过饮酒行为实现的，那么我们可以推断饮酒行为与心血管疾病之间存在因果关系。</p>
</section>
<section id="为什么需要基因与结果的关联" class="level3">
<h3 class="anchored" data-anchor-id="为什么需要基因与结果的关联"><strong>3. 为什么需要基因与结果的关联</strong></h3>
<ul>
<li><p><strong>因果推断的逻辑</strong>：如果基因 ( G ) 与饮酒行为强相关，并且基因 ( G ) 与心血管疾病也有显著关联，那么这种关联只能通过饮酒行为来解释。因为基因 ( G ) 不能直接作用于心血管疾病（排他性假设成立），所以基因与结果的关联必须是通过饮酒行为实现的。</p></li>
<li><p><strong>结论</strong>：基因与结果的关联是因果推断的关键证据。如果基因与结果没有关联，那么即使基因与暴露因素强相关，也无法证明暴露因素对有结果因果作用。</p></li>
</ul>
</section>
<section id="总结基因与结果的关联是间接的" class="level3">
<h3 class="anchored" data-anchor-id="总结基因与结果的关联是间接的"><strong>4. 总结：基因与结果的关联是间接的</strong></h3>
<ul>
<li><strong>基因本身与结果无关</strong>：基因不能直接作用于结果（如心血管疾病），这是排他性假设的核心。</li>
<li><strong>基因与结果的关联是间接的</strong>：基因通过暴露因素（如饮酒行为）间接影响结果，因此基因与结果的关联是因果推断的。</li>
</ul>
</section>
<section id="具体例子饮酒与心血管疾病-1" class="level3">
<h3 class="anchored" data-anchor-id="具体例子饮酒与心血管疾病-1"><strong>具体例子：饮酒与心血管疾病</strong></h3>
<ul>
<li><strong>假设</strong>：
<ul>
<li>基因 ( G ) 与饮酒行为强相关（关联性假设成立）。</li>
<li>基因 ( G ) 与心血管疾病有显著关联（基因与结果的关联）。</li>
<li>基因 ( G ) 不能通过其他途径（如直接影响胆固醇水平）作用于心血管疾病（排他性假设成立）。</li>
</ul></li>
<li><strong>结论</strong>：如果基因 ( G ) 与饮酒行为强相关，并且基因 ( G ) 与心血管疾病也有显著关联，那么可以推断饮酒行为与心血管疾病之间存在因果关系。</li>
</ul>
</section>
<section id="形象比喻桥梁" class="level3">
<h3 class="anchored" data-anchor-id="形象比喻桥梁"><strong>形象比喻：桥梁</strong></h3>
<ul>
<li>想象基因 ( G ) 是一座桥梁的起点，饮酒行为是桥梁本身，心血管疾病是桥梁的终点。基因 ( G ) 不能直接到达终点（心血管疾病），但它可以通过桥梁（饮酒行为）间接影响终点。如果桥梁（饮酒行为）被破坏（例如，通过干预减少饮酒），那么基因 ( G ) 与终点（心血管疾病）的关联也会消失。</li>
</ul>
<p>通过这种方式，孟德尔随机化利用基因的随机分配特性，帮助我们更可靠地评估因果关系，而不受传统观察性研究中混杂因素的干扰。</p>
<div class="callout callout-style-default callout-note callout-titled">
<div class="callout-header d-flex align-content-center">
<div class="callout-icon-container">
<i class="callout-icon"></i>
</div>
<div class="callout-title-container flex-fill">
提问
</div>
</div>
<div class="callout-body-container callout-body">
<p>如何在实际分析中满足排他性：基因只能通过暴露因素（饮酒行为）影响结果（心血管疾病），而不能通过其他途径（如直接影响胆固醇水平）。</p>
</div>
</div>
<p>在孟德尔随机化中，确保基因（工具变量）只能通过暴露因素（如饮酒行为）影响结果（如心血管疾病），而不能通过其他途径（如直接影响胆固醇水平），是满足排他性假设的关键。以下是实现这一目标的具体方法和注意事项：</p>
</section>
<section id="选择合适的工具变量" class="level3">
<h3 class="anchored" data-anchor-id="选择合适的工具变量"><strong>1. 选择合适的工具变量</strong></h3>
<ul>
<li><strong>避免多效性</strong>：选择的基因变异应仅与暴露因素（如饮酒行为）相关，而不与其他可能影响结果的途径相关。例如，ALDH2基因变异（影响酒精代谢）是一个常用的工具变量，因为它主要通过改变饮酒行为间接影响心血管疾病，而没有其他已知的途径直接影响心血管健康。</li>
<li><strong>文献回顾</strong>：通过查阅已有的生物学研究和遗传学文献，确保所选基因变异的生物学机制仅通过暴露因素起作用。</li>
</ul>
</section>
<section id="验证排他性假设" class="level3">
<h3 class="anchored" data-anchor-id="验证排他性假设"><strong>2. 验证排他性假设</strong></h3>
<ul>
<li><strong>分层分析</strong>：在某些亚组中验证基因与结果的关联是否仅通过暴露因素实现。例如，在饮酒行为较低的人群（如女性）中，如果基因与结果的关联消失，则说明排他性假设成立。</li>
<li><strong>负向控制分析</strong>：在与暴露因素无关的亚组中进行分析。例如，研究饮酒对心血管疾病的影响时，可以分析基因与结果的关联在不饮酒人群中是否显著。如果不显著，则支持排他性假设。</li>
</ul>
</section>
<section id="敏感性分析" class="level3">
<h3 class="anchored" data-anchor-id="敏感性分析"><strong>3. 敏感性分析</strong></h3>
<ul>
<li><strong>多效性检测</strong>：使用统计方法（如PCMR分析）检测工具变量是否存在水平多效性（即基因通过其他途径影响结果）。如果检测到多效性，可以排除这些变异或调整分析方法。</li>
<li><strong>异质性检验</strong>：通过分析工具变量对结果的异质性，判断是否存在其他潜在路径。</li>
</ul>
</section>
<section id="结合生物学机制" class="level3">
<h3 class="anchored" data-anchor-id="结合生物学机制"><strong>4. 结合生物学机制</strong></h3>
<ul>
<li><strong>生物学验证</strong>：利用已知的生物学机制验证基因变异是否仅通过暴露因素影响结果。例如，ALDH2基因变异通过影响酒精代谢改变饮酒行为，而不会直接影响胆固醇水平或其他心血管疾病风险因素。</li>
</ul>
</section>
<section id="使用多基因评分" class="level3">
<h3 class="anchored" data-anchor-id="使用多基因评分"><strong>5. 使用多基因评分</strong></h3>
<ul>
<li><strong>增强工具变量的关联性</strong>：通过合并多个基因变异（多基因评分），可以增强工具变量与暴露因素的关联性，从而提高分析的统计功效，并减少多效性的影响。</li>
</ul>
</section>
<section id="总结-1" class="level3">
<h3 class="anchored" data-anchor-id="总结-1"><strong>总结</strong></h3>
<p>在实际分析中，满足排他性假设需要综合考虑工具变量的选择、验证方法和生物学机制。通过避免多效性、验证基因与结果的关联是否仅通过暴露因素实现，以及结合敏感性分析，可以提高孟德尔随机化分析的可靠性，从而更准确地推断因果关系。</p>


</section>
</section>

 ]]></description>
  <category>AI</category>
  <category>bioinformatics</category>
  <guid>https://shixiangwang.github.io/posts/2025-04-15-mendelian-randomization-and-gwas/</guid>
  <pubDate>Mon, 14 Apr 2025 16:00:00 GMT</pubDate>
</item>
<item>
  <title>Bizard 项目成员招募与说明</title>
  <dc:creator>Shixiang Wang</dc:creator>
  <link>https://shixiangwang.github.io/posts/2025-03-19-bizard-recruit/</link>
  <description><![CDATA[ 





<p>前几天，我们正式官宣了「<a href="https://mp.weixin.qq.com/s/WtcxNFB0NyyZDv0UWhDFcw">Bizard（白泽）：生物医学可视化开源图鉴——一个社区项目的招募与探索</a>」，引发了一些反响，许多朋友和粉丝进行了分享转发，有的朋友提供了项目方向的宝贵建议，有的小伙伴提出了参与的想法，我们也初步邀请了一些老师和公众号参与。这篇推文的目的是就上次未尽之处加以说明，另外也诚挚地邀请符合要求的老师/同学积极参与贡献。</p>
<section id="项目内容与初步目标" class="level2">
<h2 class="anchored" data-anchor-id="项目内容与初步目标">项目内容与初步目标</h2>
<p>项目的初步目标是建立一个基于R的可视化知识库，大体分为3大类：basics, omics, clinics，每类下面按不同的图形绘制分为中英文版本，中英文会在官方网站显示，中文会不断通过公众号推送更新；并不断根据想法和意见迭代更新，基本满足以后生物医学领域研究者的需求（未来也可以作为大语言模型的可靠知识基础）。</p>
</section>
<section id="贡献方式设计" class="level2">
<h2 class="anchored" data-anchor-id="贡献方式设计">贡献方式设计</h2>
<p>招募参与者的工作主要集中在图文教程的撰写和更新补充，其他事务主要由发起人及其学生团队负责，以保障项目的可靠运行。</p>
<p>因此，我们未来考虑系统化梳理需要处理的图文教程，参与者也可以参与补充和设计，然后以自由任务的形式下发通知项目成员，成员根据自己的兴趣、时间安排领取任务和进行处理。 针对一些参与者没有申领的任务，我们也会通过学生团队进行处理完成。</p>
<p>其他包括但不仅限于以下一些贡献类型：提供有效评论/建议；完成图文翻译任务；完成公众号推文编辑审核；提供重要指导意见；负责网站运维更新；负责贡献记录更新；负责推文运维更新。后面几类任务当前考虑由学生团队负责，以更好保证项目推进。</p>
</section>
<section id="贡献记录机制" class="level2">
<h2 class="anchored" data-anchor-id="贡献记录机制">贡献记录机制</h2>
<p>大概以一年为一个周期，记录参与创作者的贡献信息，按<strong>积分制</strong>。积分规则每年根据项目发起人和负责人商量确定。贡献者记录按「GitHub/微信ID/姓名」进行标注。贡献排名靠前者投稿时经讨论纳入共同第一作者，贡献排名靠后者经讨论纳入参与作者或致谢。如果长期提供指导性意见的贡献者经讨论纳入共同通讯作者。在对外宣传和文档记录时，积分排序也将作为主要参考依据。</p>
<p>「提供有效评论/建议」不仅限于项目参与者，在网站/公众号文章下方留言，我们觉得有意就会针对性加分统计！</p>
</section>
<section id="我们期待这样的参与者" class="level2">
<h2 class="anchored" data-anchor-id="我们期待这样的参与者">我们期待这样的参与者</h2>
<ol type="1">
<li>有一定的时间（至少平均每周愿意投入1-2小时）并对该项目有兴趣。</li>
<li>开源、共享、协作精神和意识。</li>
<li>掌握 R 可视化与编程；有长期输出R及可视化博客/公众号经历 优先。</li>
</ol>
</section>
<section id="联系方式" class="level2">
<h2 class="anchored" data-anchor-id="联系方式">联系方式</h2>
<ul>
<li>罗鹏（<a href="mailto:luopeng@smu.edu.cn" class="email">luopeng@smu.edu.cn</a>）</li>
<li>王诗翔（<a href="mailto:wangshx@csu.edu.cn" class="email">wangshx@csu.edu.cn</a>）或通过「生信协作组」公众号后台交流添加老师微信，说明下参与 Bizard 项目</li>
</ul>
<p>感谢！请大家多支持！</p>


</section>

 ]]></description>
  <category>Bizard</category>
  <guid>https://shixiangwang.github.io/posts/2025-03-19-bizard-recruit/</guid>
  <pubDate>Tue, 18 Mar 2025 16:00:00 GMT</pubDate>
</item>
<item>
  <title>Bizard（白泽）：生物医学可视化开源图鉴——一个社区项目的招募与探索</title>
  <dc:creator>Shixiang Wang</dc:creator>
  <link>https://shixiangwang.github.io/posts/2025-03-19-bizard/</link>
  <description><![CDATA[ 





<p>发起人：罗鹏、王诗翔、李剑峰、曾健明</p>
<p><strong>可视化</strong>是数据与科学研究故事的桥梁，是探寻科学数据规律、挖掘和解释创新发现的重要参考，在当今数据驱动的生物医学研究时代，利用代码指令完成数据可视化的能力已成为生物医学领域研究人员的核心技能之一。虽然当前领域内已经有许多成熟的图形界面软件以及生信云平台，但是促进生物医学数据的可重复研究既是科学研究的潮流，也是提升课题研究质量的重要途径。然而，对于众多生物医学研究的初学者而言，编程、绘图学习曲线陡峭，特别是在将代码应用于实际研究场景时往往面临诸多挑战，有用的资料散落在互联网各处。为此，我们发起<strong>Bizard白泽</strong>项目，旨在搭建<strong>协作组主导、社区参与的生物医学可视化开源项目</strong>，为学习、利用和讨论数据可视化提供一体化的平台和协作社区，希望构建国内/国际别树一帜的生物信息学基础设施。</p>
<div class="quarto-figure quarto-figure-center">
<figure class="figure">
<p><img src="https://weekly-1301043367.cos.ap-shanghai.myqcloud.com/20250312123338539.png" class="img-fluid figure-img"></p>
<figcaption>Bizard项目Logo</figcaption>
</figure>
</div>
<blockquote class="blockquote">
<p>项目名来源小帖士：白泽是上古时代传说中的神兽，号称上知天文地理，下知鸡毛蒜皮，能说人言，曾应黄帝所求作鬼神图鉴。白泽的这些能力体现了对知识的广泛掌握和对信息的可视化表达。取名白泽既体现我们国内同行对于传统、知识的尊崇，也借此表达我们对于项目的目标定位与学术追求。英文名取音译Bizard。我们注意到复旦有个学术团队名为whitzard，这里我们也以作区分。所以我们的项目全称为：<strong>Bizard（白泽）：生物医学可视化开源图鉴</strong>。</p>
</blockquote>
<p>Bizard项目初步以R语言为基础（未来也考虑其他可能的编程语言和方向），从最基本的数据可视化入手，基于<a href="https://r-graph-gallery.com/" title="The R Graph Gallery">The R Graph Gallery</a>的经典案例，结合实际生物医学研究场景，为初学者提供详实的绘图代码教程。每个教程将不仅包含完整的代码解析和预览，而且会附带相应的生物学背景说明和使用场景说明，帮助学习者理解代码在研究中的实际应用效果和价值。这种理论与实践相结合的方式，将大大降低生物医学研究人员的学习门槛。<strong>为了构建可持续发展的社区生态，我们计划联合国内外具有创造力、热衷于数据可视化的学习者、开发者和共享者，共同打造一个充满活力的社群。在这个社群中，成员可以自由交流可视化技术与经验，共同探讨与协作。同时，我们也会与<a href="https://github.com/openbiox/weekly" title="Openbiox生信开源社区">Openbiox生信开源社区</a>深度绑定运作，多方位促进知识累积和项目迭代。我们相信，只有通过持续的交流与协作，才能激发更多创新思维，推动项目的长期发展。</strong></p>
<p><img src="https://weekly-1301043367.cos.ap-shanghai.myqcloud.com/20250312123444988.png" class="img-fluid"></p>
<p><strong>Bizard项目采用开放和透明的运作机制</strong>，所有代码和文档都将在GitHub平台上（当前项目仓库：<a href="https://github.com/DrRobinLuo/Bizard" class="uri">https://github.com/DrRobinLuo/Bizard</a>）进行维护。所有的教程会统一整理发布于网站<a href="https://genaimed.org/Bizard/" class="uri">https://genaimed.org/Bizard/</a>，并定期通过推文发布更新。每个具体教程都会有对应的GitHub源文档和讨论区，方便社群中代码/文档贡献者和其他人进行深入讨论和协作。为了确保内容的可持续性，我们会为所有图文教程建立完整的markdown文档、分类标记。同时，<strong>项目将以预印本形式每半年到一年更新一次，确保内容的时效性和连续性。另外，我们计划每1-2年以原创性论著的形式发表项目更新，系统且持续地改进</strong>，不断提升该项目对生物医学数据分析可视化领域的贡献。项目成果将共享给项目贡献者，作者署名将按照实际贡献度进行综合排序，以此鼓励社群成员的积极参与（预期第一期作者在30-40个人左右）。我们期待形成一种定期的成员、贡献、成果更新机制，稳定地展示项目的阶段性学术与社会价值，持续推进未来发展。</p>
<p>目前已通过预印本平台arXiv（<a href="https://arxiv.org/abs/2503.06845" class="uri">https://arxiv.org/abs/2503.06845</a>）发布对项目的整体设计和预想的首期手稿。</p>
<p><img src="https://weekly-1301043367.cos.ap-shanghai.myqcloud.com/20250312124452997.png" class="img-fluid"></p>
<p>我们诚挚地邀请对生物医学数据可视化、开源协作、开放科学感兴趣的小伙伴加入和贡献我们的早期项目。无论您是经验丰富的开发者，还是刚刚起步的学习者，我们都希望您可以在这里找到参与集体贡献的路径并有所收获。</p>
<p>申请联系方式：请将申请说明及简历通过邮箱发送至罗鹏（luopeng@smu.edu.cn）和王诗翔（wangshx@csu.edu.cn）。</p>
<p>我们希望通过构建这样一个开放、协作、交流、创新的平台，推动R、Python等数据科学编程语言在生物医学研究中的深入应用，为整个领域的发展贡献一份力量。让我们积极参与、携手贡献、持续探讨，共筑梦想，共享未来。</p>
<hr>
<p><strong>我们后续将发布一系列推文，推进社区运维和知识库建设，请大家保持关注</strong>！</p>
<hr>
<p>当前的Bizard项目组成员列表： 李柯馨、杨泓、石盈、彭玉洁、柴银盈、黄可昕、王春阳、林安琪、李剑峰、曾健明、罗鹏、王诗翔。</p>
<p>2025年3月</p>



 ]]></description>
  <category>Bizard</category>
  <guid>https://shixiangwang.github.io/posts/2025-03-19-bizard/</guid>
  <pubDate>Tue, 18 Mar 2025 16:00:00 GMT</pubDate>
</item>
<item>
  <title>PPT 安装快捷访问栏</title>
  <dc:creator>Shixiang Wang</dc:creator>
  <link>https://shixiangwang.github.io/posts/2025-03-19-ppt-quick-access-toolbar-in-mac/</link>
  <description><![CDATA[ 





<p>Mac 下步骤：</p>
<ol type="1">
<li>下载并解压 <a href="PowerPoint.officeUI">PowerPoint.officeUI 自定义文件</a></li>
<li>退出 PowerPoint</li>
<li>打开查找器</li>
<li>点击菜单栏中的“前往”，然后选择“前往文件夹…”</li>
<li>复制并粘贴以下位置，然后点击“前往”按钮： <code>~/Library/Containers/com.microsoft.Powerpoint/Data/Library/Preferences</code> 将 PowerPoint.officeUI 自定义文件移动到这个文件夹。</li>
</ol>
<p>Windows 下可以下载 <a href="PowerPoint.exportedUI">PowerPoint.exportedUI</a> 然后导入。</p>



 ]]></description>
  <category>Office</category>
  <guid>https://shixiangwang.github.io/posts/2025-03-19-ppt-quick-access-toolbar-in-mac/</guid>
  <pubDate>Tue, 18 Mar 2025 16:00:00 GMT</pubDate>
</item>
</channel>
</rss>
