<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>https://wiki.swarma.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Moonscar</id>
	<title>集智百科 - 复杂系统|人工智能|复杂科学|复杂网络|自组织 - 用户贡献 [zh-cn]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.swarma.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Moonscar"/>
	<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php/%E7%89%B9%E6%AE%8A:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/Moonscar"/>
	<updated>2026-11-04T02:05:38Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.35.0</generator>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=45764</id>
		<title>首页</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E9%A6%96%E9%A1%B5&amp;diff=45764"/>
		<updated>2025-07-24T03:51:00Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=首页,集智百科，集智俱乐部,复杂系统,人工智能,复杂性科学,复杂科学社区,复杂科学&lt;br /&gt;
|description=集智俱乐部是致力于复杂系统跨学科交流合作学习的网络社区，其使命是”营造跨学科探索小生境&amp;quot;，愿景是:&amp;quot;催化复杂性科学新理论&amp;quot;&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;htmltag tagname=&amp;quot;iframe&amp;quot; src=&amp;quot;/graph.v20250715.html&amp;quot; style=&amp;quot;display: block; margin-bottom: 1em; width: 100%; height: 90vh; border: solid 1px #ddd;&amp;quot;&amp;gt;&amp;lt;/htmltag&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; padding: 1em; background: #f9f9f9; border: solid 1px #ddd;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div style=&amp;quot;width: 20em; text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;margin-bottom: 0.5em; font-size: 28px;&amp;quot;&amp;gt;欢迎来到 &amp;lt;b&amp;gt;集智百科&amp;lt;/b&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;font-size: 14px;&amp;quot;&amp;gt;&amp;lt;i&amp;gt;知识从我而来，问题到我为止。&amp;lt;/i&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;ul style=&amp;quot;display: flex; flex-wrap: wrap; margin: 1em; padding-left: 1em; max-width: 30em;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[参与方式]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[激励制度]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[编辑案例]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[如何上手集智百科]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[百科自有团队]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[读书会词条梳理]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[集智百科运营周报]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[NetLogo模型汇总]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[集智百科周会纪要]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[集智百科精品词条]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[集智百科发展史]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[集智俱乐部]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[https://campus.swarma.org/course/4572 集智百科志愿者招募宣讲会]&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div style=&amp;quot;display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; padding: 1em; background: #f9f9f9; border: solid 1px #ddd;&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;div style=&amp;quot;width: 100em; text-align: center;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;margin-bottom: 2em; font-size: 28px;&amp;quot;&amp;gt;集智百科精品词条展示&amp;lt;/div&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;ul style=&amp;quot;display: flex; flex-wrap: wrap; margin: 2em; padding-left: 2em; max-width: 60em;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[系统科学]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[网络科学]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[系统论]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[信息论]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[控制论]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[奇点]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[复杂系统 Complex Systems]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[临界点（热力学）]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[斑图生成]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[自组织]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[涌现]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[蝴蝶效应]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[混沌理论]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[小世界网络]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[人工神经网络]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[自组织临界性]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[康威的生命游戏 Conway's Game of Life]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[幂律分布 power law]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[相变]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[元胞自动机]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[糖域模型]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[伊辛模型]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[网络科学]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[埃尔德什数理论]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[邓巴数]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[统计力学]]&amp;lt;/li&amp;gt;&lt;br /&gt;
    &amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[计算传播学]]&amp;lt;/li&amp;gt;&amp;lt;li style=&amp;quot;width: 10em;&amp;quot;&amp;gt;[[集体注意力]]&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
  &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
    &amp;lt;h2&amp;gt;最近更改&amp;lt;/h2&amp;gt;&lt;br /&gt;
    &amp;lt;div&amp;gt;{{Special:RecentChanges/days=7}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=AgentSociety1.0&amp;diff=42000</id>
		<title>AgentSociety1.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=AgentSociety1.0&amp;diff=42000"/>
		<updated>2025-02-27T02:52:05Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 清华大学推出基于大模型的社会模拟器AgentSociety 1.0 ==&lt;br /&gt;
&lt;br /&gt;
清华大学推出基于大模型的社会模拟器AgentSociety 1.0，可精确模拟社会舆论传播、认知观点极化、公众政策响应等社会现象，推动智能社会治理和科学研究范式变革&lt;br /&gt;
&lt;br /&gt;
'''&amp;quot;凡我无法创造的，我就无法真正理解。 &amp;quot; -- 费曼'''&lt;br /&gt;
&lt;br /&gt;
智能时代呼啸而来，正深刻改变着人们生产、生活和学习的方式。过去几十年里，社会科学家和相关领域的研究者，一直致力于通过实证数据与模型揭示人类行为和智能社会运行的基本规律，试图找出隐藏在各种社会现象和治理痛点背后的因果机制，从而回答&amp;quot;是什么？为什么？如何治&amp;quot;等一系列问题。然而，在社会科学研究从&amp;quot;解释世界&amp;quot;向&amp;quot;改造世界&amp;quot;演进的范式转型中，研究者们始终面临着一个根本性挑战——如何突破传统实证主义方法的局限，实现对人类行为模式与社会运行规律的可计算、可干预、可预测的深度理解。正如物理学家费曼所说的那句经典名言：&amp;quot;凡我无法创造的，我就无法真正理解。&amp;quot;真正的理解，不仅是观察和解释，更在于能否通过&amp;quot;生成式&amp;quot;的方式，自底而上地模拟复现人类行为的复杂模式与社会系统的运行规律，从而模拟、预测和研判智能社会治理演化路径和潜在社会风险，推动基于前瞻性实验主义智能社会治理最佳路径。&lt;br /&gt;
&lt;br /&gt;
正如复杂性科学先驱霍兰德所指出的：&amp;quot;社会系统的本质在于其构成元素间的非线性涌现。&amp;quot;这一论断揭示了传统还原论方法在应对社会复杂性时的固有局限，也催生了&amp;quot;生成式社会科学&amp;quot;（Generative Social Science）这一研究范式的迅速崛起，该范式将社会视为复杂自适应系统，从微观层面出发，通过模拟个体的行为和互动来探索复杂社会系统的内在机制，强调通过自底向上的计算实现对社会数字孪生的构建。其中，智能体建模（Agent-Based Modeling）是目前广泛应用的一种方法，它通过构建Agent以及多Agents之间的交互关系，动态再现社会的运行状态。这种方法已被广泛应用于社会科学、政治学、经济学等领域，帮助研究者更深入地理解人类行为及社会的复杂性。&lt;br /&gt;
&lt;br /&gt;
尽管这一领域取得了重要进展，仍面临一个亟待解决的核心问题：这样的模拟究竟能在多大程度上真实还原现实社会的复杂性？因此，如何在保证模拟规模足够庞大以支持复杂性研究的同时，提升模拟的真实性，使其更贴近现实社会的运行逻辑，仍是亟待突破的重要方向。&lt;br /&gt;
&lt;br /&gt;
近日，清华大学电子系城市科学与计算中心研究团队，联合清华大学智能社会治理研究院、公共管理学院、社会科学学院等跨学科团队深度协作，充分发挥大模型智能体、真实社会环境仿真与大规模模拟加速框架的技术优势，结合智能社会治理的前沿理论与实践探索，成功构建了基于大模型的&amp;quot;大型社会模拟器 AgentSociety&amp;quot;1.0 版本，可精确模拟社会舆论传播、认知观点极化、公众政策响应等。AgentSociety从社会学第一性原理出发，以助力推动社会科学研究范式变革，推动了社会学领域从行为模拟到心智建模、从静态推演到动态共生、从实验室工具到社会基础设施的发展。具体而言，该模拟器包括：&lt;br /&gt;
&lt;br /&gt;
* 大模型驱动的社会人智能体：基于社会学理论，构建具有 &amp;quot;类人心智&amp;quot;的社会人智能体，赋予其情感、需求、动机与认知能力，并在这些心智驱动下进行复杂社会行为，如移动、就业、消费、社交互动等。&lt;br /&gt;
* 真实城市社会环境：精准模拟社会人赖以生存的城市空间，重现交通、基础设施和公共资源，使智能体能在真实环境约束下交互，形成逼真的社会生态。&lt;br /&gt;
* 大规模社会模拟引擎：采用异步模拟架构与Ray分布式计算框架，结合智能体分组和 MQTT 高并发通信，实现高效、可扩展的智能体交互与社会行为模拟。&lt;br /&gt;
* 智能社会科学研究与治理工具箱：全面支持实验、访谈、问卷调查等一系列社会学研究方法，提供多种自动化数据分析工具，从定性研究到定量分析全面助力社会科学研究的深入开展。&lt;br /&gt;
&lt;br /&gt;
[文章地址： https://arxiv.org/abs/2502.08691，&lt;br /&gt;
官方文档：https://agentsociety.readthedocs.io/en/latest/，&lt;br /&gt;
GitHub链接：https://github.com/tsinghua-fib-lab/agentsociety/ ]&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[[File:AgentSociety_1.png|center|600px|thumb|图 1 AgentSociety 总览]]&lt;br /&gt;
[[文件:AgentSociety 1 1.png|缩略图]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
（交互案例见：https://agentsociety.fiblab.net/exp/1a4c4fa5-04c1-4973-9433-b8b696f2fda0）&lt;br /&gt;
&lt;br /&gt;
大型社会模拟器通过数字化和虚拟化的方式，使研究者能够在无需进行实际实验的情况下，模拟并观察社会现象的变化过程，显著降低了研究的风险与成本。同时，模拟器能够在不同情境下进行多维度的数据采集和实验设计，克服传统研究因受限于时间、空间和资源等因素所带来的局限。团队提供可视化交互工具和智能社会治理研究工具箱，支持实时监测、主动干预和数据收集，助力社会研究和治理实验。&lt;br /&gt;
&lt;br /&gt;
社会模拟器的应用不仅限于具体的社会实验，它还可以作为社会科学研究的核心方法工具，辅助开展前期研究和假设验证，辅助政策决策者和公共事务参与主体进行智能决策。研究团队可以利用其进行初步的理论构建、实验设计和政策效果评估，为后续的实证研究提供依据。这种工具的灵活性和可扩展性使得研究者能够在不同的社会情境和变量条件下，快速测试理论假设并验证其可行性，为学术研究的精准性和实用性提供有力支持。&lt;br /&gt;
&lt;br /&gt;
为了展示大规模社会模拟器在社会科学研究中的价值，团队开展了一系列典型社会实验，涵盖干预实验、访谈和调查问卷等方法。实验聚焦观点极化、煽动性消息传播与治理、全民基本收入（Universal Basic Income, UBI）政策和飓风冲击下的社会动态，深入探讨个体与群体行为在不同社会机制下的演化规律。基于AgentSociety的实验，有效模拟了真实世界中常见的&amp;quot;回音室效应&amp;quot;、煽动性信息具有更强的传播性和情绪引导力、UBI政策在个体消费和改善心理健康方面的效果、以及飓风冲击下的人群流动的受限与恢复，研究结果与真实世界高度一致，证明了AgentSociety作为低成本实验场地验证政策的有效性。&lt;br /&gt;
&lt;br /&gt;
=== 一、大模型驱动的社会人智能体 ===&lt;br /&gt;
&lt;br /&gt;
社会人智能体是AgentSociety的核心。团队提出的大模型驱动的社会人智能体，旨在通过结合大模型智能体技术与心理学、经济学和行为科学理论，模拟具有复杂社会行为的智能体，并通过模拟大规模智能体间及智能体与环境的交互，探索社会现象的演变和集体行为。具体而言，团队将社会人智能体设计分为三个层面：心智、心智-行为耦合和行为。&lt;br /&gt;
 &lt;br /&gt;
[[File:AgentSociety_2.png|center|600px|thumb|图 2 社会人智能体的基本构成，分为心智、心智-行为耦合和行为]]&lt;br /&gt;
&lt;br /&gt;
==== 心智层面：构建智能体的心理认知系统 ====&lt;br /&gt;
&lt;br /&gt;
在心智层面，为每个智能体构建稳定的个体画像（如性格、年龄、性别）和动态的个人状态（如情感、经济状况和社会关系），以确保智能体在不同情境下展现个性化的行为模式。在此基础上，团队引入情感（Emotions）、需求（Needs）和认知（Cognition） 三大核心心理过程，共同决定智能体的决策推理、行为模式和社会适应能力。具体而言，情感反映智能体对外部刺激的即时反应，影响其短期决策和社交互动，例如在正面反馈下增强合作意愿，或在负面情境中表现出回避行为；需求是行为的内在驱动力，基于马斯洛需求层次理论，智能体在满足基本生存需求后，会逐步追求安全、社交、尊重乃至自我实现，从而塑造其长期行为轨迹和社交策略；认知决定了智能体如何理解外部世界，包括对社会事件、政策环境和群体行为的态度，这一过程不仅受其个性和过往经历影响，还会因长期社会互动不断演化。&lt;br /&gt;
&lt;br /&gt;
==== 心智-行为耦合：心智如何驱动智能体行为 ====&lt;br /&gt;
&lt;br /&gt;
智能体的行为并非随机或被动响应，而是由其情感、需求和认知共同驱动，并根据个人状态与外部环境的交互不断调整。团队基于马斯洛需求层次理论（Maslow's Hierarchy of Needs）和计划行为理论（Theory of Planned Behavior, TPB），构建从心理状态到行为执行的完整路径，使智能体的行为更符合人类的动机模式。按照马斯洛需求层次理论，智能体会优先满足生存和安全需求，在此基础上逐步追求社交等更高级目标。与此同时，基于计划行为理论，智能体在形成目标后，会结合自身认知和环境因素主动规划行动，使其行为既具适应性，又能展现长期连贯性。&lt;br /&gt;
&lt;br /&gt;
==== 行为层面：智能体如何展现复杂类人行为 ====&lt;br /&gt;
&lt;br /&gt;
在行为层面，提出的社会人智能体不仅能够执行简单行为，还能够展现多层次的复杂社会行为，包括移动、社交和经济活动。简单行为主要涵盖睡眠、饮食、娱乐和休息等基础活动，这些行为虽然不涉及复杂的决策，但对智能体的整体状态和长期行为模式至关重要。例如，睡眠不足可能影响情绪和社交意愿，而良好的饮食和娱乐体验则可能提升幸福感，进一步塑造智能体的社交和工作行为。复杂社会行为方面，智能体能够在移动、社交和经济活动中展现高度的自主智能。移动行为不仅涉及简单的地点切换，还包括出行方式选择、路径规划以及对交通环境的动态调整，使智能体的移动模式更符合现实社会的出行习惯。社交行为不仅限于基本互动，还涉及社交关系的建立、维持和演变，智能体会根据自身需求、情感状态和外部环境调整社交策略，从而形成类似人类的社交网络。经济行为方面，智能体不仅理解资源交换的基本概念，还能根据自身经济状况、市场环境和个体偏好进行工作、消费等经济决策，展现出符合社会规则的经济行为模式。&lt;br /&gt;
 &lt;br /&gt;
[[File:AgentSociety_3.png|center|600px|thumb|图 3 社会人智能体设计架构]]&lt;br /&gt;
&lt;br /&gt;
==== 社会人智能体模拟：自主生活的一日 ====&lt;br /&gt;
&lt;br /&gt;
为了验证智能体的自主决策能力及其行为模式的合理性，团队模拟了社会人智能体的一日生活，观察其在移动、社交和经济活动 方面的决策和适应能力（如下表所示）。通过 24 小时的仿真，智能体在需求、情感和认知 的驱动下自主规划日常任务，并动态调整行为，以符合现实社会中的时间节奏和互动逻辑。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+表 1 社会人智能体自主生活一日示例&lt;br /&gt;
|-&lt;br /&gt;
! 时间 !! 活动 !! 描述&lt;br /&gt;
|-&lt;br /&gt;
| 06:30 || 起床 || 智能体在生物钟驱动下醒来，检查个人需求状态&lt;br /&gt;
|-&lt;br /&gt;
| 07:00 || 早餐 || 根据饥饿状态和个人喜好选择早餐内容&lt;br /&gt;
|-&lt;br /&gt;
| 07:30 || 上班通勤 || 基于城市交通状况和个人时间成本偏好选择出行方式&lt;br /&gt;
|-&lt;br /&gt;
| 08:30 || 工作 || 根据工作类型执行相应任务，受个人技能和环境因素影响&lt;br /&gt;
|-&lt;br /&gt;
| 12:00 || 午餐社交 || 与同事共进午餐，基于社交需求和情感状态进行互动&lt;br /&gt;
|-&lt;br /&gt;
| 13:00 || 继续工作 || 处理工作任务，工作效率受上午精力消耗和午休质量影响&lt;br /&gt;
|-&lt;br /&gt;
| 17:30 || 下班 || 完成工作，根据当日交通状况规划回家路线&lt;br /&gt;
|-&lt;br /&gt;
| 18:30 || 购物 || 根据家庭消费需求在超市购物，受预算和个人偏好影响&lt;br /&gt;
|-&lt;br /&gt;
| 19:30 || 晚餐 || 根据购买的食材和烹饪技能准备晚餐&lt;br /&gt;
|-&lt;br /&gt;
| 20:30 || 家庭社交 || 与家人交流分享，情感交流深度受日间活动累积的情绪影响&lt;br /&gt;
|-&lt;br /&gt;
| 21:30 || 休闲活动 || 根据个人兴趣和精力状态选择休闲方式&lt;br /&gt;
|-&lt;br /&gt;
| 23:00 || 睡前准备 || 完成个人卫生活动，为次日做准备&lt;br /&gt;
|-&lt;br /&gt;
| 23:30 || 就寝 || 睡眠质量受当日情绪积累和健康状态影响&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 二、真实社会环境 ===&lt;br /&gt;
&lt;br /&gt;
为了让智能体的行为更加贴近现实世界，团队构建了一个 高度真实、可交互的城市社会环境，支持 移动、社交和经济活动 等核心行为的模拟。与仅依赖大模型推理不同，团队的环境 结合物理约束、社会规则和资源限制，确保智能体的行为符合现实逻辑，避免 大模型生成的&amp;quot;幻觉&amp;quot;影响。&lt;br /&gt;
&lt;br /&gt;
这一环境具备三大核心优势：&lt;br /&gt;
# 精准建模现实世界机制：融合物理约束、成本反馈和社会运行规则，让智能体在时间、资源、经济等多维度受到真实限制，使其行为更具合理性和连贯性。&lt;br /&gt;
# 数据源自现实，确保行为逻辑一致：环境数据直接来源于真实世界，或基于现实社会原则构建，保证模拟结果具有现实参考价值，避免虚拟环境脱离社会规律。&lt;br /&gt;
# 智能体可交互接口，支持真实决策：智能体不仅能够感知环境，还可直接与其交互，实现路径规划、社交关系演变、经济交易等动态决策，确保行为不仅是文本推理的结果，而是真实行动的模拟。&lt;br /&gt;
&lt;br /&gt;
此外，团队将环境划分为城市空间、社交空间和经济空间，共同构建完整、动态的社会系统，为智能体行为的模拟提供精准支撑，使其更符合人类社会的运行模式。&lt;br /&gt;
 &lt;br /&gt;
[[File:AgentSociety_4.png|center|600px|thumb|图 4 真实城市社会环境]]&lt;br /&gt;
&lt;br /&gt;
为了验证真实城市社会环境在大规模社会模拟中的适应性和运行效率，团队进行了性能测试，评估其在不同规模的智能体数量和高并发查询场景下的表现。实验模拟了1,000、10,000、100,000 和 1,000,000 个智能体在城市、社交和经济空间内的交互，并采用典型工作日出行模式，在 8:30 早高峰启动模拟。测试过程中，团队设定查询执行比为 1:999（即每 999 次数据查询后进行 1 次环境状态更新），贴近智能体的真实交互模式，同时控制模拟进程数为 2、4、8、16 和 32。每种实验条件下，团队重复测试五次，每次持续 10 秒，并记录查询速率（QPS） 在 10^2 至 10^5 之间的变化情况。实验结果表明，即使智能体数量和查询速率显著增加，系统仍保持稳定运行，能够高效处理大规模智能体交互，为大规模社会模拟提供实时、可靠的计算支持。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+表 2 城市社会环境性能评估&lt;br /&gt;
|-&lt;br /&gt;
! 智能体数量 !! 城市空间 !! 社交空间 !! 经济空间&lt;br /&gt;
|-&lt;br /&gt;
| 1,000 || 稳定运行 || 稳定运行 || 稳定运行&lt;br /&gt;
|-&lt;br /&gt;
| 10,000 || 稳定运行 || 稳定运行 || 稳定运行&lt;br /&gt;
|-&lt;br /&gt;
| 100,000 || 稳定运行 || 稳定运行 || 稳定运行&lt;br /&gt;
|-&lt;br /&gt;
| 1,000,000 || 性能降低20% || 稳定运行 || 稳定运行&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 三、大规模社会模拟引擎与社会学研究工具箱 ===&lt;br /&gt;
&lt;br /&gt;
为了实现真实、高效地大规模社会模拟，团队构建了一个高效、可扩展、支持大规模社会人智能体并行执行的社会模拟引擎。该引擎不仅结合了LLM驱动的多智能体系统和真实城市社会环境，更在系统架构上进行了深度优化，以确保模拟结果既具备现实合理性，又能大规模、高效运行。&lt;br /&gt;
&lt;br /&gt;
[[File:AgentSociety_5.png|center|600px|thumb|图 5 大规模社会模拟引擎]]&lt;br /&gt;
&lt;br /&gt;
传统多智能体框架（如CAMEL、AgentScope）通常依赖严格的消息传递机制来组织智能体间的交互，以保证任务的执行顺序。然而，在现实社会中，个体的行为决策并非总是受外部输入直接驱动，而是源自个体记忆、认知状态和环境约束的自主整合。因此，团队的社会模拟引擎采用了更接近现实的异步模拟架构，让每个智能体作为独立的模拟单元，不依赖特定的执行顺序，而是通过消息系统进行信息交换，实现智能体之间的相互影响。&lt;br /&gt;
&lt;br /&gt;
为了提升大规模并行模拟的计算效率，团队基于Ray分布式计算框架，结合Python的asyncio机制进行异步执行，使模拟任务能够高效利用多核计算资源，并支持分布式集群扩展。同时，为了降低智能体间通信的系统开销，团队引入了智能体分组（Agent Group）机制，使多个智能体可以在单个进程中运行，从而减少进程间通信开销，提高计算效率。此外，为了实现大规模社会智能体的高并发、可靠消息传输，团队引入了MQTT通信协议，该协议广泛应用于物联网场景，具备高吞吐量和低延迟的特点，非常适用于大规模社会模拟中智能体间的信息交换。&lt;br /&gt;
&lt;br /&gt;
在系统架构上，团队采用模块化设计，包括共享服务层、模拟任务管理层和可选的GUI交互层。共享服务层包括LLM API接口、MQTT消息服务器、数据库存储和指标管理系统，确保模拟过程中数据传输高效、智能体行为可记录、结果可视化。模拟任务管理层则基于Ray框架，提供高效的智能体管理和任务调度能力，使得不同实验能够独立执行，同时共享计算资源，提升可扩展性和复用性。&lt;br /&gt;
&lt;br /&gt;
大型社会模拟器通过数字化和虚拟化的方式，使研究者能够在无需进行实际实验的情况下，模拟并观察社会现象的变化过程，显著降低了研究的风险和成本。同时模拟器能够在不同情境下进行多维度的数据采集和实验设计，解决传统研究因受限于时间、空间和资源等因素所带来的局限。团队提供可视化交互工具与社会学研究工具箱，支持实时监测、主动干预和数据收集，助力社会实验研究。&lt;br /&gt;
* 实时可视化监测：直观展示社交网络、经济活动、移动轨迹 等核心变量，支持实验参数调整，精准跟踪社会演化过程。&lt;br /&gt;
* 访谈（Interviews）：研究者可实时向智能体提问，获取基于记忆、当前状态和环境的回答，不影响其正常行为。&lt;br /&gt;
* 调查问卷（Surveys）：支持 批量分发结构化问卷，智能体按预设规则作答，确保数据一致性，便于趋势分析。&lt;br /&gt;
* 干预实验（Interventions）：提供三种行为干预方式，测试社会情境下的个体与群体响应，包括：1）智能体配置：预设性格、目标和关系，影响初始行为倾向；2）记忆操控：修改情绪和认知，观察对决策与社交互动的影响。3）外部信息干预：发送特定信息（如灾害预警）测试应急响应与传播模式。&lt;br /&gt;
&lt;br /&gt;
社会模拟器的应用不仅限于具体的社会实验，它还可以作为社会科学研究的核心方法工具，辅助开展前期研究和假设验证，辅助政策决策者和公共事务参与主体进行智能决策。研究团队可以利用其进行初步的理论构建、实验设计和政策效果评估，为后续的实证研究提供依据。这种工具的灵活性和可扩展性使得研究者能够在不同的社会情境和变量条件下，快速测试理论假设并验证其可行性，为学术研究的精准性和实用性提供有力保障。&lt;br /&gt;
&lt;br /&gt;
为了评估社会模拟引擎的扩展性和计算效率，团队进行了大规模测试，模拟不同数量的智能体，并测量系统在高并发场景下的表现。在消息通信系统方面，团队测试了 MQTT、Redis Pub/Sub 和 RabbitMQ，比较了它们的并行处理能力、吞吐量（msg/s）和辅助工具支持。实验结果显示，MQTT 和 Redis Pub/Sub 满足高吞吐需求。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+表 3 消息系统性能评估&lt;br /&gt;
|-&lt;br /&gt;
! 消息系统 !! 并行处理 !! 吞吐量 (msg/s) !! 辅助工具&lt;br /&gt;
|-&lt;br /&gt;
| MQTT || 优秀 || 10^5+ || 丰富&lt;br /&gt;
|-&lt;br /&gt;
| Redis Pub/Sub || 良好 || 10^5+ || 中等&lt;br /&gt;
|-&lt;br /&gt;
| RabbitMQ || 良好 || 10^4 || 丰富&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
在大规模智能体模拟方面，团队在64 核服务器上运行实验，32 核分配给模拟引擎，32 核用于智能体执行，并测试了1,000和10,000 智能体在不同进程数（8、16、32） 下的运行情况。实验测量了 总执行时间、LLM API 响应时间、模拟器 API 响应时间和令牌消耗，结果表明 Ray 分布式计算框架和智能体分组机制大幅提高了模拟效率，确保系统在 高并发负载下仍能稳定运行。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+表 4 AgentSociety总体性能评估表&lt;br /&gt;
|-&lt;br /&gt;
! 智能体数量 !! 进程数 !! 总执行时间 (s) !! LLM API响应时间 (s) !! 模拟器API响应时间 (s) !! 输入令牌 !! 输出令牌&lt;br /&gt;
|-&lt;br /&gt;
| 1,000 || 8 || 1824.6 || 1623.4 || 201.2 || 2.41M || 0.56M&lt;br /&gt;
|-&lt;br /&gt;
| 1,000 || 16 || 952.3 || 847.5 || 104.8 || 2.43M || 0.58M&lt;br /&gt;
|-&lt;br /&gt;
| 1,000 || 32 || 493.7 || 430.5 || 63.2 || 2.40M || 0.55M&lt;br /&gt;
|-&lt;br /&gt;
| 10,000 || 8 || 18023.6 || 16025.7 || 1997.9 || 24.1M || 5.52M&lt;br /&gt;
|-&lt;br /&gt;
| 10,000 || 16 || 9125.4 || 8122.6 || 1002.8 || 23.9M || 5.48M&lt;br /&gt;
|-&lt;br /&gt;
| 10,000 || 32 || 4678.5 || 4159.9 || 518.6 || 24.2M || 5.56M&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
上表展示了随着智能体数量增加，系统在分布式计算下的可扩展性及性能表现。实验表明，令牌使用模式（包括输入和输出）保持稳定，分布式并行框架能够有效支持大规模智能体的执行，充分利用多核计算能力，成功缓解了CPU瓶颈，确保了系统的可扩展性。同时，实验结果也表明，在完全并行的条件下，执行效率主要受限于大模型API调用的性能。&lt;br /&gt;
&lt;br /&gt;
=== 四、社会实验典型案例 ===&lt;br /&gt;
&lt;br /&gt;
为了展示大规模社会模拟器在社会科学研究中的价值，团队开展了一系列典型社会实验，涵盖干预实验、访谈和调查问卷等方法。实验聚焦 观点极化、煽动性消息传播与治理、UBI政策和飓风冲击下的社会动态，深入探讨个体与群体行为在不同社会机制下的演化规律。&lt;br /&gt;
&lt;br /&gt;
==== 4.1 观点极化社会传播现象模拟 ====&lt;br /&gt;
观点极化指社会群体内部的观点逐渐分化，形成难以调和的对立阵营。本实验以枪支管控政策为议题，模拟社会智能体的观点演化过程。实验设计包含对照组和两个干预组：在对照组中，智能体通过相互讨论更新观点，没有外部干预，观点的演化完全依赖于智能体之间的自主社交交互；在同质信息组中，智能体仅接收到与其立场相同的信息，从而模拟信息茧房效应；在对立信息组中，智能体仅接收与其立场相反的信息，旨在测试不同观点的影响。通过这种实验设计，研究人员仅需要书写简单实验配置文件，即可在模拟器中开展该实验，&lt;br /&gt;
&lt;br /&gt;
[[File:AgentSociety_6.png|center|600px|thumb|图 6 观点极化实验配置模板]]&lt;br /&gt;
&lt;br /&gt;
[[File:AgentSociety_7.png|center|600px|thumb|图 7 接触不同信息条件下观点极化程度的对比]]&lt;br /&gt;
&lt;br /&gt;
如上图所示，针对枪支管控这一政治议题，三种实验设置下的观点变化呈现出明显的差异。在对照组中，智能体之间进行自由讨论，没有外部干预，结果显示39%的智能体在互动后变得更加极化，而33%的智能体则倾向于持更加温和的观点。与此相比，在同质信息组中，观点极化现象更加显著，52%的智能体的观点变得更加极端。这表明，与志同道合的个体过度互动可能会加剧观点的极化，即真实世界中常见的&amp;quot;回音室效应&amp;quot;。而在对立信息组中，89%的智能体的观点变得更加温和，11%的智能体甚至被说服接受了对立的观点。这表明，接触到不同意见的内容能够有效缓解观点极化，或可成为应对极化现象的一种有效策略。&lt;br /&gt;
&lt;br /&gt;
==== 4.3 煽动性消息的传播模拟与智能治理 ====&lt;br /&gt;
&lt;br /&gt;
煽动性消息指包含极端观点或误导性信息的内容，这类信息在社交网络中的快速传播可能加剧群体冲突，影响公共讨论环境。本实验模拟 煽动性信息在社交网络中的传播，并测试不同的内容治理策略对其扩散模式和群体情绪的影响。实验包括对照组和煽动性信息组：在对照组中，智能体仅传播普通信息，团队观察其自然扩散过程及情绪演化。在煽动性信息组，团队引入带有强烈情绪表达的煽动性内容，分析其对信息传播速度和群体情绪的影响。针对煽动性信息传播的治理，团队设计了节点干预和边干预 两种策略，其中节点干预 通过检测并封禁反复传播煽动性内容的账户、以减少信息源头，边干预则在发现煽动性内容传播时切断社交连接，以遏制其扩散。实验还通过与智能体的交互式访谈探究个体在分享煽动性消息时的心理动因。在模拟器中开展该实验的配置如下，&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:AgentSociety_8.png|center|600px|thumb|图 8 煽动性消息实验配置模板]]&lt;br /&gt;
&lt;br /&gt;
[[File:AgentSociety_9.png|center|600px|thumb|图 9 煽动性消息的传播与治理策略]]&lt;br /&gt;
&lt;br /&gt;
实验结果显示，煽动性消息在社交网络中具有更强的传播潜力和更高的情绪反应。节点干预，即暂停频繁传播煽动性内容的账户，比边干预更有效，能够更好地控制煽动性消息的扩散。情绪强度分析的结果表明，煽动性消息显著放大了网络中的情绪强度，而节点干预在调节情绪反应方面表现尤为突出。进一步，访谈结果揭示，强烈的情绪反应和社会责任感是推动煽动性信息分享的主要驱动因素，用户常因同情或担忧而分享信息，希望引起公众关注或推动社会反应。总体来看，煽动性信息具有更强的传播性和情绪引导力，与真实人类社会中的观测结果高度一致。同时，节点干预在信息控制和情绪调节方面更为有效，为优化社交网络内容管理策略提供了有力支持。&lt;br /&gt;
&lt;br /&gt;
==== 4.4 全民基本收入（Universal Basic Income，UBI）政策推演 ====&lt;br /&gt;
&lt;br /&gt;
UBI 旨在缓解贫困、促进经济稳定和提升社会福祉，尽管其高昂成本和经济影响存在争议，但作为 改善收入分配和增强社会保障的政策工具，已成为研究焦点。本实验通过模拟UBI 政策的干预效果，探讨其对个体经济行为和宏观经济环境的影响。实验包括对照组和UBI干预组。对照组中，智能体在无 UBI 政策的条件下进行经济活动；干预组则模拟实施 UBI，每名智能体每月获得 $1,000的无条件收入，以观察其消费、储蓄、就业选择等行为变化。实验基于 UBI 试点地区（如美国德克萨斯州）的人口分布数据，并通过对比两组模拟的 经济和社会指标，评估 UBI 对个体和整体经济的影响，分析其是否与现实 UBI 社会实验的结果相符。&lt;br /&gt;
&lt;br /&gt;
[[File:AgentSociety_10.png|center|600px|thumb|图 10 UBI政策效果与公众意见]]&lt;br /&gt;
&lt;br /&gt;
实验结果显示，模拟中的经济系统随着时间推移逐渐稳定，实际GDP和智能体消费水平的波动逐渐缩小。团队在第96步引入了UBI政策，并比较了接下来24步内的经济和社会指标，具体包括智能体消费水平和抑郁水平（使用CES-D量表进行调查问卷评估）。结果表明，UBI政策显著提高了消费水平并降低了抑郁水平，这与德州UBI政策的影响相似，验证了模拟的现实性。此外，通过对智能体的访谈，分析了它们对UBI政策的看法。访谈结果显示，UBI政策的影响与利率、长期福利、储蓄和生活必需品等关键因素密切相关，反映了现实中公众对UBI政策的普遍认知。这些结果一方面支持了UBI政策在提高消费和改善心理健康方面的效果，另一方面也证明了模拟器作为低成本实验场地验证政策的有效性。&lt;br /&gt;
&lt;br /&gt;
==== 4.5 飓风冲击下的社会动态模拟推演 ====&lt;br /&gt;
&lt;br /&gt;
飓风等极端自然灾害对社会结构和个体行为产生深远影响，理解此类事件对人口流动、基础设施和社会稳定的冲击对于优化应急响应和降低灾害风险至关重要。本实验模拟飓风来袭期间的社会动态，分析个体在灾害环境下的行为模式。实验基于 2019 年飓风多里安（Hurricane Dorian） 对美国东南部的影响，选取南卡罗来纳州哥伦比亚市作为案例研究。数据来源包括 SafeGraph 移动数据（记录城市内人群流动模式）和 Census Block Group（CBG）数据（提供人口统计特征），用于构建 1,000 名社会智能体，模拟其在飓风期间的行为变化。&lt;br /&gt;
实验结果显示，模拟智能体在飓风事件中的移动模式与真实数据高度一致，活动水平随飓风来临大幅下降，并在灾后逐步恢复，符合实际人群出行趋势。模拟数据与真实人口流动的时间演化相似，验证了模拟器在复现极端天气下人类行为的有效性，为优化灾害应对策略提供支持。&lt;br /&gt;
&lt;br /&gt;
[[File:AgentSociety_11.png|center|600px|thumb|图 11 飓风冲击实验配置模板]]&lt;br /&gt;
&lt;br /&gt;
[[File:AgentSociety_12.png|center|600px|thumb|图 12 飓风冲击下人流移动强度变化]]&lt;br /&gt;
&lt;br /&gt;
=== 四、未来展望 ===&lt;br /&gt;
&lt;br /&gt;
面向未来智能社会治理探索，AgentSociety 将成为人机共生、治理创新、后稀缺经济模式的试验场，测试 AI 议员参与立法对民主决策的影响，模拟UBI与机器人税组合政策，甚至在数字环境推演 AI 时代的法律与伦理框架，探讨科技与社会的共存模式。团队所提出的AgentSociety 是一个基于大语言智能体的大型社会模拟器，正在从 &amp;quot;预测与解释工具&amp;quot; 逐渐进化为 &amp;quot;智能社会治理实验室&amp;quot;。其核心价值不仅在于分析社会现象，更在于构建一个实验平台，用于政策沙盒测试、危机预警和未来社会形态探索，助力社会治理与文明演化。&lt;br /&gt;
 &lt;br /&gt;
[[File:AgentSociety_13.png|center|600px|thumb|图 13 AgentSociety未来展望]]&lt;br /&gt;
&lt;br /&gt;
=== 五、平台使用方法 ===&lt;br /&gt;
 AgentSociety同时提供在线使用和离线运行两种智能体部署方式，欢迎智能社会治理同仁和社会科学研究人员关注使用。&lt;br /&gt;
==== 1. 在线体验 ====&lt;br /&gt;
目前平台正处于内测阶段（详见https://agentsociety.readthedocs.io/en/latest/，https://agentsociety.fiblab.net/exp/1a4c4fa5-04c1-4973-9433-b8b696f2fda0）。研发团队诚挚欢迎来自社会科学、大模型、智能体等各个领域的学者尝试平台并提出宝贵建议和意见。平台提供易用的在线实验环境，包括智能体、城市社会环境、社会科学研究工具箱、完善的手册文档与实验案例以及在线指导。后续内部评测后，将提供在线使用模式。&lt;br /&gt;
用户可以通过邮箱agentsociety.fiblab2025@gmail.com提交研究提案。经过团队审核和讨论后，团队将通过邮件发送内测账号，协助您顺利完成实验。期待与大家共同探索和推动社会科学研究的前沿发展！&lt;br /&gt;
==== 2. 离线运行 ====&lt;br /&gt;
用户可以在官方网站https://agentsociety.readthedocs.io/en/latest/下载离线版本，在本地部署后进行智能体的配置和实验，平台提供适用于Linux、MacOS Arm等不同类型操作系统的相应版本，方便模拟环境的快速部署和测试。&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=AgentSociety1.0&amp;diff=41999</id>
		<title>AgentSociety1.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=AgentSociety1.0&amp;diff=41999"/>
		<updated>2025-02-27T02:50:52Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 清华大学推出基于大模型的社会模拟器AgentSociety 1.0 ==&lt;br /&gt;
&lt;br /&gt;
清华大学推出基于大模型的社会模拟器AgentSociety 1.0，可精确模拟社会舆论传播、认知观点极化、公众政策响应等社会现象，推动智能社会治理和科学研究范式变革&lt;br /&gt;
&lt;br /&gt;
'''&amp;quot;凡我无法创造的，我就无法真正理解。 &amp;quot; -- 费曼'''&lt;br /&gt;
&lt;br /&gt;
智能时代呼啸而来，正深刻改变着人们生产、生活和学习的方式。过去几十年里，社会科学家和相关领域的研究者，一直致力于通过实证数据与模型揭示人类行为和智能社会运行的基本规律，试图找出隐藏在各种社会现象和治理痛点背后的因果机制，从而回答&amp;quot;是什么？为什么？如何治&amp;quot;等一系列问题。然而，在社会科学研究从&amp;quot;解释世界&amp;quot;向&amp;quot;改造世界&amp;quot;演进的范式转型中，研究者们始终面临着一个根本性挑战——如何突破传统实证主义方法的局限，实现对人类行为模式与社会运行规律的可计算、可干预、可预测的深度理解。正如物理学家费曼所说的那句经典名言：&amp;quot;凡我无法创造的，我就无法真正理解。&amp;quot;真正的理解，不仅是观察和解释，更在于能否通过&amp;quot;生成式&amp;quot;的方式，自底而上地模拟复现人类行为的复杂模式与社会系统的运行规律，从而模拟、预测和研判智能社会治理演化路径和潜在社会风险，推动基于前瞻性实验主义智能社会治理最佳路径。&lt;br /&gt;
&lt;br /&gt;
正如复杂性科学先驱霍兰德所指出的：&amp;quot;社会系统的本质在于其构成元素间的非线性涌现。&amp;quot;这一论断揭示了传统还原论方法在应对社会复杂性时的固有局限，也催生了&amp;quot;生成式社会科学&amp;quot;（Generative Social Science）这一研究范式的迅速崛起，该范式将社会视为复杂自适应系统，从微观层面出发，通过模拟个体的行为和互动来探索复杂社会系统的内在机制，强调通过自底向上的计算实现对社会数字孪生的构建。其中，智能体建模（Agent-Based Modeling）是目前广泛应用的一种方法，它通过构建Agent以及多Agents之间的交互关系，动态再现社会的运行状态。这种方法已被广泛应用于社会科学、政治学、经济学等领域，帮助研究者更深入地理解人类行为及社会的复杂性。&lt;br /&gt;
&lt;br /&gt;
尽管这一领域取得了重要进展，仍面临一个亟待解决的核心问题：这样的模拟究竟能在多大程度上真实还原现实社会的复杂性？因此，如何在保证模拟规模足够庞大以支持复杂性研究的同时，提升模拟的真实性，使其更贴近现实社会的运行逻辑，仍是亟待突破的重要方向。&lt;br /&gt;
&lt;br /&gt;
近日，清华大学电子系城市科学与计算中心研究团队，联合清华大学智能社会治理研究院、公共管理学院、社会科学学院等跨学科团队深度协作，充分发挥大模型智能体、真实社会环境仿真与大规模模拟加速框架的技术优势，结合智能社会治理的前沿理论与实践探索，成功构建了基于大模型的&amp;quot;大型社会模拟器 AgentSociety&amp;quot;1.0 版本，可精确模拟社会舆论传播、认知观点极化、公众政策响应等。AgentSociety从社会学第一性原理出发，以助力推动社会科学研究范式变革，推动了社会学领域从行为模拟到心智建模、从静态推演到动态共生、从实验室工具到社会基础设施的发展。具体而言，该模拟器包括：&lt;br /&gt;
&lt;br /&gt;
* 大模型驱动的社会人智能体：基于社会学理论，构建具有 &amp;quot;类人心智&amp;quot;的社会人智能体，赋予其情感、需求、动机与认知能力，并在这些心智驱动下进行复杂社会行为，如移动、就业、消费、社交互动等。&lt;br /&gt;
* 真实城市社会环境：精准模拟社会人赖以生存的城市空间，重现交通、基础设施和公共资源，使智能体能在真实环境约束下交互，形成逼真的社会生态。&lt;br /&gt;
* 大规模社会模拟引擎：采用异步模拟架构与Ray分布式计算框架，结合智能体分组和 MQTT 高并发通信，实现高效、可扩展的智能体交互与社会行为模拟。&lt;br /&gt;
* 智能社会科学研究与治理工具箱：全面支持实验、访谈、问卷调查等一系列社会学研究方法，提供多种自动化数据分析工具，从定性研究到定量分析全面助力社会科学研究的深入开展。&lt;br /&gt;
&lt;br /&gt;
[文章地址： https://arxiv.org/abs/2502.08691，&lt;br /&gt;
官方文档：https://agentsociety.readthedocs.io/en/latest/，&lt;br /&gt;
GitHub链接：https://github.com/tsinghua-fib-lab/agentsociety/ ]&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[[File:AgentSociety_1.png|center|600px|thumb|图 1 AgentSociety 总览]]&lt;br /&gt;
[[:File:AgentSociety_1_1.png]]&lt;br /&gt;
（交互案例见：https://agentsociety.fiblab.net/exp/1a4c4fa5-04c1-4973-9433-b8b696f2fda0）&lt;br /&gt;
&lt;br /&gt;
大型社会模拟器通过数字化和虚拟化的方式，使研究者能够在无需进行实际实验的情况下，模拟并观察社会现象的变化过程，显著降低了研究的风险与成本。同时，模拟器能够在不同情境下进行多维度的数据采集和实验设计，克服传统研究因受限于时间、空间和资源等因素所带来的局限。团队提供可视化交互工具和智能社会治理研究工具箱，支持实时监测、主动干预和数据收集，助力社会研究和治理实验。&lt;br /&gt;
&lt;br /&gt;
社会模拟器的应用不仅限于具体的社会实验，它还可以作为社会科学研究的核心方法工具，辅助开展前期研究和假设验证，辅助政策决策者和公共事务参与主体进行智能决策。研究团队可以利用其进行初步的理论构建、实验设计和政策效果评估，为后续的实证研究提供依据。这种工具的灵活性和可扩展性使得研究者能够在不同的社会情境和变量条件下，快速测试理论假设并验证其可行性，为学术研究的精准性和实用性提供有力支持。&lt;br /&gt;
&lt;br /&gt;
为了展示大规模社会模拟器在社会科学研究中的价值，团队开展了一系列典型社会实验，涵盖干预实验、访谈和调查问卷等方法。实验聚焦观点极化、煽动性消息传播与治理、全民基本收入（Universal Basic Income, UBI）政策和飓风冲击下的社会动态，深入探讨个体与群体行为在不同社会机制下的演化规律。基于AgentSociety的实验，有效模拟了真实世界中常见的&amp;quot;回音室效应&amp;quot;、煽动性信息具有更强的传播性和情绪引导力、UBI政策在个体消费和改善心理健康方面的效果、以及飓风冲击下的人群流动的受限与恢复，研究结果与真实世界高度一致，证明了AgentSociety作为低成本实验场地验证政策的有效性。&lt;br /&gt;
&lt;br /&gt;
=== 一、大模型驱动的社会人智能体 ===&lt;br /&gt;
&lt;br /&gt;
社会人智能体是AgentSociety的核心。团队提出的大模型驱动的社会人智能体，旨在通过结合大模型智能体技术与心理学、经济学和行为科学理论，模拟具有复杂社会行为的智能体，并通过模拟大规模智能体间及智能体与环境的交互，探索社会现象的演变和集体行为。具体而言，团队将社会人智能体设计分为三个层面：心智、心智-行为耦合和行为。&lt;br /&gt;
 &lt;br /&gt;
[[File:AgentSociety_2.png|center|600px|thumb|图 2 社会人智能体的基本构成，分为心智、心智-行为耦合和行为]]&lt;br /&gt;
&lt;br /&gt;
==== 心智层面：构建智能体的心理认知系统 ====&lt;br /&gt;
&lt;br /&gt;
在心智层面，为每个智能体构建稳定的个体画像（如性格、年龄、性别）和动态的个人状态（如情感、经济状况和社会关系），以确保智能体在不同情境下展现个性化的行为模式。在此基础上，团队引入情感（Emotions）、需求（Needs）和认知（Cognition） 三大核心心理过程，共同决定智能体的决策推理、行为模式和社会适应能力。具体而言，情感反映智能体对外部刺激的即时反应，影响其短期决策和社交互动，例如在正面反馈下增强合作意愿，或在负面情境中表现出回避行为；需求是行为的内在驱动力，基于马斯洛需求层次理论，智能体在满足基本生存需求后，会逐步追求安全、社交、尊重乃至自我实现，从而塑造其长期行为轨迹和社交策略；认知决定了智能体如何理解外部世界，包括对社会事件、政策环境和群体行为的态度，这一过程不仅受其个性和过往经历影响，还会因长期社会互动不断演化。&lt;br /&gt;
&lt;br /&gt;
==== 心智-行为耦合：心智如何驱动智能体行为 ====&lt;br /&gt;
&lt;br /&gt;
智能体的行为并非随机或被动响应，而是由其情感、需求和认知共同驱动，并根据个人状态与外部环境的交互不断调整。团队基于马斯洛需求层次理论（Maslow's Hierarchy of Needs）和计划行为理论（Theory of Planned Behavior, TPB），构建从心理状态到行为执行的完整路径，使智能体的行为更符合人类的动机模式。按照马斯洛需求层次理论，智能体会优先满足生存和安全需求，在此基础上逐步追求社交等更高级目标。与此同时，基于计划行为理论，智能体在形成目标后，会结合自身认知和环境因素主动规划行动，使其行为既具适应性，又能展现长期连贯性。&lt;br /&gt;
&lt;br /&gt;
==== 行为层面：智能体如何展现复杂类人行为 ====&lt;br /&gt;
&lt;br /&gt;
在行为层面，提出的社会人智能体不仅能够执行简单行为，还能够展现多层次的复杂社会行为，包括移动、社交和经济活动。简单行为主要涵盖睡眠、饮食、娱乐和休息等基础活动，这些行为虽然不涉及复杂的决策，但对智能体的整体状态和长期行为模式至关重要。例如，睡眠不足可能影响情绪和社交意愿，而良好的饮食和娱乐体验则可能提升幸福感，进一步塑造智能体的社交和工作行为。复杂社会行为方面，智能体能够在移动、社交和经济活动中展现高度的自主智能。移动行为不仅涉及简单的地点切换，还包括出行方式选择、路径规划以及对交通环境的动态调整，使智能体的移动模式更符合现实社会的出行习惯。社交行为不仅限于基本互动，还涉及社交关系的建立、维持和演变，智能体会根据自身需求、情感状态和外部环境调整社交策略，从而形成类似人类的社交网络。经济行为方面，智能体不仅理解资源交换的基本概念，还能根据自身经济状况、市场环境和个体偏好进行工作、消费等经济决策，展现出符合社会规则的经济行为模式。&lt;br /&gt;
 &lt;br /&gt;
[[File:AgentSociety_3.png|center|600px|thumb|图 3 社会人智能体设计架构]]&lt;br /&gt;
&lt;br /&gt;
==== 社会人智能体模拟：自主生活的一日 ====&lt;br /&gt;
&lt;br /&gt;
为了验证智能体的自主决策能力及其行为模式的合理性，团队模拟了社会人智能体的一日生活，观察其在移动、社交和经济活动 方面的决策和适应能力（如下表所示）。通过 24 小时的仿真，智能体在需求、情感和认知 的驱动下自主规划日常任务，并动态调整行为，以符合现实社会中的时间节奏和互动逻辑。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+表 1 社会人智能体自主生活一日示例&lt;br /&gt;
|-&lt;br /&gt;
! 时间 !! 活动 !! 描述&lt;br /&gt;
|-&lt;br /&gt;
| 06:30 || 起床 || 智能体在生物钟驱动下醒来，检查个人需求状态&lt;br /&gt;
|-&lt;br /&gt;
| 07:00 || 早餐 || 根据饥饿状态和个人喜好选择早餐内容&lt;br /&gt;
|-&lt;br /&gt;
| 07:30 || 上班通勤 || 基于城市交通状况和个人时间成本偏好选择出行方式&lt;br /&gt;
|-&lt;br /&gt;
| 08:30 || 工作 || 根据工作类型执行相应任务，受个人技能和环境因素影响&lt;br /&gt;
|-&lt;br /&gt;
| 12:00 || 午餐社交 || 与同事共进午餐，基于社交需求和情感状态进行互动&lt;br /&gt;
|-&lt;br /&gt;
| 13:00 || 继续工作 || 处理工作任务，工作效率受上午精力消耗和午休质量影响&lt;br /&gt;
|-&lt;br /&gt;
| 17:30 || 下班 || 完成工作，根据当日交通状况规划回家路线&lt;br /&gt;
|-&lt;br /&gt;
| 18:30 || 购物 || 根据家庭消费需求在超市购物，受预算和个人偏好影响&lt;br /&gt;
|-&lt;br /&gt;
| 19:30 || 晚餐 || 根据购买的食材和烹饪技能准备晚餐&lt;br /&gt;
|-&lt;br /&gt;
| 20:30 || 家庭社交 || 与家人交流分享，情感交流深度受日间活动累积的情绪影响&lt;br /&gt;
|-&lt;br /&gt;
| 21:30 || 休闲活动 || 根据个人兴趣和精力状态选择休闲方式&lt;br /&gt;
|-&lt;br /&gt;
| 23:00 || 睡前准备 || 完成个人卫生活动，为次日做准备&lt;br /&gt;
|-&lt;br /&gt;
| 23:30 || 就寝 || 睡眠质量受当日情绪积累和健康状态影响&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 二、真实社会环境 ===&lt;br /&gt;
&lt;br /&gt;
为了让智能体的行为更加贴近现实世界，团队构建了一个 高度真实、可交互的城市社会环境，支持 移动、社交和经济活动 等核心行为的模拟。与仅依赖大模型推理不同，团队的环境 结合物理约束、社会规则和资源限制，确保智能体的行为符合现实逻辑，避免 大模型生成的&amp;quot;幻觉&amp;quot;影响。&lt;br /&gt;
&lt;br /&gt;
这一环境具备三大核心优势：&lt;br /&gt;
# 精准建模现实世界机制：融合物理约束、成本反馈和社会运行规则，让智能体在时间、资源、经济等多维度受到真实限制，使其行为更具合理性和连贯性。&lt;br /&gt;
# 数据源自现实，确保行为逻辑一致：环境数据直接来源于真实世界，或基于现实社会原则构建，保证模拟结果具有现实参考价值，避免虚拟环境脱离社会规律。&lt;br /&gt;
# 智能体可交互接口，支持真实决策：智能体不仅能够感知环境，还可直接与其交互，实现路径规划、社交关系演变、经济交易等动态决策，确保行为不仅是文本推理的结果，而是真实行动的模拟。&lt;br /&gt;
&lt;br /&gt;
此外，团队将环境划分为城市空间、社交空间和经济空间，共同构建完整、动态的社会系统，为智能体行为的模拟提供精准支撑，使其更符合人类社会的运行模式。&lt;br /&gt;
 &lt;br /&gt;
[[File:AgentSociety_4.png|center|600px|thumb|图 4 真实城市社会环境]]&lt;br /&gt;
&lt;br /&gt;
为了验证真实城市社会环境在大规模社会模拟中的适应性和运行效率，团队进行了性能测试，评估其在不同规模的智能体数量和高并发查询场景下的表现。实验模拟了1,000、10,000、100,000 和 1,000,000 个智能体在城市、社交和经济空间内的交互，并采用典型工作日出行模式，在 8:30 早高峰启动模拟。测试过程中，团队设定查询执行比为 1:999（即每 999 次数据查询后进行 1 次环境状态更新），贴近智能体的真实交互模式，同时控制模拟进程数为 2、4、8、16 和 32。每种实验条件下，团队重复测试五次，每次持续 10 秒，并记录查询速率（QPS） 在 10^2 至 10^5 之间的变化情况。实验结果表明，即使智能体数量和查询速率显著增加，系统仍保持稳定运行，能够高效处理大规模智能体交互，为大规模社会模拟提供实时、可靠的计算支持。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+表 2 城市社会环境性能评估&lt;br /&gt;
|-&lt;br /&gt;
! 智能体数量 !! 城市空间 !! 社交空间 !! 经济空间&lt;br /&gt;
|-&lt;br /&gt;
| 1,000 || 稳定运行 || 稳定运行 || 稳定运行&lt;br /&gt;
|-&lt;br /&gt;
| 10,000 || 稳定运行 || 稳定运行 || 稳定运行&lt;br /&gt;
|-&lt;br /&gt;
| 100,000 || 稳定运行 || 稳定运行 || 稳定运行&lt;br /&gt;
|-&lt;br /&gt;
| 1,000,000 || 性能降低20% || 稳定运行 || 稳定运行&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 三、大规模社会模拟引擎与社会学研究工具箱 ===&lt;br /&gt;
&lt;br /&gt;
为了实现真实、高效地大规模社会模拟，团队构建了一个高效、可扩展、支持大规模社会人智能体并行执行的社会模拟引擎。该引擎不仅结合了LLM驱动的多智能体系统和真实城市社会环境，更在系统架构上进行了深度优化，以确保模拟结果既具备现实合理性，又能大规模、高效运行。&lt;br /&gt;
&lt;br /&gt;
[[File:AgentSociety_5.png|center|600px|thumb|图 5 大规模社会模拟引擎]]&lt;br /&gt;
&lt;br /&gt;
传统多智能体框架（如CAMEL、AgentScope）通常依赖严格的消息传递机制来组织智能体间的交互，以保证任务的执行顺序。然而，在现实社会中，个体的行为决策并非总是受外部输入直接驱动，而是源自个体记忆、认知状态和环境约束的自主整合。因此，团队的社会模拟引擎采用了更接近现实的异步模拟架构，让每个智能体作为独立的模拟单元，不依赖特定的执行顺序，而是通过消息系统进行信息交换，实现智能体之间的相互影响。&lt;br /&gt;
&lt;br /&gt;
为了提升大规模并行模拟的计算效率，团队基于Ray分布式计算框架，结合Python的asyncio机制进行异步执行，使模拟任务能够高效利用多核计算资源，并支持分布式集群扩展。同时，为了降低智能体间通信的系统开销，团队引入了智能体分组（Agent Group）机制，使多个智能体可以在单个进程中运行，从而减少进程间通信开销，提高计算效率。此外，为了实现大规模社会智能体的高并发、可靠消息传输，团队引入了MQTT通信协议，该协议广泛应用于物联网场景，具备高吞吐量和低延迟的特点，非常适用于大规模社会模拟中智能体间的信息交换。&lt;br /&gt;
&lt;br /&gt;
在系统架构上，团队采用模块化设计，包括共享服务层、模拟任务管理层和可选的GUI交互层。共享服务层包括LLM API接口、MQTT消息服务器、数据库存储和指标管理系统，确保模拟过程中数据传输高效、智能体行为可记录、结果可视化。模拟任务管理层则基于Ray框架，提供高效的智能体管理和任务调度能力，使得不同实验能够独立执行，同时共享计算资源，提升可扩展性和复用性。&lt;br /&gt;
&lt;br /&gt;
大型社会模拟器通过数字化和虚拟化的方式，使研究者能够在无需进行实际实验的情况下，模拟并观察社会现象的变化过程，显著降低了研究的风险和成本。同时模拟器能够在不同情境下进行多维度的数据采集和实验设计，解决传统研究因受限于时间、空间和资源等因素所带来的局限。团队提供可视化交互工具与社会学研究工具箱，支持实时监测、主动干预和数据收集，助力社会实验研究。&lt;br /&gt;
* 实时可视化监测：直观展示社交网络、经济活动、移动轨迹 等核心变量，支持实验参数调整，精准跟踪社会演化过程。&lt;br /&gt;
* 访谈（Interviews）：研究者可实时向智能体提问，获取基于记忆、当前状态和环境的回答，不影响其正常行为。&lt;br /&gt;
* 调查问卷（Surveys）：支持 批量分发结构化问卷，智能体按预设规则作答，确保数据一致性，便于趋势分析。&lt;br /&gt;
* 干预实验（Interventions）：提供三种行为干预方式，测试社会情境下的个体与群体响应，包括：1）智能体配置：预设性格、目标和关系，影响初始行为倾向；2）记忆操控：修改情绪和认知，观察对决策与社交互动的影响。3）外部信息干预：发送特定信息（如灾害预警）测试应急响应与传播模式。&lt;br /&gt;
&lt;br /&gt;
社会模拟器的应用不仅限于具体的社会实验，它还可以作为社会科学研究的核心方法工具，辅助开展前期研究和假设验证，辅助政策决策者和公共事务参与主体进行智能决策。研究团队可以利用其进行初步的理论构建、实验设计和政策效果评估，为后续的实证研究提供依据。这种工具的灵活性和可扩展性使得研究者能够在不同的社会情境和变量条件下，快速测试理论假设并验证其可行性，为学术研究的精准性和实用性提供有力保障。&lt;br /&gt;
&lt;br /&gt;
为了评估社会模拟引擎的扩展性和计算效率，团队进行了大规模测试，模拟不同数量的智能体，并测量系统在高并发场景下的表现。在消息通信系统方面，团队测试了 MQTT、Redis Pub/Sub 和 RabbitMQ，比较了它们的并行处理能力、吞吐量（msg/s）和辅助工具支持。实验结果显示，MQTT 和 Redis Pub/Sub 满足高吞吐需求。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+表 3 消息系统性能评估&lt;br /&gt;
|-&lt;br /&gt;
! 消息系统 !! 并行处理 !! 吞吐量 (msg/s) !! 辅助工具&lt;br /&gt;
|-&lt;br /&gt;
| MQTT || 优秀 || 10^5+ || 丰富&lt;br /&gt;
|-&lt;br /&gt;
| Redis Pub/Sub || 良好 || 10^5+ || 中等&lt;br /&gt;
|-&lt;br /&gt;
| RabbitMQ || 良好 || 10^4 || 丰富&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
在大规模智能体模拟方面，团队在64 核服务器上运行实验，32 核分配给模拟引擎，32 核用于智能体执行，并测试了1,000和10,000 智能体在不同进程数（8、16、32） 下的运行情况。实验测量了 总执行时间、LLM API 响应时间、模拟器 API 响应时间和令牌消耗，结果表明 Ray 分布式计算框架和智能体分组机制大幅提高了模拟效率，确保系统在 高并发负载下仍能稳定运行。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+表 4 AgentSociety总体性能评估表&lt;br /&gt;
|-&lt;br /&gt;
! 智能体数量 !! 进程数 !! 总执行时间 (s) !! LLM API响应时间 (s) !! 模拟器API响应时间 (s) !! 输入令牌 !! 输出令牌&lt;br /&gt;
|-&lt;br /&gt;
| 1,000 || 8 || 1824.6 || 1623.4 || 201.2 || 2.41M || 0.56M&lt;br /&gt;
|-&lt;br /&gt;
| 1,000 || 16 || 952.3 || 847.5 || 104.8 || 2.43M || 0.58M&lt;br /&gt;
|-&lt;br /&gt;
| 1,000 || 32 || 493.7 || 430.5 || 63.2 || 2.40M || 0.55M&lt;br /&gt;
|-&lt;br /&gt;
| 10,000 || 8 || 18023.6 || 16025.7 || 1997.9 || 24.1M || 5.52M&lt;br /&gt;
|-&lt;br /&gt;
| 10,000 || 16 || 9125.4 || 8122.6 || 1002.8 || 23.9M || 5.48M&lt;br /&gt;
|-&lt;br /&gt;
| 10,000 || 32 || 4678.5 || 4159.9 || 518.6 || 24.2M || 5.56M&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
上表展示了随着智能体数量增加，系统在分布式计算下的可扩展性及性能表现。实验表明，令牌使用模式（包括输入和输出）保持稳定，分布式并行框架能够有效支持大规模智能体的执行，充分利用多核计算能力，成功缓解了CPU瓶颈，确保了系统的可扩展性。同时，实验结果也表明，在完全并行的条件下，执行效率主要受限于大模型API调用的性能。&lt;br /&gt;
&lt;br /&gt;
=== 四、社会实验典型案例 ===&lt;br /&gt;
&lt;br /&gt;
为了展示大规模社会模拟器在社会科学研究中的价值，团队开展了一系列典型社会实验，涵盖干预实验、访谈和调查问卷等方法。实验聚焦 观点极化、煽动性消息传播与治理、UBI政策和飓风冲击下的社会动态，深入探讨个体与群体行为在不同社会机制下的演化规律。&lt;br /&gt;
&lt;br /&gt;
==== 4.1 观点极化社会传播现象模拟 ====&lt;br /&gt;
观点极化指社会群体内部的观点逐渐分化，形成难以调和的对立阵营。本实验以枪支管控政策为议题，模拟社会智能体的观点演化过程。实验设计包含对照组和两个干预组：在对照组中，智能体通过相互讨论更新观点，没有外部干预，观点的演化完全依赖于智能体之间的自主社交交互；在同质信息组中，智能体仅接收到与其立场相同的信息，从而模拟信息茧房效应；在对立信息组中，智能体仅接收与其立场相反的信息，旨在测试不同观点的影响。通过这种实验设计，研究人员仅需要书写简单实验配置文件，即可在模拟器中开展该实验，&lt;br /&gt;
&lt;br /&gt;
[[File:AgentSociety_6.png|center|600px|thumb|图 6 观点极化实验配置模板]]&lt;br /&gt;
&lt;br /&gt;
[[File:AgentSociety_7.png|center|600px|thumb|图 7 接触不同信息条件下观点极化程度的对比]]&lt;br /&gt;
&lt;br /&gt;
如上图所示，针对枪支管控这一政治议题，三种实验设置下的观点变化呈现出明显的差异。在对照组中，智能体之间进行自由讨论，没有外部干预，结果显示39%的智能体在互动后变得更加极化，而33%的智能体则倾向于持更加温和的观点。与此相比，在同质信息组中，观点极化现象更加显著，52%的智能体的观点变得更加极端。这表明，与志同道合的个体过度互动可能会加剧观点的极化，即真实世界中常见的&amp;quot;回音室效应&amp;quot;。而在对立信息组中，89%的智能体的观点变得更加温和，11%的智能体甚至被说服接受了对立的观点。这表明，接触到不同意见的内容能够有效缓解观点极化，或可成为应对极化现象的一种有效策略。&lt;br /&gt;
&lt;br /&gt;
==== 4.3 煽动性消息的传播模拟与智能治理 ====&lt;br /&gt;
&lt;br /&gt;
煽动性消息指包含极端观点或误导性信息的内容，这类信息在社交网络中的快速传播可能加剧群体冲突，影响公共讨论环境。本实验模拟 煽动性信息在社交网络中的传播，并测试不同的内容治理策略对其扩散模式和群体情绪的影响。实验包括对照组和煽动性信息组：在对照组中，智能体仅传播普通信息，团队观察其自然扩散过程及情绪演化。在煽动性信息组，团队引入带有强烈情绪表达的煽动性内容，分析其对信息传播速度和群体情绪的影响。针对煽动性信息传播的治理，团队设计了节点干预和边干预 两种策略，其中节点干预 通过检测并封禁反复传播煽动性内容的账户、以减少信息源头，边干预则在发现煽动性内容传播时切断社交连接，以遏制其扩散。实验还通过与智能体的交互式访谈探究个体在分享煽动性消息时的心理动因。在模拟器中开展该实验的配置如下，&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:AgentSociety_8.png|center|600px|thumb|图 8 煽动性消息实验配置模板]]&lt;br /&gt;
&lt;br /&gt;
[[File:AgentSociety_9.png|center|600px|thumb|图 9 煽动性消息的传播与治理策略]]&lt;br /&gt;
&lt;br /&gt;
实验结果显示，煽动性消息在社交网络中具有更强的传播潜力和更高的情绪反应。节点干预，即暂停频繁传播煽动性内容的账户，比边干预更有效，能够更好地控制煽动性消息的扩散。情绪强度分析的结果表明，煽动性消息显著放大了网络中的情绪强度，而节点干预在调节情绪反应方面表现尤为突出。进一步，访谈结果揭示，强烈的情绪反应和社会责任感是推动煽动性信息分享的主要驱动因素，用户常因同情或担忧而分享信息，希望引起公众关注或推动社会反应。总体来看，煽动性信息具有更强的传播性和情绪引导力，与真实人类社会中的观测结果高度一致。同时，节点干预在信息控制和情绪调节方面更为有效，为优化社交网络内容管理策略提供了有力支持。&lt;br /&gt;
&lt;br /&gt;
==== 4.4 全民基本收入（Universal Basic Income，UBI）政策推演 ====&lt;br /&gt;
&lt;br /&gt;
UBI 旨在缓解贫困、促进经济稳定和提升社会福祉，尽管其高昂成本和经济影响存在争议，但作为 改善收入分配和增强社会保障的政策工具，已成为研究焦点。本实验通过模拟UBI 政策的干预效果，探讨其对个体经济行为和宏观经济环境的影响。实验包括对照组和UBI干预组。对照组中，智能体在无 UBI 政策的条件下进行经济活动；干预组则模拟实施 UBI，每名智能体每月获得 $1,000的无条件收入，以观察其消费、储蓄、就业选择等行为变化。实验基于 UBI 试点地区（如美国德克萨斯州）的人口分布数据，并通过对比两组模拟的 经济和社会指标，评估 UBI 对个体和整体经济的影响，分析其是否与现实 UBI 社会实验的结果相符。&lt;br /&gt;
&lt;br /&gt;
[[File:AgentSociety_10.png|center|600px|thumb|图 10 UBI政策效果与公众意见]]&lt;br /&gt;
&lt;br /&gt;
实验结果显示，模拟中的经济系统随着时间推移逐渐稳定，实际GDP和智能体消费水平的波动逐渐缩小。团队在第96步引入了UBI政策，并比较了接下来24步内的经济和社会指标，具体包括智能体消费水平和抑郁水平（使用CES-D量表进行调查问卷评估）。结果表明，UBI政策显著提高了消费水平并降低了抑郁水平，这与德州UBI政策的影响相似，验证了模拟的现实性。此外，通过对智能体的访谈，分析了它们对UBI政策的看法。访谈结果显示，UBI政策的影响与利率、长期福利、储蓄和生活必需品等关键因素密切相关，反映了现实中公众对UBI政策的普遍认知。这些结果一方面支持了UBI政策在提高消费和改善心理健康方面的效果，另一方面也证明了模拟器作为低成本实验场地验证政策的有效性。&lt;br /&gt;
&lt;br /&gt;
==== 4.5 飓风冲击下的社会动态模拟推演 ====&lt;br /&gt;
&lt;br /&gt;
飓风等极端自然灾害对社会结构和个体行为产生深远影响，理解此类事件对人口流动、基础设施和社会稳定的冲击对于优化应急响应和降低灾害风险至关重要。本实验模拟飓风来袭期间的社会动态，分析个体在灾害环境下的行为模式。实验基于 2019 年飓风多里安（Hurricane Dorian） 对美国东南部的影响，选取南卡罗来纳州哥伦比亚市作为案例研究。数据来源包括 SafeGraph 移动数据（记录城市内人群流动模式）和 Census Block Group（CBG）数据（提供人口统计特征），用于构建 1,000 名社会智能体，模拟其在飓风期间的行为变化。&lt;br /&gt;
实验结果显示，模拟智能体在飓风事件中的移动模式与真实数据高度一致，活动水平随飓风来临大幅下降，并在灾后逐步恢复，符合实际人群出行趋势。模拟数据与真实人口流动的时间演化相似，验证了模拟器在复现极端天气下人类行为的有效性，为优化灾害应对策略提供支持。&lt;br /&gt;
&lt;br /&gt;
[[File:AgentSociety_11.png|center|600px|thumb|图 11 飓风冲击实验配置模板]]&lt;br /&gt;
&lt;br /&gt;
[[File:AgentSociety_12.png|center|600px|thumb|图 12 飓风冲击下人流移动强度变化]]&lt;br /&gt;
&lt;br /&gt;
=== 四、未来展望 ===&lt;br /&gt;
&lt;br /&gt;
面向未来智能社会治理探索，AgentSociety 将成为人机共生、治理创新、后稀缺经济模式的试验场，测试 AI 议员参与立法对民主决策的影响，模拟UBI与机器人税组合政策，甚至在数字环境推演 AI 时代的法律与伦理框架，探讨科技与社会的共存模式。团队所提出的AgentSociety 是一个基于大语言智能体的大型社会模拟器，正在从 &amp;quot;预测与解释工具&amp;quot; 逐渐进化为 &amp;quot;智能社会治理实验室&amp;quot;。其核心价值不仅在于分析社会现象，更在于构建一个实验平台，用于政策沙盒测试、危机预警和未来社会形态探索，助力社会治理与文明演化。&lt;br /&gt;
 &lt;br /&gt;
[[File:AgentSociety_13.png|center|600px|thumb|图 13 AgentSociety未来展望]]&lt;br /&gt;
&lt;br /&gt;
=== 五、平台使用方法 ===&lt;br /&gt;
 AgentSociety同时提供在线使用和离线运行两种智能体部署方式，欢迎智能社会治理同仁和社会科学研究人员关注使用。&lt;br /&gt;
==== 1. 在线体验 ====&lt;br /&gt;
目前平台正处于内测阶段（详见https://agentsociety.readthedocs.io/en/latest/，https://agentsociety.fiblab.net/exp/1a4c4fa5-04c1-4973-9433-b8b696f2fda0）。研发团队诚挚欢迎来自社会科学、大模型、智能体等各个领域的学者尝试平台并提出宝贵建议和意见。平台提供易用的在线实验环境，包括智能体、城市社会环境、社会科学研究工具箱、完善的手册文档与实验案例以及在线指导。后续内部评测后，将提供在线使用模式。&lt;br /&gt;
用户可以通过邮箱agentsociety.fiblab2025@gmail.com提交研究提案。经过团队审核和讨论后，团队将通过邮件发送内测账号，协助您顺利完成实验。期待与大家共同探索和推动社会科学研究的前沿发展！&lt;br /&gt;
==== 2. 离线运行 ====&lt;br /&gt;
用户可以在官方网站https://agentsociety.readthedocs.io/en/latest/下载离线版本，在本地部署后进行智能体的配置和实验，平台提供适用于Linux、MacOS Arm等不同类型操作系统的相应版本，方便模拟环境的快速部署和测试。&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:AgentSociety_1_1.png&amp;diff=41998</id>
		<title>文件:AgentSociety 1 1.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:AgentSociety_1_1.png&amp;diff=41998"/>
		<updated>2025-02-27T02:50:28Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：基于MsUpload的文件上传&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;基于MsUpload的文件上传&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:AgentSociety_10.png&amp;diff=41997</id>
		<title>文件:AgentSociety 10.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:AgentSociety_10.png&amp;diff=41997"/>
		<updated>2025-02-27T02:40:27Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：基于MsUpload的文件上传&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;基于MsUpload的文件上传&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:AgentSociety_11.png&amp;diff=41996</id>
		<title>文件:AgentSociety 11.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:AgentSociety_11.png&amp;diff=41996"/>
		<updated>2025-02-27T02:40:22Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：基于MsUpload的文件上传&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;基于MsUpload的文件上传&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:AgentSociety_12.png&amp;diff=41995</id>
		<title>文件:AgentSociety 12.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:AgentSociety_12.png&amp;diff=41995"/>
		<updated>2025-02-27T02:40:19Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：基于MsUpload的文件上传&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;基于MsUpload的文件上传&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:AgentSociety_13.png&amp;diff=41994</id>
		<title>文件:AgentSociety 13.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:AgentSociety_13.png&amp;diff=41994"/>
		<updated>2025-02-27T02:40:14Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：基于MsUpload的文件上传&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;基于MsUpload的文件上传&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:AgentSociety_8.png&amp;diff=41993</id>
		<title>文件:AgentSociety 8.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:AgentSociety_8.png&amp;diff=41993"/>
		<updated>2025-02-27T02:36:57Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：基于MsUpload的文件上传&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;基于MsUpload的文件上传&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:AgentSociety_9.png&amp;diff=41992</id>
		<title>文件:AgentSociety 9.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:AgentSociety_9.png&amp;diff=41992"/>
		<updated>2025-02-27T02:32:36Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：基于MsUpload的文件上传&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;基于MsUpload的文件上传&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E5%BC%A0%E5%80%A9&amp;diff=41910</id>
		<title>张倩</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E5%BC%A0%E5%80%A9&amp;diff=41910"/>
		<updated>2025-02-24T08:45:47Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;张江创业合伙人、集智学园（北京）科技有限公司联合创始人&lt;br /&gt;
&lt;br /&gt;
集智科学研究中心理事会成员&lt;br /&gt;
&lt;br /&gt;
====== 个人简历 ======&lt;br /&gt;
2003-2007年就读于南京信息工程大学大气探测专业&lt;br /&gt;
&lt;br /&gt;
2007-2010就职于南京中网卫星通信&lt;br /&gt;
&lt;br /&gt;
2010-2013自营网店&lt;br /&gt;
&lt;br /&gt;
2013-2016就读于南京信息工程大学自动化学院计算机视觉专业&lt;br /&gt;
&lt;br /&gt;
2015年加入集智俱乐部志愿者，做公众号小编&lt;br /&gt;
&lt;br /&gt;
2016年研究生毕业后全职加入集智创业，发起了集智课堂、集智读书会在线学习模式&lt;br /&gt;
&lt;br /&gt;
2022年注册民办非企业单位：集智科学研究中心&lt;br /&gt;
&lt;br /&gt;
2024年被统战部认定为“无党派人士”&lt;br /&gt;
&lt;br /&gt;
运营个人自媒体公众号：倩姐&lt;br /&gt;
&lt;br /&gt;
参与编写《走进2050》、《Netlogo多主体建模入门》&lt;br /&gt;
&lt;br /&gt;
参与翻译《复杂-诞生于秩序混沌边缘的科学》&lt;br /&gt;
[[文件:张倩.jpg|缩略图]]&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%9C%89%E6%95%88%E4%BF%A1%E6%81%AF&amp;diff=35660</id>
		<title>有效信息</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%9C%89%E6%95%88%E4%BF%A1%E6%81%AF&amp;diff=35660"/>
		<updated>2024-07-04T08:53:17Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=有效信息,因果涌现,互信息,Effective Information,EI,确定性,简并性&lt;br /&gt;
|description=本文是目前互联网世界中关于因果涌现理论和整合信息论中的有效信息（Effective information,简称EI）的少数的全面的介绍文章，包括有效信息的来源，有效信息的定义与分解、实际例子，以及如何扩展到连续变量、与因果度量指标、动力学可逆性的关系是什么等问题进行了全面的讨论。&lt;br /&gt;
}}&lt;br /&gt;
有效信息（Effective Information，简称EI）是[[因果涌现 Causal Emergence]]理论中的一个核心概念，它可以用来衡量一个[[马尔科夫动力学]]的[[因果效应]]的强度。这里，因果效应是指把动力学看做一个黑箱，那么不同的输入分布就会导致不同的输出分布，二者之间联系的紧密程度就是因果效应。有效信息通常可以分解为两个部分：确定性（Determinism）和简并性（Degeneracy）。确定性是指，在动力学的作用下，我们根据系统前一时刻的状态会以多大程度预测它下一时刻状态；简并性是指：我们能够以多大程度从下一时刻的状态预测上一时刻的状态。如果确定性越大，或简并性越小，则系统的有效信息就会越大。在本页中，所有的[math]\log[/math]都表示以2为底的对数运算。&lt;br /&gt;
&lt;br /&gt;
=历史渊源=&lt;br /&gt;
有效信息（effective informaion，EI）这个概念最早由[[Giulio Tononi]]等人在2003年提出&amp;lt;ref name=tononi_2003&amp;gt;{{cite journal |last1=Tononi|first1=G.|last2=Sporns|first2=O.|title=Measuring information integration|journal=BMC Neuroscience|volume=4 |issue=31 |year=2003|url=https://doi.org/10.1186/1471-2202-4-31}}&amp;lt;/ref&amp;gt;，作为[[整合信息论]]中的一个关键指标。当一个系统各个组分之间具有很强的因果关联的时候，可以说这个系统便具备很高的整合程度，而有效信息：EI，便是用来度量这种因果关联程度的关键指标。&lt;br /&gt;
&lt;br /&gt;
到了2013年，[[Giulio Tononi]]的学生[[Erik Hoel]]等人将有效信息这个概念进一步提炼出来，从而定量地刻画涌现，于是提出了[[因果涌现]]理论&amp;lt;ref name=hoel_2013&amp;gt;{{cite journal|last1=Hoel|first1=Erik P.|last2=Albantakis|first2=L.|last3=Tononi|first3=G.|title=Quantifying causal emergence shows that macro can beat micro|journal=Proceedings of the National Academy of Sciences|volume=110|issue=49|page=19790–19795|year=2013|url=https://doi.org/10.1073/pnas.1314922110}}&amp;lt;/ref&amp;gt;。在这个理论中，Hoel使用了[[Judea Pearl]]的[[do算子]]来改造一般的[[互信息]]指标&amp;lt;ref name=&amp;quot;pearl_causality&amp;quot;&amp;gt;{{cite book|title=因果论——模型、推理和推断|author1=Judea Pearl|author2=刘礼|author3=杨矫云|author4=廖军|author5=李廉|publisher=机械工业出版社|year=2022|month=4}}&amp;lt;/ref&amp;gt;，这使得EI本质上与[[互信息]]不同。[[互信息]]度量的是相关性，而有效信息因为引入了[[do算子]]，从而可以度量因果性。在这一文章中，作者们同时提出了[[归一化的有效信息]]指标Eff。&lt;br /&gt;
&lt;br /&gt;
然而，传统的EI主要被用于具有离散状态的[[马尔科夫链]]上。为了能扩充到一般的实数域，P. Chvykov和E. Hoel于2020年合作提出了[[因果几何]]理论&amp;lt;ref  name=Chvykov_causal_geometry&amp;gt;{{cite journal|author1=Chvykov P|author2=Hoel E.|title=Causal Geometry|journal=Entropy|year=2021|volume=23|issue=1|page=24|url=https://doi.org/10.3390/e2}}&amp;lt;/ref&amp;gt;，将EI的定义扩充到了具备连续状态变量的函数映射上，并通过结合[[信息几何]]理论，探讨了EI的一种微扰形式，并与[[Fisher信息]]指标进行了比较，提出了[[因果几何]]的概念。然而，这一连续变量的EI计算方法需要假设方程中的正态分布随机变量的方差是无限小的，这一要求显然过于苛刻了。&lt;br /&gt;
&lt;br /&gt;
到了2022年，为了解决一般[[前馈神经网络]]的EI计算问题，[[张江]]与[[刘凯威]]又将[[因果几何]]中的连续变量的EI计算方法的方差限制去掉，探讨了EI的更一般形式&amp;lt;ref  name=zhang_nis&amp;gt;{{cite journal|title=Neural Information Squeezer for Causal Emergence|first1=Jiang|last1=Zhang|first2=Kaiwei|last2=Liu|journal=Entropy|year=2022|volume=25|issue=1|page=26|url=https://api.semanticscholar.org/CorpusID:246275672}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=yang_nis+&amp;gt;{{cite journal|title=Finding emergence in data by maximizing effective information|author1=Mingzhe Yang|author2=Zhipeng Wang|author3=Kaiwei Liu|author4=Yingqi Rong|author5=Bing Yuan|author6=Jiang Zhang|journal=arXiv|page=2308.09952|year=2024}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=liu_exact&amp;gt;{{cite journal|title=An Exact Theory of Causal Emergence for Stochastic Iterative Systems|author1=Kaiwei Liu|author2=Bing Yuan|author3=Jiang Zhang|journal=arXiv|page=2405.09207|year=2024}}&amp;lt;/ref&amp;gt;。然而，这种扩充仍然存在着一个缺陷，由于实数域上变量的均匀分布严格讲是定义在无穷大空间上的，为了避免遭遇无穷大，EI的计算中就会带着一个参数[math]L[/math]，表示均匀分布的区间范围。为了避免这个缺陷，也为了在不同[[粗粒化]]程度上比较EI，作者们便提出了[[维度平均EI]]的概念，并发现由[[维度平均EI]]定义的[[因果涌现度量]]是一个仅与[[神经网络]]的[[雅可比矩阵]]的行列式与两个比较维度的随机变量方差有关的量，而与其它参量，如L无关，而且，[[维度平均EI]]也可以看作是一种[[归一化的EI]]，即Eff。&lt;br /&gt;
&lt;br /&gt;
本质上讲，EI仅仅与一个[[马尔科夫动力系统]]的[[动力学]]——也就是与[[马尔科夫状态转移矩阵]]有关，而与状态变量的分布无关的量，然而，这一点在之前的文章中并没有被指出或刻意强调。在2024年的[[袁冰]]等人的综述文章中，作者们进一步强调了这一点，并给出了EI仅依赖于[[马尔科夫状态转移矩阵]]的显式形式&amp;lt;ref name=review&amp;gt;{{cite journal|last1=Yuan|first1=Bing|last2=Zhang|first2=Jiang|last3=Lyu|first3=Aobo|last4=Wu|first4=Jiaying|last5=Wang|first5=Zhipeng|last6=Yang|first6=Mingzhe|last7=Liu|first7=Kaiwei|last8=Mou|first8=Muyun|last9=Cui|first9=Peng|year=2024|title=Emergence and Causality in Complex Systems: A Survey of Causal Emergence and Related Quantitative Studies|journal=Entropy|volume=26|issue=2|page=108|url=https://doi.org/10.3390/e26020108}}&amp;lt;/ref&amp;gt;。[[张江]]等人在最新的讨论[[动力学可逆性]]与[[因果涌现]]的文章中，又指出EI实际上是对底层[[马尔科夫状态转移矩阵]]的[[可逆性]]的一种刻画，于是尝试直接刻画这种[[马尔科夫链的动力学可逆性]]以替代EI&amp;lt;ref name=zhang_reversibility&amp;gt;{{cite journal|author1=Jiang Zhang|author2=Ruyi Tao|author3=Keng Hou Leong|author4=Mingzhe Yang|author5=Bing Yuan|year=2024|title=Dynamical reversibility and a new theory of causal emergence|url=https://arxiv.org/abs/2402.15054|journal=arXiv}}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
=简介=&lt;br /&gt;
有效信息（EI）指标主要用来度量马尔科夫动力学的因果效应强度。与一般的因果推断理论不同，EI主要用于动力学（马尔科夫的转移概率矩阵）已知，且不存在未知变量即[[混杂因子]]的情况。其核心目标是度量因果关联强度，而并非是否存在因果效应。也就是说，EI更适用于已经确知了因果变量X和Y之间存在着因果联系的场合。&lt;br /&gt;
&lt;br /&gt;
更正式地，EI是因果机制（在离散状态的[[马尔科夫链]]中，是这个马尔科夫链的[[概率转移矩阵]]）的函数，而与其它因素无关。EI的正式定义为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
EI(P)\equiv I(Y;X|do(X\sim U))&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这里，P代表X到Y的因果机制，它是一个概率转移矩阵，即[math]p_{ij}\equiv Pr(Y=j|X=i)[/math]；X是因变量，Y是果变量，[math]do(X\sim U)[/math]表示对因变量X进行[[do干预]]，将X的分布变为均匀分布。在这一干预下，同时假设X到Y的因果机制P保持不变，那么，Y就会间接地受到X的do干预的影响而发生变化。则EI度量的是经过干预后的X和Y之间的互信息。&lt;br /&gt;
&lt;br /&gt;
之所以引入do操作，目的是为了消除数据X的分布对EI的影响，以使得最后的EI度量仅仅是因果机制f的函数，而与数据X无关。&lt;br /&gt;
&lt;br /&gt;
下面，给出三个马尔科夫链的例子，以及相应的EI数值也放到了下面：&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|+马尔科夫链示例&lt;br /&gt;
|[[文件:P1.png|替代=P_1的状态转移图|居中|无框|168x168像素|P_1的状态转移图]]&lt;br /&gt;
|[[文件:P2.png|替代=P_2的状态转移图|居中|无框|200x200像素|P_2的状态转移图]]&lt;br /&gt;
|[[文件:P3.png|替代=P_3的状态转移图|居中|无框|164x164像素|P_3的状态转移图]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P_1=\begin{pmatrix}&lt;br /&gt;
&amp;amp;0       &amp;amp;0             &amp;amp;1             &amp;amp;0&amp;amp; \\&lt;br /&gt;
&amp;amp;1       &amp;amp;0             &amp;amp;0             &amp;amp;0&amp;amp; \\&lt;br /&gt;
&amp;amp;0       &amp;amp;0             &amp;amp;0             &amp;amp;1&amp;amp; \\&lt;br /&gt;
&amp;amp;0       &amp;amp;1             &amp;amp;0             &amp;amp;0&amp;amp; \\&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;,&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P_2=\begin{pmatrix}&lt;br /&gt;
&amp;amp;1/3     &amp;amp;1/3           &amp;amp;1/3           &amp;amp;0&amp;amp; \\&lt;br /&gt;
&amp;amp;1/3     &amp;amp;1/3           &amp;amp;1/3           &amp;amp;0&amp;amp; \\&lt;br /&gt;
&amp;amp;1/3     &amp;amp;1/3           &amp;amp;1/3           &amp;amp;0&amp;amp; \\&lt;br /&gt;
&amp;amp;0       &amp;amp;0             &amp;amp;0             &amp;amp;1&amp;amp; \\&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;,    &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P_3=\begin{pmatrix}&lt;br /&gt;
&amp;amp;0       &amp;amp;0             &amp;amp;1             &amp;amp;0&amp;amp; \\&lt;br /&gt;
&amp;amp;1       &amp;amp;0             &amp;amp;0             &amp;amp;0&amp;amp; \\&lt;br /&gt;
&amp;amp;1       &amp;amp;0             &amp;amp;0             &amp;amp;0&amp;amp; \\&lt;br /&gt;
&amp;amp;1       &amp;amp;0             &amp;amp;0             &amp;amp;0&amp;amp; \\&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|[math]\begin{aligned}&amp;amp;EI(P_1)=2\ bits,\\&amp;amp;Det(P_1)=2\ bits,\\&amp;amp;Deg(P_1)=0\ bits\end{aligned}[/math]||[math]\begin{aligned}&amp;amp;EI(P_2)=0.81\ bits,\\&amp;amp;Det(P_2)=0.81\ bits,\\&amp;amp;Deg(P_2)=0\ bits\end{aligned}[/math]||[math]\begin{aligned}&amp;amp;EI(P_3)=0.81\ bits\\&amp;amp;Det(P_3)=2\ bits,\\&amp;amp;Deg(P_3)=1.19\ bits.\end{aligned}[/math]&lt;br /&gt;
|}&lt;br /&gt;
{{NumBlk|:||{{EquationRef|example}}}}&lt;br /&gt;
&lt;br /&gt;
我们可以看到，第一个矩阵[math]P_1[/math]的EI比第二个[math]P_2[/math]的高，这是因为这一概率转移是一个完全确定性的转移，也就是从某一个状态出发，它会以100%的概率转移到另外某一个状态。然而，并不是所有的确定性转移的矩阵都会对应较大的EI，比如[math]P_3[/math]这个矩阵，虽然它的转移概率也都是100%或0，但是因为所有后面三种状态都会转移到第1个状态，因此我们将无法区分它上一时刻是处于何种状态的。这种情况下它的EI也会比较低，我们称这种情况存在着'''简并性'''。于是，如果一个转移矩阵具有较高的确定性和较低的简并性，则它的EI就会很高。进一步，存在如下对EI的分解：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
EI=Det-Deg&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这里，Det是对确定性（Determinism）的缩写，而Deg是对简并性（Degeneracy）的缩写，EI是二者之差。在上面的表格中，我们将矩阵所对应的Det和Deg数值也都列在了下面。&lt;br /&gt;
&lt;br /&gt;
第一个转移概率矩阵是一个[[排列矩阵]]（Permutation），它是可逆的，因此确定性最高，没有简并性，因而EI最大；第二个矩阵的前三个状态都会以1/3的概率跳转到彼此，因此确定性程度最低，而简并性也很低，EI是0.81；第三个矩阵虽然也是非0即1的转移概率，因而确定性最高，但是由于后三个状态都跳转到1，因此，从1状态不能推知它来自于哪个状态，因此简并性最高，最终的EI与第二个相同，仍然是0.81。&lt;br /&gt;
&lt;br /&gt;
尽管在原始文献中&amp;lt;ref name=hoel_2013 /&amp;gt;，有效信息大多应用于离散状态的马尔科夫链，但是，[[张江]]、[[刘凯威]]、[[杨明哲]]等人将EI的定义扩展到了更一般的连续变量的情形&amp;lt;ref name=zhang_nis /&amp;gt;&amp;lt;ref name=yang_nis+ /&amp;gt;&amp;lt;ref name=liu_exact /&amp;gt;。这一扩充的基本思想是从EI的原始定义出发，将因变量x干预为一个足够大的有界区间，即[math][-\frac{L}{2},\frac{L}{2}]^n[/math]上的均匀分布，然后再假设因果机制为一种满足高斯分布的条件概率，其均值为确定值映射[math]f(x)[/math]，协方差矩阵为[math]\Sigma[/math]，从而在此基础上，再度量因果变量之间的有效信息。这里的因果机制是由映射[math]f(x)[/math]和协方差矩阵共同决定的，也就是条件概率[math]Pr(y|x)[/math]来决定的。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
下面，我们将进行更详细地讲解。&lt;br /&gt;
&lt;br /&gt;
=Do形式及解释=&lt;br /&gt;
原始的有效信息是定义在离散的马尔科夫链上的。然而，为了能够更广泛地应用，在这里我们探讨有效信息的更一般的形式。&lt;br /&gt;
&lt;br /&gt;
==形式定义==&lt;br /&gt;
&lt;br /&gt;
考虑两个随机变量：[math]X[/math]和[math]Y[/math]，分别代表因变量（Cause Variable）和果变量（Effect Variable），并且假定它们的取值区间分别是[math]\mathcal{X}[/math]和[math]\mathcal{Y}[/math]。则[math]X[/math]到[math]Y[/math]的有效信息EI的定义为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
EI\equiv I(X:Y|do(X\sim U(\mathcal{X})))\equiv I(\tilde{X}:\tilde{Y})&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这里，[math]do(X\sim U(\mathcal{X}))[/math]代表对[math]X[/math]实施[[do干预]](或称[[do操作]]，英文是do-operator），使其服从[math]\mathcal{X}[/math]上的均匀分布[math]U(\mathcal{X})[/math]，也即是[[最大熵分布]]。[math]\tilde{X}[/math]与[math]\tilde{Y}[/math]分别代表在经过[math]do[/math]干预后的[math]X[/math]和[math]Y[/math]变量，其中，&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
Pr(\tilde{X}=x)=\frac{1}{\#(\mathcal{X})},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
也就是，经过干预后的变量[math]X[/math]与干预前的变量[math]\tilde{X}[/math]之间的最大区别就在于分布不同：[math]\tilde{X}[/math]服从[math]\mathcal{X}[/math]上的均匀分布，而[math]X[/math]则可能是任意的分布。这里[math]\#(\mathcal{X})[/math]代表集合[math]\mathcal{X}[/math]的基数。对于有限元素集合来说，这就是集合中元素的个数。&lt;br /&gt;
&lt;br /&gt;
按照[[Judea Pearl]]的理论，do算子实际上是切断了所有指向[math]X[/math]变量的因果箭头，同时保持其它因素，特别是从[math]X[/math]到[math]Y[/math]的因果机制保持不变。所谓的[[因果机制]]是指在给定[math]X[/math]取值[math]x\in \mathcal{X}[/math]的情况下，[math]Y[/math]在[math]\mathcal{Y}[/math]上取任意值[math]y\in \mathcal{Y}[/math]的条件概率：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
f\equiv Pr(Y=y|X=x)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
在干预中，我们要始终保持则这个[[因果机制]][math]f[/math]保持不变。当没有其它变量影响的时候，这就会导致，[math]Y[/math]的概率分布会跟着发生变化，即被间接干预成为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
Pr(\tilde{Y}=y)=\sum_{x\in \mathcal{X}}Pr(X=x) Pr(Y=y|X=x)=\sum_{x\in \mathcal{X}} \frac{Pr(Y=y|X=x)}{\#(\mathcal{X})}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，[math]\tilde{Y}[/math]则代表：在保持因果机制[math]f[/math]不变的情况下，[math]Y[/math]变量被[math]X[/math]的do干预所间接改变的变量，这种变化主要体现在概率分布的变化上。&lt;br /&gt;
&lt;br /&gt;
因此，所谓一个因果机制[math]f[/math]的有效信息EI，就是被干预后的因变量[math]\tilde{X}[/math]和果变量[math]\tilde{Y}[/math]之间的[[互信息]]。&lt;br /&gt;
&lt;br /&gt;
==为什么要使用do算子？==&lt;br /&gt;
&lt;br /&gt;
不难看出，尽管EI本质上就是[[互信息]]，但是与传统[[信息论]]中的[[互信息]]不同，有效信息EI在定义中包含了[[do操作]]，即对输入变量做了一个[[干预操作]]。为什么要引入这一操作呢？&lt;br /&gt;
&lt;br /&gt;
根据[[Judea Pearl]]的[[因果阶梯理论]]&amp;lt;ref name=pearl_causality /&amp;gt;，即变量之间的因果联系可以被划分为三种层次：关联-[[干预]]-[[反事实]]。阶梯层级越高，因果特征越明显。直接对观测数据估测[[互信息]]，便是在度量关联程度；而如果我们能对变量做[[干预]]操作，即设定变量为某个值或服从某个分布，便上升到了干预的层级。在EI的定义中引入了[math]do[/math]操作，则使得EI能够比[[互信息]]更能体现因果特征。&lt;br /&gt;
&lt;br /&gt;
而从实际意义上来讲，在EI的计算中引入[[do算子]]，则可以把数据和动力学分开，从而消除数据分布（即[math]X[/math]的分布）对EI度量所带来的影响。事实上，在一般的[[因果图]]上，[[do算子]]是一种消除指向被干预变量所有的因果箭头的操作，这种操作可以避免[[混杂因子]]造成的[[虚假关联]]。因此，EI定义中的[[do算子]]也可以消除所有指向因变量[math]X[/math]的因果箭头，包括其它变量（包括不可观测的变量）对[math]X[/math]的影响，从而使得EI更能够刻画动力学本身的特性。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[do算子]]的引入让EI这个指标与其他信息度量指标截然不同，关键在于它是且仅是[[因果机制]]的函数，一方面这一特性使得它比其他指标（比如[[转移熵]]）更能抓住因果概念的本质，另一方面它需要我们能够已知或获取到[[因果机制]]，这在只有观测数据的情况下存在一定的困难。&lt;br /&gt;
&lt;br /&gt;
==为什么干预成均匀分布？==&lt;br /&gt;
&lt;br /&gt;
在[[Erik Hoel]]的原始定义中，[[do操作]]是将因变量[math]X[/math]干预成了在其定义域[math]\mathcal{X}[/math]上的[[均匀分布]]（也就是[[最大熵分布]]）&amp;lt;ref name=hoel_2013 /&amp;gt;&amp;lt;ref name=hoel_2017&amp;gt;{{cite journal|author1=Hoel, E.P.|title=When the Map Is Better Than the Territory|journal=Entropy|year=2017|volume=19|page=188|url=https://doi.org/10.3390/e19050188}}&amp;lt;/ref&amp;gt;。那么， 为什么要干预成[[均匀分布]]呢？其它分布是否也可以？&lt;br /&gt;
&lt;br /&gt;
首先，根据上一小节的论述，[[do操作]]的实质是希望让EI能够更清晰地刻画[[因果机制]][math]f[/math]的性质，因此，需要切断因变量[math]X[/math]与其它变量的联系，并改变其分布，让EI度量与[math]X[/math]的分布无关。&lt;br /&gt;
&lt;br /&gt;
而之所以要把输入变量干预为[[均匀分布]]，其实就是要更好地刻画[[因果机制]]的特性。为什么呢？&lt;br /&gt;
&lt;br /&gt;
当[math]\mathcal{X}[/math]和[math]\mathcal{Y}[/math]都是有限可数集合的时候，因果机制[math]f\equiv Pr(Y=y|X=x)[/math]就成为了一个[math]\#(\mathcal{X})[/math]行[math]\#(\mathcal{Y})[/math]列的矩阵，我们可以展开EI的定义：&lt;br /&gt;
{{NumBlk|:|&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
EI &amp;amp;= I(X,Y|do(X)\sim U)= \sum_{x\in\mathcal{X}}\sum_{y\in\mathcal{Y}}Pr(X=x,Y=y)\log \frac{Pr(X=x,Y=y)}{Pr(X=x)Pr(Y=y)}\\&lt;br /&gt;
&amp;amp;= \sum_{x\in\mathcal{X}}\sum_{y\in\mathcal{Y}}Pr(X=x)Pr(Y=y|X=x)\log \frac{Pr(Y=y|X=x)}{Pr(Y=y)}\\&lt;br /&gt;
&amp;amp;= \sum_{x\in\mathcal{X}}\sum_{y\in\mathcal{Y}}Pr(X=x)Pr(Y=y|X=x)\log Pr(Y=y|X=x)- \sum_{x\in\mathcal{X}}\sum_{y\in\mathcal{Y}}Pr(X=x)Pr(Y=y|X=x)Pr(Y=y) \\&lt;br /&gt;
&amp;amp;=\frac{1}{\#(\mathcal{X})}\left(-\sum_{x\in\mathcal{X}}H(Pr(Y|X)\right) + H(Pr(Y))&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
|{{EquationRef|1}}}}&lt;br /&gt;
&lt;br /&gt;
不难看出，最后得到的等式告诉我们，EI实际上由两项构成，第一项是因果机制矩阵每一行的负熵的平均值，第二项则是变量[math]Y[/math]的熵。&lt;br /&gt;
在第一项中，[math]X[/math]的概率分布[math]Pr(X=x)[/math]实际上起到了对每一行的熵求平均时候的权重的作用。只有当我们将该权重取为同样的数值的时候，才能够平等地对待因果机制矩阵中的每一个行，这时就恰好是将[math]X[/math]干预成均匀分布的时候。&lt;br /&gt;
&lt;br /&gt;
如果不是均匀分布，也就意味着某些行的熵就会被乘以一个较大的权重，有的行就会被赋予一个较小的权重，这种权重代表了某种“偏见”，因此也就不能做到让EI能够反映因果机制的天然属性。&lt;br /&gt;
&lt;br /&gt;
=马尔科夫链的有效信息=&lt;br /&gt;
&lt;br /&gt;
==马尔科夫链简介==&lt;br /&gt;
&amp;lt;blockquote&amp;gt;在本小节中，所有的马尔科夫转移概率矩阵都表示为[math]P[/math]。N为总的状态数量。&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
最早，[[Erik Hoel]]等人是在离散状态的[[马尔科夫动力学]]，即[[马尔科夫链]]上提出有效信息这一度量因果性的指标的。因此，这一节中，我们介绍有效信息在[[马尔科夫链]]上的特殊形式。&lt;br /&gt;
&lt;br /&gt;
所谓的[[马尔科夫链]]是指状态离散、时间离散的一种[[平稳随机过程]]，它的动力学一般都可以用所谓的[[转移概率矩阵]](Transitional Probability Matrix)，简称TPM来表示，有时也叫做[[概率转移矩阵]]或[[状态概率转移矩阵]]或[[状态转移矩阵]]。&lt;br /&gt;
&lt;br /&gt;
具体来讲，[[马尔科夫链]]包含一组随机变量[math]X_t[/math]，它在状态空间[math]\mathcal{X}=\{1,2,\cdots,N\}[/math]上取值，其中[math]t[/math]往往表示时间。所谓的[[转移概率矩阵]]是指一个概率矩阵，其中第[math]i[/math]行，第[math]j[/math]列元素：[math]p_{ij}[/math]表示了系统在任意时刻[math]t[/math]在[math]i[/math]状态的条件下，在[math]t+1[/math]时刻跳转到[math]j[/math]状态的概率。同时，每一行满足归一化条件：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\sum_{j=1}^Np_{ij}=1,&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[状态转移矩阵]]可以看作是[[马尔科夫链]]的[[动力学]]，这是因为，任意时刻[math]t+1[/math]上的状态概率分布，即[math]Pr(X_t)[/math]，可以被上一时刻的状态概率分布，即[math]Pr(X_t)[/math]和[[状态转移矩阵]]所唯一确定，并满足关系：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
Pr(X_{t+1}=j)=\sum_{i=1}^N p_{ij}\cdot Pr(X_t=i),&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这里的[math]i,j\in \mathcal{X}[/math]都是[math]\mathcal{X}[/math]中的任意状态，且[math]N=\#(\mathcal{X})[/math]即[math]\mathcal{X}[/math]中的总状态数。&lt;br /&gt;
&lt;br /&gt;
下表展示的是三个不同的转移概率矩阵，以及它们的EI数值：&lt;br /&gt;
{| style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|+马尔科夫链示例&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;&lt;br /&gt;
P_1=\begin{pmatrix}&lt;br /&gt;
&amp;amp;0       &amp;amp;0             &amp;amp;1             &amp;amp;0&amp;amp; \\&lt;br /&gt;
&amp;amp;1       &amp;amp;0             &amp;amp;0             &amp;amp;0&amp;amp; \\&lt;br /&gt;
&amp;amp;0       &amp;amp;0             &amp;amp;0             &amp;amp;1&amp;amp; \\&lt;br /&gt;
&amp;amp;0       &amp;amp;1             &amp;amp;0             &amp;amp;0&amp;amp; \\&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;,&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P_2=\begin{pmatrix}&lt;br /&gt;
&amp;amp;1/3     &amp;amp;1/3           &amp;amp;1/3           &amp;amp;0&amp;amp; \\&lt;br /&gt;
&amp;amp;1/3     &amp;amp;1/3           &amp;amp;1/3           &amp;amp;0&amp;amp; \\&lt;br /&gt;
&amp;amp;0       &amp;amp;0             &amp;amp;0             &amp;amp;1&amp;amp; \\&lt;br /&gt;
&amp;amp;0       &amp;amp;0             &amp;amp;0             &amp;amp;1&amp;amp; \\&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;,    &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P_3=\begin{pmatrix}&lt;br /&gt;
&amp;amp;1/4     &amp;amp;1/4           &amp;amp;1/4           &amp;amp;1/4&amp;amp; \\&lt;br /&gt;
&amp;amp;1/4     &amp;amp;1/4           &amp;amp;1/4           &amp;amp;1/4&amp;amp; \\&lt;br /&gt;
&amp;amp;1/4     &amp;amp;1/4           &amp;amp;1/4           &amp;amp;1/4&amp;amp; \\&lt;br /&gt;
&amp;amp;1/4     &amp;amp;1/4           &amp;amp;1/4           &amp;amp;1/4&amp;amp; \\&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|[math]EI(P_1)=2[/math] bits||[math]EI(P_2)=1[/math] bits||[math]EI(P_3)=0[/math] bits&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
这三个[[马尔科夫链]]的状态空间都是[math]\mathcal{X}=\{1,2,3,4\}[/math]，因此它们的TPM的大小都是[math]4\times 4[/math]。&lt;br /&gt;
&lt;br /&gt;
==马尔科夫链的EI==&lt;br /&gt;
&lt;br /&gt;
在[[马尔科夫链]]中，任意时刻的状态变量[math]X_t[/math]都可以看作是原因，而下一时刻的状态变量[math]X_{t+1}[/math]就可以看作是结果，这样[[马尔科夫链]]的[[状态转移矩阵]]就是它的[[因果机制]]。因此，我们可以将有效信息的定义套用到[[马尔科夫链]]上来。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
EI &amp;amp;= I(X_t,X_{t+1}|do(X_t)\sim U(\mathcal{X}))=I(\tilde{X}_t,\tilde{X}_{t+1}) \\ &lt;br /&gt;
&amp;amp;= \sum^N_{i=1}\sum^N_{j=1}Pr(\tilde{X}_t=i,\tilde{X}_{t+1}=j)\log \frac{Pr(\tilde{X}_t=i,\tilde{X}_{t+1}=j)}{Pr(\tilde{X}_t=i)Pr(\tilde{X}_{t+1}=j)}\\&lt;br /&gt;
&amp;amp;= \sum^N_{i=1}Pr(\tilde{X}_t=i)\sum^N_{j=1}Pr(\tilde{X}_{t+1}=j|\tilde{X}_t=i)\log \frac{Pr(\tilde{X}_{t+1}=j|\tilde{X}_t=i)}{Pr(\tilde{X}_{t+1}=j)}\\&lt;br /&gt;
&amp;amp;= \frac{1}{N}\sum^N_{i=1}\sum^N_{j=1}p_{ij}\log\frac{N\cdot p_{ij}}{\sum_{k=1}^N  p_{kj}}&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
其中&amp;lt;math&amp;gt;\tilde{X}_t,\tilde{X}_{t+1}&amp;lt;/math&amp;gt;分别为把t时刻的[math]X_t[/math][[干预]]为[[均匀分布]]后，前后两个时刻的状态。&amp;lt;math&amp;gt;p_{ij}&amp;lt;/math&amp;gt;为第i个状态转移到第j个状态的转移概率。从这个式子，不难看出，EI仅仅是概率转移矩阵[math]P[/math]的函数。&lt;br /&gt;
&lt;br /&gt;
==马尔科夫链EI的向量形式==&lt;br /&gt;
&lt;br /&gt;
我们也可以将[[转移概率矩阵]][math]P[/math]写成[math]N[/math]个行向量拼接而成的形式，即：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P=(P_1,P_2,\cdots,P_N)^T&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，[math]P_i[/math]矩阵[math]P[/math]的第[math]i[/math]个行向量，且满足条件概率的归一化条件：[math]||P_i||_1=1[/math]，这里的[math]||\cdot||_1[/math]表示向量的1范数。那么EI可以写成如下的形式：&lt;br /&gt;
&lt;br /&gt;
{{NumBlk|:|&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
EI &amp;amp;= \frac{1}{N}\sum^N_{i=1}\sum^N_{j=1}p_{ij}\log\frac{N\cdot p_{ij}}{\sum_{k=1}^N  p_{kj}}\\&lt;br /&gt;
&amp;amp;=\frac{1}{N}\cdot \sum_{i=1}^N\left(P_i\cdot \log P_i - P_i\cdot\log \bar{P}\right)\\&lt;br /&gt;
&amp;amp;=\frac{1}{N}\sum_{i=1}^N D_{KL}(P_i||\bar{P})&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
|{{EquationRef|2}}}}&lt;br /&gt;
将矩阵每列求均值，可得到平均转移向量&amp;lt;math&amp;gt;\overline{P}=\sum_{k=1}^N P_k/N&amp;lt;/math&amp;gt;。[math]D_{KL}[/math]便是两个分布的[[KL散度]]。因此，EI是转移矩阵每个行转移向量[math]P_i[/math]与平均转移向量[math]\bar{P}[/math]的[[KL散度]]的均值。&lt;br /&gt;
&lt;br /&gt;
针对上面所列的三个[[状态转移矩阵]]，我们可以分别求出它们的EI为：2比特、1比特和0比特。由此可见，如果[[转移概率矩阵]]中出现更多的0或1，也就是行向量多是[[独热向量]]（也叫做[[one-hot向量]]，即某一个位置为1，其它位置为0的向量），则EI值就会更大。也就是说，如果在状态转移的过程中，从某一时刻到下一时刻的跳转越确定，则EI值就会倾向于越高。但是，这个观察并不十分精确，更精确的结论由后面的小节给出。&lt;br /&gt;
&lt;br /&gt;
==归一化==&lt;br /&gt;
显然，EI的大小和状态空间大小有关，这一性质在我们比较不同尺度的[[马尔科夫链]]的时候非常不方便，我们需要一个尽可能不受尺度效应影响的[[因果效应度量]]。因此，我们需要对有效信息EI做一个归一化处理，得到和系统尺寸无关的一个量化指标。&lt;br /&gt;
&lt;br /&gt;
根据[[Erik Hoel]]和[[Tononi]]等人的工作，要用[[均匀分布]]即[[最大熵分布]]下的熵值，即&amp;lt;math&amp;gt;\log N&amp;lt;/math&amp;gt;来做分母对EI进行归一化，这里的[math]N[/math]为状态空间[math]\mathcal{X}[/math]中的状态的数量&amp;lt;ref name=hoel_2013 /&amp;gt;。那么归一化后的EI便等于：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
Eff=\frac{EI}{\log N}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
进一步定义归一化指标也称为'''有效性'''（effectiveness）。&lt;br /&gt;
&lt;br /&gt;
然而，在处理连续状态变量的时候，这种使用状态空间中状态数量的对数值进行归一化的处理方式并不是非常合适，因为这一状态数往往收到变量的维度和实数分辨率的影响。&lt;br /&gt;
&lt;br /&gt;
==确定性和简并性==&lt;br /&gt;
===EI的分解===&lt;br /&gt;
根据公式{{EquationNote|1}}，我们发现，EI实际上可以被分解为两项，即：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
EI&amp;amp;=\frac{1}{\#(\mathcal{X})} (-\sum_{x\in\mathcal{X}}H(Pr(Y|X)) + H(Pr(Y))\\&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
同样，在马尔科夫链的情景下，EI也可以做这样的分解：&lt;br /&gt;
&lt;br /&gt;
{{NumBlk|:|&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
EI &amp;amp;= \frac{1}{N}\cdot \sum_{i=1}^N\left(P_i\cdot \log P_i - P_i\cdot\log \bar{P}\right)\\&lt;br /&gt;
&amp;amp;=\underbrace{-\langle H(P_i)\rangle}_{确定性项}+\underbrace{H(\bar{P})}_{非简并性项}&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
|{{EquationRef|tow_terms}}}}&lt;br /&gt;
&lt;br /&gt;
其中，第一项：[math]-\langle H(P_i)\rangle\equiv \frac{1}{N}\sum_{i=1}^N H(P_i)[/math]为每个行向量[math]P_i[/math]的负熵的平均值，它刻画了整个马尔科夫转移矩阵的'''确定性'''（determinism）；&lt;br /&gt;
&lt;br /&gt;
第二项：[math]H(\bar{P})[/math]为平均行向量的熵，其中[math]\bar{P}\equiv \frac{1}{N}\sum_{i=1}^N P_i [/math]为所有N个行向量的平均行向量，它刻画了整个马尔科夫转移矩阵的'''非简并性'''或'''非退化性'''(non-degeneracy)。&lt;br /&gt;
&lt;br /&gt;
===确定性与简并性===&lt;br /&gt;
然而上述定义中的确定性项和非简并性都是负数，为此，我们重新定义一个马尔科夫链转移矩阵P的'''确定性'''为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
Determinism \equiv \log N - \langle H(P_i)\rangle = \frac{1}{N}\sum_{i=1}^N \sum_{j=1}^N p_{ij}\log \left(N\cdot p_{ij}\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这一项是一个平均的[[负熵]]，为了防止其为负数，所以加上了[math]\log N[/math]&amp;lt;ref name=hoel_2013 /&amp;gt;。它能刻画整个转移矩阵的确定性：也就是说如果我们知道了系统当前时刻所处的状态，则我们能够推断出系统在下一时刻所处的状态的程度。为什么这么说呢？这是因为确定性这一项是所有行向量熵的平均值，再取一个负号。我们知道，当一个向量更靠近均匀分布的时候，它的熵就越大，相反，如果一个向量越靠近一个“独热”（one-hot）的向量，也就是这个向量中只有一个1，其它元素都是0，那么它的熵就越小。我们知道，马尔科夫概率转移矩阵的一个行向量的含义就代表系统从当前状态转移到各个不同状态的概率大小。那么，当平均的行向量负熵大的时候，也就是这个行向量的某一个单元概率为1，其它为0，这就意味着系统能够确定地转移到1对应的状态。&lt;br /&gt;
&lt;br /&gt;
我们定义一个马尔科夫链转移矩阵P的'''简并性'''为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
Degeneracy \equiv \log N - H(\bar{P})=\log N + \sum_{j=1}^N \bar{P}_{\cdot j}\log \bar{P}_{\cdot j}=\sum_{j=1}^N \frac{\sum_{i=1}^Np_{ij}}{N}\log \left(\sum_{i=1}^Np_{ij}\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这一项为简并性或叫退化性，为了防止其为负数，所以加上了[math]\log N[/math]&amp;lt;ref name=hoel_2013 /&amp;gt;。这里的“简并性”的含义是：如果知道了系统的当前状态，能不能反推系统在上一时刻的状态的能力，如果可以推断，则这个马尔科夫矩阵的简并性就会比较低，也就是非简并的；而如果很难推断，则马尔科夫矩阵就是简并的，也即退化的。为什么“简并性”可以用平均行向量分布的负熵来刻画呢？这是因为，首先，当所有的P中的行向量都是彼此独立的独热向量，那么它们的平均分布就会非常接近于一个均匀分布，即[math]\bar{P}\approx (\frac{1}{N},\frac{1}{N},\cdots,\frac{1}{N})[/math]，这个时候，它的[[Shannon熵]]最大，即[math]\log N[/math]。而在此时，这个马尔科夫转移矩阵是一个'''可逆矩阵'''（由彼此独立的“独热”向量形成的全体彼此线性无关，因此矩阵满秩，因此是可逆的）。这也就意味着，我们从系统当前的状态，是可以推断出系统的上一时刻的状态的，所以这个马尔科夫转移矩阵是非简并的，计算出的简并度恰恰也为0；&lt;br /&gt;
&lt;br /&gt;
其次，当P中的行向量都是相同的独热向量的时候，则平均向量也是一个独热的向量，而这种向量的[[熵]]是最小的。在此时，由于所有的上一时刻状态都会转移到行向量中1对应的状态，因此我们也就很难推断出当前这个状态是由哪一个上一步的状态转移过来的。因此，这种情形下的马尔科夫矩阵是简并的（或退化的），计算出来的简并度则恰恰是[math]\log N[/math]。&lt;br /&gt;
&lt;br /&gt;
对于更一般的情况，如果P中的行向量靠近一个彼此独立的独热行向量构成的矩阵，则P就越非简并，相反，如果行向量彼此相同且靠近同一个独热向量，则P就越简并。&lt;br /&gt;
&lt;br /&gt;
===举例===&lt;br /&gt;
下面，我们以三个马尔科夫链为例，来考察它们的确定性和简并性&lt;br /&gt;
{| style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|+马尔科夫链示例&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;math&amp;gt;&lt;br /&gt;
P_1=\begin{pmatrix}&lt;br /&gt;
&amp;amp;0       &amp;amp;0             &amp;amp;1             &amp;amp;0&amp;amp; \\&lt;br /&gt;
&amp;amp;1       &amp;amp;0             &amp;amp;0             &amp;amp;0&amp;amp; \\&lt;br /&gt;
&amp;amp;0       &amp;amp;0             &amp;amp;0             &amp;amp;1&amp;amp; \\&lt;br /&gt;
&amp;amp;0       &amp;amp;1             &amp;amp;0             &amp;amp;0&amp;amp; \\&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;,&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P_2=\begin{pmatrix}&lt;br /&gt;
&amp;amp;1/3     &amp;amp;1/3           &amp;amp;1/3           &amp;amp;0&amp;amp; \\&lt;br /&gt;
&amp;amp;1/3     &amp;amp;1/3           &amp;amp;1/3           &amp;amp;0&amp;amp; \\&lt;br /&gt;
&amp;amp;1/3     &amp;amp;1/3           &amp;amp;1/3           &amp;amp;0&amp;amp; \\&lt;br /&gt;
&amp;amp;0       &amp;amp;0             &amp;amp;0             &amp;amp;1&amp;amp; \\&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;,    &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P_3=\begin{pmatrix}&lt;br /&gt;
&amp;amp;0       &amp;amp;0             &amp;amp;1             &amp;amp;0&amp;amp; \\&lt;br /&gt;
&amp;amp;1       &amp;amp;0             &amp;amp;0             &amp;amp;0&amp;amp; \\&lt;br /&gt;
&amp;amp;1       &amp;amp;0             &amp;amp;0             &amp;amp;0&amp;amp; \\&lt;br /&gt;
&amp;amp;1       &amp;amp;0             &amp;amp;0             &amp;amp;0&amp;amp; \\&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|[math]\begin{aligned}&amp;amp;Det(P_1)=2\ bits,\\&amp;amp;Deg(P_1)=0\ bits,\\&amp;amp;EI(P_1)=2\ bits\end{aligned}[/math]||[math]\begin{aligned}&amp;amp;Det(P_2)=0.81\ bits,\\&amp;amp;Deg(P_2)=0\ bits,\\&amp;amp;EI(P_2)=0.81\ bits\end{aligned}[/math]||[math]\begin{aligned}&amp;amp;Det(P_3)=2\ bits,\\&amp;amp;Deg(P_3)=1.19\ bits,\\&amp;amp;EI(P_3)=0.81\ bits\end{aligned}[/math]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
第一个转移概率矩阵是一个置换排列矩阵（Permutation），它是可逆的，因此确定性最高，没有简并性，因而EI最大；第二个矩阵的前三个状态都会以1/3的概率跳转到彼此，因此确定性程度最低，而非简并，EI是0.81；第三个矩阵虽然也是确定性的矩阵，因而确定性最高，但是由于后三个状态都跳转到1，因此，从1状态不能推知它来自于哪个状态，因此简并性最高，最终的EI与第二个相同，仍然是0.81。&lt;br /&gt;
&lt;br /&gt;
===归一化的确定性与简并性===&lt;br /&gt;
&lt;br /&gt;
在[[Erik Hoel]]等人的原始论文中&amp;lt;ref name=hoel_2013 /&amp;gt;，作者们定义的确定性和简并性是以归一化的形式呈现的，也就是将确定性和简并性除以了一个与系统尺度有关的量。为了区分，我们将归一化的对应量称为确定性系数和简并性系数。&lt;br /&gt;
&lt;br /&gt;
具体地，[[Erik Hoel]]等人将归一化后的有效信息，即Eff进行分解，分别对应确定性系数（determinism coefficient）和简并性系数（degeneracy coefficient）。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
Eff = Determinism\ Coefficient - Degeneracy\ Coefficient&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这两项的定义分别是：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
&amp;amp;Determinism\ Coefficient = \frac{1}{\log N}\sum_{i,j}p_{ij}\log\left(N\cdot {p_{ij}}\right) \\&lt;br /&gt;
&amp;amp;Degeneracy\ Coefficient = \frac{1}{\log N}\sum_{i}p_{ij}\sum_j\log{\left(\sum_k p_{k,j}\right)}&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
总之，确定性指的是，已知当前时刻状态概率分布，对未来可能状态的判断有多大的把握；而简并性指的是，已知当前的状态，追溯历史，我们能有多大确定性做出判断。如果有状态在动力学过程中发生简并，我们回溯历史时能运用的信息就会变少。当一个系统背后的动力学确定性高，同时简并性低时，说明这是一个具有明显因果效应的动力学。这就是EI本身的物理含义。&lt;br /&gt;
&lt;br /&gt;
==EI的函数性质==&lt;br /&gt;
由公式{{EquationNote|2}}可以看出，在概率转移矩阵P上，EI是关于矩阵中每一个元素（从某一状态到另一状态的条件概率）的函数，于是我们自然会问：这样一个函数具有哪些数学性质？如它有没有极值点？极值点在哪里？凸性如何？最大值和最小值又是多少？&lt;br /&gt;
===定义域===&lt;br /&gt;
在离散状态和离散时间的马尔科夫链上，EI的定义域显然是概率转移矩阵P。P是一个由[math]N\times N[/math]个元素构成的矩阵，其中每一个元素[math]p_{ij}\in[0,1][/math]代表一个概率值，同时对于任意的行，这组概率值需要满足归一化条件，也就是对于任意的[math]\forall i\in[1,N][/math]:&lt;br /&gt;
&lt;br /&gt;
{{NumBlk|:|&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
||P_i||_1=\sum_{j=1}^N p_{ij}=1&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
|{{EquationRef|3}}}}&lt;br /&gt;
因此EI的定义域，也就是P的可能空间并不是全部[math]N\times N[/math]维的实数空间[math]\mathcal{R}^{N^2}[/math]，由于归一化条件{{EquationNote|3}}的存在，使得该定义域成为一个[math]N\times N[/math]维实数空间中的一个子空间。如何表达这个子空间呢？&lt;br /&gt;
&lt;br /&gt;
首先，对于任意一个行向量[math]P_i[/math]来说，它的取值范围空间为N维实数空间中的一个超正多面体。例如，当[math]N=2[/math]的时候，该空间为一条直线：[math]p_{i,1}+p_{i,2}=1, \forall i\in\{1,2\}[/math]。当[math]N=3[/math]的时候，该空间为一张三维空间中的平面：[math]p_{i,1}+p_{i,2}+p_{i,3}=1, \forall i\in\{1,2,3\}[/math]。这两个空间如下图所示：&lt;br /&gt;
&lt;br /&gt;
[[文件:P1+p2=1.png|301x301像素|替代=]][[文件:P1+p2+p3=1.png|380x380像素|替代=]]&lt;br /&gt;
&lt;br /&gt;
在一般情况，我们将N维空间下的行向量[math]P_i[/math]的取值范围空间定义为[math]\Delta=\{p_j|\sum_{j=1}^Np_j=1,p_j\in[0,1]\}[/math]，则N个这样的空间的笛卡尔积即为EI的定义域：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
Dom(EI)=\Delta\times \Delta\cdots\times\Delta=\Delta^N&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
===一阶导数及极值点===&lt;br /&gt;
&lt;br /&gt;
对公式{{EquationNote|2}}求[math]p_{ij}[/math]的一阶导数，并注意到归一化条件[math]\sum_{j=1}^Np_{ij}=1[/math]，则就可以得到：&lt;br /&gt;
&lt;br /&gt;
{{NumBlk|:|&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{\partial EI}{\partial p_{ij}}=\log\left(\frac{p_{ij}}{p_{iN}}\right)-\log\left(\frac{\bar{p}_{\cdot j}}{\bar{p}_{\cdot N}}\right),&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
|{{EquationRef|3}}}}&lt;br /&gt;
&lt;br /&gt;
其中，&amp;lt;math&amp;gt;p_{ij}&amp;lt;/math&amp;gt;表示P中第i行第j列的条件概率，因为P每一行有归一化约束条件{{EquationNote|2}}，所以EI函数本身有&amp;lt;math&amp;gt;N(N-1)&amp;lt;/math&amp;gt;个自由变元，我们可以取&amp;lt;math&amp;gt;1\leq i\leq N, 1\leq j\leq N-1&amp;lt;/math&amp;gt;。&amp;lt;math&amp;gt;p_{iN}&amp;lt;/math&amp;gt;表示第i行第N列的条件概率，&amp;lt;math&amp;gt;\bar{p}_{\cdot j}, \bar{p}_{\cdot N}&amp;lt;/math&amp;gt;则分别表示第j列和第N列条件概率的均值。不难看出，该导数有定义的前提是对于选定的[math]i,j\in[1,N][/math]，[math]p_{ij},p_{iN},\bar{p}_{\cdot j}\equiv \frac{\sum_{k=1}^Np_{kj}}{N},\bar{p}_{\cdot N}\equiv \frac{\sum_{k=1}^Np_{kN}}{N}[/math]都大于0，只有满足这个条件，则EI在[math]p_{ij}[/math]附近是可导的。否则，如果有一项为0，则导数不存在。&lt;br /&gt;
&lt;br /&gt;
令式{{EquationNote|3}}等于0，可以求得极值点：即对于任意的&amp;lt;math&amp;gt;1\leq i\leq N, 1\leq j\leq N-1&amp;lt;/math&amp;gt;，都有下式的成立，&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
p_{ij}=\bar{p}_{\cdot j}=\frac{1}{N}\sum_{k=1}^Np_{kj}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
不难计算出，此时&amp;lt;math&amp;gt;EI=0&amp;lt;/math&amp;gt;，即EI达到了极值点。根据EI的二阶导数不难判断出，这是极小值点。换个角度来看这个公式，这意味着EI的极小值点有很多个，只要转移概率矩阵所有行向量完全一致，无论该行向量本身是怎样的分布，EI都会等于0。&lt;br /&gt;
&lt;br /&gt;
===二阶导数与凸性===&lt;br /&gt;
进一步地，为了求得EI函数的凸性，我们可以求出EI这个函数的二阶导数&amp;lt;math&amp;gt;\frac{\partial^2 EI}{\partial p_{ij}\partial p_{st}}&amp;lt;/math&amp;gt;，其中&amp;lt;math&amp;gt;1\leq s \leq N, 1\leq t \leq N-1 &amp;lt;/math&amp;gt;。首先我们需要引入一个函数符号&amp;lt;math&amp;gt;\delta_{i,j} &amp;lt;/math&amp;gt;，&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\delta_{i,j} = &lt;br /&gt;
\begin{cases}&lt;br /&gt;
0 &amp;amp; \text{if } i\ne j,\\&lt;br /&gt;
1 &amp;amp; \text{if } i = j.&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
于是我们可以来推导EI的二阶导数，当&amp;lt;math&amp;gt;i=s &amp;lt;/math&amp;gt;时，&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{equation}&lt;br /&gt;
     \begin{aligned}&lt;br /&gt;
    \frac{\partial^2 EI}{\partial p_{ij}\partial p_{it}}&amp;amp;=\frac{\delta_{j,t}}{N}\left(\frac{1}{p_{ij}}-\frac{1}{N\cdot \bar{p}_{\cdot j}}\right)+\frac{1}{N\cdot p_{iN}}-\frac{1}{N^2\cdot \bar{p}_{\cdot N}}\\&lt;br /&gt;
    &amp;amp;=\delta_{j,t}\frac{\sum_{k=1}^{N-1}p_{k j}-p_{ij}}{N^2\cdot p_{ij}\cdot \bar{p}_{\cdot j}}+\frac{\sum_{k=1}^{N-1}p_{k N}-p_{iN}}{N^2\cdot p_{iN}\cdot \bar{p}_{\cdot N}}\\&lt;br /&gt;
    &amp;amp;=\delta_{j,t}\frac{\sum_{k\neq i}p_{kj}}{N^2\cdot p_{ij}\cdot \bar{p}_{\cdot j}}+\frac{\sum_{k\neq i}p_{k N}}{N^2\cdot p_{iN}\cdot \bar{p}_{\cdot N}}&amp;gt;0,&lt;br /&gt;
\end{aligned}&lt;br /&gt;
\end{equation}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当&amp;lt;math&amp;gt;i\ne s&amp;lt;/math&amp;gt;时，&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{equation}&lt;br /&gt;
    \frac{\partial^2 EI}{\partial p_{ij}\partial p_{st}}=-\frac{\delta_{j,t}}{N^2\cdot \bar{p}_{\cdot j}}-\frac{1}{N^2\cdot \bar{p}_{\cdot N}}&amp;lt;0.&lt;br /&gt;
\end{equation}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
综上，EI的二阶导数为，&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{equation}&lt;br /&gt;
        \frac{\partial^2 EI}{\partial p_{ij}\partial p_{st}}=\frac{1}{N}\cdot\left(\frac{\delta_{i,s}\delta_{j,t}}{p_{ij}}+\frac{\delta_{i,s}}{p_{iN}}-\frac{\delta_{j,t}}{N\cdot\bar{p}_{\cdot j}}-\frac{1}{N\cdot \bar{p}_{\cdot N}}\right).&lt;br /&gt;
\end{equation}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
并且，二阶导数在&amp;lt;math&amp;gt;i=s &amp;lt;/math&amp;gt;的时候为正，在&amp;lt;math&amp;gt;i\ne s&amp;lt;/math&amp;gt;时为负。因此EI既不是凸的也不是凹的。&lt;br /&gt;
&lt;br /&gt;
===最小值===&lt;br /&gt;
前面已经根据EI的一阶导数讨论了它的极值问题。即EI会在所有行向量都是同一个向量的时候达到极小值0。那么，这个极小值是不是最小的呢？&lt;br /&gt;
&lt;br /&gt;
我们知道，根据公式{{EquationNote|2}}，EI本质上是一种KL散度，而KL散度都是非负的，也就是说：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
EI\geq 0&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这个不等式的等号在[math]p_{ij}=\bar{p}_{\cdot j}[/math]对所有的[math]i,j[/math]都成立的时候能够取到。因此，0是EI的最小值，且[math]p_{ij}=\bar{p}_{\cdot j}=\frac{1}{N}\sum_{k=1}^Np_{kj}[/math]是它的最小值点，即：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
EI_{min}=0.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===最大值===&lt;br /&gt;
通过前面确定性和简并性章节的讨论，我们知道EI可以拆成两部分，&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
EI = -\langle H(P_i)\rangle + H(\bar{P}),&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中熵的定义是&amp;lt;math&amp;gt;H(P_i)=-\sum_{j=1}^Np_{ij}\log p_{ij}&amp;lt;/math&amp;gt;。分开来看，前一项式子最大值为0，即：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
- H(P_i)\leq 0,&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当&amp;lt;math&amp;gt;P_i&amp;lt;/math&amp;gt;为没有不确定性的独热向量时，该式子的等号成立。所以，当对所有的i都有&amp;lt;math&amp;gt;P_i&amp;lt;/math&amp;gt;为独热变量时，有&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
-\langle H(P_i)\rangle=0&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
成立。另一边，P中所有行向量的平均向量的熵也有一个不等式成立，&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
H(\bar{P})\leq \log N,&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中等于号在满足&amp;lt;math&amp;gt;\bar{P}=\frac{1}{N}\cdot \mathbb{1}&amp;lt;/math&amp;gt;条件时成立。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
EI\leq 0+\log N=\log N&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
当这两个式子的等号同时成立时，即&amp;lt;math&amp;gt;P_i&amp;lt;/math&amp;gt;为独热向量，同时&amp;lt;math&amp;gt;\bar{P}&amp;lt;/math&amp;gt;为均匀分布时（此时必然要求[math]P_i[/math]彼此垂直，也就是P是一个[[排列置换矩阵]]），EI会达到最大值：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
EI_{max}=\log N&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==最简马尔科夫链下的解析解==&lt;br /&gt;
&lt;br /&gt;
我们考虑一个最简单的2*2马尔科夫链矩阵：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P=\begin{pmatrix}p &amp;amp; 1-p \\1-q &amp;amp; q\end{pmatrix},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中 [math]p[/math] 和 [math]q[/math] 为取值 [math][0,1][/math] 的参数。&lt;br /&gt;
&lt;br /&gt;
这个参数为[math]p[/math]和[math]q[/math]的转移概率矩阵的EI可以通过以下解析解计算：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
EI=\frac{1}{2}\left[p\log_2\frac{2p}{1+p-q}+(1-p)\log_2\frac{2(1-p)}{1-p+q}\right. + \left.(1-q)\log_2\frac{2(1-q)}{1+p-q}+q\log_2\frac{2q}{1-p+q}\right]&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
下图展示了不同[math]p[/math] 和 [math]q[/math]取值的 EI 的变化。&lt;br /&gt;
&lt;br /&gt;
[[文件:EIpq.png|替代=|400x400像素]]&lt;br /&gt;
&lt;br /&gt;
由这张图不难看出，当p+q=1的时候，也就是所有行向量都相同的情形，EI取得最小值0。否则，随着p,q沿着垂直于p+q=1的方向增大，EI开始变大，而最大值为1.&lt;br /&gt;
&lt;br /&gt;
==因果涌现==&lt;br /&gt;
有了有效信息这一度量指标后，我们便可以讨论马尔科夫链上的因果涌现了。对于一个马尔科夫链，观察者可以建立多尺度视角去观测，区分出微观和宏观。首先，原始的马尔科夫概率转移矩阵P即定义了微观动力学；其次，经过对微观态的粗粒化映射（coarse-graining）后（通常反映为对微观状态的分组），观察者可以得到对应的宏观状态（即分组），这些宏观状态彼此之间的概率转移可以用宏观的马尔科夫概率转移矩阵P'来刻画。对两个动力学分别可以计算EI，如果宏观的EI大于微观EI，我们说该系统发生了因果涌现。&lt;br /&gt;
&lt;br /&gt;
[[文件:CE.png|替代=因果涌现示意图|500x500像素]]&lt;br /&gt;
&lt;br /&gt;
可以定义一个新的指标直接度量因果涌现的程度：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
CE = EI(P') - EI(P)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这里[math]P[/math]为微观状态的马尔科夫概率转移矩阵，维度为：[math]N\times N[/math]，这里N为微观的状态数；而[math]P'[/math]为对[math]P[/math]做粗粒化操作之后得到的宏观态的马尔科夫概率转移矩阵，维度为[math]M\times M[/math]，其中[math]M&amp;lt;N[/math]为宏观状态数。&lt;br /&gt;
&lt;br /&gt;
关于如何对马尔科夫概率转移矩阵实施粗粒化的方法，往往体现为两步：1、对微观状态做归并，将N个微观态，归并为M个宏观态；2、对马尔科夫转移矩阵做约简。关于具体的粗粒化马尔科夫链的方法，请参考[[马尔科夫链的粗粒化]]。&lt;br /&gt;
&lt;br /&gt;
如果计算得出的CE&amp;gt;0，则称该系统发生了[[因果涌现]]，否则没有发生。&lt;br /&gt;
&lt;br /&gt;
下面，我们展示一个具体的因果涌现的例子：&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|+马尔科夫链示例&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P_m=\begin{pmatrix}&lt;br /&gt;
&amp;amp;1/3     &amp;amp;1/3           &amp;amp;1/3           &amp;amp;0&amp;amp; \\&lt;br /&gt;
&amp;amp;1/3     &amp;amp;1/3           &amp;amp;1/3           &amp;amp;0&amp;amp; \\&lt;br /&gt;
&amp;amp;1/3     &amp;amp;1/3           &amp;amp;1/3           &amp;amp;0&amp;amp; \\&lt;br /&gt;
&amp;amp;0       &amp;amp;1             &amp;amp;0             &amp;amp;1&amp;amp; \\&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;,    &lt;br /&gt;
||&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
P_M=\begin{pmatrix}&lt;br /&gt;
&amp;amp;1       &amp;amp;0            &amp;amp; \\&lt;br /&gt;
&amp;amp;0       &amp;amp;1            &amp;amp; \\&lt;br /&gt;
\end{pmatrix}&lt;br /&gt;
&amp;lt;/math&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
|[math]\begin{aligned}&amp;amp;Det(P_m)=0.81\ bits,\\&amp;amp;Deg(P_m)=0\ bits,\\&amp;amp;EI(P_m)=0.81\ bits\end{aligned}[/math]||[math]\begin{aligned}&amp;amp;Det(P_M)=1\ bits,\\&amp;amp;Deg(P_M)=0\ bits,\\&amp;amp;EI(P_M)=1\ bits\end{aligned}[/math]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
在这个例子中，微观态的转移矩阵是一个4*4的矩阵，其中前三个状态彼此以1/3的概率相互转移，这导致该转移矩阵具有较小的确定性，因此EI也不是很大为0.81。然而，当我们对该矩阵进行粗粒化，也就是把前三个状态合并为一个状态a，而最后一个状态转变为一个宏观态b。这样所有的原本三个微观态彼此之间的转移就变成了宏观态a到a内部的转移了。因此，转移概率矩阵也就变成了[math]P_M[/math]。在这个例子中，可以计算它的[[因果涌现度量]]为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
CE=EI(P_M)-EI(P_m)=1-0.81=0.19\ bits&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
即存在着0.19比特的因果涌现。&lt;br /&gt;
&lt;br /&gt;
有时，我们也会根据归一化的EI来计算[[因果涌现度量]]，即：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
ce=Eff(P_M)-Eff(P_m)=1-0.405=0.595&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
由此可见，由于归一化的EI消除了系统尺寸的影响，因此因果涌现度量更大。&lt;br /&gt;
&amp;lt;!--[[文件:Example1.png|815x815px|无框|居中]]&lt;br /&gt;
&lt;br /&gt;
上图展示了几种马尔科夫链的转移概率矩阵，其中（a）是确定性高，简并性低，所以整体eff比较高。（b）则是确定性和简并性都比较高，所以eff是0。（c）相比于（a）确定性更低，（d）也是确定性和简并性都较高导致eff较低，它们都可以通过同一种粗粒化策略（将前4个状态合并为一个状态）来得到（e）。此时（e）确定性很高，无简并性，所以（e）的eff比（c）（d）要高。&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==计算EI的源代码==&lt;br /&gt;
&lt;br /&gt;
这是计算一个马尔科夫概率转移矩阵的Python源代码。输入tpm为一个满足行归一化条件的马尔科夫概率转移矩阵，返回的ei_all为其EI值，其余两项分别为'''确定性系数'''和'''简并性系数'''。&lt;br /&gt;
python:&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def tpm_ei(tpm, log_base = 2):&lt;br /&gt;
    # marginal distribution of y given x ~ Unifrom Dist&lt;br /&gt;
    puy = tpm.sum(axis=0)&lt;br /&gt;
    n = tpm.shape[0]&lt;br /&gt;
    &lt;br /&gt;
    # replace 0 to a small positive number to avoid log error&lt;br /&gt;
    eps = 1E-10&lt;br /&gt;
    tpm_e = np.where(tpm==0, eps, tpm)&lt;br /&gt;
    puy_e = np.where(tpm==0, eps, puy)&lt;br /&gt;
    &lt;br /&gt;
    # calculate EI of specific x&lt;br /&gt;
    ei_x = (np.log2(n * tpm_e / puy_e) / np.log2(log_base)  * tpm).sum(axis=1)&lt;br /&gt;
    &lt;br /&gt;
    # calculate det and deg&lt;br /&gt;
    det = np.log2(n) + (tpm * np.log2(tpm_e)).sum(axis=1).mean(axis=0)&lt;br /&gt;
    deg = np.log2(n) + (tpm.mean(axis=0) * np.log2(tpm_e.mean(axis=0))).sum()&lt;br /&gt;
    &lt;br /&gt;
    # calculate total EI&lt;br /&gt;
    ei_all = ei_x.mean()&lt;br /&gt;
    return ei_all,det/np.log2(log_base),deg/np.log2(log_base)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=连续变量的EI=&lt;br /&gt;
&lt;br /&gt;
现实中大部分系统都要在连续空间上考虑，所以很有必要将EI的概念拓展到连续系统上。&lt;br /&gt;
&lt;br /&gt;
这种扩展的核心思想是将连续空间中的因果机制简化为一个确定性的函数映射[math]f(X)[/math]再加上一个噪声随机变量[math]\xi[/math]。而且，在下面列举的情形中，[math]\xi\sim \mathcal{N}(0,\Sigma)[/math]，即满足高斯分布，这样便可求得EI的解析表达式。对于更一般的情况，尚没有文献进行讨论。&lt;br /&gt;
&lt;br /&gt;
==随机函数映射==&lt;br /&gt;
最初Erik Hoel考虑到了这一点，提出了[[因果几何]]&amp;lt;ref name=Chvykov_causal_geometry /&amp;gt;框架，它不仅率先讨论了随机函数映射的EI计算问题，同时还引入了干预噪音和[[因果几何]]的概念，并等级地定义了EI的局部形式，并将这种形式与[[信息几何]]进行了对照和类比。下面，我们分别从一维函数映射、多维函数映射，和EI的局部形式来分别进行讨论。&lt;br /&gt;
&lt;br /&gt;
===一维函数映射===&lt;br /&gt;
&lt;br /&gt;
首先，我们考虑最简单的情况：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
y=f(x)+\varepsilon, \varepsilon\sim\mathcal{N}(0,\sigma^2)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，[math]x,y\in \mathcal{R}[/math]都是一维实数变量。按照有效信息的定义，我们需要对变量x进行干预，使其满足在其定义域空间上的均匀分布。如果x的定义域为一个固定的区间，如[a,b]，其中a,b都是实数，那么x的概率密度函数就是[math]1/(b-a)[/math]。然而，当x的定义域为全体实数的时候，区间成为了无穷大，而x的概率密度函数就成为了无穷小。&lt;br /&gt;
&lt;br /&gt;
为了解决这个问题，我们假设x的定义域不是整个实数空间，而是一个足够大的区域：[math][-L/2,L/2][/math]，其中L为该区间的大小。这样，该区域上的均匀分布的密度函数为：[math]1/L[/math]，从而实施有效信息的计算。我们希望当[math]L\rightarrow +\infty[/math]的时候，EI能够收敛到一个有限的数。然而，实际的EI是一个和x定义域大小有关的量，所以EI是参数L的函数。这一点可以从EI的定义中看出：&lt;br /&gt;
&lt;br /&gt;
{{NumBlk|:|&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
EI&amp;amp;=I(y;x|do(x\sim U[-L/2,L/2]))\\&lt;br /&gt;
&amp;amp;=\int_{-\frac{L}{2}}^{\frac{L}{2}}\int_{f([-\frac{L}{2},\frac{L}{2}])}p(x)p(y|x)\ln\frac{p(y|x)}{p(y)}dydx\\ &lt;br /&gt;
&amp;amp;=\int_{-\frac{L}{2}}^{\frac{L}{2}}\int_{f([-\frac{L}{2},\frac{L}{2}])}p(x)p(y|x)\ln p(y|x)dydx -\int_{-\frac{L}{2}}^{\frac{L}{2}}\int_{f([-\frac{L}{2},\frac{L}{2}])}p(x)p(y|x)\ln p(y)dydx&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
|{{EquationRef|4}}}}&lt;br /&gt;
&lt;br /&gt;
这里，[math]p(y|x)=\frac{1}{\sigma\sqrt{2\pi}}\exp\left(-\frac{(y-f(x))^2}{\sigma^2}\right)[/math]为给定x的条件下，y的条件概率密度函数。由于[math]\varepsilon[/math]服从均值为0，方差为[math]\sigma^2[/math]的正态分布，所以[math]y=f(x)+\varepsilon[/math]就服从均值为[math]f(x)[/math]，方差为[math]\sigma^2[/math]的正态分布。&lt;br /&gt;
&lt;br /&gt;
y的积分区间为：[math]f([-\frac{L}{L},\frac{L}{2}])[/math]，即将x的定义域[math][-\frac{L}{2},\frac{L}{2}][/math]经过f的映射，形成y上的区间范围。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
p(y)=\int_{-\frac{L}{2}}^{\frac{L}{2}}p(x_0)p(y|x_0)dx_0=\int_{-\frac{L}{2}}^{\frac{L}{2}}\frac{1}{L}\frac{1}{\sigma\sqrt{2\pi}}\exp\left(-\frac{(y-f(x_0))^2}{\sigma^2}\right)dx_0&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
为y的概率密度函数，它也可以由联合概率密度函数[math]p(x,y)=p(x)p(y|x)[/math]对x进行积分得到。为了后续叙述方便，我们将x重新命名为[math]x_0[/math]，从而以区分出现在{{EquationNote|4}}中的其它x变量。&lt;br /&gt;
&lt;br /&gt;
由于L很大，所以区间[math][-\frac{L}{2},\frac{L}{2}][/math]，进而假设区间[math]f([-\frac{L}{L},\frac{L}{2}])[/math]也很大。这就使得，上述积分的积分上下界可以近似取到无穷大，也就有{{EquationNote|4}}中的第一项为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
\int_{-\frac{L}{2}}^{\frac{L}{2}}\int_{f([-\frac{L}{2},\frac{L}{2}])}p(x)p(y|x)\ln p(y|x)dydx&amp;amp;\approx \int_{-\frac{L}{2}}^{\frac{L}{2}}\int_{-\infty}^{\infty}p(x)p(y|x)\ln p(y|x)dydx\\&lt;br /&gt;
&amp;amp;=\int_{-\frac{L}{2}}^{\frac{L}{2}}\int_{-\infty}^{\infty}\frac{1}{L}\frac{1}{\sigma\sqrt{2\pi}}\exp\left(-\frac{(y-f(x))^2}{\sigma^2}\right)\ln\left[\frac{1}{\sigma\sqrt{2\pi}}\exp\left(-\frac{(y-f(x))^2}{\sigma^2}\right)\right]dydx\\&lt;br /&gt;
&amp;amp;=\ln(\frac{1}{\sigma\cdot\sqrt{2\pi e}})&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，e为自然对数的底，最后一个等式是根据高斯分布函数的Shannon熵公式计算得出的。&lt;br /&gt;
&lt;br /&gt;
然而，要计算第二项，即使使用了积分区间为无穷大这个条件，仍然很难计算得出结果，为此，我们对函数f(x)进行一阶泰勒展开：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
f(x_0)\approx f(x)+f'(x)(x_0-x)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这里，[math]x\in[-\frac{L}{2},\frac{L}{2}][/math]是x定义域上的任意一点。&lt;br /&gt;
&lt;br /&gt;
因此，p(y)可以被近似计算：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
p(y)=\int_{-\frac{L}{2}}^{\frac{L}{2}}\frac{1}{L}\frac{1}{\sigma\sqrt{2\pi}}\exp\left(-\frac{(y-f(x_0))^2}{\sigma^2}\right)dx_0\approx \int_{-\infty}^{\infty}\frac{1}{L}\frac{1}{\sigma\sqrt{2\pi}}\exp\left(-\frac{(y-f(x)-f'(x)(x_0-x))^2}{\sigma^2}\right)dx_0\approx \frac{1}{L}\cdot\frac{1}{f'(x)}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
值得注意的是，在这一步中，我们不仅将f(x)近似为一个线性函数，同时还引入了一个假设，即p(y)的结果与y无关，而与[math]x[/math]有关。我们知道在对EI计算的第二项中包含着对x的积分，因此这一近似也就意味着不同x处的p(y)近似是不同的。&lt;br /&gt;
&lt;br /&gt;
这样，{{EquationNote|4}}中的第二项近似为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
\int_{-\frac{L}{2}}^{\frac{L}{2}}\int_{f([-\frac{L}{2},\frac{L}{2}])}p(x)p(y|x)\ln p(y)dydx\approx -\ln L - \frac{1}{L}\int_{-\frac{L}{2}}^{\frac{L}{2}}\ln f'(x)dx&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
最终的EI可以由下式近似计算：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
EI\approx \ln(\frac{L}{\sqrt{2\pi e}})+\frac{1}{2L}\int_{-\frac{L}{2}}^{\frac{L}{2}}\ln \left(\frac{f'(x)}{\sigma}\right)^2dx&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--如果同时考虑两种噪声，并且如果干预空间大小为&amp;lt;math&amp;gt;L&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;和&amp;lt;math&amp;gt;\epsilon\ll 1&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;，EI数学形式如下所示&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;EI\approx -\frac{1}{2}\int_{-L/2}^{L/2}\ln\left[\left(\frac{\epsilon}{f'(x)}\right)^2+\delta^2\right]dx.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中&amp;lt;math&amp;gt;\epsilon&amp;lt;/math&amp;gt;和&amp;lt;math&amp;gt;\delta&amp;lt;/math&amp;gt;分别表示观测噪音和干预噪音的大小。--&amp;gt;&lt;br /&gt;
上述推导首见于Hoel2013的文章中&amp;lt;ref name=hoel_2013 /&amp;gt;，并在[[神经信息压缩器]]一文中&amp;lt;ref name=zhang_nis /&amp;gt;中进行了详细讨论。&lt;br /&gt;
&lt;br /&gt;
===高维情况===&lt;br /&gt;
&lt;br /&gt;
我们可以把上述对一维变量的EI计算推广到更一般的n维情景。即：&lt;br /&gt;
{{NumBlk|:|&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\mathbf{y}=f(\mathbf{x})+\xi,&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
|{{EquationRef|5}}}}&lt;br /&gt;
&lt;br /&gt;
其中，[math]\xi\sim \mathcal{N}(0,\Sigma)[/math]，&amp;lt;math&amp;gt;\Sigma&amp;lt;/math&amp;gt;是高斯噪声&amp;lt;math&amp;gt;\xi&amp;lt;/math&amp;gt;的协方差矩阵。&lt;br /&gt;
首先，我们将[math]\mathbf{x}[/math]干预成&amp;lt;math&amp;gt;[-L/2，L/2]^n\subset\mathcal{R}^n&amp;lt;/math&amp;gt;上的均匀分布，&amp;lt;math&amp;gt;[-L/2，L/2]^n&amp;lt;/math&amp;gt;表示n维空间中的超立方体，我们假设&amp;lt;math&amp;gt;\mathbf{y}\in\mathcal{R}^m&amp;lt;/math&amp;gt;，其中&amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt;和&amp;lt;math&amp;gt;m&amp;lt;/math&amp;gt;是正整数。只存在观测噪声的情况下，EI可以推广为以下形式：&lt;br /&gt;
&lt;br /&gt;
{{NumBlk|:|&lt;br /&gt;
&amp;lt;math&amp;gt;EI\approx \ln\left(\frac{L^n}{(2\pi e)^{m/2}}\right)+\frac{1}{L^n}\int_{-[\frac{L}{2},\frac{L}{2}]^n}\ln\left|\det\left(\frac{\partial_\mathbf{x} f(\mathbf{x})}{\Sigma^{1/2}}\right)\right| d\mathbf{x},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
|{{EquationRef|6}}}}&lt;br /&gt;
&lt;br /&gt;
其中，&amp;lt;math&amp;gt;|\cdot|&amp;lt;/math&amp;gt;是绝对值运算，&amp;lt;math&amp;gt;\det&amp;lt;/math&amp;gt;是行列式。&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
为了将信息几何推广到具有干预噪声和观测噪声的情况，需要引入一个新的维度为&amp;lt;math&amp;gt;l&amp;lt;/math&amp;gt;的中间变量&amp;lt;math&amp;gt;\theta\subset\mathcal{R}^l&amp;lt;/math&amp;gt;，使得我们不能通过直接干预&amp;lt;math&amp;gt;\mathbf{x}&amp;lt;/math&amp;gt;来控制&amp;lt;math&amp;gt;\mathbf{y}&amp;lt;/math&amp;gt;。相反，我们可以干预&amp;lt;math&amp;gt;\mathbf{x}&amp;lt;/math&amp;gt;以影响&amp;lt;math&amp;gt;\theta&amp;lt;/math&amp;gt;并间接影响&amp;lt;math&amp;gt;\mathbf{y}&amp;lt;/math&amp;gt;。因此，这三个变量形成了一个马尔可夫链：&amp;lt;math&amp;gt;\mathbf{x}\to\theta\to\mathbf{y}&amp;lt;/math&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
在这种情况下，可以获得两个流形：效应流形&amp;lt;math&amp;gt;\mathcal{M}_E=\{p(\mathbf{y}|\theta)\}_{\theta}&amp;lt;/math&amp;gt;，度量为&amp;lt;math&amp;gt;g_{\mu\nu}=-\mathbb{E}_{p(\mathbf{y}|\theta)}\partial_{\mu}\partial_{\nu}\ln p(\mathbf{y}|\theta)&amp;lt;/math&amp;gt;；干预流形&amp;lt;math&amp;gt;\mathcal{M}_I=\{\tilde{q}(\mathbf{x}|\theta)\}_{\theta\in \Theta}&amp;lt;/math&amp;gt;，度量为&amp;lt;math&amp;gt;h_{\mu\nu}=-\mathbb{E}_{\tilde{q}(\mathbf{x}|\theta)}\partial_{\mu}\partial_{\nu}\ln \tilde{q}(\mathbf{x}|\theta)&amp;lt;/math&amp;gt;。其中&amp;lt;math&amp;gt;\tilde{q}\equiv \frac{q(\theta|\mathbf{x})}{\int q(\theta|\mathbf{x})d\mathbf{x}}&amp;lt;/math&amp;gt;，&amp;lt;math&amp;gt;\partial_{\mu}=\partial/\partial \theta_{\mu}&amp;lt;/math&amp;gt;。效应和干预两个流形合在一起称为因果几何。&lt;br /&gt;
&lt;br /&gt;
因果几何的EI计算公式为:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
EI_g=\ln\frac{V_I}{(2\pi e)^{n/2}}-\frac{1}{2V_I}\int_\Theta\sqrt{|\det(h_{\mu\nu})|} \ln\left|\det\left( I_n+\frac{h_{\mu\nu}}{g_{\mu\nu}}\right)\right|d^l\theta,&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==维度平均的EI==&lt;br /&gt;
&lt;br /&gt;
在离散状态的系统中，当我们比较不同尺度系统的时候，可以直接计算EI的差异也可以计算归一化的EI差异。归一化的EI是除以[math]\log N[/math]，这里[math]N=\#(\mathcal{X})[/math]为离散状态空间[math]\mathcal{X}[/math]中的元素个数。&lt;br /&gt;
&lt;br /&gt;
然而，在针对连续变量进行扩展的时候，如果使用原始的EI，那么就会出现不合理的情况。首先，如公式{{EquationNote|6}}所示，EI的计算公式中包含着[math]\ln L^n[/math]项。由于L为一个很大的正数，因而EI的计算结果将会受到L的严重影响。其次，如果计算归一化的EI，即Eff，那么会遇到一个问题是，对于连续变量来说，其状态空间的元素个数为无穷多个，如果直接使用，势必会引入无穷大量。一种解决办法是将空间的体积视作个数N，因此应该除以归一化变量为：[math]n \ln L[/math]，由此可见它是正比于n和ln L的，即：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
Eff=\frac{EI}{\ln L^n}\approx 1-\frac{m\ln\left(2\pi e\right)}{2n \ln L}+\frac{1}{n\ln L}\int_{[-\frac{L}{2},\frac{L}{2}]^n}\frac{1}{L^n}\cdot \ln\left|\det\left(\frac{\partial_\mathbf{x} f(\mathbf{x})}{\Sigma^{1/2}}\right)\right| d\mathbf{x},&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
然而，在这个式子中，仍然包含着L项，因而也会对Eff造成很大的影响。并且，当我们比较微观（n维）和宏观（m维，且m&amp;lt;n）两个维度的Eff时，即计算归一化的因果涌现的时候，L并不能消掉。&lt;br /&gt;
&lt;br /&gt;
看来，连续变量系统的归一化问题并不能简单平移离散变量的结果。&lt;br /&gt;
&lt;br /&gt;
在[[神经信息压缩器]]（Neural information squeezer, NIS）的框架被提出时&amp;lt;ref name=zhang_nis /&amp;gt;，作者们发明了另一种对连续变量的有效信息进行归一化方式，即用状态空间维数来归一化EI，从而解决连续状态变量上的EI比较问题，这一指标被称为'''维度求平均的有效信息'''（Dimension Averaged Effective Information，简称dEI）。其描述为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{J}\equiv\frac{EI}{n}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这里，[math]n[/math]为状态空间的维度。可以证明，在离散的状态空间中，'''维度平均的EI'''和'''有效性'''指标实际上是等价的。关于连续变量上的EI，我们将在下文进一步详述。&lt;br /&gt;
&lt;br /&gt;
对于n维迭代动力系统来说，首先，[math]\mathbf{y}[/math]和[math]\mathbf{x}[/math]是同一维度的变量，因此[math]m=n[/math]，因而：将公式{{EquationNote|6}}代入维度平均EI，得到：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{J}=\frac{EI}{n}\approx \ln L - \frac{1}{2}\ln (2\pi e)+\frac{1}{n}\int_{[-\frac{L}{2},\frac{L}{2}]^n}\frac{1}{L^n}\cdot \ln\left|\det\left(\frac{\partial_\mathbf{x} f(\mathbf{x})}{\Sigma^{1/2}}\right)\right| d\mathbf{x}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
虽然L仍然没有消失，但是当我们计算维度平均的因果涌现的时候，即假设我们可以将n维的状态变量[math]\mathbf{x}_t[/math]投影到一个N维的宏观态变量[math]\mathbf{X}_t[/math]，以及相对应的宏观动力学(F)，和噪声的协方差[math]\Sigma'[/math]则宏观动力学的维度平均EI与微观动力学的维度平均EI之差为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\Delta \mathcal{J}\equiv \mathcal{J_F}-\mathcal{J_f}=\frac{EI_F}{N}-\frac{EI_f}{n}\approx \frac{1}{n}\int_{[-\frac{L}{2},\frac{L}{2}]^n}\frac{1}{L^n}\cdot \ln\left|\det\left(\frac{\partial_\mathbf{x} f(\mathbf{x})}{\Sigma^{1/2}}\right)\right| d\mathbf{x}-\frac{1}{N}\int_{-[\frac{L}{2},\frac{L}{2}]^N}\frac{1}{L^N}\cdot \ln \left|\det\left(\frac{\partial_\mathbf{X} F(\mathbf{X})}{\Sigma'^{1/2}}\right)\right| dX&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
注意，上式中的积分可以写成均匀分布下的期望，即[math]\int_{[-\frac{L}{2},\frac{L}{2}]}\frac{1}{L^n}\cdot=\mathbb{E}_{\mathbf{x}\sim \mathcal{U}[-\frac{L}{2},\frac{L}{2}]^n}\cdot[/math]，继而上式化为：&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\Delta \mathcal{J}\approx \frac{1}{n}\mathbb{E}_{\mathbf{x}\sim\mathcal{U}[-\frac{L}{2},\frac{L}{2}]^n}\ln\left|\det\left(\frac{\partial_\mathbf{x} f(\mathbf{x})}{\Sigma^{1/2}}\right)\right|-\frac{1}{N}\mathbb{E}_{X\sim\mathcal{U}[-\frac{L}{2},\frac{L}{2}]^N}\ln \left|\det\left(\frac{\partial_\mathbf{X} F(\mathbf{X})}{\Sigma'^{1/2}}\right)\right|&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这里[math]\mathcal{U}([-\frac{L}{2},\frac{L}{2}]^n)[/math]表示立方体[math][-\frac{L}{2},\frac{L}{2}]^n[/math]上的均匀分布。由此可见，尽管在期望中仍然隐含地包含L，但该式中所有显含L的项就都被消失了。在实际数值计算的时候，期望的计算可以表现为在[math][-\frac{L}{2},\frac{L}{2}]^n[/math]上多个采样取平均，因而也是与L的大小无关的。这就展示出来引入维度平均EI的一定的合理性。&lt;br /&gt;
&lt;br /&gt;
==随机迭代系统==&lt;br /&gt;
&lt;br /&gt;
我们可以把上述结论，推广到线性迭代动力系统中，也就是对于形如&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
x_{t+1}=Ax_t+\varepsilon_t,&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
的迭代系统，其中，[math]A\in\mathcal{R}^{n\times n}[/math]是尺度为n*n的满秩的方阵，代表线性迭代系统中的动力学系数, [math]\varepsilon_t\sim\mathcal{N}(0,\Sigma)[/math]为n维的高斯噪声，满足0均值，协方差为[math]\Sigma[/math]的正态分布，其中，协方差矩阵[math]\Sigma[/math]也是满秩的。&lt;br /&gt;
&lt;br /&gt;
可以看出这一迭代系统可以看做是公式{{EquationNote|5}}的特例，其中[math]y[/math]对应这里的[math]x_{t+1}[/math]，[math]f(x_t)[/math]即是[math]A x_t[/math]。&lt;br /&gt;
&lt;br /&gt;
为定义EI，设干预空间大小为&amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt;，对于单步的映射我们可以得到维度平均有效信息&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{J}(A,\Sigma)\equiv \frac{EI(A,\Sigma)}{n}=\frac{1}{n}\ln\displaystyle\frac{|\det(A)|L^n}{(2\pi e)^\frac{n}{2}\displaystyle \det(\Sigma)^\frac{1}{2}}=\ln\displaystyle\frac{|\det(A)|^\frac{1}{n}L}{(2\pi e)^\frac{1}{2}\displaystyle \det(\Sigma)^\frac{1}{2n}}.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
随机迭代系统的有效信息可以分解确定性和简并性为两项，&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{J}=\mathcal{J}_1-\mathcal{J}_2&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中确定性&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{J}_1\equiv-\left&amp;lt;H(p(x_{t+1}|x_t))\right&amp;gt;=-\ln\left[(2\pi e)^\frac{n}{2}\det(\Sigma)^\frac{1}{2}\right]&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
描述系统前一时刻状态已知的情况下，后一时刻的随机性，确定性越强，随机性越小，越容易对系统未来趋势进行预测；&lt;br /&gt;
&lt;br /&gt;
简并性:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\mathcal{J}_2\equiv-H(\tilde{x}_{t+1}))=-\ln\left(|\det(A)|L^n\right)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
描述后一时刻已知的情况下，对前一时刻的可追溯性，简并性越弱，越容易推断系统以往的演化路径。其中，[math]\tilde{x}_{t+1}[/math]是保持因果机制不变，经过干预以后得到的新的[math]x_{t+1}[/math]变量。&lt;br /&gt;
&lt;br /&gt;
确定性越强，简并性越弱，有效信息则会越大，因果效应越强。&lt;br /&gt;
&lt;br /&gt;
宏观有效信息与微观有效信息做差之后就可以得到随即迭代系统的因果涌现为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\Delta\mathcal{J}=\ln\frac{|\det(WAW^{\dagger})|^{1/N}}{|\det(A)|^{1/n}}-\ln\frac{|\det(W\Sigma W^T)|^{\frac{1}{2N}}}{|\det(\Sigma)|^{\frac{1}{2n}}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，[math]W[/math]为粗粒化矩阵，它的阶数为n*m，m为宏观状态空间的维度，它的作用是把任意的微观态[math]x_t[/math]映射为宏观态[math]y_t[/math]。[math]W^{\dagger}[/math]为W的伪逆运算。式中第一项是由确定性引发的涌现，简称'''确定性涌现'''(Determinism Emergence)，第二项为简并性引发的涌现，简称'''简并性涌现'''。更详细的内容参看[[随机迭代系统的因果涌现]]。&lt;br /&gt;
&lt;br /&gt;
==前馈神经网络==&lt;br /&gt;
针对复杂系统自动建模任务，我们往往使用神经网络来建模系统动力学。具体的，对于前馈神经网络来说，[[张江]]等人推导出了前馈神经网络有效信息的计算公式&amp;lt;ref name=zhang_nis /&amp;gt;，其中神经网络的输入是&amp;lt;math&amp;gt;x(x_1,...,x_n)&amp;lt;/math&amp;gt;，输出是&amp;lt;math&amp;gt;y(y_1,...,y_n)&amp;lt;/math&amp;gt;，并且满足&amp;lt;math&amp;gt;y=f(x)&amp;lt;/math&amp;gt;，&amp;lt;math&amp;gt;f&amp;lt;/math&amp;gt;是由神经网络实现的确定性映射。然而，根据公式{{EquationNote|5}}，映射中必须包含噪声才能够体现不确定性。&lt;br /&gt;
&lt;br /&gt;
因而，在神经网络中，我们假设神经网络从输入到输出的计算也是不确定性的，即也符合公式{{EquationNote|5}}：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
y=f(x)+\xi,&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这里，[math]\xi\sim \mathcal{N}(0,\Sigma)[/math]为一高斯噪声，且[math]\Sigma=\mathrm{diag}(\sigma_1,\sigma_2,\cdots,\sigma_n)[/math]，这里[math]\sigma_i[/math]为第i个维度的最小平方误差（Mean Square Error，简称MSE误差）。也就是说，我们假设从x到y的神经网络映射实际上满足一个均值为[math]f(x)[/math]，协方差为[math]\Sigma[/math]的条件高斯分布，即：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
Pr(y|x)\sim \mathcal{N}(f(x),\Sigma)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
由此，套用高维映射一般情况下的结论，我们可以给出神经网络有效信息的一般计算公式：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\begin{gathered}EI(f)=I(do(x\sim \mathcal{U}([-\frac{L}{2},\frac{L}{2}]^n));y)\approx-\frac{n+n\ln(2\pi)+\sum_{i=1}^n\ln\sigma_i^2}2+n\ln(2L)+\mathbb{E}_{x\sim \mathcal{U}([-\frac{L}{2},\frac{L}{2}]^n)}(\ln|\det(\partial_{x}f(x)))|)\end{gathered} &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中&amp;lt;math&amp;gt;\mathcal{U}\left(\left[-L/2, L/2\right]^n\right) &amp;lt;/math&amp;gt;表示范围在&amp;lt;math&amp;gt;\left[-L/2 ,L/2\right]^n&amp;lt;/math&amp;gt;上的&amp;lt;math&amp;gt;n &amp;lt;/math&amp;gt;维均匀分布，&amp;lt;math&amp;gt;\det &amp;lt;/math&amp;gt;表示函数&amp;lt;math&amp;gt;f &amp;lt;/math&amp;gt;的雅可比行列式。维度平均EI为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{gathered}&lt;br /&gt;
\mathcal{J}\equiv \frac{EI(f)}{n}\approx -\frac{\ln(2\pi e)}{2}-\frac{\sum_{i=1}^n\ln\sigma_i}{n}+\ln(2L)+\frac{1}{n}\cdot\mathbb{E}_{x\sim \mathcal{U}([-\frac{L}{2},\frac{L}{2}]^n)}(\ln|\det(\partial_{x}f(x)))|)&lt;br /&gt;
\end{gathered} &lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
如果设微观的动力学可以用神经网络f来拟合，宏观动力学则可以用F来拟合，则因果涌现可以由下式计算：&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{gathered}&lt;br /&gt;
\mathcal{\Delta J}\equiv \frac{EI(F)}{m}-\frac{EI(f)}{n}\approx \frac{\sum_{i=1}^n\ln\sigma_i}{n}-\frac{\sum_{i=1}^m\ln\sigma'_i}{m}+\frac{1}{m}\cdot\mathbb{E}_{X\sim \mathcal{U}([-\frac{L}{2},\frac{L}{2}]^n)}(\ln|\det(\partial_{X}F(X)))|)-\frac{1}{n}\cdot\mathbb{E}_{x\sim \mathcal{U}([-\frac{L}{2},\frac{L}{2}]^m)}(\ln|\det(\partial_{x}f(x)))|)&lt;br /&gt;
\end{gathered} &lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，[math]m[/math]为宏观态维度，[math]\sigma'_i[/math]为第i个宏观维度的平均平方误差（MSE），这一误差可以通过反向传播算法计算的宏观态[math]X_i[/math]的梯度计算得出。&lt;br /&gt;
&lt;br /&gt;
注意，上述结论都要求：&amp;lt;math&amp;gt;\partial_{x}f(x)&amp;lt;/math&amp;gt;不为0，而对于所有的&amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;，&amp;lt;math&amp;gt;\partial_{x}f(x)&amp;lt;/math&amp;gt;处处为0时，我们得到： &lt;br /&gt;
&amp;lt;math&amp;gt;\begin{gathered}EI(f)\approx\end{gathered}0&amp;lt;/math&amp;gt;。对于更一般的情形，则需要考虑矩阵不满秩的情况。&lt;br /&gt;
&lt;br /&gt;
== 连续系统EI的源代码 ==&lt;br /&gt;
可逆神经网络下的数值解以及随机迭代系统的解析解都可以给出计算方法。&lt;br /&gt;
&lt;br /&gt;
对于一般的神经网络，它可看做是从输入X到输出Y的一种不确定的函数映射：&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
y=f(x)+\xi&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中x的维度为input_size，y的维度为output_size，[math]\xi[/math]为一高斯分布，其协方差矩阵为：[math]\Sigma=\mathrm{diag}(\sigma_1,\sigma_2,\cdots,\sigma_n)[/math]，这里，[math]\sigma_i[/math]为该神经网络第i个维度的均方误差（MSE）。该矩阵的逆记为sigmas_matrix。映射函数f记为func，则可以用下面的代码计算该神经网络的EI。该算法的基本思想是利用蒙特卡洛方法计算公式{{EquationNote|6}}的积分。&lt;br /&gt;
&lt;br /&gt;
* 输入变量：&lt;br /&gt;
神经网络的输入维度（input_size）输出维数（output_size）、输出变量视为高斯分布后的协方差矩阵的逆（sigmas_matrix）、映射函数（func）、干预区间大小（L的取值）、以及蒙特卡罗积分的样本数（num_samples）。&lt;br /&gt;
&lt;br /&gt;
* 输出变量：&lt;br /&gt;
&lt;br /&gt;
维度平均EI（d_EI）、EI系数（eff）、EI值（EI）、确定性（term1）、简并性（term2）和[math]\ln L[/math]（-np.log(rho)）。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def approx_ei(input_size, output_size, sigmas_matrix, func, num_samples, L, easy=True, device=None):&lt;br /&gt;
&lt;br /&gt;
    rho=1/(2*L)**input_size #the density of X even distribution&lt;br /&gt;
    &lt;br /&gt;
    #the first term of EI, the entropy of a gaussian distribution&lt;br /&gt;
    #sigmas_matrix_np=sigmas_matrix.cpu() if use_cuda else sigmas_matrix&lt;br /&gt;
    dett=1.0&lt;br /&gt;
    if easy:&lt;br /&gt;
        dd = torch.diag(sigmas_matrix)&lt;br /&gt;
        dett = torch.log(dd).sum()&lt;br /&gt;
    else:&lt;br /&gt;
        #dett = np.log(np.linalg.det(sigmas_matrix_np))&lt;br /&gt;
        dett = torch.log(torch.linalg.det(sigmas_matrix))&lt;br /&gt;
    term1 = - (output_size + output_size * np.log(2*np.pi) + dett)/2 &lt;br /&gt;
    &lt;br /&gt;
    #sampling x on the space [-L,L]^n, n is the number of samples&lt;br /&gt;
    xx=L*2*(torch.rand(num_samples, input_size, device=sigmas_matrix.device)-1/2)&lt;br /&gt;
    &lt;br /&gt;
    dets = 0&lt;br /&gt;
    logdets = 0&lt;br /&gt;
    &lt;br /&gt;
    #iterate all samples of x&lt;br /&gt;
    for i in range(xx.size()[0]):&lt;br /&gt;
        jac=jacobian(func, xx[i,:]) #use pytorch's jacobian function to obtain jacobian matrix&lt;br /&gt;
        det=torch.abs(torch.det(jac)) #calculate the determinate of the jacobian matrix&lt;br /&gt;
        dets += det.item()&lt;br /&gt;
        if det!=0:&lt;br /&gt;
            logdets+=torch.log(det).item() #log jacobian&lt;br /&gt;
        else:&lt;br /&gt;
            #if det==0 then, it becomes a gaussian integration&lt;br /&gt;
            logdet = -(output_size+output_size*np.log(2*np.pi)+dett)&lt;br /&gt;
            logdets+=logdet.item()&lt;br /&gt;
    &lt;br /&gt;
    int_jacobian = logdets / xx.size()[0] #take average of log jacobian&lt;br /&gt;
    &lt;br /&gt;
    term2 = -np.log(rho) + int_jacobian # derive the 2nd term&lt;br /&gt;
    &lt;br /&gt;
    if dets==0:&lt;br /&gt;
        term2 = - term1&lt;br /&gt;
    EI = max(term1 + term2, 0)&lt;br /&gt;
    if torch.is_tensor(EI):&lt;br /&gt;
        EI = EI.item()&lt;br /&gt;
    eff = -EI / np.log(rho)&lt;br /&gt;
    d_EI = EI/output_size&lt;br /&gt;
    &lt;br /&gt;
    return d_EI, eff, EI, term1, term2, -np.log(rho)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;对于随机迭代系统，由于是解析解，相对会简单许多。既可以直接计算，也可以作为上述神经网络计算结果的对照。输入的变量分别为参数矩阵和协方差矩阵。&amp;lt;syntaxhighlight lang=&amp;quot;python3&amp;quot;&amp;gt;&lt;br /&gt;
def EI_calculate_SIS(A,Sigma):&lt;br /&gt;
    n=A.shape[0]&lt;br /&gt;
    return math.log(abs(sl.det(A))/(np.sqrt(sl.det(Sigma))*math.pow(2*np.pi*np.e,n/2)))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=EI与其它相关主题=&lt;br /&gt;
==EI与整合信息论==&lt;br /&gt;
&lt;br /&gt;
有效信息这一指标最早出现在文献Tononi等人(2003)的文章中&amp;lt;ref name=tononi_2003 /&amp;gt;，在这篇文章中，作者们定义了[[整合信息能力]]这一指标，并建立了[[整合信息理论]]，这一理论后来演化成意识理论的一个重要分支。而[[整合信息能力]]这一指标的定义是以有效信息为基础的。&lt;br /&gt;
&lt;br /&gt;
===EI与Φ===&lt;br /&gt;
整合信息能力（或者叫整合程度）&amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;，可以被定义为系统一个子集两个互补部分之间可交换的有效信息最小值。假如系统是X，S是X的一个子集，它被划分为两个部分，分别是A和B。A、B之间以及它们跟X中其余的部分都存在着相互作用和因果关系。&lt;br /&gt;
&lt;br /&gt;
[[文件:OriginalEI.png|350x350px|整合信息论中的划分|替代=|缩略图]]&lt;br /&gt;
&lt;br /&gt;
这时，我们可以度量这些因果关系的强弱。首先，我们来计算从A到B的有效信息。即干预A，使其服从最大熵分布，然后度量A和B之间的互信息：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
EI(A\rightarrow B) = I(A^{H^{max}}: B)  &lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这里&amp;lt;math&amp;gt;A^{H^{max}}&amp;lt;/math&amp;gt;表示A上的最大熵分布，也就是前文中的均匀分布。该式子中没有明确表示，但实际上暗含了一种从A到B的因果机制，即[math]Pr(B|A)[/math]。它在干预中始终保持不变。这样，如果A的不同状态会导致B有很不一样的变化，这个EI值会很高；反之，如果无论A怎么变，B都受到很少的影响，那么EI就会很低。显然，这种度量是有方向的，A对B的EI和B对A的EI可以很不同。我们可以把这两个方向的EI加在一起，得到S在某一个划分下的EI大小。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
EI(A\leftrightarrow B) = EI(A\rightarrow B) + EI(B\rightarrow A)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
遍历各种划分，如果存在某一个划分S，使得EI为0，说明这个S可以被看做是两个因果独立的部分，所以整合程度也应该是0。从这种特殊例子中我们可以看出，我们应该关注所有划分中有效信息最小的那个。当然，不同划分会导致A和B的状态空间就不一样，所以应该做一个归一化处理，即除以A和B最大熵值中较小的那一个。于是，我们可以有一个最小信息划分（minimum information bipartition，MIB）。整合程度&amp;lt;math&amp;gt;\Phi&amp;lt;/math&amp;gt;定义如下：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\Phi(S) = EI(MIB(S)) &lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这就是[[整合信息能力]]与有效信息的关系。&lt;br /&gt;
&lt;br /&gt;
===区别===&lt;br /&gt;
&lt;br /&gt;
值得注意的是，与马尔科夫链的EI计算不同，这里的EI更多衡量的是系统中两个部分彼此之间的因果联系。而马尔科夫链的EI衡量的是同一个系统在不同两个时刻之间的因果关联强度。&lt;br /&gt;
&lt;br /&gt;
==EI与其它因果度量指标==&lt;br /&gt;
&lt;br /&gt;
EI是一种度量因果机制中因果变量的因果联系强弱的一种指标。而在EI提出之前，已有多个因果度量指标被提出了。那么，EI和这些因果度量指标之间存在着什么样的联系呢？事实上，正如Comolatti与Hoel在2022年的文章中所指出的，包括EI在内的这些因果度量指标都可以统一表达为两个基本要素的组合&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Comolatti, R., &amp;amp; Hoel, E. (2022). Causal emergence is widespread across measures of causation. ''arXiv preprint arXiv:2202.01854''.&amp;lt;/ref&amp;gt;。这两个基本要素被称为“因果元语”（Causal Primatives），分别代表了因果关系中的'''充分性'''和'''必要性'''。&lt;br /&gt;
&lt;br /&gt;
=== 因果元语的定义 ===&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
&lt;br /&gt;
\text{充分性：}~~~&amp;amp;suff(e,c) = P(e|c) \\&lt;br /&gt;
&lt;br /&gt;
\text{必要性：}~~~&amp;amp;nec(e,c) = 1 - P(e|C \backslash c)&lt;br /&gt;
&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
其中&amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt;和&amp;lt;math&amp;gt;e&amp;lt;/math&amp;gt;分别表示因事件（cause）和果事件（effect），&amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt;表示因事件的全部集合，&amp;lt;math&amp;gt;C \backslash c&amp;lt;/math&amp;gt;则为因事件&amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt;的补集，即&amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt;之外的事件，也可记作&amp;lt;math&amp;gt;\lnot c&amp;lt;/math&amp;gt;。'''充分性'''表明当因发生时，果发生的概率，当&amp;lt;math&amp;gt;suff = 1&amp;lt;/math&amp;gt;时，因发生确定导致果发生；而'''必要性'''则衡量当因不发生时，果也不发生的概率；当&amp;lt;math&amp;gt;nec = 1&amp;lt;/math&amp;gt;时，因不发生则果一定不发生。&lt;br /&gt;
&lt;br /&gt;
有些因果指标中的必要性表现为以下的变型形式，在此也给出定义：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
\text{必要性}'&lt;br /&gt;
 \text{：}~~~nec'(e,c) = 1 - P(e|C)&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
根据定义，当&amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt;为极小概率事件时，&amp;lt;math&amp;gt;nec(e,c) \approx nec^\dagger(e,c)&amp;lt;/math&amp;gt;。当&amp;lt;math&amp;gt;C&amp;lt;/math&amp;gt;为连续状态空间时，可认为两者等价。&lt;br /&gt;
&lt;br /&gt;
注意：&amp;lt;math&amp;gt;nec'&amp;lt;/math&amp;gt;的定义与文献&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;中定义的&amp;lt;math&amp;gt;nec^\dagger = P(e|C\backslash c)&amp;lt;/math&amp;gt;不同，两者关系为&amp;lt;math&amp;gt;net' = 1 - nec^\dagger&amp;lt;/math&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
=== 因果元语与确定性和简并性 ===&lt;br /&gt;
如前所述，EI可被分解为确定性与简并性两项，这两项分别对应充分性和必要性的因果元语表达：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{aligned}&lt;br /&gt;
determinism = 1 - \frac{\log_2{\frac{1}{suff}}}{\log_2{N}} \\&lt;br /&gt;
degeneracy = 1 - \frac{\log_2{\frac{1}{1 - nec'}}}{\log_2{N}}&lt;br /&gt;
\end{aligned}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
可以看到，充分性和确定性之间，以及必要性和简并性之间存在单调映射关系。充分性越高，确定性也越高；必要性越高，简并性则越小。&lt;br /&gt;
&lt;br /&gt;
=== 因果度量指标的因果元语表示 ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+&lt;br /&gt;
因果度量指标的因果元语表现形式&lt;br /&gt;
!因果指标&lt;br /&gt;
!概率定义&lt;br /&gt;
!因果元语定义&lt;br /&gt;
!参考文献&lt;br /&gt;
|-&lt;br /&gt;
|有效信息EI&lt;br /&gt;
|&amp;lt;math&amp;gt;&lt;br /&gt;
\log_2{\frac{P(e|c)}{P(e|C)}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;&lt;br /&gt;
\log_2\frac{suff}{1 - nec'}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;ref name=&amp;quot;hoel_2013&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Galton度量&lt;br /&gt;
|&amp;lt;math&amp;gt;&lt;br /&gt;
P(c)P(C\backslash c)(P(e|c) - P(e|C\backslash c))&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;&lt;br /&gt;
P(c)P(C\backslash c)(suff + nec - 1)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;ref&amp;gt;Fitelson, B., &amp;amp; Hitchcock, C. (2011). ''Probabilistic measures of causal strength'' (pp. 600-627). na.&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Suppes度量&lt;br /&gt;
|&amp;lt;math&amp;gt;&lt;br /&gt;
P(e|c) - P(e|C)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;&lt;br /&gt;
suff + nec' - 1&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;ref&amp;gt;Suppes, P. (1973). A probabilistic theory of causality. ''British Journal for the Philosophy of Science'', ''24''(4).&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Eells度量(等同于Judea Pearl的充要概率PNS)&lt;br /&gt;
|&amp;lt;math&amp;gt;&lt;br /&gt;
P(e|c) - P(e|C\backslash c)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;&lt;br /&gt;
suff + nec - 1&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;ref name=&amp;quot;pearl_causality&amp;quot; /&amp;gt;&amp;lt;ref&amp;gt;Eells, E. (1991). ''Probabilistic causality'' (Vol. 1). Cambridge University Press.&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Cheng度量(等同于Judea Pearl的充分概率PS)&lt;br /&gt;
|&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{P(e|c) - P(e|C\backslash c)}{1 - P(e|C\backslash c)}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{suff + nec - 1}{nec}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;ref name=&amp;quot;pearl_causality&amp;quot; /&amp;gt;&amp;lt;ref&amp;gt;Cheng, P. W., &amp;amp; Novick, L. R. (1991). Causes versus enabling conditions. ''Cognition'', ''40''(1-2), 83-120.&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|Lewis度量(等同于Judea Pearl的必要概率PN)&lt;br /&gt;
|&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{P(e|c) - P(e|C\backslash c)}{P(e|c)}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{suff + nec - 1}{suff}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
|&amp;lt;ref name=&amp;quot;pearl_causality&amp;quot; /&amp;gt;&amp;lt;ref&amp;gt;Lewis, D. (1973). Causation. ''The journal of philosophy'', ''70''(17), 556-567.&amp;lt;/ref&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==EI与动力学可逆性==&lt;br /&gt;
正如示例{{EquationNote|example}}中的马尔科夫链所示，当概率转移矩阵呈现为一种[[排列置换矩阵]]（Permutation matrix）的时候，EI会更大。&lt;br /&gt;
&lt;br /&gt;
可以证明，[[排列置换矩阵]]是唯一一种能同时满足如下两个条件的矩阵：&lt;br /&gt;
&lt;br /&gt;
1、矩阵是可逆的；&lt;br /&gt;
2、矩阵满足马尔科夫链的归一化条件，也就是对于任意的[math]i\in[1,N][/math]来说，[math]|P_i|_1=1[/math]&lt;br /&gt;
&lt;br /&gt;
我们将这一性质称为[[动力学可逆性]]。因此，从某种程度上说，EI衡量的是马尔科夫链的一种[[动力学可逆性]]。&lt;br /&gt;
&lt;br /&gt;
需要注意的是，这里所说的马尔科夫链的[[动力学可逆性]]与通常意义下的[[马尔科夫链的可逆性]]是不等同的。前者的可逆性体现为马尔科夫概率转移矩阵的可逆性，也就是它针对状态空间中的每一个确定性状态的运算都是可逆的，所以也称其为动力学可逆的。但是，文献中通常意义下的可逆的马尔科夫链并不要求转移矩阵是可逆的，而是要以稳态分布为时间反演对称轴，使得在动力学P作用构成的演化下的正向时间形成的状态分布序列和逆向状态分布序列完全相同。&lt;br /&gt;
&lt;br /&gt;
由于[[排列置换矩阵]]过于特殊，我们需要能够衡量一般的马尔科夫概率转移矩阵与排列置换矩阵的靠近程度，以度量其[[近似动力学可逆性]]。在文献&amp;lt;ref name=zhang_reversibility/&amp;gt;中，作者们提出了一种用矩阵的类[[Schatten范数]]来度量一个马尔科夫概率转移矩阵的[[近似动力学可逆性]]的方法，定义为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\Gamma_{\alpha}\equiv \sum_{i=1}^N\sigma_i^{\alpha}=|P|_{\alpha}^{\alpha}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
这里，[math]|P|_{\alpha}[/math]为矩阵P的[[Schatten范数]]，[math]\Gamma_{\alpha}[/math]为[[近似动力学可逆性]]指标，[math]\sigma_i[/math]为概率转移矩阵P的奇异值，并且按照从大到小的顺序排列，[math]\alpha\in(0,2)[/math]为一个指定的参数，它起到让[math]\Gamma_{\alpha}[/math]能够更多地反映'''确定性'''还是'''简并性'''这样一种权重或倾向性。事实上，不难看出，如果让[math]\alpha\rightarrow 0[/math]，则[math]\Gamma_{\alpha}[/math]就退化成了矩阵P的秩，即：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
rank(P)=\sum_{i=1}^N\sigma_i^{0}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
而[[矩阵的秩]]衡量的是矩阵P非退化（也就是可逆）的程度，与Degeneracy有着类似的效果。&lt;br /&gt;
&lt;br /&gt;
而当[math]\alpha\rightarrow 2[/math]，则[math]\Gamma_{\alpha}[/math]就退化成了矩阵P的[[Frobinius范数]]的平方，即：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
||P||_F^2=\sum_{i=1}^N\sigma_i^{2}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
这一指标衡量的是矩阵P的确定性的程度，这是因为只有当矩阵P中的所有行向量都是[[独热向量]]（one-hot）的时候，[math]||P||_F[/math]才会最大，因此它与Determinism有着类似的衡量效果。&lt;br /&gt;
&lt;br /&gt;
所以，当[math]\alpha\in(0,2)[/math]连续变化的时候，[math]\Gamma_{\alpha}[/math]就可以在简并性与确定性二者之间切换了。通常情况下，我们取[math]\alpha=1[/math]，这可以让[math]\Gamma_{\alpha}[/math]能够在确定性与简并性之间达到一种平衡。&lt;br /&gt;
&lt;br /&gt;
在文献&amp;lt;ref name=zhang_reversibility/&amp;gt;中，作者们证明了EI与动力学可逆性[math]\Gamma_{\alpha}[/math]之间存在着一种近似的关系：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
EI\sim \log\Gamma_{\alpha}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
关于[[马尔科夫链的近似动力学可逆性]]的进一步讨论和说明，请参考词条：[[近似动力学可逆性]]，以及论文：&amp;lt;ref name=zhang_reversibility/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==EI与JS散度==&lt;br /&gt;
根据{{EquationNote|2}}的表达式，我们知道，EI实际上是一种广义的[[JS散度]]，即[[Jensen-Shannon divergence]]。&lt;br /&gt;
&lt;br /&gt;
所谓的[[JS散度]]是一种度量两个定义在同一个支撑集上的概率分布之间差异的指标。设两个定义在支撑集[math]\mathcal{X}[/math]上的概率分布[math]P[/math]和[math]Q[/math]，它们之间的JS散度定义为：&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
JSD(P||Q)\equiv \frac{1}{2}D_{KL}(P||M)+\frac{1}{2}D_{KL}(Q||M)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
其中，[math]M=\frac{P+Q}{2}=\frac{1}{2}\sum_{x\in\mathcal{X}}\left[P(x)+Q(x)\right][/math]为P和Q的平均分布，[math]D_{KL}[/math]为[[KL散度]]。&lt;br /&gt;
&lt;br /&gt;
与[[KL散度]]相比，[[JS散度]]是一种对称的度量，即[math]JSD(P||Q)=JSD(Q||P)[/math]，而KL散度是非对称的。&lt;br /&gt;
&lt;br /&gt;
可以看出，该式与{{EquationNote|2}}式的相似之处。不难验证，当P和Q都是2维向量，且构成了一个马尔科夫转移矩阵K的时候，K的EI就是P、Q的JS散度。&lt;br /&gt;
&lt;br /&gt;
进一步，在文献&amp;lt;ref name=GJS_divergence&amp;gt;{{cite journal|author=Jianhua Lin|title=Divergence Measures Based on the Shannon Entropy|journal=IEEE TRANSACTIONS ON INFORMATION THEORY|volume=37|issue=1|page=145-151|year=1991}}&amp;lt;/ref&amp;gt;中，作者提出了[[广义的JS散度]]为：&lt;br /&gt;
&lt;br /&gt;
{{NumBlk|:|&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
JSD_{\pi}(P_1,P_2,\cdots,P_n)\equiv H(\sum_{i=1}^n\pi_iP_i)-\sum_{i=1}^n\pi_i H(P_i)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
|{{EquationRef|GJSD}}}}&lt;br /&gt;
&lt;br /&gt;
其中，[math]P_i,i\in[1,m][/math]为一组概率分布向量，m为它们的维度，而[math]\pi=(\pi_1,\pi_2,\cdots,\pi_n)[/math]为一组权重，并满足：[math]\pi_i\in[0,1],\forall i\in[1,n][/math]和[math]\sum_{i=1}^n\pi_i=1[/math]。&lt;br /&gt;
&lt;br /&gt;
通过与公式{{EquationNote|tow_terms}}比较，不难发现，当[math]\pi_i=\frac{1}{n}[/math]，则[math]JSD_{\pi}[/math]就退化为EI了。&lt;br /&gt;
&lt;br /&gt;
在文献&amp;lt;ref name=GJSD&amp;gt;{{cite conference|author1=Erik Englesson|author2=Hossein Azizpour|title=Generalized Jensen-Shannon Divergence Loss for Learning with Noisy Labels|conference=35th Conference on Neural Information Processing Systems (NeurIPS 2021)|year=2021}}&amp;lt;/ref&amp;gt;中，作者们讨论了广义JS散度在分类多样性度量方面的应用。因此，EI也可以理解为是对行向量多样化程度的一种度量。&lt;br /&gt;
&lt;br /&gt;
进一步，如果我们将[[Shannon熵]][math]H(P_i)[/math]看做一个函数，则不难验证，H是一个[[凹函数]]，那么公式{{EquationNote|GJSD}}实际上是H函数的[[Jensen差距]]，即[[Jensen Gap]]。关于这一差距的数学性质，包括它的上下界估计，有大量的论文进行讨论&amp;lt;ref name=&amp;quot;Gao et al.&amp;quot;&amp;gt;{{cite journal | last1 = Gao | first1 = Xiang | last2 = Sitharam | first2 = Meera | last3 = Roitberg | first3 = Adrian | year = 2019 | title = Bounds on the Jensen Gap, and Implications for Mean-Concentrated Distributions | journal=The Australian Journal of Mathematical Analysis and Applications | arxiv = 1712.05267 | url = https://ajmaa.org/searchroot/files/pdf/v16n2/v16i2p14.pdf | volume = 16 | issue = 2 }}&amp;lt;/ref&amp;gt;。&lt;br /&gt;
&lt;br /&gt;
=参考文献=&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=编者推荐=&lt;br /&gt;
下面是一些链接能够帮助读者更好的了解因果涌现的相关信息： &lt;br /&gt;
&lt;br /&gt;
===因果涌现读书会===&lt;br /&gt;
*[https://campus.swarma.org/course/3110 因果涌现读书会简介]&lt;br /&gt;
[[文件:读书会通过阅读前沿文献，加深我们对因果、涌现等概念的理解；聚焦于寻找因果与涌现、多尺度等概念相结合的研究方向；并探索复杂系统多尺度自动建模的研究方向。.jpg|缩略图|370x370px|读书会通过阅读前沿文献，加深我们对因果、涌现等概念的理解；聚焦于寻找因果与涌现、多尺度等概念相结合的研究方向；并探索复杂系统多尺度自动建模的研究方向。]]分享近期发展起来的一些理论与工具，包括因果涌现理论、机器学习驱动的重整化技术，以及自指动力学正在发展一套跨尺度的分析框架等。&lt;br /&gt;
&lt;br /&gt;
*[https://pattern.swarma.org/study_group/7 因果涌现读书会第一季]&lt;br /&gt;
&lt;br /&gt;
涌现现象无非是复杂系统中诸多现象中最神秘莫测的一个，而Erik Hoel提出的“因果涌现”理论为这种跨层次的奇妙涌现现象提供了一种新的可能解释途径。通过跨层次的粗粒化（Coarse-graining, 或称重整化Renormalization）操作，我们便可以在同一个动力学系统上在不同的尺度得到完全不同的动力学，通过本季读书会梳理，我们希望探讨这一新兴领域的前沿进展，衍生更多新的研究课题。&lt;br /&gt;
&lt;br /&gt;
*[https://pattern.swarma.org/study_group/16 因果涌现读书会第二季]&lt;br /&gt;
&lt;br /&gt;
涌现与因果的结合创造了因果涌现的概念。这是一套利用因果性来定量刻画涌现的理论体系，本季读书会通过阅读前沿文献，加深我们对因果、涌现等概念的理解；聚焦于寻找因果与涌现、多尺度等概念相结合的研究方向；并探索复杂系统多尺度自动建模的研究方向。第二季读书会更加集中在探讨因果科学与因果涌现之间的关系，以及对涌现进行定量刻画，聚焦于寻找因果与涌现、多尺度等概念相结合的研究方向；并探索复杂系统多尺度自动建模的研究方向。&lt;br /&gt;
&lt;br /&gt;
*[https://pattern.swarma.org/study_group/28 因果涌现读书会第三季]&lt;br /&gt;
&lt;br /&gt;
因果涌现第三季的读书会中，将进一步围绕因果涌现的核心研究问题『因果涌现的定义』以及『因果涌现的辨识』来进行深入的学习和讨论，对 Erik Hoel 提出的 Causal Emergence，Causal Geometry 等因果涌现的核心理论进行深入的探讨和剖析，并且详细梳理其中涉及到的方法论，包括从动力学约简、隐空间动力学学习等其他研究领域中学习和借鉴相关的研究思路，最后探讨因果涌现的应用，包括基于生物网络、脑网络或者涌现探测等问题展开扩展，发掘更多的实际应用场景。&lt;br /&gt;
&lt;br /&gt;
*[https://pattern.swarma.org/study_group/35 因果涌现读书会第四季]&lt;br /&gt;
&lt;br /&gt;
为了更好地理解这些信息框架与测度，并将这些前沿技术应用于交叉领域的研究工作中，本次读书会将梳理信息论领域的发展脉络，从信息熵的概念开始，逐步梳理各种信息测度的意义及其间的联系。其中我们将重点关注整合信息论以及信息分解这两个前沿话题，并展开相关应用研究的研读与分享活动。我们希望借此读书会理解并跟踪信息测度领域的前沿进展，对什么是信息，以及信息论领域的前沿工具在涌现、意识、自由意志中的作用、功能、如何应用，有更深入的思考，并交流探索信息测度与复杂系统交叉领域的研究内容。&lt;br /&gt;
&lt;br /&gt;
*[https://pattern.swarma.org/study_group/43 因果涌现读书会第五季]&lt;br /&gt;
&lt;br /&gt;
本季读书会分成两部分，一部分是有关因果涌现理论方面的最新进展，包括信息分解的定量化、动力学可逆性与因果涌现，以及复杂系统的低秩表示理论、本征微观态理论等，第二部分是这些理论在脑科学及其它学科上的应用。事实上，因果涌现理论、复杂系统的低秩表示理论、本征微观态理论这三者之间在根本上具有相通之处：&lt;br /&gt;
&lt;br /&gt;
===文章推荐===&lt;br /&gt;
*Zhang, J.; Liu, K. [https://www.mdpi.com/1099-4300/25/1/26 Neural Information Squeezer for Causal Emergence]. ''Entropy'' 2023, ''25'', 26.&lt;br /&gt;
*Yuan, B.; Zhang, J. et al. [https://www.mdpi.com/1099-4300/26/2/108 Emergence and Causality in Complex Systems: A Survey of Causal Emergence and Related Quantitative Studies]. ''Entropy'' 2024, ''26'', 108.&lt;br /&gt;
&lt;br /&gt;
===路径推荐===&lt;br /&gt;
*张江老师根据因果涌现读书会第一季梳理的关于因果涌现的学习路径：https://pattern.swarma.org/article/153&lt;br /&gt;
*张江老师根据因果涌现前五季读书会整理的因果涌现入门路径：https://pattern.swarma.org/article/296&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
此词条由[[张江]]编写，[[张江]]、[[袁冰]]、[[刘凯威]]、[[杨明哲]]和[[王志鹏]]整理和审校。&lt;br /&gt;
&lt;br /&gt;
'''本词条内容源自wikipedia及公开资料，遵守 CC3.0协议。'''&lt;br /&gt;
&lt;br /&gt;
[[Category:因果涌现]]&lt;br /&gt;
[[Category:信息论]]&lt;br /&gt;
[[Category:因果度量]]&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%A8%A1%E5%9D%97:Footnotes/anchor_id_list/data&amp;diff=35659</id>
		<title>模块:Footnotes/anchor id list/data</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%A8%A1%E5%9D%97:Footnotes/anchor_id_list/data&amp;diff=35659"/>
		<updated>2024-07-04T08:41:46Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：建立内容为“-- copied from Module:Ref info/data - maybe overkill here? -- for this application make lists from the redirect lists and force all template names first character…”的新页面&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;-- copied from Module:Ref info/data - maybe overkill here?&lt;br /&gt;
-- for this application make lists from the redirect lists and force all template names first character uppercase&lt;br /&gt;
&lt;br /&gt;
require('Module:No globals');&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; C S 1 _ T E M P L A T E _ P A T T E R N S &amp;gt;------------------------------------&lt;br /&gt;
&lt;br /&gt;
These are patterns for cs1 templates and their redirects.  These patterns exclude redirects that are vcite-like&lt;br /&gt;
which redirects should be deleted because vcite is not cs1.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local cs1_template_patterns = {													-- lua patterns of the cannonical names and redirects&lt;br /&gt;
	'[Cc]ite ar[Xx]iv',															-- arXiv is the canonical name&lt;br /&gt;
		'[Cc]ite ArXiv',&lt;br /&gt;
&lt;br /&gt;
	'[Cc]ite AV media',															-- canonical&lt;br /&gt;
		'[Cc]ite audio', '[Cc]ite AV', '[Cc]ite AV ?Media', '[Cc]ite av media', &lt;br /&gt;
		'[Cc]ite cd', '[Cc]ite DVD', '[Cc]ite dvd', '[Cc]ite film',&lt;br /&gt;
		'[Cc]ite image', '[Cc]ite media', '[Cc]ite movie',&lt;br /&gt;
		'[Cc]ite music video', '[Cc]ite radio', '[Cc]ite song',&lt;br /&gt;
		'[Cc]ite ?video', '[Cc]ite visual', '[Cc]ite You[Tt]ube',&lt;br /&gt;
		'[Cc]ita vídeo',														-- non-English redirect; TODO: tally separately?&lt;br /&gt;
&lt;br /&gt;
	'[Cc]ite AV media notes',													-- canonical&lt;br /&gt;
		'[Cc]ite album[ %-]notes', '[Cc]ite av media notes',&lt;br /&gt;
		'[Cc]ite DVD[ %-]notes', '[Cc]ite dvd%-notes', '[Cc]ite liner notes',&lt;br /&gt;
		'[Cc]ite music release notes', '[Ll]iner notes',&lt;br /&gt;
&lt;br /&gt;
	'[Cc]ite bio[Rr]xiv',														-- bioRxiv is the canonical form&lt;br /&gt;
	'[Cc]ite [Bb]ook',															-- book is the canonical form&lt;br /&gt;
		'[Bb]ook cite', '[Bb]ook reference', '[Bb]ook reference url',&lt;br /&gt;
		'[Cc] book', '[Cc]it book', '[Cc]ite books', '[Cc]ite chapter',&lt;br /&gt;
		'[Cc]ite ebook', '[Cc]ite manual', '[Cc]ite page',&lt;br /&gt;
		'[Cc]ite publication', '[Cc]ite score',&lt;br /&gt;
		'[Cc]ite work', '[Cc]ite%-?book', &lt;br /&gt;
		'[Bb]okref', '[Cc]itace monografie', '[Cc]itar livro',					-- non-English redirects; TODO: tally separately?&lt;br /&gt;
		'[Cc]iteer boek', '[Oo]uvrage', '[Rr]ef%-llibre', '서적 인용',&lt;br /&gt;
&lt;br /&gt;
	'[Cc]ite citeseerx',														-- canonical&lt;br /&gt;
	'[Cc]ite conference',														-- canonical&lt;br /&gt;
		'[Cc]ita conferenza', '[Cc]ite proceedings', '[Cc]onference reference',	-- cita conferenza is non-English; TODO: tally separately?&lt;br /&gt;
		&lt;br /&gt;
	'[Cc]ite ?encyclopedia',													-- cite encyclopedia is the canonical name&lt;br /&gt;
		'[Cc]ite contribution', '[Cc]ite dic', '[Cc]ite dictionary',&lt;br /&gt;
		'[Cc]ite encyclopaedia', '[Cc]ite encyclopædia', '[Ee]ncyclopedia',&lt;br /&gt;
&lt;br /&gt;
	'[Cc]ite [Ee]pisode',														-- episode is the canonical form&lt;br /&gt;
		'[Cc]ite show',&lt;br /&gt;
&lt;br /&gt;
	'[Cc]ite interview',														-- canonical&lt;br /&gt;
	'[Cc]ite ?journal',															-- cite journal is the canonical form&lt;br /&gt;
		'[Cc] journal', '[Cc]itation journal', '[Cc]ite abstract',&lt;br /&gt;
		'[Cc]ite document', '[Cc]ite Journal', '[Cc]ite journal zh',&lt;br /&gt;
		'[Cc]ite ?paper', '[Vv]cite2 journal',&lt;br /&gt;
		'[Cc]ita pubblicazione', '[Cc]itace periodika', '[Cc]itar jornal',		-- non-English redirects; TODO: tally separately?&lt;br /&gt;
		'[Cc]itar publicació', '[Cc]ytuj pismo', '[Tt]idskriftsref',&lt;br /&gt;
		'Навод из стручног часописа', '저널 인용',&lt;br /&gt;
&lt;br /&gt;
	'[Cc]ite [Mm]agazine',														-- magazine is the canonical form&lt;br /&gt;
		'[Cc]ite mag', '[Cc]ite magazine article', '[Cc]ite newsletter',&lt;br /&gt;
		'[Cc]ite periodical',&lt;br /&gt;
&lt;br /&gt;
	'[Cc]ite mailing ?list',													-- mailing list is the canonical form&lt;br /&gt;
		'[Cc]ite list',&lt;br /&gt;
&lt;br /&gt;
	'[Cc]ite maps?',															-- map is the canonical form&lt;br /&gt;
	'[Cc]ite[ %-]?news',														-- cite news is the canonical form&lt;br /&gt;
		'[Cc] news', '[Cc]it news', '[Cc]itation news', '[Cc]ite article',&lt;br /&gt;
		'[Cc]ite n', '[Cc]ite new', '[Cc]ite newspaper', '[Cc]ite News',&lt;br /&gt;
		'[Cc]ite news%-q', '[Cc]ite news2', '[Cc]itenewsauthor', '[Cc]ute news',&lt;br /&gt;
		'[Cc]itar notícia', '[Hh]aber kaynağı', '[Tt]idningsref', 'استشهاد بخبر',	-- non-English redirects; TODO: tally separately?&lt;br /&gt;
		'뉴스 인용',&lt;br /&gt;
&lt;br /&gt;
	'[Cc]ite newsgroup',														-- canonical&lt;br /&gt;
		'[Cc]ite usenet',&lt;br /&gt;
		&lt;br /&gt;
	'[Cc]ite podcast',															-- canonical&lt;br /&gt;
	'[Cc]ite [Pp]ress release',													-- press release is the canonical form&lt;br /&gt;
		'[Cc]ite media release', '[Cc]ite news release', '[Cc]ite pr',&lt;br /&gt;
		'[Cc]ite press', '[Cc]ite press release\.', '[Cc]ite press[%-]?release',&lt;br /&gt;
&lt;br /&gt;
	'[Cc]ite report',															-- canonical&lt;br /&gt;
	'[Cc]ite serial',															-- canonical&lt;br /&gt;
	'[Cc]ite sign',																-- canonical&lt;br /&gt;
		'[Cc]ite plaque',&lt;br /&gt;
&lt;br /&gt;
	'[Cc]ite speech',															-- canonical&lt;br /&gt;
	'[Cc]ite ssrn',																-- canonical&lt;br /&gt;
		'[Cc]ite SSRN',&lt;br /&gt;
		&lt;br /&gt;
	'[Cc]ite tech ?report',														-- techreport is the canonical form&lt;br /&gt;
		'[Cc]ite standard', '[Cc]ite technical report', '[Tt]echrep reference',&lt;br /&gt;
&lt;br /&gt;
	'[Cc]ite thesis',															-- canonical&lt;br /&gt;
		'[Cc]ite dissertation',&lt;br /&gt;
		'[Cc]itar tese',														-- non-English redirect; TODO: tally separately?&lt;br /&gt;
&lt;br /&gt;
	'[Cc]ite [Ww]eb',															-- web is the canonical form&lt;br /&gt;
		'[Cc] web', '[Cc]it web', '[Cc]ite blog', '[Cc]ite URL', '[Cc]ite url',&lt;br /&gt;
		'[Cc]ite w', '[Cc]ite wb', '[Cc]ite we', '[Cc]ite web\.',&lt;br /&gt;
		'[Cc]ite webpage', '[Cc]ite website', '[Cc]ite website article',&lt;br /&gt;
		'[Cc]ite%-?web', '[Cc]itweb', '[Cc]w', '[Rr]ef web', '[Ww]eb citation',&lt;br /&gt;
		'[Ww]eb cite', '[Ww]eb link', '[Ww]eb[ %-]reference', '[Ww]eblink',&lt;br /&gt;
		'[Cc]hú thích web', '[Cc]ita web', '[Cc]itace elektronické monografie',	-- non-English redirects; TODO: tally separately?&lt;br /&gt;
		'[Cc]itat web', 'مرجع ويب', 'یادکرد وب', '웹 인용',&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; C S 2 _ T E M P L A T E _ P A T T E R N S &amp;gt;------------------------------------&lt;br /&gt;
&lt;br /&gt;
These are patterns for cs2 templates redirects.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local cs2_template_patterns = {													-- lua patterns of the cannonical names and redirects&lt;br /&gt;
	'[Cc]itation',&lt;br /&gt;
		'[Cc]ite', '[Cc]ite citation', '[Cc]ite study',&lt;br /&gt;
		'[Cc]ite [Tt]echnical standard',&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; V C I T E _ T E M P L A T E _ P A T T E R N S &amp;gt;--------------------------------&lt;br /&gt;
&lt;br /&gt;
These are patterns for Vcite-family templates and their redirects.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local vcite_template_patterns = {&lt;br /&gt;
	'[Vv]cite book',															-- canonical&lt;br /&gt;
		'[Vv]ancite book', '[Vv]ancite report', '[Vv]cite encyclopedia',&lt;br /&gt;
		'[Vv]cite report',&lt;br /&gt;
&lt;br /&gt;
	'[Vv]cite journal',															-- canonical&lt;br /&gt;
		'[Cc]it journal', '[Cc]it paper', '[Vv]ancite journal', '[Vv]cite paper',&lt;br /&gt;
&lt;br /&gt;
	'[Vv]cite news',															-- canonical&lt;br /&gt;
		'[Vv]ancite news',&lt;br /&gt;
&lt;br /&gt;
	'[Vv]cite web',																-- canonical&lt;br /&gt;
		'[Vv]ancite web',&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; H A R V C _ T E M P L A T E _ P A T T E R N S &amp;gt;--------------------------------&lt;br /&gt;
&lt;br /&gt;
These are patterns for the harvc template and its redirects.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local harvc_template_patterns = {&lt;br /&gt;
	'[Hh]arvc',																	-- canonical&lt;br /&gt;
		'[Cc]itec',&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; C S 1 _ L I K E _ T E M P L A T E _ P A T T E R N S &amp;gt;--------------------------&lt;br /&gt;
&lt;br /&gt;
These are patterns for miscellaneous templates and their redirects that 'look like' cs1 templates (begin with cite ...)&lt;br /&gt;
&lt;br /&gt;
Because they 'look like' cs1 templates they are handled as if they were cs1 templates.  These templates are NOT&lt;br /&gt;
wrapper templates; names and dates are always to be extracted from the article instantiation of the template.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local cs1_like_template_patterns = {&lt;br /&gt;
	'[Cc]ite LSA',																-- canonical&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; W I K I C I T E _ T E M P L A T E _ P A T T E R N S &amp;gt;--------------------------&lt;br /&gt;
&lt;br /&gt;
These are patterns for the wikicite template and its redirects.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local wikicite_template_patterns = {&lt;br /&gt;
	'[Ww]ikicite',																-- canonical&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A N C H O R _ T E M P L A T E _ P A T T E R N S &amp;gt;------------------------------&lt;br /&gt;
&lt;br /&gt;
These are patterns for the anchor template and its redirects.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local anchor_template_patterns = {&lt;br /&gt;
	'[Aa]nchors?',																-- anchor is canonical form&lt;br /&gt;
	'[Aa]nchor for redirect',&lt;br /&gt;
	'[Aa]nchro',&lt;br /&gt;
	'[Aa]ncor',&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S F N _ W H I T E L I S T _ P A T T E R N S &amp;gt;----------------------------------&lt;br /&gt;
&lt;br /&gt;
These are patterns for the anchor template and its redirects.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local sfn_whitelist_patterns = {&lt;br /&gt;
	'[Ss]fn whitelist',															-- canonical&lt;br /&gt;
		'[Hh]arv whitelist',&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; K N O W N _ T E M P L A T E S &amp;gt;------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
These tables are created from the *_template_patterns tables.  To make these tables, entries in the source tables&lt;br /&gt;
are evaluated to replace lua patterns with the appropriate characters to create names for the output tables.&lt;br /&gt;
&lt;br /&gt;
First charqacter is always uppercase&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
	[Cc]ite ar[Xx]iv&lt;br /&gt;
becomes&lt;br /&gt;
	Cite arXiv&lt;br /&gt;
	Cite arxiv&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local known_templates_cs12 = {};												-- the exported tables&lt;br /&gt;
local known_templates_vcite = {};&lt;br /&gt;
local known_templates_harvc = {};&lt;br /&gt;
local known_templates_wikicite = {};&lt;br /&gt;
local known_templates_anchor = {};&lt;br /&gt;
local known_templates_sfn_whitelist = {};&lt;br /&gt;
&lt;br /&gt;
	local function add_stripped (list, name)&lt;br /&gt;
		if not list[name] then&lt;br /&gt;
			list[name] = true;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	local function pattern_convert (pattern, list)&lt;br /&gt;
		local lead, tail, c, l, name;&lt;br /&gt;
		local first_char_patterns = {&lt;br /&gt;
			'^%[(%a)%a%]',														-- leading character (usually uppercase)&lt;br /&gt;
			'^%[%a(%a)%]',														-- leading character (usually lowercase)&lt;br /&gt;
			}&lt;br /&gt;
			&lt;br /&gt;
		c = tostring (pattern:match ('%u'));									-- tostring() required because I don't know why; lua chokes complaining that c is not a string&lt;br /&gt;
		name = pattern:gsub ('^%[%a%a%]', c);									-- replace bracketed first character [Xx] with selected character from the match&lt;br /&gt;
		&lt;br /&gt;
		if name:match ('(.-)%[(%a)(%a)%](.*)') then								-- mixed case optional letters&lt;br /&gt;
			lead, c, l, tail = name:match ('(.-)%[(%a)(%a)%](.*)');&lt;br /&gt;
			add_stripped (list, lead .. c .. tail);								-- uppercase&lt;br /&gt;
			add_stripped (list, lead .. l .. tail);								-- lowercase&lt;br /&gt;
	&lt;br /&gt;
		elseif name:match ('^([^%[]+)(%[ %%%-%]%?)(.+)$') then					-- [ %-]?&lt;br /&gt;
			lead, c, tail = name:match ('^([^%[]+)(%[ %%%-%]%?)(.+)$');&lt;br /&gt;
			add_stripped (list, lead .. tail);									-- neither char&lt;br /&gt;
			add_stripped (list, lead .. ' ' .. tail);							-- space&lt;br /&gt;
			add_stripped (list, lead .. '-' .. tail);							-- hyphen&lt;br /&gt;
	&lt;br /&gt;
		elseif name:match ('^([^%[]+)(%[%%%-%]%?)(.+)$') then					-- [%-]?&lt;br /&gt;
			lead, c, tail = name:match ('^([^%[]+)(%[%%%-%]%?)(.+)$');&lt;br /&gt;
			add_stripped (list, lead .. tail);									-- no hyphen&lt;br /&gt;
			add_stripped (list, lead .. '-' .. tail);							-- hyphen&lt;br /&gt;
	&lt;br /&gt;
		elseif name:match ('^([^%[]+)(%[ %%%-%])(.+)$') then					-- [ %-]&lt;br /&gt;
			lead, c, tail = name:match ('^([^%[]+)(%[ %%%-%])(.+)$');&lt;br /&gt;
			add_stripped (list, lead .. ' ' .. tail);							-- space&lt;br /&gt;
			add_stripped (list, lead .. '-' .. tail);							-- hyphen&lt;br /&gt;
	&lt;br /&gt;
		elseif name:match ('^([^%?]+)(%%%-%?)(.+)$') then						-- %-?&lt;br /&gt;
			lead, c, tail = name:match ('^([^%?]+)(%%%-%?)(.+)$');&lt;br /&gt;
			add_stripped (list, lead .. tail);									-- no hyphen&lt;br /&gt;
			add_stripped (list, lead .. '-' .. tail);							-- hyphen&lt;br /&gt;
	&lt;br /&gt;
		elseif name:match ('^(.-)(%%%-)(.+)$') then								-- %-&lt;br /&gt;
			lead, c, tail = name:match ('^(.-)(%%%-)(.+)$');&lt;br /&gt;
			add_stripped (list, lead .. '-' .. tail);							-- hyphen&lt;br /&gt;
&lt;br /&gt;
		elseif name:match ('^(.-)(.)%?(.*)$') then								-- .?&lt;br /&gt;
			lead, c, tail = name:match ('^(.-)(.)%?(.*)$');&lt;br /&gt;
			add_stripped (list, lead .. tail);									-- no character&lt;br /&gt;
			add_stripped (list, lead .. c .. tail);								-- character&lt;br /&gt;
	&lt;br /&gt;
		else&lt;br /&gt;
			add_stripped (list, name);											-- no patterns so save as is&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for _, t in ipairs ({&lt;br /&gt;
		{cs1_template_patterns, known_templates_cs12},&lt;br /&gt;
		{cs2_template_patterns, known_templates_cs12},&lt;br /&gt;
		{cs1_like_template_patterns, known_templates_cs12},&lt;br /&gt;
		{vcite_template_patterns, known_templates_vcite},&lt;br /&gt;
		{harvc_template_patterns, known_templates_harvc},&lt;br /&gt;
		{wikicite_template_patterns, known_templates_wikicite},&lt;br /&gt;
		{anchor_template_patterns, known_templates_anchor},&lt;br /&gt;
		{sfn_whitelist_patterns, known_templates_sfn_whitelist},&lt;br /&gt;
		}) do&lt;br /&gt;
			for _, pattern in ipairs (t[1]) do									-- for each patern in *_template_patterns&lt;br /&gt;
				pattern_convert (pattern, t[2])									-- convert and store in known_templates_*&lt;br /&gt;
			end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E X P O R T S &amp;gt;----------------------------------------------------------------&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
return&lt;br /&gt;
	{&lt;br /&gt;
	known_templates_anchor = known_templates_anchor,&lt;br /&gt;
	known_templates_cs12 = known_templates_cs12,&lt;br /&gt;
	known_templates_harvc = known_templates_harvc,&lt;br /&gt;
	known_templates_vcite = known_templates_vcite,&lt;br /&gt;
	known_templates_wikicite = known_templates_wikicite,&lt;br /&gt;
	known_templates_sfn_whitelist = known_templates_sfn_whitelist,&lt;br /&gt;
	}&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%A8%A1%E5%9D%97:Footnotes/anchor_id_list&amp;diff=35658</id>
		<title>模块:Footnotes/anchor id list</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%A8%A1%E5%9D%97:Footnotes/anchor_id_list&amp;diff=35658"/>
		<updated>2024-07-04T08:40:20Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;require('Module:No globals');&lt;br /&gt;
local data = mw.loadData ('Module:Footnotes/anchor id list/data');&lt;br /&gt;
local whitelist = mw.loadData ('Module:Footnotes/whitelist');&lt;br /&gt;
local Lang_obj = mw.language.getContentLanguage();								-- used by template_list_add() to uppercase first letter of template name TODO: better way to do that?&lt;br /&gt;
&lt;br /&gt;
local redirects_date = {&lt;br /&gt;
	['date'] = true,&lt;br /&gt;
	['datetomos'] = true,&lt;br /&gt;
	['formatdate'] = true,&lt;br /&gt;
	['isotodmymdy'] = true,&lt;br /&gt;
	['isotomos'] = true,&lt;br /&gt;
	}&lt;br /&gt;
local redirects_patent = {														-- special case cs1-like templates because uses different parameters for name and date in anchor ID&lt;br /&gt;
	['Cite patent'] = true,&lt;br /&gt;
	['Citeref patent'] = true,&lt;br /&gt;
	['Ref patent'] = true,&lt;br /&gt;
	}&lt;br /&gt;
local redirects_sfnref = {&lt;br /&gt;
	['sfnref'] = true,&lt;br /&gt;
	['harvid'] = true,&lt;br /&gt;
	}&lt;br /&gt;
local aliases_author = {														-- these use pseudo-patterns in the same way as cs1|2; '#' represents 1 or more enumerator digits&lt;br /&gt;
	'last#',&lt;br /&gt;
	'author#',&lt;br /&gt;
	'surname#',&lt;br /&gt;
	'author-last#',&lt;br /&gt;
	'author#-last',&lt;br /&gt;
	'subject#',&lt;br /&gt;
	'host#',&lt;br /&gt;
	}&lt;br /&gt;
local aliases_contributor = {&lt;br /&gt;
	'contributor#',&lt;br /&gt;
	'contributor-last#',&lt;br /&gt;
	'contributor#-last',&lt;br /&gt;
	'contributor-surname#',&lt;br /&gt;
	'contributor#-surname',&lt;br /&gt;
	}&lt;br /&gt;
local aliases_editor = {&lt;br /&gt;
	'editor#',&lt;br /&gt;
	'editor-last#',&lt;br /&gt;
	'editor#-last',&lt;br /&gt;
	'editor-surname#',&lt;br /&gt;
	'editor#-surname',&lt;br /&gt;
	}&lt;br /&gt;
local aliases_harvc_author = {&lt;br /&gt;
	'last#',&lt;br /&gt;
	'author#',&lt;br /&gt;
	}&lt;br /&gt;
local aliases_inventor = {														-- cite patent&lt;br /&gt;
	'inventor#',&lt;br /&gt;
	'inventor-last#',&lt;br /&gt;
	'inventor#-last',&lt;br /&gt;
	'inventor-surname#',&lt;br /&gt;
	'inventor#-surname',&lt;br /&gt;
	'invent#',&lt;br /&gt;
	'invent-#',&lt;br /&gt;
	}&lt;br /&gt;
local alias_patterns_date = {													-- normal lua patterns for most cs1|2-like templates&lt;br /&gt;
	'|%s*year%s*=%s*',&lt;br /&gt;
	'|%s*date%s*=%s*',&lt;br /&gt;
	'|%s*publication%-?date%s*=%s*',&lt;br /&gt;
	'|%s*air%-?date%s*=%s*',&lt;br /&gt;
	}&lt;br /&gt;
local alias_patterns_harvc_date = {												-- normal lua patterns for harvc template&lt;br /&gt;
	'|%s*anchor%-year%s*=%s*',&lt;br /&gt;
	'|%s*year%s*=%s*',&lt;br /&gt;
	}&lt;br /&gt;
local alias_patterns_patent_date = {											-- normal lua patterns for cite patent templates&lt;br /&gt;
	'|%s*issue%-date%s*=%s*',&lt;br /&gt;
	'|%s*gdate%s*=%s*',&lt;br /&gt;
	'|%s*publication%-date%s*=%s*',&lt;br /&gt;
	'|%s*pubdate%s*=%s*',&lt;br /&gt;
	}&lt;br /&gt;
local patterns_date = {															-- normal lua patterns&lt;br /&gt;
--	'(%d%d%d%d–%d%d%d%d%l?)$',													-- YYYY–YYYY four-digit year range at end (Season YYYY–YYYY); with or without dab&lt;br /&gt;
	'(%d%d%d%d)%D+(%d%d%d%d%l?)$',												-- any range with four-digit years; with or without dab; not two captures&lt;br /&gt;
	'^(%d%d%d%d–%d%d%l?)$',														-- YYYY–YY two-digit year range; with or without dab&lt;br /&gt;
	'^(c%. %d%d%d%d?%l?)$',														-- three- or four-digit circa year; with or without dab&lt;br /&gt;
	'(%d%d%d%d?%l?)$',															-- three- or four-digit year at end of date (dmy or mdy); with or without dab&lt;br /&gt;
	'^(%d%d%d%d?%l?)',															-- three- or four-digit year at beginning of date (ymd or YYYY); with or without dab&lt;br /&gt;
	'^(n%.d%.%l?)$',															-- 'no date' with dots; with or without dab&lt;br /&gt;
	'^(nd%l?)$',																-- 'no date' without dots; with or without dab&lt;br /&gt;
	}&lt;br /&gt;
local patterns_tags = {&lt;br /&gt;
	'&amp;lt;nowiki&amp;gt;.-&amp;lt;/nowiki&amp;gt;',&lt;br /&gt;
	'&amp;lt;!%-%-.-%-%-&amp;gt;',&lt;br /&gt;
	'&amp;lt;pre&amp;gt;.-&amp;lt;/pre&amp;gt;',&lt;br /&gt;
	'&amp;lt;syntaxhighlight.-&amp;gt;.-&amp;lt;/syntaxhighlight&amp;gt;',&lt;br /&gt;
	'&amp;lt;source.-&amp;gt;.-&amp;lt;/source&amp;gt;',													-- deprecated alias of syntaxhighlight tag&lt;br /&gt;
	}&lt;br /&gt;
local template_skip = {															-- templates to be skipped for whatever reason; mostly because they resemble cs1-like templates&lt;br /&gt;
	['Citation-attribution'] = true,&lt;br /&gt;
	}&lt;br /&gt;
local Article_content;&lt;br /&gt;
&lt;br /&gt;
local anchor_id_list = {};														-- exported tables&lt;br /&gt;
local template_list = {};&lt;br /&gt;
local article_whitelist = {};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A R T I C L E _ C O N T E N T _ G E T &amp;gt;----------------------------------------&lt;br /&gt;
&lt;br /&gt;
get article content, remove certain html-like tags and their content so that this code doesn't include any citation&lt;br /&gt;
templates inside the tags as valid tagets; they are not.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function article_content_get ()&lt;br /&gt;
	if not Article_content then&lt;br /&gt;
		Article_content = mw.title.getCurrentTitle():getContent() or '';		-- get the content of the article or ''; new pages edited w/ve do not have 'content' until saved; ve does not preview; phab:T221625&lt;br /&gt;
		for _, tag in ipairs (patterns_tags) do&lt;br /&gt;
			Article_content = Article_content:gsub (tag, '');					-- remove certain html-like tags and their content&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S F N R E F _ G E T &amp;gt;----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
make an anchor id from the contents of {{sfnref}} or {{harvid}}.  this function assumes that {{sfnref}} and {{harvid}}&lt;br /&gt;
are correctly formed.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function sfnref_get (template)&lt;br /&gt;
	template = template:gsub ('{{%s*(.-)%s*}}', '%1');							-- strip bounding template markup and trim&lt;br /&gt;
	local parts = mw.text.split (template, '%s*|%s*');							-- split at the pipe and remove extraneous space characters&lt;br /&gt;
	local anchor_id = {};&lt;br /&gt;
&lt;br /&gt;
	if redirects_sfnref[parts[1]:lower()] then&lt;br /&gt;
		anchor_id[1] = 'CITEREF';&lt;br /&gt;
	else&lt;br /&gt;
		return nil;																-- not an sfnref or harvid template&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local i = 2;																-- indexer into parts{} table&lt;br /&gt;
	local j = 2;																-- indexer into anchor_id{} table which already has 'CITEREF' at [1]&lt;br /&gt;
	while parts[i] and 7 &amp;gt; j do													-- loop through what should be just positional parameters for names and year (2-6 four names and a date)&lt;br /&gt;
		if not parts[i]:find ('=') then											-- look for equal sign (named paraneter in a template that doesn't support named parameters)&lt;br /&gt;
			anchor_id[j] = parts[i];											-- positional parameters are saved&lt;br /&gt;
			j = j+1;															-- bump the anchor_id{} indexer&lt;br /&gt;
		end&lt;br /&gt;
		i = i+ 1;																-- bump the parts{} indexer&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table.concat (anchor_id, '');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; D A T E _ G E T &amp;gt;--------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
extract year from one of |year=, |date=, |publicationdate=, or |publication-date in that order.  Does not error&lt;br /&gt;
check (that is left to the cs1|2 templates to do)&lt;br /&gt;
&lt;br /&gt;
also gets date from |&amp;lt;date alias&amp;gt;={{date|...}}&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function date_get (template, aliases)&lt;br /&gt;
	local rvalue;&lt;br /&gt;
&lt;br /&gt;
	for _, pattern in ipairs (aliases) do										-- spin through the date alias patterns&lt;br /&gt;
		rvalue = tostring(template):match (pattern);							-- is this |&amp;lt;date alias&amp;gt;= used (tostring() because something makes match() think template is a table)&lt;br /&gt;
		if rvalue then&lt;br /&gt;
			rvalue = tostring(template):match (pattern .. '(%b{})');			-- is rvalue a template?&lt;br /&gt;
			if rvalue then&lt;br /&gt;
				rvalue = rvalue:gsub ('{{%s*(.-)%s*}}', '%1');					-- strip bounding template markup and trim&lt;br /&gt;
				local parts = mw.text.split (rvalue, '%s*|%s*');				-- split at the pipe and remove extraneous space characters&lt;br /&gt;
&lt;br /&gt;
				if redirects_date[parts[1]:lower()] then						-- if parts[1] names {{date}} or redirect&lt;br /&gt;
					rvalue = parts[2];											-- assume that date template is properly formed, first positional parameter is the date&lt;br /&gt;
				else&lt;br /&gt;
					return '';													-- |date= holds some other template than {{date}} or redirect&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				rvalue = template:match (pattern .. '([^|}]+)');&lt;br /&gt;
				if rvalue then													-- if rvalue is something&lt;br /&gt;
					rvalue = mw.text.trim (rvalue);								-- trim it&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				if not rvalue or '' == rvalue then								-- if rvale was nothing or trimed to nothing&lt;br /&gt;
					rvalue = nil;												-- ensure that it is unset so we can try the next parameter in the list&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if rvalue then&lt;br /&gt;
				for _, pattern in ipairs (patterns_date) do						-- spin through the recognized date formats&lt;br /&gt;
--					date = rvalue:match (pattern);								-- attempt to extract year portion according to the pattern&lt;br /&gt;
					local date, date2 = rvalue:match (pattern);					-- attempt to extract year portion according to the pattern; &amp;lt;date2&amp;gt; gets second year in any range&lt;br /&gt;
					if date then&lt;br /&gt;
						if date2 then											-- when a second year&lt;br /&gt;
							date = table.concat ({date, '–', date2});			-- build a date range&lt;br /&gt;
						end&lt;br /&gt;
						return date;											-- matched so return;&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				break;															-- found a date but it was malformed so abandon&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return '';																	-- no date param or date param doesn't hold a recognized date; empty string for concatenation&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
--[[--------------------------&amp;lt; V N A M E S _ G E T &amp;gt;----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
extract names from |vauthors= or |veditors=; there is no |vcontributors= parameter.&lt;br /&gt;
&lt;br /&gt;
splits the v parameter value at the comma; correctly handles accept-as-witten markup when used to wrap a comma-&lt;br /&gt;
separated names (corporate)&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function vnames_get (params, vparam)&lt;br /&gt;
	local vnames = {};															-- first four author or editor names go here&lt;br /&gt;
	local split = {};															-- temp table to assist in decoding accept-as-witten-markup&lt;br /&gt;
&lt;br /&gt;
	if params[vparam] then														-- test for |vauthors= or |veditor=&lt;br /&gt;
		split = mw.text.split (params[vparam], '%s*,%s*');						-- this will separate portions of ((Black, Brown, White, an Co.))&lt;br /&gt;
	&lt;br /&gt;
		local i = 1;															-- an indexer&lt;br /&gt;
		&lt;br /&gt;
		while split[i] do&lt;br /&gt;
			if split[i]:match ('^%(%(.*[^%)][^%)]$') then						-- first segment of comma-separated accept-as-witten; this segment has the opening doubled parens&lt;br /&gt;
				local name = split[i];&lt;br /&gt;
				i=i+1;															-- bump indexer to next segment&lt;br /&gt;
				while split[i] do&lt;br /&gt;
					name = name .. ', ' .. split[i];							-- concatenate with previous segments&lt;br /&gt;
					if split[i]:match ('^.*%)%)$') then							-- if this table member has the closing doubled parens&lt;br /&gt;
						break;													-- and done reassembling so&lt;br /&gt;
					end&lt;br /&gt;
					i=i+1;														-- bump indexer&lt;br /&gt;
				end&lt;br /&gt;
				table.insert (vnames, name);									-- and add accept-as-witten name to the vnames table&lt;br /&gt;
	&lt;br /&gt;
			else&lt;br /&gt;
				table.insert (vnames, split[i]);								-- and add name to the vnames table&lt;br /&gt;
			end&lt;br /&gt;
		i=i+1;																	-- bump indexer&lt;br /&gt;
		if 5 == i then break; end												-- limit to four names&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		for i, vname in ipairs (vnames) do&lt;br /&gt;
			if not vname:match ('%(%(.-%)%)') then								-- without accept-this-value-as-written markup&lt;br /&gt;
				vnames[i] = vname:gsub ('(.-)%s+%u+$', '%1');					-- extract and save surname(s)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		for i, vname in ipairs (vnames) do										-- repeat, this time for accept-this-value-as-written markup&lt;br /&gt;
			vnames[i] = vname:gsub ('%(%((.-)%)%)', '%1');						-- remove markup if present and save the whole name&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return 0 ~= #vnames and table.concat (vnames) or nil						-- return a concatenation of the vnames; nil else&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; N A M E S _ G E T &amp;gt;------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
cs1|2 makes anchor id from contributor, author, or editor name-lists in that order&lt;br /&gt;
&lt;br /&gt;
get the names from the cs1|2 template;  if there are no contributor names, try author names, then try editor names.&lt;br /&gt;
&lt;br /&gt;
returns concatenated names in enumeration order when successful; nil else&lt;br /&gt;
&lt;br /&gt;
empty name (nameholding parameter n is present without value) and missing name (nameholding parameter n is not&lt;br /&gt;
present) are included as empty string with all other names&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function names_get (params, aliases_list)&lt;br /&gt;
	local names = {};															-- first four author or editor names go here&lt;br /&gt;
	local enum_alias;															-- alias with '#' replaced with a digit&lt;br /&gt;
&lt;br /&gt;
	for enum=1, 4 do															-- four names only&lt;br /&gt;
		for i, alias in ipairs (aliases_list) do&lt;br /&gt;
			if not names[enum] then												-- hanven't found a previous alias with this [enum]? see if we can find this alias with this enum&lt;br /&gt;
				enum_alias = alias:gsub ('#', enum);							-- replace '#' to make 'lastn'&lt;br /&gt;
	&lt;br /&gt;
				if 1 == enum then												-- because |last= and last1= are exact aliases&lt;br /&gt;
					if params[enum_alias] then									-- test |last1= first&lt;br /&gt;
						names[enum] = params[enum_alias];						-- found so save the value assigned to |last1=&lt;br /&gt;
						break;													-- next enum&lt;br /&gt;
					else&lt;br /&gt;
						enum_alias = alias:gsub ('#', '');						-- replace '#' to make 'last'&lt;br /&gt;
						if params[enum_alias] then&lt;br /&gt;
							names[enum] = params[enum_alias];					-- found so save the value assigned to |last=&lt;br /&gt;
							break;												-- next enum&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				else															-- here for enum 2, 3, 4&lt;br /&gt;
					if params[enum_alias] then&lt;br /&gt;
						names[enum] = params[enum_alias];						-- found so save the value assigned to |lastn=&lt;br /&gt;
						break;													-- next enum&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for enum=1, 4 do															-- spin through the names table and&lt;br /&gt;
		local name = names[enum];&lt;br /&gt;
		if not name then														-- when nameholding parameter n is not present (nil)&lt;br /&gt;
			name = '';															-- convert to empty string for concatenation&lt;br /&gt;
		end&lt;br /&gt;
		name = name:gsub('%(%((.-)%)%)', '%1');									-- remove accept-as-written markup if present&lt;br /&gt;
		names[enum] = name;														-- save the modified name&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local name_str = table.concat (names);										-- concatenate the names&lt;br /&gt;
	return '' ~= name_str and name_str or nil;									-- return the concatenation if not empty string; nil else&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T E M P L A T E _ S T R I P &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
removes the citation or havrc template's {{ and }} markup then removes, in whole, any templates found inside the&lt;br /&gt;
citation or harvc template.&lt;br /&gt;
&lt;br /&gt;
Templates are not allowed in parameters that are made part of COinS metadata; yet, they will appear.  cs1|2 does&lt;br /&gt;
not see the template markup but instead sees the result of the template as html.  cs1|2 strips the html which&lt;br /&gt;
leaves the displayed value for the anchor id.  We can't do that here so, because templates aren't allowed in&lt;br /&gt;
parameters, we simply discard any templates found in the cs1|2 template.&lt;br /&gt;
&lt;br /&gt;
this may leave a |lastn= parameter empty which will be treated as if it were really empty as cs1|2 do (three authors,&lt;br /&gt;
|last2= empty -&amp;gt; CITEREFLast1Last3YYYY (the harv and sfn render: 'Last1, &amp;amp; Last3 YYYY' with CITEREFLast1Last3YYYY).&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function template_strip (template)&lt;br /&gt;
	template = template:gsub ('^{{%s*', ''):gsub ('%s*}}$', '', 1);				-- remove outer {{ and }} (cs1|2 template delimiters with trailing/leading whitespace)&lt;br /&gt;
	template = template:gsub ('%b{}', '');										-- remove any templates from the cs1|2 template&lt;br /&gt;
	return template;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E S C A P E _ L U A _ M A G I C _ C H A R S &amp;gt;----------------------------------&lt;br /&gt;
&lt;br /&gt;
Returns a string where all of lua's magic characters have been escaped.  This is important because functions like&lt;br /&gt;
string.gsub() treat their pattern and replace strings as patterns, not literal strings.&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function escape_lua_magic_chars (argument)&lt;br /&gt;
	argument = argument:gsub(&amp;quot;%%&amp;quot;, &amp;quot;%%%%&amp;quot;);										-- replace % with %%&lt;br /&gt;
	argument = argument:gsub(&amp;quot;([%^%$%(%)%.%[%]%*%+%-%?])&amp;quot;, &amp;quot;%%%1&amp;quot;);				-- replace all other lua magic pattern characters&lt;br /&gt;
	return argument;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[=[-------------------------&amp;lt; W I K I L I N K _ S T R I P &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Wikilink markup does not belong in an anchor id and can / does confuse the code that parses apart citation and&lt;br /&gt;
harvc templates so here we remove any wiki markup:&lt;br /&gt;
	[[link|label]] -&amp;gt; label&lt;br /&gt;
	[[link]] -&amp;gt; link&lt;br /&gt;
	&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
local function wikilink_strip (template)&lt;br /&gt;
	for wikilink in template:gmatch ('%[%b[]%]') do								-- get a wikilink&lt;br /&gt;
		template = template:gsub ('%[%b[]%]', '__57r1P__', 1);					-- install a marker&lt;br /&gt;
		if wikilink:match ('%[%[.-|(.-)%]%]') then&lt;br /&gt;
			wikilink = wikilink:match ('%[%[.-|(.-)%]%]');						-- extract label from complex [[link|label]] wikilink&lt;br /&gt;
		else&lt;br /&gt;
			wikilink = wikilink:match ('%[%[(.-)%]%]');							-- extract link from simple [[link]] wikilinks&lt;br /&gt;
		end&lt;br /&gt;
		wikilink = escape_lua_magic_chars (wikilink);							-- in case there are lua magic characters in wikilink&lt;br /&gt;
		template = template:gsub ('__57r1P__', wikilink, 1);					-- replace the marker with the appropriate text&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return template;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T E M P L A T E _ N A M E _ G E T &amp;gt;--------------------------------------------&lt;br /&gt;
&lt;br /&gt;
return the citation or harvc template's name; convert to lower case and trim leading and trailing whitespace;&lt;br /&gt;
&lt;br /&gt;
when the template is a sandbox the subpage portion of the template name is omitted from the returned template name&lt;br /&gt;
	{{Cite book/new |...}} returns cite book&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function template_name_get (template)&lt;br /&gt;
	local template_name = template:match ('^{{%s*([^/|}]+)');					-- get template name; ignore subpages ~/new, ~/sandbox; parser functions&lt;br /&gt;
&lt;br /&gt;
	if not template_name or template_name:match ('^#') then						-- parser functions, magic words don't count as templates&lt;br /&gt;
		return nil;																-- could not get template name from (possibly corrupt) template; extraneous opening { mid template can cause this;&lt;br /&gt;
	end;&lt;br /&gt;
	template_name = template_name:gsub ('%s*$', '');							-- trim trailing whitespace; leading whitespace already removed&lt;br /&gt;
	return Lang_obj:ucfirst (template_name);									-- first character in template name must be uppercase (same as canonical template name) TODO: better way to do this?&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T E M P L A T E _ P A R A M S _ G E T &amp;gt;----------------------------------------&lt;br /&gt;
&lt;br /&gt;
parse apart a template's parameters and store in the params table where key is the parameter's name and value is&lt;br /&gt;
the parameter's value; empty parameters are not saved&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function template_params_get (template, params_t)&lt;br /&gt;
	template = wikilink_strip (template);										-- because piped wikilinks confuse code that builds params_t{} and because wikilinks not allowed in an anchor id&lt;br /&gt;
																				-- strip templates after getting |ref= value because |ref={{sfnref}} and |ref={{harvid}} are allowed&lt;br /&gt;
	template = template_strip (template);										-- because template markup can confuse code that builds params_t{} and because templates in name parameters are not allowed&lt;br /&gt;
&lt;br /&gt;
	local temp_t = mw.text.split (template, '%s*|%s*');							--split on the pipe&lt;br /&gt;
	for _, param in ipairs (temp_t) do&lt;br /&gt;
		if param:find ('=', 1, true) then										-- a named parameter?&lt;br /&gt;
			local k, v = param:match ('%s*([^=]-)%s*=%s*([^|}]+)');&lt;br /&gt;
			if v then															-- there must be a value&lt;br /&gt;
				if '' ~= v and not v:match ('^%s$') then						-- skip when value is empty string or only whitespace&lt;br /&gt;
					params_t[k] = mw.text.trim (v);								-- add trimmed value else&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; C I T E R E F _ M A K E _ H A R V C &amp;gt;------------------------------------------&lt;br /&gt;
&lt;br /&gt;
makes anchor_id from {{harvc}} or redirects&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function anchor_id_make_harvc (template)&lt;br /&gt;
	local date = date_get (template, alias_patterns_harvc_date);				-- get date; done here because might be in {{date}}; return date if valid; empty string else&lt;br /&gt;
	local anchor_id;&lt;br /&gt;
	local params = {};															-- table of harvc parameters&lt;br /&gt;
	local id;																	-- custom anchor id for this {{harvc}} template&lt;br /&gt;
&lt;br /&gt;
	id = template:match ('|%s*id%s*=%s*(%b{})');								-- in case |id={{sfnref}}; done here because templates will be stripped&lt;br /&gt;
&lt;br /&gt;
	template_params_get (template, params);										-- build a table of template parameters and their values; this strips wikilinks and templates&lt;br /&gt;
&lt;br /&gt;
	if id then																	-- when set is {{sfnref}} or {{harvid}} template&lt;br /&gt;
		return sfnref_get (id);													-- returns content of {{sfnref}} or {{harvid}}; nil else&lt;br /&gt;
	end&lt;br /&gt;
	if params.id then															-- custom anchor for this {{harvc}} template (text)&lt;br /&gt;
		return params.id;														-- |id= value as written&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	anchor_id = names_get (params, aliases_harvc_author);						-- get the harvc contributor names&lt;br /&gt;
&lt;br /&gt;
	if anchor_id then															-- if names were gotten&lt;br /&gt;
		return 'CITEREF' .. anchor_id .. date;&lt;br /&gt;
	end&lt;br /&gt;
	return nil;																	-- no names; no anchor_id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A N C H O R _ I D _ M A K E _ W R A P P E R &amp;gt;----------------------------------&lt;br /&gt;
&lt;br /&gt;
for wrapper templates&lt;br /&gt;
&lt;br /&gt;
inspect externally visible |ref= to decide what to do:&lt;br /&gt;
	|ref=										- empty or missing: get names and date from whitelist defaults; override defaults from externally visible template parameters&lt;br /&gt;
	|ref=harv									- same as empty or missing&lt;br /&gt;
	|ref={{SfnRef|name|name|name|name|year}}	- assemble an anchor id from {{sfnref}} positional parameters&lt;br /&gt;
	|ref={{Harvid|name|name|name|name|year}}	- assemble an anchor id from {{harvid}} positional parameters&lt;br /&gt;
	|ref=none									- skip; do nothing because an anchor id intentionally suppressed; TODO: keep with a type code of '0'?&lt;br /&gt;
	|ref=&amp;lt;text&amp;gt;									- save param value because may match an anchor id override value in {{harv}} template |ref= parameter or {{harvc}} |id= parameter&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function anchor_id_make_wrapper (template)&lt;br /&gt;
	local ref;																	-- content of |ref=&lt;br /&gt;
	local template_name;														-- name of the template&lt;br /&gt;
	local anchor_id;															-- the assembled anchor id from this template&lt;br /&gt;
	local date;&lt;br /&gt;
	local name_default;&lt;br /&gt;
	local date_default;&lt;br /&gt;
	local vol;&lt;br /&gt;
	local params = {};															-- table of template parameters&lt;br /&gt;
	&lt;br /&gt;
	template_name = template_name_get (template);								-- get first char uppercase trimmed template name; ignore subpages ~/new, ~/sandbox&lt;br /&gt;
	if not template_name or template_skip[template_name] then&lt;br /&gt;
		return nil;																-- could not extract template name from (possibly corrupted) template (extraneous opening { in the template will cause this)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	date = date_get (template, alias_patterns_date);							-- get date; done here because might be in {{date}}&lt;br /&gt;
--	if '' == date then&lt;br /&gt;
--		date = whitelist.wrapper_templates[template_name][2] or '';				-- no externally visible date so get default date&lt;br /&gt;
--	end&lt;br /&gt;
&lt;br /&gt;
	ref = template:match ('|%s*ref%s*=%s*(%b{})');								-- first look for |ref={{sfnref}} or |ref={{harvid}} because we will strip templates from the wrapper template&lt;br /&gt;
	if not ref then&lt;br /&gt;
		if template:match ('|%s*ref%s*=([^|}]+)') then							-- |ref={{template}} not found; if there is a |ref= param with an assigned value&lt;br /&gt;
			ref = template:match ('|%s*ref%s*=([^|}]+)');						-- get the value; whitespace is a 'value'&lt;br /&gt;
			if ref then															-- nil when |ref=|... or when |ref=}} (no spaces between assignment operator and pipe or closing brace)&lt;br /&gt;
				ref = mw.text.trim (ref);										-- something, could be just whitespace, so trim leading / trailing whitespace&lt;br /&gt;
				if '' == ref then												-- trimming a string of whitespace makes an empty string&lt;br /&gt;
					ref = nil;													-- make empty ref same as missing ref&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	template_params_get (template, params);										-- build a table of template parameters and their values&lt;br /&gt;
&lt;br /&gt;
	if whitelist.wrapper_templates[template_name][1] then						-- is this wrapper a simple-default wrapper?&lt;br /&gt;
		name_default = whitelist.wrapper_templates[template_name][1];			-- get the default names&lt;br /&gt;
		date_default = whitelist.wrapper_templates[template_name][2];			-- get the default date&lt;br /&gt;
	else&lt;br /&gt;
		vol = params['volume'] or 'default';&lt;br /&gt;
		if not whitelist.wrapper_templates[template_name][vol] then				-- make sure this volume exists&lt;br /&gt;
			vol = 'default';													-- doesn't exist, use default volume&lt;br /&gt;
		end&lt;br /&gt;
		name_default = whitelist.wrapper_templates[template_name][vol][1];		-- get the default names&lt;br /&gt;
		date_default = whitelist.wrapper_templates[template_name][vol][2];		-- get the default date&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if 'harv' == ref  or not ref then											-- |ref=harv specified or |ref= missing or empty&lt;br /&gt;
		anchor_id = names_get (params, aliases_contributor) or					-- get contributor, author, or editor names&lt;br /&gt;
			names_get (params, aliases_author) or&lt;br /&gt;
			vnames_get (params, 'vauthors') or									-- |vauthors=&lt;br /&gt;
			names_get (params, aliases_editor) or&lt;br /&gt;
			vnames_get (params, 'veditors') or									-- |veditors=&lt;br /&gt;
			name_default;														-- default names from whitelist&lt;br /&gt;
--			whitelist.wrapper_templates[template_name][1];						-- default names from whitelist&lt;br /&gt;
&lt;br /&gt;
		if '' == date then														-- if date not provided in the template&lt;br /&gt;
			date = date_default;												-- use the default date from whitelist&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if anchor_id then														-- if names were gotten&lt;br /&gt;
			anchor_id = 'CITEREF' .. anchor_id .. date;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif ref:match ('%b{}') then												-- ref holds a template&lt;br /&gt;
		anchor_id = sfnref_get (ref);											-- returns content of {{sfnref}} or {{harvid}}; nil else&lt;br /&gt;
&lt;br /&gt;
	elseif 'none' == ref then													-- |ref=none&lt;br /&gt;
		return nil;																-- anchor id expicitly suppressed&lt;br /&gt;
		&lt;br /&gt;
	else&lt;br /&gt;
		anchor_id = ref;														-- |ref=&amp;lt;text&amp;gt; may match an anchor id override value in {{harv}} template |ref= parameter&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return anchor_id;															-- anchor_id text; nil else&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A N C H O R _ I D _ M A K E _ C S 1 2 &amp;gt;----------------------------------------&lt;br /&gt;
&lt;br /&gt;
for cs1|2 template and cs1-like templates&lt;br /&gt;
&lt;br /&gt;
inspect |ref= to decide what to do:&lt;br /&gt;
	|ref=										- empty or missing: get names and date from template parameters; all cs1|2 create CITEREF anchor IDs&lt;br /&gt;
	|ref=harv									- get names and date from template parameters&lt;br /&gt;
	|ref={{SfnRef|name|name|name|name|year}}	- assemble an anchor id from {{sfnref}} positional parameters&lt;br /&gt;
	|ref={{Harvid|name|name|name|name|year}}	- assemble an anchor id from {{harvid}} positional parameters&lt;br /&gt;
	|ref=none									- skip; do nothing because an anchor id intentionally suppressed; TODO: keep with a type code of '0'?&lt;br /&gt;
	|ref=&amp;lt;text&amp;gt;									- save param value because may match an anchor id override value in {{harv}} template |ref= parameter or {{harvc}} |id= parameter&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function anchor_id_make_cs12 (template)&lt;br /&gt;
	local ref;																	-- content of |ref=&lt;br /&gt;
	local template_name;														-- name of the template&lt;br /&gt;
	local anchor_id;															-- the assembled anchor id from this template&lt;br /&gt;
	local date;&lt;br /&gt;
	local params = {};															-- table of template parameters&lt;br /&gt;
	&lt;br /&gt;
	template_name = template_name_get (template);								-- get first char uppercase trimmed template name; ignore subpages ~/new, ~/sandbox&lt;br /&gt;
	if not template_name or template_skip[template_name] then&lt;br /&gt;
		return nil;																-- could not extract template name from (possibly corrupted) template (extraneous opening { in the template will cause this)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if redirects_patent[template_name] then&lt;br /&gt;
		date = date_get (template, alias_patterns_patent_date);					-- get date; done here because might be in {{date}} &lt;br /&gt;
	else&lt;br /&gt;
		date = date_get (template, alias_patterns_date);&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	ref = template:match ('|%s*ref%s*=%s*(%b{})');								-- first look for |ref={{sfnref}} or |ref={{harvid}} because we will strip templates from the cs1|2 template&lt;br /&gt;
	if not ref then&lt;br /&gt;
		if template:match ('|%s*ref%s*=([^|}]+)') then							-- |ref={{template}} not found; if there is a |ref= param with an assigned value&lt;br /&gt;
			ref = template:match ('|%s*ref%s*=([^|}]+)');						-- get the value; whitespace is a 'value'&lt;br /&gt;
			if ref then															-- nil when |ref=|... or when |ref=}} (no spaces between assignment operator and pipe or closing brace)&lt;br /&gt;
				ref = mw.text.trim (ref);										-- something, could be just whitespace, so trim leading / trailing whitespace&lt;br /&gt;
				if '' == ref then												-- trimming a string of whitespace makes an empty string&lt;br /&gt;
					ref = nil;													-- make empty ref same as missing ref&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	template_params_get (template, params);										-- build a table of template parameters and their values&lt;br /&gt;
&lt;br /&gt;
	if not ref then																-- |ref= not set, might be cite LSA which doesn't support |ref=&lt;br /&gt;
		if 'cite lsa' == template_name then&lt;br /&gt;
			return 'CITEREF' .. (params.last or '') .. (params.year or '');		-- cite LSA always creates an anchor id using only |last= and |year= (no aliases)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if 'harv' == ref  or not ref then											-- |ref=harv specified or |ref= missing or empty&lt;br /&gt;
		if redirects_patent[template_name] then									-- if this is a cite patent template&lt;br /&gt;
			anchor_id = names_get (params, aliases_inventor);					-- inventor names only&lt;br /&gt;
		else																	-- cs1|2 template&lt;br /&gt;
			anchor_id = names_get (params, aliases_contributor) or				-- get contributor, author, or editor names&lt;br /&gt;
				names_get (params, aliases_author) or&lt;br /&gt;
				vnames_get (params, 'vauthors') or								-- |vauthors=&lt;br /&gt;
				names_get (params, aliases_editor) or&lt;br /&gt;
				vnames_get (params, 'veditors');								-- |veditors=&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if anchor_id then														-- if names were gotten&lt;br /&gt;
			anchor_id = 'CITEREF' .. anchor_id .. date;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif ref:match ('%b{}') then												-- ref holds a template&lt;br /&gt;
		anchor_id = sfnref_get (ref);											-- returns content of {{sfnref}} or {{harvid}}; nil else&lt;br /&gt;
&lt;br /&gt;
	elseif 'none' == ref and not redirects_patent[template_name] then			-- |ref=none; not supported by cite patent&lt;br /&gt;
		return nil;																-- anchor id expicitly suppressed&lt;br /&gt;
		&lt;br /&gt;
	else&lt;br /&gt;
		anchor_id = ref;														-- |ref=&amp;lt;text&amp;gt; may match an anchor id override value in {{harv}} template |ref= parameter&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return anchor_id;															-- anchor_id text; nil else&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; L I S T _ A D D &amp;gt;--------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
adds an &amp;lt;item&amp;gt; to &amp;lt;list&amp;gt; table; for anchor IDs, the boolean &amp;lt;encode&amp;gt; argument must be set true; no return value&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function list_add (item, list, encode)&lt;br /&gt;
	if item then																-- if there was an item&lt;br /&gt;
		if encode then															-- for anchor IDs ...&lt;br /&gt;
			item = mw.uri.anchorEncode (item);									-- encode to remove wikimarkup, convert spaces to underscores etc&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if not list[item] then													-- if not already saved&lt;br /&gt;
			list[item] = 1;														-- save it &lt;br /&gt;
		else																	-- here when this item already saved&lt;br /&gt;
			list[item] = list[item] + 1;										-- to indicate that there are multiple items&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A N C H O R _ I D _ M A K E _ A N C H O R &amp;gt;------------------------------------&lt;br /&gt;
&lt;br /&gt;
make anchor IDs from {{anchor}}; there may be more than one because {{anchor}} is not limited to the number of&lt;br /&gt;
anchors it may hold.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function anchor_id_make_anchor (template, anchor_id_list)&lt;br /&gt;
	template = template:gsub ('^{{[^|]+|', ''):gsub ('}}$', '', 1);				-- remove outer {{ and }} and template name&lt;br /&gt;
&lt;br /&gt;
	template = wikilink_strip (template);										-- strip any wikilink markup (there shouldn't be any but just in case)&lt;br /&gt;
	&lt;br /&gt;
	local params = {};&lt;br /&gt;
	local anchor_id;&lt;br /&gt;
	&lt;br /&gt;
	for param in template:gmatch ('%b{}') do									-- loop through the template; remove and save templates (presumed to be sfnref or harvid)&lt;br /&gt;
		table.insert (params, param);											-- save it&lt;br /&gt;
		template = template:gsub ('%b{}', '', 1);								-- remove it from source template&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for _, t in ipairs (params) do												-- spin through the templates in params&lt;br /&gt;
		anchor_id = sfnref_get (t);												-- attempt to decode {{sfnref}} and {{harvid}}&lt;br /&gt;
		if anchor_id then														-- nil when not {{sfnref}} or {{harvid}}&lt;br /&gt;
			list_add (anchor_id, anchor_id_list, true);							-- add anchor ID to the list&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	template = template:gsub ('|%s*|', '|');									-- when pipe follows pipe with or without white space, remove extraneous pipe&lt;br /&gt;
	template = template:gsub ('^|', ''):gsub('|$', '');							-- remove extraneous leading and trailing pipes&lt;br /&gt;
&lt;br /&gt;
	params = mw.text.split (template, '%s*|%s*');								-- split at the pipe and remove extraneous space characters&lt;br /&gt;
	&lt;br /&gt;
	for _, t in ipairs (params) do												-- spin through the anchor IDs&lt;br /&gt;
		anchor_id = mw.text.trim (t);											-- trim white space&lt;br /&gt;
		if '' ~= anchor_id then													-- should always have something&lt;br /&gt;
			list_add (anchor_id, anchor_id_list, true);							-- add anchor ID to the list&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T E M P L A T E _ L I S T _ A D D &amp;gt;--------------------------------------------&lt;br /&gt;
&lt;br /&gt;
makes a list of templates use in the article.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function template_list_add (template)&lt;br /&gt;
	local template = template:match ('{{%s*(.-)[|}]');							-- keep the case of the template - this is different from template_name_get()&lt;br /&gt;
	if template and not template:match ('^#') then								-- found a template or magic word; ignore magic words&lt;br /&gt;
		template=mw.text.trim (template);										-- trim whitespace&lt;br /&gt;
		template = Lang_obj:ucfirst (template);									-- first character in template name must be uppercase (same as canonical template name) TODO: better way to do this?&lt;br /&gt;
		list_add (template, template_list);										-- add to list with (unused) tally&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A N C H O R _ I D _ L I S T _ M A K E &amp;gt;----------------------------------------&lt;br /&gt;
&lt;br /&gt;
makes a list of anchor ids from cs1|2, cs1|2-like, vcite xxx, harvc, anchor, wikicite templates&lt;br /&gt;
&lt;br /&gt;
Because cs1|2 wrapper templates can, and often do, hide the author and date parameters inside the wrapper,&lt;br /&gt;
these parameters are not available in the article's wikisource so {{harv}}, {{sfn}}, and {{harvc}} templates that&lt;br /&gt;
link correctly to those wrapper templates will incorrectly show error messages.  Use |ignore-err=yes in the {{harv}},&lt;br /&gt;
{{sfn}}, and {{harvc}} templates to supress the error message.&lt;br /&gt;
&lt;br /&gt;
creates a list of templates used in the article for use with the whitelist&lt;br /&gt;
&lt;br /&gt;
creates a list of article-local whitelisted anchor IDs from {{sfn whitelist}}&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function anchor_id_list_make ()&lt;br /&gt;
	article_content_get ();														-- attempt to get this article's content&lt;br /&gt;
&lt;br /&gt;
	if '' == Article_content then												-- when there is no article content&lt;br /&gt;
		return '';																-- no point in continuing&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local template;																-- place to hold the template that we found&lt;br /&gt;
	local template_name;&lt;br /&gt;
	local anchor_id;															-- place to hold an anchor id as it is extracted / decoded&lt;br /&gt;
&lt;br /&gt;
	local find_pattern = '%f[{]{{[^{]';&lt;br /&gt;
	local tstart, tend = Article_content:find (find_pattern);					-- find the first template; do not find template variables: {{{template var|}}} &lt;br /&gt;
&lt;br /&gt;
	while tstart do&lt;br /&gt;
		template = Article_content:match ('%b{}', tstart);						-- get the whole template&lt;br /&gt;
		if not template then&lt;br /&gt;
			break;																-- template is nil for some reason (last template missing closing }} for example) so declare ourselves done&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		template_name = template_name_get (template);							-- get first char uppercase trimmed template name; ignore subpages ~/new, ~/sandbox&lt;br /&gt;
		template_list_add (template);											-- add this template's name to the list&lt;br /&gt;
&lt;br /&gt;
		if data.known_templates_cs12 [template_name] then&lt;br /&gt;
			anchor_id = anchor_id_make_cs12 (template);							-- extract an anchor id from this template&lt;br /&gt;
			list_add (anchor_id, anchor_id_list, true)&lt;br /&gt;
&lt;br /&gt;
		elseif data.known_templates_vcite [template_name] then&lt;br /&gt;
			local ref = template:match ('|%s*ref%s*=%s*(%b{})');				-- first look for |ref={{sfnref}} or |ref={{harvid}} because we will strip templates from the vcite template&lt;br /&gt;
			if ref then															-- |ref={{template}}&lt;br /&gt;
				anchor_id = sfnref_get (ref);									-- returns content of {{sfnref}} or {{harvid}}; nil else&lt;br /&gt;
				list_add (anchor_id, anchor_id_list, true);&lt;br /&gt;
			else&lt;br /&gt;
				local params = {};&lt;br /&gt;
&lt;br /&gt;
				template_params_get (template, params);							-- build a table of template parameters and their values&lt;br /&gt;
&lt;br /&gt;
				anchor_id = params['ref'];										-- when both set, vcite uses value from |ref=&lt;br /&gt;
				if not anchor_id and params['harvid'] then&lt;br /&gt;
					anchor_id = 'CITEREF' .. params['harvid'];					-- in vcite, |harvid= auto-adds 'CITEREF' prefix to the value in |harvid=&lt;br /&gt;
				end&lt;br /&gt;
				list_add (anchor_id, anchor_id_list, true);&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		elseif data.known_templates_harvc [template_name] then&lt;br /&gt;
			anchor_id = anchor_id_make_harvc (template);						-- extract an anchor id from this template&lt;br /&gt;
			list_add (anchor_id, anchor_id_list, true);&lt;br /&gt;
			&lt;br /&gt;
		elseif data.known_templates_wikicite [template_name] then&lt;br /&gt;
			local ref = template:match ('|%s*ref%s*=%s*(%b{})');				-- first look for |ref={{sfnref}} or |ref={{harvid}}&lt;br /&gt;
			&lt;br /&gt;
			if ref then&lt;br /&gt;
				anchor_id = sfnref_get (ref);&lt;br /&gt;
	&lt;br /&gt;
			elseif template:match ('|%s*ref%s*=([^|}]+)') then&lt;br /&gt;
				anchor_id = template:match ('|%s*ref%s*=([^|}]+)');				-- plain-text&lt;br /&gt;
	&lt;br /&gt;
			elseif template:match ('|%s*id%s*=%s*(%b{})') then&lt;br /&gt;
				ref = template:match ('|%s*id%s*=%s*(%b{})');&lt;br /&gt;
				anchor_id = 'Reference-' .. sfnref_get (ref);&lt;br /&gt;
&lt;br /&gt;
			elseif template:match ('|%s*id%s*=([^|}]+)') then&lt;br /&gt;
				anchor_id = 'Reference-' .. template:match ('|%s*id%s*=([^|}]+)');	-- plain-text&lt;br /&gt;
&lt;br /&gt;
			else&lt;br /&gt;
				anchor_id = nil;												-- no matches, ensure that anchor_id has no value&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			if anchor_id then&lt;br /&gt;
				list_add (anchor_id, anchor_id_list, true);&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		elseif data.known_templates_anchor [template_name] then&lt;br /&gt;
			anchor_id_make_anchor (template, anchor_id_list);					-- extract anchor ids from this template if any&lt;br /&gt;
		&lt;br /&gt;
		elseif data.known_templates_sfn_whitelist [template_name] then&lt;br /&gt;
			template = template:gsub ('^{{[^|]+|', ''):gsub ('}}$', '', 1);		-- remove outer {{ and }} and template name&lt;br /&gt;
			template = mw.text.trim (template, '%s|');							-- trim leading trailing white space and pipes&lt;br /&gt;
			template = mw.text.split (template, '%s*|%s*');						-- make a table of the template's parameters&lt;br /&gt;
&lt;br /&gt;
			for _, anchor_id in ipairs (template) do							-- spin through this template's parameter&lt;br /&gt;
				if '' ~= anchor_id and not article_whitelist[anchor_id] then&lt;br /&gt;
					anchor_id = mw.uri.anchorEncode (anchor_id)&lt;br /&gt;
					article_whitelist[anchor_id] = 1;							-- add to the whitelist&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		&lt;br /&gt;
		elseif template_name and whitelist.wrapper_templates[template_name] then&lt;br /&gt;
			anchor_id = anchor_id_make_wrapper (template);						-- extract an anchor id from this template if possible&lt;br /&gt;
			list_add (anchor_id, anchor_id_list, true);&lt;br /&gt;
&lt;br /&gt;
		elseif template_name and template_name:match ('^Cit[ea]') then			-- not known, not known wrapper; last gasp, try as cs1-like&lt;br /&gt;
			anchor_id = anchor_id_make_cs12 (template);							-- extract an anchor id from this template if possible&lt;br /&gt;
			list_add (anchor_id, anchor_id_list, true);&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		tstart, tend = Article_content:find (find_pattern, tend);				-- search for another template; begin at end of last search&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
mw.logObject (anchor_id_list, 'anchor_id_list');&lt;br /&gt;
mw.logObject (template_list, 'template_list');&lt;br /&gt;
mw.logObject (article_whitelist, 'article_whitelist');&lt;br /&gt;
&lt;br /&gt;
	return anchor_id_list;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E X P O R T E D _ T A B L E S &amp;gt;------------------------------------------------&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	anchor_id_list = anchor_id_list_make(),										-- table of anchor ids available in this article&lt;br /&gt;
	article_whitelist = article_whitelist,										-- table of anchor ids with false-positive error message to be suppressed&lt;br /&gt;
	template_list = template_list,												-- table of templates used in this article&lt;br /&gt;
	}&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%A8%A1%E5%9D%97:Footnotes/whitelist&amp;diff=35657</id>
		<title>模块:Footnotes/whitelist</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%A8%A1%E5%9D%97:Footnotes/whitelist&amp;diff=35657"/>
		<updated>2024-07-04T08:38:32Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：建立内容为“--[[--------------------------&amp;lt; W R A P P E R _ T E M P L A T E _ D E F A U L T S &amp;gt;----------------------------  A list of wrapper templates by their canonical na…”的新页面&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;--[[--------------------------&amp;lt; W R A P P E R _ T E M P L A T E _ D E F A U L T S &amp;gt;----------------------------&lt;br /&gt;
&lt;br /&gt;
A list of wrapper templates by their canonical names – spelling and capitalization is important.  Each wrapper&lt;br /&gt;
template has a table of two values: [1] is the wrapper's default name-list as it is used in an anchor ID; [2] is&lt;br /&gt;
the default year.  This table is indexed indirectly through the wrapper_templates table.&lt;br /&gt;
&lt;br /&gt;
This table is not available externally.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local wrapper_template_defaults = {												-- keys are canonical template names&lt;br /&gt;
	['Americana'] = {'Rines', '1920'},											-- tables with default name and default year&lt;br /&gt;
	['Cite EB1911'] = {'Chisholm', '1911'},										-- tables with default name and default year&lt;br /&gt;
	['EB1911'] = {'Chisholm', '1911'},&lt;br /&gt;
	['EI3'] = {'FleetKrämerMatringeNawas', ''},&lt;br /&gt;
	['ODNB'] = {'', ''},														-- there is no default anchor ID; this forces evaluation of {{cite ODNB}} redirects&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; W R A P P E R _ T E M P L A T E _ D E F A U L T S _ V O L &amp;gt;--------------------&lt;br /&gt;
&lt;br /&gt;
For wrapper templates that use |volume= to specify default name (often editor names) and year.  Wrapper templates&lt;br /&gt;
are indexed by their canonical names – spelling and capitalization is important.  Each wrapper template has a table&lt;br /&gt;
of values for every volume.  Volumes may be indexed by Arabic or Roman numerals.  Each volume index has a table of&lt;br /&gt;
twp values&amp;quot; [1] is the wrapper's default name-list as it is used in an anchor ID; [2] is the default year.  Each&lt;br /&gt;
wrapper template in this table must have a ['default'] key for those occasions when |volume= is omitted or empty.&lt;br /&gt;
This table is indexed indirectly through the wrapper_templates table.&lt;br /&gt;
&lt;br /&gt;
This table is not available externally.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local wrapper_template_defaults_vol = {											-- primary keys are canonical template names; TODO: do these keys have to be canonical template names?&lt;br /&gt;
	['Cite Catholic Encyclopedia'] = {											-- secondary keys are volume&lt;br /&gt;
		['1'] = {'Herbermann', '1907'},&lt;br /&gt;
		['2'] = {'Herbermann', '1907'},&lt;br /&gt;
		['3'] = {'Herbermann', '1908'},&lt;br /&gt;
		['4'] = {'Herbermann', '1908'},&lt;br /&gt;
		['5'] = {'Herbermann', '1909'},&lt;br /&gt;
		['6'] = {'Herbermann', '1909'},&lt;br /&gt;
		['7'] = {'Herbermann', '1910'},&lt;br /&gt;
		['8'] = {'Herbermann', '1910'},&lt;br /&gt;
		['9'] = {'Herbermann', '1910'},&lt;br /&gt;
		['10'] = {'Herbermann', '1911'},&lt;br /&gt;
		['11'] = {'Herbermann', '1911'},&lt;br /&gt;
		['12'] = {'Herbermann', '1911'},&lt;br /&gt;
		['13'] = {'Herbermann', '1912'},&lt;br /&gt;
		['14'] = {'Herbermann', '1912'},&lt;br /&gt;
		['15'] = {'Herbermann', '1912'},&lt;br /&gt;
		['default'] = {'Herbermann', '1913'},&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	['Cite EB9'] = {&lt;br /&gt;
		['1'] = {'Baynes', '1878'},			['I'] = {'Baynes', '1878'},&lt;br /&gt;
		['2'] = {'Baynes', '1878'},			['II'] = {'Baynes', '1878'},&lt;br /&gt;
		['3'] = {'Baynes', '1878'},			['III'] = {'Baynes', '1878'},&lt;br /&gt;
		['4'] = {'Baynes', '1878'},			['IV'] = {'Baynes', '1878'},&lt;br /&gt;
		['5'] = {'Baynes', '1878'},			['V'] = {'Baynes', '1878'},&lt;br /&gt;
		['6'] = {'Baynes', '1878'},			['VI'] = {'Baynes', '1878'},&lt;br /&gt;
		['7'] = {'Baynes', '1878'},			['VII'] = {'Baynes', '1878'},&lt;br /&gt;
		['8'] = {'Baynes', '1878'},			['VIII'] = {'Baynes', '1878'},&lt;br /&gt;
		['9'] = {'Baynes', '1879'},			['IX'] = {'Baynes', '1879'},&lt;br /&gt;
		['10'] = {'Baynes', '1879'},		['X'] = {'Baynes', '1879'},&lt;br /&gt;
		['11'] = {'BaynesSmith', '1880'},	['XI'] = {'BaynesSmith', '1880'},&lt;br /&gt;
		['12'] = {'BaynesSmith', '1881'},	['XII'] = {'BaynesSmith', '1881'},&lt;br /&gt;
		['13'] = {'BaynesSmith', '1881'},	['XIII'] = {'BaynesSmith', '1881'},&lt;br /&gt;
		['14'] = {'BaynesSmith', '1882'},	['XIV'] = {'BaynesSmith', '1882'},&lt;br /&gt;
		['15'] = {'BaynesSmith', '1883'},	['XV'] = {'BaynesSmith', '1883'},&lt;br /&gt;
		['16'] = {'BaynesSmith', '1883'},	['XVI'] = {'BaynesSmith', '1883'},&lt;br /&gt;
		['17'] = {'BaynesSmith', '1884'},	['XVII'] = {'BaynesSmith', '1884'},&lt;br /&gt;
		['18'] = {'BaynesSmith', '1885'},	['XVIII'] = {'BaynesSmith', '1885'},&lt;br /&gt;
		['19'] = {'BaynesSmith', '1885'},	['XIX'] = {'BaynesSmith', '1885'},&lt;br /&gt;
		['20'] = {'BaynesSmith', '1886'},	['XX'] = {'BaynesSmith', '1886'},&lt;br /&gt;
		['21'] = {'BaynesSmith', '1886'},	['XXI'] = {'BaynesSmith', '1886'},&lt;br /&gt;
		['22'] = {'BaynesSmith', '1887'},	['XXII'] = {'BaynesSmith', '1887'},&lt;br /&gt;
		['23'] = {'BaynesSmith', '1888'},	['XXIII'] = {'BaynesSmith', '1888'},&lt;br /&gt;
		['24'] = {'BaynesSmith', '1888'},	['XXIV'] = {'BaynesSmith', '1888'},&lt;br /&gt;
		['default'] = {'Baynes', '1875–1889'},&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	['Encyclopaedia of Islam, New Edition'] = {&lt;br /&gt;
		['1'] = {'GibbKramersLévi-ProvençalSchacht', '1960'},&lt;br /&gt;
		['2'] = {'LewisPellatSchacht', '1965'},&lt;br /&gt;
		['3'] = {'LewisMénagePellatSchacht', '1971'},&lt;br /&gt;
		['4'] = {'van_DonzelLewisPellatBosworth', '1978'},&lt;br /&gt;
		['5'] = {'Bosworthvan_DonzelLewisPellat', '1986'},&lt;br /&gt;
		['6'] = {'Bosworthvan_DonzelPellat', '1991'},&lt;br /&gt;
		['7'] = {'Bosworthvan_DonzelHeinrichsPellat', '1993'},&lt;br /&gt;
		['8'] = {'Bosworthvan_DonzelHeinrichsLecomte', '1995'},&lt;br /&gt;
		['9'] = {'Bosworthvan_DonzelHeinrichsLecomte', '1997'},&lt;br /&gt;
		['10'] = {'BearmanBianquisBosworthvan_Donzel', '2000'},&lt;br /&gt;
		['11'] = {'BearmanBianquisBosworthvan_Donzel', '2002'},&lt;br /&gt;
		['12'] = {'BearmanBianquisBosworthvan_Donzel', '2004'},&lt;br /&gt;
		['atlas'] = {'Brice', '1981'},&lt;br /&gt;
		['abridged'] = {'van_Donzel', '1994'},&lt;br /&gt;
		['default'] = {'BearmanBianquisBosworthvan_Donzel', '1960–2005'},&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	['New Cambridge Medieval History'] = {&lt;br /&gt;
		['1'] = {'Fouracre', '2005'},&lt;br /&gt;
		['2'] = {'McKitterick', '1995'},&lt;br /&gt;
		['3'] = {'Reuter', '2000'},&lt;br /&gt;
		['4a'] = {'LuscombeRiley-Smith', '2004'},&lt;br /&gt;
		['4b'] = {'LuscombeRiley-Smith', '2004'},&lt;br /&gt;
		['5'] = {'Abulafia', '1999'},&lt;br /&gt;
		['6'] = {'Jones', '2000'},&lt;br /&gt;
		['7'] = {'Allmand', '1998'},&lt;br /&gt;
		['default'] = {'', '1995–2005'},&lt;br /&gt;
		},&lt;br /&gt;
&lt;br /&gt;
	['The History of al-Tabari'] = {&lt;br /&gt;
		['1'] = {'Rosenthal', '1989'},&lt;br /&gt;
		['2'] = {'Brinner', '1986'},&lt;br /&gt;
		['3'] = {'Brinner', '1991'},&lt;br /&gt;
		['4'] = {'Perlmann', '1987'},&lt;br /&gt;
		['5'] = {'Bosworth', '1999'},&lt;br /&gt;
		['6'] = {'WattMcDonald', '1989'},&lt;br /&gt;
		['7'] = {'McDonald', '1987'},&lt;br /&gt;
		['8'] = {'Fishbein', '1997'},&lt;br /&gt;
		['9'] = {'Poonawala', '1990'},&lt;br /&gt;
		['10'] = {'Donner', '1993'},&lt;br /&gt;
		['11'] = {'Blankinship', '1993'},&lt;br /&gt;
		['12'] = {'Friedmann', '1992'},&lt;br /&gt;
		['13'] = {'Juynboll', '1989'},&lt;br /&gt;
		['14'] = {'Smith', '1994'},&lt;br /&gt;
		['15'] = {'Humphreys', '1990'},&lt;br /&gt;
		['16'] = {'Brockett', '1997'},&lt;br /&gt;
		['17'] = {'Hawting', '1996'},&lt;br /&gt;
		['18'] = {'Morony', '1987'},&lt;br /&gt;
		['19'] = {'Howard', '1990'},&lt;br /&gt;
		['20'] = {'Hawting', '1989'},&lt;br /&gt;
		['21'] = {'Fishbein', '1990'},&lt;br /&gt;
		['22'] = {'Rowson', '1989'},&lt;br /&gt;
		['23'] = {'Hinds', '1990'},&lt;br /&gt;
		['24'] = {'Powers', '1989'},&lt;br /&gt;
		['25'] = {'Blankinship', '1989'},&lt;br /&gt;
		['26'] = {'Hillenbrand', '1989'},&lt;br /&gt;
		['27'] = {'Williams', '1985'},&lt;br /&gt;
		['28'] = {'McAuliffe', '1995'},&lt;br /&gt;
		['29'] = {'Kennedy', '1990'},&lt;br /&gt;
		['30'] = {'Bosworth', '1989'},&lt;br /&gt;
		['31'] = {'Fishbein', '1992'},&lt;br /&gt;
		['32'] = {'Bosworth', '1987'},&lt;br /&gt;
		['33'] = {'Bosworth', '1991'},&lt;br /&gt;
		['34'] = {'Kraemer', '1989'},&lt;br /&gt;
		['35'] = {'Saliba', '1985'},&lt;br /&gt;
		['36'] = {'Waines', '1992'},&lt;br /&gt;
		['37'] = {'Fields', '1987'},&lt;br /&gt;
		['38'] = {'Rosenthal', '1985'},&lt;br /&gt;
		['39'] = {'Landau-Tasseron', '1998'},&lt;br /&gt;
		['40'] = {'Popovkin', '2007'},&lt;br /&gt;
		['default'] = {'Yarshater', '1985–2007'},&lt;br /&gt;
		},&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; W R A P P E R _ T E M P L A T E S &amp;gt;--------------------------------------------&lt;br /&gt;
&lt;br /&gt;
A list of wrapper templates and their redirects – spelling and capitalization is important; first character is&lt;br /&gt;
always uppercase.  Each wrapper template gets its value from a k/v pair in the wrapper_template_defaults table.&lt;br /&gt;
&lt;br /&gt;
article reader queries this table to see if template_name is a wrapper template&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local wrapper_templates = {														-- keys are names of wrapper templates and their redirects&lt;br /&gt;
	['Americana'] = wrapper_template_defaults['Americana'],						-- canonical name; this template calls Cite Americana&lt;br /&gt;
	&lt;br /&gt;
	['Catholic Encyclopedia'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],&lt;br /&gt;
		['1913Catholic'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],&lt;br /&gt;
		['Catholic'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],&lt;br /&gt;
		['Catholic encyclopedia'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],&lt;br /&gt;
		['CatholicEncyclopedia'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],&lt;br /&gt;
		['CE13'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],&lt;br /&gt;
		['CE1913'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],&lt;br /&gt;
&lt;br /&gt;
	['Cite Americana'] = wrapper_template_defaults['Americana'],				-- canonical name&lt;br /&gt;
&lt;br /&gt;
	['Cite Catholic Encyclopedia'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],&lt;br /&gt;
		['CathEncy'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],&lt;br /&gt;
		['Cite Catholic Encyclopædia'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],&lt;br /&gt;
		['Cite CE1913'] = wrapper_template_defaults_vol['Cite Catholic Encyclopedia'],&lt;br /&gt;
&lt;br /&gt;
	['Cite EB1911'] = wrapper_template_defaults['Cite EB1911'],					-- canonical name&lt;br /&gt;
		['1911EB'] = wrapper_template_defaults['Cite EB1911'],					-- redirects&lt;br /&gt;
		['EB1911 cite'] = wrapper_template_defaults['Cite EB1911'],&lt;br /&gt;
		['Wikisource1911Enc Citation'] = wrapper_template_defaults['Cite EB1911'],&lt;br /&gt;
		['Wikisource1911Enc citation'] = wrapper_template_defaults['Cite EB1911'],&lt;br /&gt;
&lt;br /&gt;
	['Cite EB9'] = wrapper_template_defaults_vol['Cite EB9'],					-- canonical&lt;br /&gt;
		['Eb9'] = wrapper_template_defaults_vol['Cite EB9'],&lt;br /&gt;
&lt;br /&gt;
	['Cite ODNB'] = wrapper_template_defaults['ODNB'],							-- canonical&lt;br /&gt;
		['Cite odnb'] = wrapper_template_defaults['ODNB'],&lt;br /&gt;
		['DNBweb'] = wrapper_template_defaults['ODNB'],&lt;br /&gt;
		['OBDNweb'] = wrapper_template_defaults['ODNB'],&lt;br /&gt;
		['ODNB'] = wrapper_template_defaults['ODNB'],&lt;br /&gt;
		['ODNBref'] = wrapper_template_defaults['ODNB'],&lt;br /&gt;
		['ODNBweb'] = wrapper_template_defaults['ODNB'],&lt;br /&gt;
		&lt;br /&gt;
	['EB1911'] = wrapper_template_defaults['EB1911'],							-- canonical name; this template calls Cite EB1911&lt;br /&gt;
		['1911'] = wrapper_template_defaults['EB1911'],							-- redirects&lt;br /&gt;
		['1911s'] = wrapper_template_defaults['EB1911'],&lt;br /&gt;
		['Britannica 1911'] = wrapper_template_defaults['EB1911'],&lt;br /&gt;
		['Encyclopedia Britannica 1911'] = wrapper_template_defaults['EB1911'],&lt;br /&gt;
		['Encyclopædia Britannica 1911'] = wrapper_template_defaults['EB1911'],&lt;br /&gt;
&lt;br /&gt;
	['EB9'] = wrapper_template_defaults_vol['Cite EB9'],						-- canonical; this template calls Cite EB9&lt;br /&gt;
	&lt;br /&gt;
	['Encyclopaedia of Islam, New Edition'] = wrapper_template_defaults_vol['Encyclopaedia of Islam, New Edition'],	-- canonical&lt;br /&gt;
		['EI2'] = wrapper_template_defaults_vol['Encyclopaedia of Islam, New Edition'],&lt;br /&gt;
	&lt;br /&gt;
	['Encyclopaedia of Islam, THREE'] = wrapper_template_defaults['EI3'],		-- canonical&lt;br /&gt;
		['EI3'] = wrapper_template_defaults['EI3'],&lt;br /&gt;
	&lt;br /&gt;
	['New Cambridge Medieval History'] = wrapper_template_defaults_vol['New Cambridge Medieval History'],	-- canonical&lt;br /&gt;
	&lt;br /&gt;
	['The History of al-Tabari'] = wrapper_template_defaults_vol['The History of al-Tabari'],		-- canonical&lt;br /&gt;
		['The History of Al-Tabari'] = wrapper_template_defaults_vol['The History of al-Tabari'],	-- redirects&lt;br /&gt;
		['The History of al-Ṭabarī'] = wrapper_template_defaults_vol['The History of al-Tabari'],	-- redirects&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T E M P L A T E _ N A M E S &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
This table holds the names of templates and the names of their redirects.  Template names must be written exactly&lt;br /&gt;
as they are named at their templatespace page.  This same also applies to redirects.&lt;br /&gt;
&lt;br /&gt;
The indexes in this table are not critical but should be short and concise.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local template_names = {&lt;br /&gt;
	['ADB'] = {'Allgemeine Deutsche Biographie', 'Cite ADB'},&lt;br /&gt;
	['Butt_Stations'] = {'Butt-Stations', 'Butt-stations'},&lt;br /&gt;
	['Cam_Hist_Iran'] = {'Cambridge History of Iran', 'The Cambridge History of Iran'},&lt;br /&gt;
	['DNB'] = {'Cite DNB', 'DNB', 'DNB Cite', 'Cite DNBSupp', 'DNBSupp', 'Cite DNB12', 'Cite DNBIE', 'DNB12', 'DNBIE', 'DNBfirst'},&lt;br /&gt;
	['ME-ref'] = {'ME-ref', 'Me-ref'},&lt;br /&gt;
	['ODB'] = {'ODB', 'Oxford Dictionary of Byzantium'},&lt;br /&gt;
	['ODLA'] = {'ODLA', 'Oxford Dictionary of Late Antiquity'},&lt;br /&gt;
	['NDB'] = {'Cite NDB', 'NDB'},&lt;br /&gt;
	['Iranica'] = {'Encyclopædia Iranica Online', 'Encyclopædia Iranica', 'Encyclopaedia Iranica', 'Cite Encyclopædia Iranica Online'},&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S P E C I A L _ P A T T E R N S &amp;gt;----------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Lua patterns.  These are scanned sequentially which costs time and processing far and above the time and processing&lt;br /&gt;
needed to index into whitelist{}.  Do not create a pattern here if a normal whitelist entry or entries can be created.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local special_patterns = {&lt;br /&gt;
	'CITEREFACAD%u%u%u?%u?%d+%u%u?',											-- {{Acad}} ID appears to be 2-4 letters, then 3 numbers, then 1-2 letters&lt;br /&gt;
	'CITEREFAHD%d+',															-- {{Cite AHD}}&lt;br /&gt;
	'CITEREFHistoric_England%d+',												-- {{National Heritage List for England}} &amp;amp; {{PastScape}}&lt;br /&gt;
	'CITEREFHistoric_Environment_Scotland%u%u%u?%u?%d',							-- {{Historic Environment Scotland}} %u can be BTL, GLD, HMPA, LB, SM&lt;br /&gt;
	'CITEREFQHR%d+',															-- {{Cite QHR}}&lt;br /&gt;
    'CITEREF[%d%a_%pöüäß→]+_at_Bach_Digital',									-- {{BDh}}&lt;br /&gt;
	'CITEREF[BR]GBl_[12]%d%d%d%-?I?I?%/%d+',									-- {{Cite Austrian gazette}} &lt;br /&gt;
	'CITEREFStGBl_[12]%d%d%d%/%d+',												-- {{Cite Austrian gazette}} &lt;br /&gt;
	'CITEREFGBlÖ_[12]%d%d%d%/%d+',												-- {{Cite Austrian gazette}} &lt;br /&gt;
	'CITEREF%a.*_USGS$',                                                        -- {{Cite gnis2}}&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; D N B _ S P E C I A L _ P A T T E R N S &amp;gt;--------------------------------------&lt;br /&gt;
&lt;br /&gt;
Lua patterns.  Note at special_patterns applies.  These for the DNB templates only; these will be tried only when&lt;br /&gt;
there is a DNB template in the article.&lt;br /&gt;
&lt;br /&gt;
Pretty much any author name during the period 1885–1901 inclusive, and 1912.&lt;br /&gt;
&lt;br /&gt;
The DNBIE was published in 1903, and Template:DNBIE says that its use is deprecated, but we do not fight that battle here.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local DNB_special_patterns = {&lt;br /&gt;
	'CITEREF%a[%a%-_\']*188[5-9]',												-- 1885–1889&lt;br /&gt;
	'CITEREF%a[%a%-_\']*189%d',													-- 1890–1899&lt;br /&gt;
	'CITEREF%a[%a%-_\']*190[0-1]',												-- 1900–1901&lt;br /&gt;
	'CITEREF%a[%a%-_\']*1903',													-- 1903 IE&lt;br /&gt;
	'CITEREF%a[%a%-_\']*1912',													-- 1912 supplement&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; W H I T E L I S T &amp;gt;------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
This is a list of anchor IDs known to be associated with specific wrapper templates.  The anchor ID serves as an&lt;br /&gt;
index into the table.  The assigned value is another table that lists the associated template and any redirects.&lt;br /&gt;
&lt;br /&gt;
Except for year disambiguators, anchor IDs must have the same form as the anchor creator makes; must be the&lt;br /&gt;
anchor-encoded form.  Remove the year disambiguator.&lt;br /&gt;
&lt;br /&gt;
Template names must be written exactly as they are named at their templatespace page.  This same also applies to&lt;br /&gt;
redirects.  Module:Footnotes reads the template names left to right so most-commonly-used template or redirect name&lt;br /&gt;
should appear first.  When there are more than one name and when those templates have various anchor IDs the template&lt;br /&gt;
namelist should be added to the template_names{} table.&lt;br /&gt;
&lt;br /&gt;
Note that references to Template:EB1911 are listed under &amp;quot;E&amp;quot; in the alphabetical list below to keep them organized.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local whitelist = {&lt;br /&gt;
----------&amp;lt; # &amp;gt;----------&lt;br /&gt;
	['CITEREF2013_Statistical_Yearbook_of_the_Republic_of_Croatia'] = {'Croatia Yearbook 2013'},&lt;br /&gt;
&lt;br /&gt;
----------&amp;lt; A &amp;gt;----------&lt;br /&gt;
	['CITEREFAGA_1884–1897'] = {'Schubert\'s compositions (references)'},&lt;br /&gt;
	['CITEREFATOC2009'] = {'ATOCConnectingCommunitiesReportS10'},&lt;br /&gt;
	['CITEREFAbaevBailey1985'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFAbbas1988'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFAbbas1989'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFAbramowitzStegun1983'] = {'Abramowitz Stegun ref'},&lt;br /&gt;
	['CITEREFActa_Lipsiensium1723'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFAdamsFranzosa2009'] = {'Adams Franzosa Introduction to Topology Pure and Applied'},&lt;br /&gt;
	['CITEREFAdaschErnstKeim1978'] = {'Adasch Topological Vector Spaces'},&lt;br /&gt;
	['CITEREFAffleck1978'] = {'Affleck-On Track'},&lt;br /&gt;
	['CITEREFAhlgrimm1969'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFAhmadiNegahban2013'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFAhrons1927'] = {'Book-Ahrons-British Steam Railway Locomotive'},&lt;br /&gt;
	['CITEREFAl-Kindi1912'] = {'The Governors and Judges of Egypt'},&lt;br /&gt;
	['CITEREFAlbert_Schumann1886'] = {'Cite ADB'},&lt;br /&gt;
	['CITEREFAlden1916'] = {'Shakespeare sonnets bibliography'},&lt;br /&gt;
	['CITEREFAldrich1969'] = {'Aldrich-LocosGER7'},&lt;br /&gt;
	['CITEREFAleksidze2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFAlexiou2010'] = {'Cite flatiron'},&lt;br /&gt;
	['CITEREFAlgar1983'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFAlgar1989'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFAlgar1990'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFAlgar2003'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFAliprantisBorder2006'] = {'Aliprantis Border Infinite Dimensional Analysis A Hitchhiker\'s Guide Third Edition'},&lt;br /&gt;
	['CITEREFAlizadeh1990'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFAllamaniPanagiotopoulou1978'] = {'Ιστορία του Ελληνικού Έθνους'},&lt;br /&gt;
	['CITEREFAllcockDaviesle_FlemingMaskelyne1968'] = {'RCTS-LocosGWR-1'},&lt;br /&gt;
	['CITEREFAllenBoddyBrownFry1970'] = {'RCTS-LocosLNER-8A', 'RCTS-LocosLNER'},&lt;br /&gt;
	['CITEREFAllenBoddyBrownFry1971'] = {'RCTS-LocosLNER-8B', 'RCTS-LocosLNER'},&lt;br /&gt;
	['CITEREFAllenBoddyBrownFry1983'] = {'RCTS-LocosLNER-8A', 'RCTS-LocosLNER'},&lt;br /&gt;
	['CITEREFAmanat1985'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFAmanat1998'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFAmanat1999'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFAmbartsumian2014'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFAmerican_Railway_Association1922'] = {'1922 Locomotive Cyclopedia'},&lt;br /&gt;
	['CITEREFAnderson1952'] = {'Naval Wars in the Levant 1559–1853'},&lt;br /&gt;
	['CITEREFAndo2000'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFAngelov2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFAnwārEIr1985'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFApostol1976'] = {'Apostol IANT'},&lt;br /&gt;
	['CITEREFArkhangel&amp;amp;#039;skiiPonomarev1984'] = {'Arkhangel\'skii Ponomarev Fundamentals of General Topology Problems and Exercises'},&lt;br /&gt;
	['CITEREFArrey_von_Dommer1875'] = {'Cite ADB'},&lt;br /&gt;
	['CITEREFAshraf2006'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFAslanianBerberian2009'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFAsmus1966'] = template_names['NDB'],&lt;br /&gt;
	['CITEREFAsmussen1985'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFAspreas1929'] = {'Great Military and Naval Encyclopaedia'},&lt;br /&gt;
	['CITEREFAtkins2007'] = {'Shakespeare sonnets bibliography'},&lt;br /&gt;
	['CITEREFAube2011'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFAudiKondevWangHuang2017'] = {'NUBASE2016'},&lt;br /&gt;
	['CITEREFAvdoyan2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFAwdry1990'] = {'Awdry-RailCo', 'Carnarvonshire Railway'},&lt;br /&gt;
	['CITEREFAzarnoosh2021'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFRamelli2018'] = {'Oxford Dictionary of Late Antiquity'},['CITEREFA_History_of_the_Crusades'] = {'Setton-A History of the Crusades'},&lt;br /&gt;
&lt;br /&gt;
----------&amp;lt; B &amp;gt;----------&lt;br /&gt;
	['CITEREFBabinger1962'] = {'DBI', 'Dizionario Biografico degli Italiani'},&lt;br /&gt;
	['CITEREFBabinger1978'] = {'Mehmed the Conqueror and His Time'},&lt;br /&gt;
	['CITEREFBabinger1992'] = {'Mehmed the Conqueror and His Time'},&lt;br /&gt;
	['CITEREFBachAgricola1754'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFBadura-SkodaBranscombe2008'] = {'Schubert\'s compositions (references)'},&lt;br /&gt;
	['CITEREFBagley1999'] = {'Cite Cambridge History of China'},&lt;br /&gt;
	['CITEREFBahramianHirtensteinGholami2013'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFBalcer1990'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBaldwin1969'] = {'Setton-A History of the Crusades'},&lt;br /&gt;
	['CITEREFBaldwin1985'] = {'Setton-A History of the Crusades'},&lt;br /&gt;
	['CITEREFBaldwin1991'] = template_names['ODB'],&lt;br /&gt;
	['CITEREFBaldwinKazhdan1991'] = template_names['ODB'],&lt;br /&gt;
	['CITEREFBaldwinTalbot1991'] = template_names['ODB'],&lt;br /&gt;
	['CITEREFBaltzer1916'] = {'Baltzer-Kolonialbahnen'},&lt;br /&gt;
	['CITEREFBanach1932'] = {'Banach Théorie des Opérations Linéaires'},&lt;br /&gt;
	['CITEREFBandy2021'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBartusis1991'] = template_names['ODB'],&lt;br /&gt;
	['CITEREFBaxter1971'] = {'Baxter-BritishLocoCat1'},&lt;br /&gt;
	['CITEREFBaxter1977'] = {'Baxter-BritishLocoCat1'},&lt;br /&gt;
	['CITEREFBaxter1978'] = {'Baxter-BritishLocoCat2A'},&lt;br /&gt;
	['CITEREFBaxter1979'] = {'Baxter-BritishLocoCat2B'},&lt;br /&gt;
	['CITEREFBaxter1982'] = {'Baxter-BritishLocoCat3A', 'Baxter-BritishLocoCat3B'},&lt;br /&gt;
	['CITEREFBaxter1984'] = {'Baxter-BritishLocoCat4'},&lt;br /&gt;
	['CITEREFBaxter1986'] = {'Baxter-BritishLocoCat5A'},&lt;br /&gt;
	['CITEREFBaxter1988'] = {'Baxter-BritishLocoCat5B'},&lt;br /&gt;
	['CITEREFBaxter2012'] = {'Baxter-BritishLocoCat6'},&lt;br /&gt;
	['CITEREFBeattie1986'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBeißwenger1991'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFBek2001'] = {'Cite Grove'},&lt;br /&gt;
	['CITEREFBelke1996'] = {'Tabula Imperii Byzantini'},&lt;br /&gt;
	['CITEREFBelkeMersisch1990'] = {'Tabula Imperii Byzantini'},&lt;br /&gt;
	['CITEREFBelkeRestle1984'] = {'Tabula Imperii Byzantini'},&lt;br /&gt;
	['CITEREFBellini2008'] = {'DBI', 'Dizionario Biografico degli Italiani'},&lt;br /&gt;
	['CITEREFBernardini2003'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBernhard_von_Poten1889'] = template_names['ADB'],&lt;br /&gt;
	['CITEREFBernhard_von_Poten1898'] = template_names['ADB'],&lt;br /&gt;
	['CITEREFBernjian2008'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFBezilla1980'] = {'Bezilla-PRR-Electric-Traction'},&lt;br /&gt;
	['CITEREFBianquis1998'] = {'The Cambridge History of Egypt', 'Cambridge History of Egypt'},&lt;br /&gt;
	['CITEREFBickerman1983'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFBierstedt1988'] = {'Bierstedt An Introduction to Locally Convex Inductive Limits'},&lt;br /&gt;
	['CITEREFBiran2009'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBirken1976'] = {'Die Provinzen des Osmanischen Reiches'},&lt;br /&gt;
	['CITEREFBivar1983'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFBivar2003'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBlair2002'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBlair2021'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBlake1966'] = {'DisraeliRef'},&lt;br /&gt;
	['CITEREFBlanken2019'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFBlankinship1994'] = {'The End of the Jihâd State', 'The End of the Jihad State'},&lt;br /&gt;
	['CITEREFBlautSchulze2008'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFBloom2007'] = {'Cite Routledge Broadway', 'Cite Broadway Routledge', 'Cite Routledge Guide to Broadway', 'Routledge Guide to Broadway'},&lt;br /&gt;
	['CITEREFBock1978'] = {'Audie-bock-directors'},&lt;br /&gt;
	['CITEREFBodde1986'] = {'Cite Cambridge History of China'},&lt;br /&gt;
	['CITEREFBoddyBrownFryHennigan1968'] = {'RCTS-LocosLNER-4', 'RCTS-LocosLNER'},&lt;br /&gt;
	['CITEREFBoddyBrownFryHennigan1975'] = {'RCTS-LocosLNER-2B', 'RCTS-LocosLNER'},&lt;br /&gt;
	['CITEREFBoddyBrownFryHennigan1977'] = {'RCTS-LocosLNER-9A', 'RCTS-LocosLNER-9B', 'RCTS-LocosLNER'},&lt;br /&gt;
	['CITEREFBoddyBrownFryHennigan1979'] = {'RCTS-LocosLNER-3A', 'RCTS-LocosLNER'},&lt;br /&gt;
	['CITEREFBoddyBrownHenniganHoole1984'] = {'RCTS-LocosLNER-6C', 'RCTS-LocosLNER'},&lt;br /&gt;
	['CITEREFBoddyBrownHenniganNeve1981'] = {'RCTS-LocosLNER-3B', 'RCTS-LocosLNER'},&lt;br /&gt;
	['CITEREFBoddyBrownNeveYeadon1983'] = {'RCTS-LocosLNER-6B', 'RCTS-LocosLNER'},&lt;br /&gt;
	['CITEREFBoddyFryHenniganHoole1990'] = {'RCTS-LocosLNER-10B', 'RCTS-LocosLNER'},&lt;br /&gt;
	['CITEREFBoddyFryHenniganProud1963'] = {'RCTS-LocosLNER-1', 'RCTS-LocosLNER'},&lt;br /&gt;
	['CITEREFBoddyNeveTeeYeadon1982'] = {'RCTS-LocosLNER-6A', 'RCTS-LocosLNER'},&lt;br /&gt;
	['CITEREFBoddyNeveYeadon1973'] = {'RCTS-LocosLNER-2A', 'RCTS-LocosLNER'},&lt;br /&gt;
	['CITEREFBody1989'] = {'Body-Railways-Vol2'},&lt;br /&gt;
	['CITEREFBon1969'] = {'La Morée franque'},&lt;br /&gt;
	['CITEREFBonebakker1997'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBonner2010'] = {'New Cambridge History of Islam'},&lt;br /&gt;
	['CITEREFBonnett2005'] = {'Bonnett Practical Rail Engineering'},&lt;br /&gt;
	['CITEREFBonporti1712'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFBooth2000'] = {'Shakespeare sonnets bibliography'},&lt;br /&gt;
	['CITEREFBorsari1964'] = {'DBI', 'Dizionario Biografico degli Italiani'},&lt;br /&gt;
	['CITEREFBossert1914'] = {'Schaff-Herzog'},&lt;br /&gt;
	['CITEREFBosworth1968'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFBosworth1975'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFBosworth1983'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBosworth1984'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBosworth1987'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBosworth1988'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBosworth1989'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBosworth1994'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBosworth1995'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBosworth1997'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBosworth1998'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBosworth1999'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBosworth2000'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBosworth2001'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBosworth2002'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBosworth2003'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBosworth2008'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBosworth2009'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBosworth2010'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBosworth2011'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBosworthCrane1984'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBottoMitchell2002'] = {'Cite ATT Broadway', 'Cite At This Theatre Broadway', 'Cite Broadway At This Theatre', 'Cite Broadway ATT'},&lt;br /&gt;
	['CITEREFBourbaki1987'] = {'Bourbaki Topological Vector Spaces', 'Bourbaki Topological Vector Spaces Part 1 Chapters 1–5'},&lt;br /&gt;
	['CITEREFBourbaki1989'] = {'Bourbaki General Topology Part I Chapters 1-4', 'Bourbaki General Topology Part II Chapters 5-10', 'Bourbaki Algebra I Chapters 1-3 Springer'},&lt;br /&gt;
	['CITEREFBourbaki1994'] = {'Bourbaki EHM'},&lt;br /&gt;
	['CITEREFBournoutian2018'] = {'Cite Armenia and Imperial Decline'},&lt;br /&gt;
	['CITEREFBowen1928'] = {'The Life and Times of Ali ibn Isa'},&lt;br /&gt;
	['CITEREFBowmanCameronGarnsey2005'] = {'Cambridge Ancient History'},&lt;br /&gt;
	['CITEREFBoyce1983'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBoyce1986'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBoyce1989'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBoyce2000'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBoyce2009'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBoyd1970'] = {'Boyd-MidWales'},&lt;br /&gt;
	['CITEREFBoyd1975'] = {'Boyd-FR1'},&lt;br /&gt;
	['CITEREFBoyd1985'] = {'Boyd-NCaerns2Penrhyn'},&lt;br /&gt;
	['CITEREFBoyd1986'] = {'Boyd-NCaerns3Dinorwic'},&lt;br /&gt;
	['CITEREFBoyd1988'] = {'Boyd-SCaerns1'},&lt;br /&gt;
	['CITEREFBoyd1989'] = {'Boyd-SCaerns2'},&lt;br /&gt;
	['CITEREFBoyd1990'] = {'Boyd-NCaerns1'},&lt;br /&gt;
	['CITEREFBradshaw1968'] = {'Bradshaw-1910April'},&lt;br /&gt;
	['CITEREFBradshaw1985'] = {'Bradshaw-1922July'},&lt;br /&gt;
	['CITEREFBradshaw2011'] = {'Bradshaw-1895December'},&lt;br /&gt;
	['CITEREFBradshaw2012'] = {'Bradshaw-1850March'},&lt;br /&gt;
	['CITEREFBrand1968'] = {'Byzantium Confronts the West'},&lt;br /&gt;
	['CITEREFBrand1991'] = {'DBI', 'ODB', 'Oxford Dictionary of Byzantium'},&lt;br /&gt;
	['CITEREFBray2010'] = {'Bray-SDJR'},&lt;br /&gt;
	['CITEREFBrett2010'] = {'New Cambridge History of Islam'},&lt;br /&gt;
	['CITEREFBriant1985'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBrosius2000'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBrown2000'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBrown2008'] = {'The Cambridge History of the Byzantine Empire'},&lt;br /&gt;
	['CITEREFBrown2021'] = {'Cite Gaia EDR3'},&lt;br /&gt;
	['CITEREFBrunner1975'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFBrunner1983'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFBrunner1984'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBrunner1986'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBryan1886'] = {'Bryan (3rd edition)'},&lt;br /&gt;
	['CITEREFBryan1889'] = {'Bryan (3rd edition)'},&lt;br /&gt;
	['CITEREFBuhle1909'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFBulliet1984'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBulookbashiNegahban2008'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFBunbury1857'] = {'DGRG'},&lt;br /&gt;
	['CITEREFBurant1987'] = {'Cite DCB'},&lt;br /&gt;
	['CITEREFBurch1911'] = {'Burch Electric Traction'},&lt;br /&gt;
	['CITEREFBurke1866'] = {'O\'Donnell family tree'},&lt;br /&gt;
	['CITEREFBurn1985'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFBurrowsWallace1999'] = {'Cite gotham'},&lt;br /&gt;
	['CITEREFBury1911'] = {'The Imperial Administrative System of the Ninth Century'},&lt;br /&gt;
	['CITEREFBusse1975'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFBusse1982'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFButcherNicholson2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFButt1995'] = template_names['Butt_Stations'],&lt;br /&gt;
	['CITEREFBöwering1995'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFBürgelMottahedeh1988'] = template_names['Iranica'],&lt;br /&gt;
&lt;br /&gt;
----------&amp;lt; C &amp;gt;----------&lt;br /&gt;
	['CITEREFCIC1983'] = {'CIC1983bib'},&lt;br /&gt;
	['CITEREFCalifornia1988'] = {'CA-Rail Passenger Development Plan-1988'},&lt;br /&gt;
	['CITEREFCallwell1999'] = {'Muni Chronology'},&lt;br /&gt;
	['CITEREFCalmard1988'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFCalmard1999'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFCaltrans1984'] = {'Countrystudy'},&lt;br /&gt;
	['CITEREFCameronWard-PerkinsWhitby2000'] = {'Cambridge Ancient History'},&lt;br /&gt;
	['CITEREFCanepa2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFCanny2008'] = {'O\'Donnell family tree'},&lt;br /&gt;
	['CITEREFCappelCutlerKazhdan1991'] = template_names['ODB'],&lt;br /&gt;
	['CITEREFCarl_von_Prantl1879'] = {'Cite ADB'},&lt;br /&gt;
	['CITEREFCarlson2010'] = {'Dlmf'},&lt;br /&gt;
	['CITEREFCaro1974'] = {'Cite Power Broker'},&lt;br /&gt;
	['CITEREFCarpenter1977'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFCarpenter1981'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFCarpenter2023'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFCarra_de_VauxHodgson1965'] = {'EI2'},&lt;br /&gt;
	['CITEREFCarter2006'] = {'Carter-RailwaysMotivePowerArgentina'},&lt;br /&gt;
	['CITEREFCasserley1968'] = {'Casserley-joint'},&lt;br /&gt;
	['CITEREFCasserleyJohnston1966'] = {'Casserley-LocoGrouping3'},&lt;br /&gt;
	['CITEREFCasserleyJohnston1974'] = {'Casserley-LocoGrouping3', 'Casserley-LocoGrouping2', '0-7110-0554-0'},&lt;br /&gt;
	['CITEREFCasway1984'] = {'O\'Donnell family tree'},&lt;br /&gt;
	['CITEREFCavanna_Ciappina2001'] = {'DBI'},&lt;br /&gt;
	['CITEREFCawley2001'] = {'Medieval Lands by Charles Cawley', 'MLCC'},&lt;br /&gt;
	['CITEREFCawley2001'] = {'Medieval Lands by Charles Cawley'},&lt;br /&gt;
	['CITEREFCawley2010'] = {'MLCC'},&lt;br /&gt;
	['CITEREFCawley2011'] = {'MLCC'},&lt;br /&gt;
	['CITEREFCawley2012'] = {'Medieval Lands by Charles Cawley'},&lt;br /&gt;
	['CITEREFChaléardChanson-JabeurBéranger2006'] = {'Chaléard-Le cdf en Afrique'},&lt;br /&gt;
	['CITEREFChambers1728'] = {'Cyclopaedia 1728'},&lt;br /&gt;
	['CITEREFChasiotis1975'] = {'Ιστορία του Ελληνικού Έθνους'},&lt;br /&gt;
	['CITEREFChaumont1985'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFChaumont1986'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFChaumont1987'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFChaumont1990'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFChaumontSchippmann1988'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFCheyneBlack1899'] = {'Biblica', 'Cite Biblica'},&lt;br /&gt;
	['CITEREFCheyneBlack1899–1903'] = {'Cite Biblica'},&lt;br /&gt;
	['CITEREFCheyneBlack1901'] = {'Cite Biblica'},&lt;br /&gt;
	['CITEREFCheyneBlack1902'] = {'Cite Biblica'},&lt;br /&gt;
	['CITEREFCheyneBlack1903'] = {'Cite Biblica'},&lt;br /&gt;
	['CITEREFChisholm1922'] = {'EB1922', 'Cite EB1922'},&lt;br /&gt;
	['CITEREFChittick1997'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFChkeidze2001'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFChoniates1984'] = {'O City of Byzantium'},&lt;br /&gt;
	['CITEREFChrista_Jost1999'] = template_names['NDB'],&lt;br /&gt;
	['CITEREFChung1994'] = {'Country study'},&lt;br /&gt;
	['CITEREFChurchmanHurst2001'] = {'Churchman &amp;amp; Hurst Railways of New Zealand'},&lt;br /&gt;
	['CITEREFChurchman_&amp;amp;amp;_Hurst2001'] = {'Churchman &amp;amp; Hurst Railways of New Zealand'},&lt;br /&gt;
	['CITEREFChurella2013'] = {'Churella-PRR-1'},&lt;br /&gt;
	['CITEREFClementsMcMahon2008'] = {'ClementsMcMahon-GSR Locomotives'},&lt;br /&gt;
	['CITEREFClinker1978'] = {'Clinker-Stations'},&lt;br /&gt;
	['CITEREFClinker1988'] = {'Clinker-Stations'},&lt;br /&gt;
	['CITEREFCoates1990'] = {'Coates-Reading'},&lt;br /&gt;
	['CITEREFColbyWilliams1916'] = {'New International Encyclopedia', 'NIE'},&lt;br /&gt;
	['CITEREFColledgeWarlow2006'] = {'Colledge', 'Cite Colledge2006'},&lt;br /&gt;
	['CITEREFColledgeWarlow2010'] = {'Cite Colledge2010'},&lt;br /&gt;
	['CITEREFCollins2016'] = {'Cite Collins 2016'},&lt;br /&gt;
	['CITEREFColvin1947'] = {'Colvin1947'},&lt;br /&gt;
	['CITEREFConolly1998'] = {'IanAllan-PreGroup-Atlas1998'},&lt;br /&gt;
	['CITEREFConway1990'] = {'Conway A Course in Functional Analysis'},&lt;br /&gt;
	['CITEREFCosentino2008'] = {'DBI'},&lt;br /&gt;
	['CITEREFCoulthard-Clark2002'] = {'Australian Dictionary of Biography'},&lt;br /&gt;
	['CITEREFCousin1910'] = {'A Short Biographical Dictionary of English Literature', 'Cite SBDEL'},&lt;br /&gt;
	['CITEREFCoverdale_&amp;amp;_Colpitts1946'] = {'Coverdale &amp;amp; Colpitts 1', 'Coverdale &amp;amp; Colpitts 2', 'Coverdale &amp;amp; Colpitts 3'},&lt;br /&gt;
	['CITEREFCox1967'] = {'Cox-Upper Darby'},&lt;br /&gt;
	['CITEREFCox2011'] = {'Cox-Dixie'},&lt;br /&gt;
	['CITEREFCrevier1993'] = {'Crevier 1993'},&lt;br /&gt;
	['CITEREFCrockett2007'] = {'Australian Dictionary of Biography'},&lt;br /&gt;
	['CITEREFCroke2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFCrone1980'] = {'Slaves on Horses'},&lt;br /&gt;
	['CITEREFCrone2003'] = {'Slaves on Horses'},&lt;br /&gt;
	['CITEREFCronin2011'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFCroughtonKidnerYoung1982'] = {'Croughton-PrivateStations'},&lt;br /&gt;
	['CITEREFCruickshanks1970'] = {'HistoryofParliament'},&lt;br /&gt;
	['CITEREFCsászár1978'] = {'Császár General Topology'},&lt;br /&gt;
	['CITEREFCudahy2002'] = {'Cudahy-Hudson'},&lt;br /&gt;
	['CITEREFCudahy2003'] = {'Cudahy-Subways'},&lt;br /&gt;
	['CITEREFCurta2006'] = {'Southeastern Europe in the Middle Ages, 500–1250'},&lt;br /&gt;
&lt;br /&gt;
----------&amp;lt; D &amp;gt;----------&lt;br /&gt;
	['CITEREFDBI'] = {'DBI', 'Dizionario Biografico degli Italiani'},&lt;br /&gt;
	['CITEREFDZS2015'] = {'Croatia Yearbook 2015'},&lt;br /&gt;
	['CITEREFDadelsen1957'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFDaftary1990'] = {'Daftary-The Ismailis'},&lt;br /&gt;
	['CITEREFDaftary2003'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFDaftary2007'] = {'Daftary-The Ismailis'},&lt;br /&gt;
	['CITEREFDaftary2015'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFDaiber1988'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFDandamayevShahbaziLecoq1986'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFDaniel2000'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFDaniel2010'] = {'New Cambridge History of Islam'},&lt;br /&gt;
	['CITEREFDanielsDench1963'] = {'Daniels-NoMore'},&lt;br /&gt;
	['CITEREFDanielsDench1973'] = {'Daniels-NoMore'},&lt;br /&gt;
	['CITEREFDanner1975'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFDarleyCanepa2018'] = {'Oxford Dictionary of Late Antiquity'},&lt;br /&gt;
	['CITEREFDaryaee2009'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFDaryaee2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFDaryaeeCanepa2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFDavid1961'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFDavidson2010'] = {'HistoryofParliament'},&lt;br /&gt;
	['CITEREFDavidsonThrush2010'] = {'HistoryofParliament'},&lt;br /&gt;
	['CITEREFDavies1996'] = {'Davies-PLMLocoList'},&lt;br /&gt;
	['CITEREFDavies1997'] = {'Davies-NordLocoList'},&lt;br /&gt;
	['CITEREFDavies2001'] = {'Davies-EstLocoList3', 'Davies-ÉtatLocoList'},&lt;br /&gt;
	['CITEREFDavies2003'] = {'Davies-SNCFLocoList'},&lt;br /&gt;
	['CITEREFDaviesFirthLuckingThomas1966'] = {'RCTS-LocosGWR-10'},&lt;br /&gt;
	['CITEREFDavud2018'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFDavudNazerian2008'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFDe_Negri1997'] = {'DBI'},&lt;br /&gt;
	['CITEREFDemircan2010'] = {'TDV Encyclopedia of Islam'},&lt;br /&gt;
	['CITEREFDer_Matossian2020'] = {'Cite The First Republic of Armenia'},&lt;br /&gt;
	['CITEREFDeutsch1951'] = {'Schubert\'s compositions (references)'},&lt;br /&gt;
	['CITEREFDeutsch1978'] = {'Schubert\'s compositions (references)'},&lt;br /&gt;
	['CITEREFDeutsche_Autos,_Band_2,2001'] = {'Deutsche Autos-2'},&lt;br /&gt;
	['CITEREFDeutsche_Autos,_Band_3,2001'] = {'Deutsche Autos-3'},&lt;br /&gt;
	['CITEREFDeutsche_Autos,_Band_4,2001'] = {'Deutsche Autos-4'},&lt;br /&gt;
	['CITEREFDeutsche_Autos,_Band_5,2001'] = {'Deutsche Autos-5'},&lt;br /&gt;
	['CITEREFDeutsche_Autos,_Band_6,2001'] = {'Deutsche Autos-6'},&lt;br /&gt;
	['CITEREFDewick2005'] = {'Dewick-Atlas'},&lt;br /&gt;
	['CITEREFDiamonstein-Spielvogel2011'] = {'Cite landmarks'},&lt;br /&gt;
	['CITEREFDickens2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFDirksen1998'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFDirksen2010'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFDirksen2016'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFDixmier1984'] = {'Dixmier General Topology'},&lt;br /&gt;
	['CITEREFDoerfer1989'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFDoganis1930'] = {'Great Military and Naval Encyclopaedia'},&lt;br /&gt;
	['CITEREFDoleckiMynard2016'] = {'Dolecki Mynard Convergence Foundations Of Topology'},&lt;br /&gt;
	['CITEREFDolkart1998'] = {'Cite morningside'},&lt;br /&gt;
	['CITEREFDonaghy1972'] = {'Donaghy-LMR'},&lt;br /&gt;
	['CITEREFDonner1995'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFDonohue2003'] = {'The Buwayhid Dynasty in Iraq'},&lt;br /&gt;
	['CITEREFDorin1972'] = {'Dorin-North Western'},&lt;br /&gt;
	['CITEREFDow1962'] = {'Dow-GC2'},&lt;br /&gt;
	['CITEREFDow1965'] = {'Dow-GC3'},&lt;br /&gt;
	['CITEREFDow1985'] = {'Dow-GC1'},&lt;br /&gt;
	['CITEREFDowney2007'] = {'Downey-Chicago'},&lt;br /&gt;
	['CITEREFDrechsler2005'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFDrummond1964'] = {'HistoryofParliament'},&lt;br /&gt;
	['CITEREFDrury1985'] = {'Drury Historical Guide 1985'},&lt;br /&gt;
	['CITEREFDrury1993'] = {'Drury-North American Steam'},&lt;br /&gt;
	['CITEREFDuchesne-Guillemin1994'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFDugundji1966'] = {'Dugundji Topology'},&lt;br /&gt;
	['CITEREFDuke1995'] = {'Duke-Santa Fe-1'},&lt;br /&gt;
	['CITEREFDukeKeilty1990'] = {'Duke-RDC'},&lt;br /&gt;
	['CITEREFDumbarton_Oaks_Hagiography_Database'] = {'Dumbarton Oaks Hagiography Database'},&lt;br /&gt;
	['CITEREFDunbar1969'] = {'Dunbar-Railroads'},&lt;br /&gt;
	['CITEREFDuncan-Jones2010'] = {'Shakespeare sonnets bibliography'},&lt;br /&gt;
	['CITEREFDunlop1895'] = {'O\'Donnell family tree'},&lt;br /&gt;
	['CITEREFDunlop1985'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFDunn2013'] = {'Dunn-Comeng-5'},&lt;br /&gt;
	['CITEREFDurand-Guédy2008'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFDurand-Guédy2010'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFDurand-Guédy2013'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFDurham1998'] = {'California\'s Geographic Names'},&lt;br /&gt;
	['CITEREFDurrant1972'] = {'Durrant-Steam Locos Eastern Europe'},&lt;br /&gt;
	['CITEREFDurrant1981'] = {'Durrant-Garratt-Rev'},&lt;br /&gt;
	['CITEREFDurrantLewisJorgensen1981'] = {'Durrant-SteamAfrica'},&lt;br /&gt;
	['CITEREFDömlingKohlhase1971'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFDürr1952'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFDürr1954'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFDürr1987'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFDürrJones2006'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFDürrKobayashi1998'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFde_Blois2000'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFde_Planhol1987'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFde_Planhol1988'] = template_names['Iranica'],&lt;br /&gt;
&lt;br /&gt;
----------&amp;lt; E &amp;gt;----------&lt;br /&gt;
	['CITEREFEIr.1994'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFEarle2018'] = {'Gymnosperm Database'},&lt;br /&gt;
	['CITEREFEaston1897'] = {'Eastons', 'EBD'},&lt;br /&gt;
	['CITEREFEbata2019'] = {'BDh'},&lt;br /&gt;
	['CITEREFEbata2020'] = {'BDh'},&lt;br /&gt;
	['CITEREFEbrahimKhodaverdian2018'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFEdwards1995'] = {'Edwards Functional Analysis Theory and Applications'},&lt;br /&gt;
	['CITEREFEichberg1976'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFEilers1983'] = template_names	['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFEkbal1991'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFEl-Hibri2010'] = {'New Cambridge History of Islam'},&lt;br /&gt;
	['CITEREFEl-Hibri2021'] = {'The Abbasid Caliphate: A History'},&lt;br /&gt;
	['CITEREFEldredgeHorenstein2014'] = {'Cite concrete'},&lt;br /&gt;
	['CITEREFElsholz1982'] = {'Schubert\'s compositions (references)'},&lt;br /&gt;
	['CITEREFElwell-Sutton1984'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFEppstein1966'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFEppstein1982'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFEquasis'] = {'Csr', 'Cite ship register'},&lt;br /&gt;
	['CITEREFEuDaly2009'] = {'Complete Book of North American Railroading'},&lt;br /&gt;
	['CITEREFEuDalySchaferJessupBoyd2009'] = {'Complete Book of North American Railroading'},&lt;br /&gt;
&lt;br /&gt;
----------&amp;lt; F &amp;gt;----------&lt;br /&gt;
	['CITEREFFacella2021'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFFang1943'] = {'Cite ECCP'},&lt;br /&gt;
	['CITEREFFarinella2001'] = {'DBI'},&lt;br /&gt;
	['CITEREFFatehi-NezhadAzarnooshNegahban2008'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFFatehi-nezhadRahimi2008'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFFeder1958'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFFederal_Writers&amp;amp;#039;_Project1939'] = {'Cite fednyc'},&lt;br /&gt;
	['CITEREFFelixMadelung1995'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFFernandez1983'] = {'Fernandez1983'},&lt;br /&gt;
	['CITEREFFerneyhough1980'] = {'Ferneyhough-LMR'},&lt;br /&gt;
	['CITEREFFesharaki2015'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFFiaccadori1991'] = template_names['ODB'],&lt;br /&gt;
	['CITEREFFikratUmar2008'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFFine1991'] = {'The Early Medieval Balkans'},&lt;br /&gt;
	['CITEREFFine1994'] = {'The Late Medieval Balkans'},&lt;br /&gt;
	['CITEREFFletcher,_Great_Tank_Scandal'] = {'Book-Fletcher-Great Tank Scandal'},&lt;br /&gt;
	['CITEREFFletcher,_Universal_Tank'] = {'Book-Fletcher-Universal Tank'},&lt;br /&gt;
	['CITEREFFloor1992'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFFloor2005'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFFlora_of_North_America'] = {'EFloras'},&lt;br /&gt;
	['CITEREFFlora_of_North_America2009'] = {'EFloras'},&lt;br /&gt;
	['CITEREFFluckMarshallWilson1996'] = {'FluMarWil-LocRailCR'},&lt;br /&gt;
	['CITEREFFonstad1991'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFFordCrowther1922'] = {'Ford1922'},&lt;br /&gt;
	['CITEREFForkelTerry1920'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFFornaçon,_Siegfried1957'] = template_names['NDB'],&lt;br /&gt;
	['CITEREFForrestal1999'] = {'Forrestal-Wineries'},&lt;br /&gt;
	['CITEREFForster1990'] = {'Cite DCB'},&lt;br /&gt;
	['CITEREFFoss1991'] = template_names['ODB'],&lt;br /&gt;
	['CITEREFFoster1971'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFFoster1996'] = {'Foster-Field Guide'},&lt;br /&gt;
	['CITEREFFrailey2010'] = {'Frailey-Twilight'},&lt;br /&gt;
	['CITEREFFranke1994'] = {'Cite Cambridge History of China', 'The Cambridge History of China'},&lt;br /&gt;
	['CITEREFFranke1994'] = {'Cite Cambridge History of China'},&lt;br /&gt;
	['CITEREFFranz_Schnorr_von_Carolsfeld1883'] = {'Cite ADB'},&lt;br /&gt;
	['CITEREFFriedrich_Wilhelm_Bautz1975'] = {'BBKL'},&lt;br /&gt;
	['CITEREFFriedrich_Wilhelm_Bautz1990'] = {'BBKL'},&lt;br /&gt;
	['CITEREFFry1964'] = {'RCTS-LocosLNER-7', 'RCTS-LocosLNER'},&lt;br /&gt;
	['CITEREFFry1966'] = {'RCTS-LocosLNER-5', 'RCTS-LocosLNER'},&lt;br /&gt;
	['CITEREFFrye1975'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFFrye1983'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFFrye2004'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFFubini2012'] = {'DBI', 'Dizionario Biografico degli Italiani'},&lt;br /&gt;
	['CITEREFFudenbergTirole1991'] = {'Cite Fudenberg Tirole 1991'},&lt;br /&gt;
	['CITEREFFultonHarris1991'] = {'Fulton-Harris'},&lt;br /&gt;
&lt;br /&gt;
----------&amp;lt; G &amp;gt;----------&lt;br /&gt;
	['CITEREFGaines2008'] = {'Cite Gaines 2008'},&lt;br /&gt;
	['CITEREFGarakaniBrown2013'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFGardner2005'] = {'MSW3 Microbiotheria'},&lt;br /&gt;
	['CITEREFGardoni2015'] = {'DBI', 'Dizionario Biografico degli Italiani'},&lt;br /&gt;
	['CITEREFGareyJohnson1979'] = {'Garey-Johnson'},&lt;br /&gt;
	['CITEREFGarsoian2000'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFGarsoian2004'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFGarsoian2005'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFGarth2003'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFGazette27462'] = {'London Gazette'},&lt;br /&gt;
	['CITEREFGazette34205'] = {'London Gazette'},&lt;br /&gt;
	['CITEREFGazette34339'] = {'London Gazette'},&lt;br /&gt;
	['CITEREFGazette34390'] = {'London Gazette'},&lt;br /&gt;
	['CITEREFGazette34427'] = {'London Gazette'},&lt;br /&gt;
	['CITEREFGazette34558'] = {'London Gazette'},&lt;br /&gt;
	['CITEREFGazette34870'] = {'London Gazette'},&lt;br /&gt;
	['CITEREFGazette34978'] = {'London Gazette'},&lt;br /&gt;
	['CITEREFGazette34989'] = {'London Gazette'},&lt;br /&gt;
	['CITEREFGazette35037'] = {'London Gazette'},&lt;br /&gt;
	['CITEREFGazette35107'] = {'London Gazette'},&lt;br /&gt;
	['CITEREFGazette35134'] = {'London Gazette'},&lt;br /&gt;
	['CITEREFGazette35284'] = {'London Gazette'},&lt;br /&gt;
	['CITEREFGazette37560'] = {'London Gazette'},&lt;br /&gt;
	['CITEREFGazette37590'] = {'London Gazette'},&lt;br /&gt;
	['CITEREFGazette37598'] = {'London Gazette'},&lt;br /&gt;
	['CITEREFGazette37610'] = {'London Gazette'},&lt;br /&gt;
	['CITEREFGazette38020'] = {'London Gazette'},&lt;br /&gt;
	['CITEREFGazette38611'] = {'London Gazette'},&lt;br /&gt;
	['CITEREFGeanakoplos1959'] = {'Emperor Michael Palaeologus and the West'},&lt;br /&gt;
	['CITEREFGeorg_von_Dadelsen1953'] = template_names['NDB'],&lt;br /&gt;
	['CITEREFGhanoonparvar1989'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFGhereghlou2009'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFGhereghlou2016'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFGhulamiyan2015'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFGhulamiyan2015'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFGiannasi1975'] = {'DBI', 'Dizionario Biografico degli Italiani'},&lt;br /&gt;
	['CITEREFGibb1923'] = {'The Arab Conquests in Central Asia'},&lt;br /&gt;
	['CITEREFGignoux1983'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFGignoux1994'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFGil1997'] = {'A History of Palestine, 634-1099', 'A History of Palestine, 634–1099'},&lt;br /&gt;
	['CITEREFGillham2001'] = {'Gillham-Waterloo-City'},&lt;br /&gt;
	['CITEREFGilliland1969'] = {'Gilliland'},&lt;br /&gt;
	['CITEREFGilliland1994'] = {'Pop Chronicles 40s'},&lt;br /&gt;
	['CITEREFGilliverMarshallWeiner2006'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFGilmanPeckColby1905'] = {'Cite NIE', 'New International Encyclopedia', 'NIE'},&lt;br /&gt;
	['CITEREFGilmanPeckColby1916'] = {'New International Encyclopedia', 'NIE'},&lt;br /&gt;
	['CITEREFGiunashvili2016'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFGleaves1921'] = {'Gleaves'},&lt;br /&gt;
	['CITEREFGlischinski1997'] = {'Glischinski-Santa Fe'},&lt;br /&gt;
	['CITEREFGlöckner1983'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFGoldberg1981'] = {'Goldberg-Amtrak'},&lt;br /&gt;
	['CITEREFGordon2001'] = {'Gordon-The Breaking of a Thousand Swords'},&lt;br /&gt;
	['CITEREFGraham1974'] = {'Cite DCB'},&lt;br /&gt;
	['CITEREFGrant1994'] = {'Grant-Death'},&lt;br /&gt;
	['CITEREFGrant2010'] = {'Grant-Twilight'},&lt;br /&gt;
	['CITEREFGrant2017'] = {'Grant-RailCo'},&lt;br /&gt;
	['CITEREFGrassi2018'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFGray1986'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFGreenlaw2007'] = {'Greenlaw-Via Rail'},&lt;br /&gt;
	['CITEREFGreenwoodEarnshaw1997'] = {'Greenwood&amp;amp;Earnshaw2nd'},&lt;br /&gt;
	['CITEREFGregory1991'] = template_names['ODB'],&lt;br /&gt;
	['CITEREFGregoryKazhdan1991'] = template_names['ODB'],&lt;br /&gt;
	['CITEREFGregoryŠevčenko1991'] = template_names['ODB'],&lt;br /&gt;
	['CITEREFGrete_Schemann1957'] = template_names['NDB'],&lt;br /&gt;
	['CITEREFGrey2002'] = {'Australian Dictionary of Biography'},&lt;br /&gt;
	['CITEREFGrierson1903'] = {'Cite LSI', 'LSI', 'Linguistic Survey of India'},&lt;br /&gt;
	['CITEREFGrierson1908'] = {'Cite LSI', 'LSI', 'Linguistic Survey of India'},&lt;br /&gt;
	['CITEREFGrierson1919'] = {'Cite LSI', 'LSI', 'Linguistic Survey of India'},&lt;br /&gt;
	['CITEREFGrierson1967'] = {'Cite LSI', 'LSI', 'Linguistic Survey of India'},&lt;br /&gt;
	['CITEREFGriffith1991'] = template_names['ODB'],&lt;br /&gt;
	['CITEREFGriffithsSmith1999'] = {'Griffiths-Sheds1'},&lt;br /&gt;
	['CITEREFGriffithsSmith2000'] = {'Griffiths-Sheds2'},&lt;br /&gt;
	['CITEREFGrothendieck1955'] = {'Grothendieck Produits Tensoriels Topologiques et Espaces Nucléaires'},&lt;br /&gt;
	['CITEREFGrothendieck1973'] = {'Grothendieck Topological Vector Spaces'},&lt;br /&gt;
	['CITEREFGrothendieckDieudonné1960'] = {'EGA'},&lt;br /&gt;
	['CITEREFGrothendieckDieudonné1961'] = {'EGA'},&lt;br /&gt;
	['CITEREFGrothendieckDieudonné1963'] = {'EGA'},&lt;br /&gt;
	['CITEREFGrothendieckDieudonné1964'] = {'EGA'},&lt;br /&gt;
	['CITEREFGrothendieckDieudonné1965'] = {'EGA'},&lt;br /&gt;
	['CITEREFGrothendieckDieudonné1966'] = {'EGA'},&lt;br /&gt;
	['CITEREFGrothendieckDieudonné1967'] = {'EGA'},&lt;br /&gt;
	['CITEREFGrothendieckDieudonné1971'] = {'EGA'},&lt;br /&gt;
	['CITEREFGroves2005'] = {'MSW3 Primates', 'MSW3 Groves'},&lt;br /&gt;
	['CITEREFGrubb2005'] = {'MSW3 Artiodactyla'},&lt;br /&gt;
	['CITEREFGuilland1967'] = {'Recherches sur les institutions byzantines'},&lt;br /&gt;
	['CITEREFGulino2005'] = {'DBI', 'Dizionario Biografico degli Italiani'},&lt;br /&gt;
	['CITEREFGunzburg1984'] = {'Gunzburg-History WAGR Steam'},&lt;br /&gt;
	['CITEREFGurneyNabavi1993'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFGutas1987'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFGvakharia2001'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFGüner1997'] = {'TDV Encyclopedia of Islam'},&lt;br /&gt;
&lt;br /&gt;
----------&amp;lt; H &amp;gt;----------&lt;br /&gt;
	['CITEREFHaarer2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFHabibi2021'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFHadidi2000'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFHaji2008'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFHaldon1999'] = {'Warfare, State and Society in the Byzantine World, 565–1204'},&lt;br /&gt;
	['CITEREFHalliday1985'] = {'Halliday-AustWineCompend'},&lt;br /&gt;
	['CITEREFHalliday2008'] = {'Halliday-JHWAtlasAust2008'},&lt;br /&gt;
	['CITEREFHalliday2009'] = {'Halliday-AustWineEncyc'},&lt;br /&gt;
	['CITEREFHalm1991'] = {'Das Reich des Mahdi'},&lt;br /&gt;
	['CITEREFHalm1998'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFHalm2003'] = {'Die Kalifen von Kairo'},&lt;br /&gt;
	['CITEREFHalm2014'] = {'Kalifen und Assassinen'},&lt;br /&gt;
	['CITEREFHalmos1982'] = {'Halmos A Hilbert Space Problem Book 1982'},&lt;br /&gt;
	['CITEREFHalpenny1990'] = {'Canadabio'},&lt;br /&gt;
	['CITEREFHambly1990'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFHambly1991'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFHammondAnderson1993'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFHammondScull1995'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFHammondScull2005'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFHammondScull2006'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFHanaway1988'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFHanaway1989'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFHanawayLewisohn2004'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFHans_Heinrich_Borcherdt1955'] = template_names['NDB'],&lt;br /&gt;
	['CITEREFHans_Knudsen1972'] = template_names['NDB'],&lt;br /&gt;
	['CITEREFHansen1988'] = {'Book-Hansen-US Nuclear Weapons'},&lt;br /&gt;
	['CITEREFHansman1991'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFHartshorne1977'] = {'Hartshorne AG'},&lt;br /&gt;
	['CITEREFHassanpour1989'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFHassanpour1995'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFHasumi2003'] = {'Hasumi-shiguehiko-ozu-2003'},&lt;br /&gt;
	['CITEREFHaswell-Smith2004'] = {'Haswell-Smith'},&lt;br /&gt;
	['CITEREFHaugic1908'] = {'Schaff-Herzog'},&lt;br /&gt;
	['CITEREFHawting1987'] = {'The First Dynasty of Islam'},&lt;br /&gt;
	['CITEREFHawting2000'] = {'The First Dynasty of Islam'},&lt;br /&gt;
	['CITEREFHaynes2011'] = {'RubberBible92nd'},&lt;br /&gt;
	['CITEREFHeinichen1728'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFHeinrich_Welti1890'] = {'Cite ADB'},&lt;br /&gt;
	['CITEREFHelgen2005'] = {'MSW3 Scandentia'},&lt;br /&gt;
	['CITEREFHellmann1965'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFHenrici1725'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFHenryOrsmond1928'] = {'Raiatea family tree'},&lt;br /&gt;
	['CITEREFHermann_Palm1876'] = {'Cite ADB'},&lt;br /&gt;
	['CITEREFHerr2000'] = {'Herr-LN'},&lt;br /&gt;
	['CITEREFHeschel2007'] = {'Encyclopaedia Judaica', 'Cite EJ', 'Cite Encyclopaedia Judaica'},&lt;br /&gt;
	['CITEREFHewsen1988'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFHidyHidyScottHofsummer2004'] = {'Hidy-Great Northern'},&lt;br /&gt;
	['CITEREFHildHellenkemper1990'] = {'Tabula Imperii Byzantini'},&lt;br /&gt;
	['CITEREFHildHellenkemper1994'] = {'Tabula Imperii Byzantini'},&lt;br /&gt;
	['CITEREFHildRestle1981'] = {'Tabula Imperii Byzantini'},&lt;br /&gt;
	['CITEREFHillenbrand1986'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFHills,_Power_from_Steam'] = {'Book-Hills-Power from Steam'},&lt;br /&gt;
	['CITEREFHills1989'] = {'Book-Hills-Power from Steam'},&lt;br /&gt;
	['CITEREFHilmarJestremski2004'] = {'Schubert\'s compositions (references)'},&lt;br /&gt;
	['CITEREFHilton1980'] = {'Hilton-Amtrak'},&lt;br /&gt;
	['CITEREFHilton1990'] = {'Hilton Narrow Gauge'},&lt;br /&gt;
	['CITEREFHiltonDue1960'] = {'Hilton-Interurban'},&lt;br /&gt;
	['CITEREFHinton1986'] = {'HistoryofParliament'},&lt;br /&gt;
	['CITEREFHirsch1906'] = {'Cite JE1906'},&lt;br /&gt;
	['CITEREFHistoric_England'] = {'NHLE', 'National Heritage List for England'},&lt;br /&gt;
	['CITEREFHistoric_England_Benty_Grange'] = {'NHLE'},&lt;br /&gt;
	['CITEREFHistoric_Environment_Scotland'] = {'Canmore'},&lt;br /&gt;
	['CITEREFHistoric_Environment_Scotland1972'] = {'Historic Environment Scotland'},&lt;br /&gt;
	['CITEREFHistoric_Environment_Scotland1976'] = {'Historic Environment Scotland'},&lt;br /&gt;
	['CITEREFHistoric_Environment_Scotland2020'] = {'Historic Environment Scotland'},&lt;br /&gt;
	['CITEREFHistoric_Environment_Scotland:_Rusco_Tower2020'] = {'Historic Environment Scotland'},&lt;br /&gt;
	['CITEREFHistoric_Environment_ScotlandLB33744'] = {'Historic Environment Scotland'},&lt;br /&gt;
	['CITEREFHistoric_Environment_ScotlandLB50114'] = {'Historic Environment Scotland'},&lt;br /&gt;
	['CITEREFHitchins2001'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFHob.'] = {'Schubert\'s compositions (references)'},&lt;br /&gt;
	['CITEREFHoffmanSmith2005'] = {'MSW3 Lagomorpha'},&lt;br /&gt;
	['CITEREFHoffmann1738'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFHofmann1983'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFHofmann1987'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFHofmann1999'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFHolland1972'] = {'Holland-Vol 2'},&lt;br /&gt;
	['CITEREFHolland1988'] = {'Cite DCB'},&lt;br /&gt;
	['CITEREFHolland1989'] = {'Holland1989'},&lt;br /&gt;
	['CITEREFHolland2001'] = {'Holland-Classic'},&lt;br /&gt;
	['CITEREFHollingsworth1980'] = {'Hollingsworth-Atlas-Rigby'},&lt;br /&gt;
	['CITEREFHollingsworth1991'] = template_names['ODB'],&lt;br /&gt;
	['CITEREFHollingsworthCutler1991'] = template_names['ODB'],&lt;br /&gt;
	['CITEREFHolmgren2003'] = {'EFloras'},&lt;br /&gt;
	['CITEREFHoltBiddle1986'] = {'Holt-NorthWest'},&lt;br /&gt;
	['CITEREFHolton1989'] = {'Holton-Reading-1'},&lt;br /&gt;
	['CITEREFHonigmann1935'] = {'Byzance et les Arabes'},&lt;br /&gt;
	['CITEREFHopley1983'] = {'Australian Dictionary of Biography'},&lt;br /&gt;
	['CITEREFHort1911'] = {'DCBL'},&lt;br /&gt;
	['CITEREFHorváth1966'] = {'Horváth Topological Vector Spaces and Distributions Volume 1 1966'},&lt;br /&gt;
	['CITEREFHosseini2017'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFHounshell1984'] = {'Hounshell1984'},&lt;br /&gt;
	['CITEREFHovannisian1967'] = {'Cite Armenia on the Road to Independence'},&lt;br /&gt;
	['CITEREFHovannisian1971'] = {'Cite The Republic of Armenia Volume 1'},&lt;br /&gt;
	['CITEREFHovannisian1982'] = {'Cite The Republic of Armenia Volume 2'},&lt;br /&gt;
	['CITEREFHovannisian1996'] = {'Cite The Republic of Armenia Volume 3', 'Cite The Republic of Armenia Volume 4'},&lt;br /&gt;
	['CITEREFHowes1995'] = {'Howes Modern Analysis and Topology 1995'},&lt;br /&gt;
	['CITEREFHudson1997'] = {'Country study'},&lt;br /&gt;
	['CITEREFHughes1990'] = {'Hughes-IndianLocos1'},&lt;br /&gt;
	['CITEREFHughes1992'] = {'Hughes-IndianLocos2'},&lt;br /&gt;
	['CITEREFHughes1994'] = {'Hughes-IndianLocos3'},&lt;br /&gt;
	['CITEREFHughes1996'] = {'Hughes-IndianLocos4'},&lt;br /&gt;
	['CITEREFHummel1943'] = {'Cite ECCP'},&lt;br /&gt;
	['CITEREFHumphreys2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFHunter-Crawley2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFHunter2008'] = {'Country study'},&lt;br /&gt;
	['CITEREFHunter2012'] = {'Cite HGOC', 'Cite Hunter'},&lt;br /&gt;
	['CITEREFHutter2009'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFHutterer2005'] = {'MSW3 Soricomorpha'},&lt;br /&gt;
	['CITEREFHütter2012'] = {'Hütter-50bis53'},&lt;br /&gt;
	['CITEREFHütter2015'] = {'Hütter-54bis59'},&lt;br /&gt;
	['CITEREFHütter2021'] = {'Hütter-60bis91'},&lt;br /&gt;
&lt;br /&gt;
----------&amp;lt; I &amp;gt;----------&lt;br /&gt;
	['CITEREFIacocca1984'] = {'Iacocca1984'},&lt;br /&gt;
	['CITEREFIbn_Khallikan1843'] = {'Ibn Khallikan\'s Biographical Dictionary'},&lt;br /&gt;
	['CITEREFImber2002'] = {'Imber-The Ottoman Empire, 1300–1650'},&lt;br /&gt;
	['CITEREFInalcik1989'] = {'Setton-A History of the Crusades'},&lt;br /&gt;
	['CITEREFIranica:_Bahrām'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFIrvine2006'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFIshino1998'] = {'Teishajo'},&lt;br /&gt;
	['CITEREFIshkevariNejad2008'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFIvey1919'] = {'Ivey-Marquette'},&lt;br /&gt;
&lt;br /&gt;
----------&amp;lt; J &amp;gt;----------&lt;br /&gt;
	['CITEREFJackson1908'] = {'Schaff-Herzog'},&lt;br /&gt;
	['CITEREFJackson1988'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFJackson1989'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFJackson1995'] = {'Cite enc-nyc'},&lt;br /&gt;
	['CITEREFJackson2010'] = {'Cite enc-nyc2'},&lt;br /&gt;
	['CITEREFJacksonMelville2001'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFJacobs1904'] = {'Cite Jewish Encyclopedia'},&lt;br /&gt;
	['CITEREFJarchow1981'] = {'Jarchow Locally Convex Spaces'},&lt;br /&gt;
	['CITEREFJavadiBurrill1988'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFJohn_O&amp;amp;#039;Donovan1856'] = {'Cite AFM'},&lt;br /&gt;
	['CITEREFJohnson1906'] = {'BDA1906', 'Cite BDA1906'},&lt;br /&gt;
	['CITEREFJohnstonWelshSchafer2001'] = {'Johnston-Streamliner'},&lt;br /&gt;
	['CITEREFJones2011'] = {'Cite EPD'},&lt;br /&gt;
	['CITEREFJordan2002'] = {'Jordan-WineWABest'},&lt;br /&gt;
	['CITEREFJoshi1983'] = {'Joshi Introduction to General Topology'},&lt;br /&gt;
	['CITEREFJoslen2003'] = {'Joslen-OOB'},&lt;br /&gt;
	['CITEREFJowett1867'] = {'DGRBM', 'Cite DGRBM'},&lt;br /&gt;
	['CITEREFJowett1989'] = {'Jowett-Atlas', 'Carnarvonshire Railway'},&lt;br /&gt;
	['CITEREFJowett2000'] = {'Jowett-Nationalised'},&lt;br /&gt;
	['CITEREFJullien2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFJupp1986'] = {'HistoryofParliament'},&lt;br /&gt;
&lt;br /&gt;
----------&amp;lt; K &amp;gt;----------&lt;br /&gt;
	['CITEREFK.'] = {'Schubert\'s compositions (references)'},&lt;br /&gt;
	['CITEREFKadinsky2016'] = {'Cite Hidden Waters NYC'},&lt;br /&gt;
	['CITEREFKaegi1991'] = template_names['ODB'],&lt;br /&gt;
	['CITEREFKamaly2006'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFKamp1981'] = {'DBI', 'Dizionario Biografico degli Italiani'},&lt;br /&gt;
	['CITEREFKang2008'] = {'Country study'},&lt;br /&gt;
	['CITEREFKaramatiMelvin-Koushki2021'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFKaramatiMelvin-Koushki2021'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFKarimi-Hakkak1997'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFKarimiMaghsoodi2013'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFKarl_Frohnmeyer1953'] = template_names['NDB'],&lt;br /&gt;
	['CITEREFKarnow1989'] = {'Cite-Karnow'},&lt;br /&gt;
	['CITEREFKasheff2001'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFKayvaniGholami2008'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFKazemzadeh1951'] = {'Cite The Struggle for Transcaucasia'},&lt;br /&gt;
	['CITEREFKazemzadeh1951'] = {'The Struggle for Transcaucasia'},&lt;br /&gt;
	['CITEREFKazhdan1991'] = template_names['ODB'],&lt;br /&gt;
	['CITEREFKazhdanCutler1991'] = template_names['ODB'],&lt;br /&gt;
	['CITEREFKazhdanJeffreys1991'] = template_names['ODB'],&lt;br /&gt;
	['CITEREFKazhdanŠevčenko1991'] = template_names['ODB'],&lt;br /&gt;
	['CITEREFKeall1987'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFKeefe2006'] = {'Schubert\'s compositions (references)'},&lt;br /&gt;
	['CITEREFKeightley1999'] = {'Cite Cambridge History of China'},&lt;br /&gt;
	['CITEREFKeller1937'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFKelley1975'] = {'Kelley General Topology'},&lt;br /&gt;
	['CITEREFKelly1988'] = {'Cite GEIL'},&lt;br /&gt;
	['CITEREFKellyBurrage1920'] = {'Cite AMB1920'},&lt;br /&gt;
	['CITEREFKennedy1998'] = {'The Cambridge History of Egypt', 'Cite Kennedy 1998', 'Cambridge History of Egypt'},&lt;br /&gt;
	['CITEREFKennedy2001'] = {'Kennedy-The Armies of the Caliphs'},&lt;br /&gt;
	['CITEREFKennedy2004'] = {'The Prophet and the Age of the Caliphates'},&lt;br /&gt;
	['CITEREFKennedy2007'] = {'Kennedy-The Great Arab Conquests'},&lt;br /&gt;
	['CITEREFKennedy2016'] = {'The Prophet and the Age of the Caliphates'},&lt;br /&gt;
	['CITEREFKenyon2011'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFKerrigan1995'] = {'Shakespeare sonnets bibliography'},&lt;br /&gt;
	['CITEREFKettenhofen1995'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFKettenhofen2001'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFKettenhofenBournoutianHewsen1998'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFKhaleelulla1982'] = {'Khaleelulla Counterexamples in Topological Vector Spaces'},&lt;br /&gt;
	['CITEREFKhaleghi-Motlagh1999'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFKhaleghi-Motlagh2001'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFKhan2012'] = {'Cite Banglapedia'},&lt;br /&gt;
	['CITEREFKhatibiNegahban2013'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFKim1994'] = {'Country study'},&lt;br /&gt;
	['CITEREFKirnberger1774'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFKirnberger1780'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFKlein2006'] = {'Klein-UP-2'},&lt;br /&gt;
	['CITEREFKlíma1988'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFKobayashi1978'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFKoderHild1976'] = {'Tabula Imperii Byzantini'},&lt;br /&gt;
	['CITEREFKoderSoustalKoder1998'] = {'Tabula Imperii Byzantini'},&lt;br /&gt;
	['CITEREFKoeppel2015'] = {'Cite citygrid'},&lt;br /&gt;
	['CITEREFKofos1977'] = {'Ιστορία του Ελληνικού Έθνους'},&lt;br /&gt;
	['CITEREFKohler1902'] = {'Cite Jewish Encyclopedia'},&lt;br /&gt;
	['CITEREFKolde1914'] = {'Schaff-Herzog'},&lt;br /&gt;
	['CITEREFKoliopoulos1978'] = {'Ιστορία του Ελληνικού Έθνους'},&lt;br /&gt;
	['CITEREFKolmogorovFomin1957'] = {'Kolmogorov Fomin Elements of the Theory of Functions and Functional Analysis'},&lt;br /&gt;
	['CITEREFKonrad_Ameln1985'] = template_names['NDB'],&lt;br /&gt;
	['CITEREFKorkotyan1932'] = {'Cite The Population of Soviet Armenia'},&lt;br /&gt;
	['CITEREFKoska2011'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFKratville1962'] = {'Kratville-SSL'},&lt;br /&gt;
	['CITEREFKretzschmar1910'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFKube2009'] = {'Schubert\'s compositions (references)'},&lt;br /&gt;
	['CITEREFKubrusly2011'] = {'Kubrusly The Elements of Operator Theory 2nd Edition 2011'},&lt;br /&gt;
	['CITEREFKurz1983'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFKuznik2008'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFKöthe1969'] = {'Köthe Topological Vector Spaces I'},&lt;br /&gt;
	['CITEREFKöthe1979'] = {'Köthe Topological Vector Spaces II'},&lt;br /&gt;
	['CITEREFKöthe1983'] = {'Köthe Topological Vector Spaces I'},&lt;br /&gt;
	['CITEREFKülzer2008'] = {'Tabula Imperii Byzantini'},&lt;br /&gt;
	['CITEREFKüçükaşcı2001'] = {'TDV Encyclopedia of Islam'},&lt;br /&gt;
&lt;br /&gt;
----------&amp;lt; L &amp;gt;----------&lt;br /&gt;
	['CITEREFLa_Porta2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFLacourcière1974'] = {'Cite DCB'},&lt;br /&gt;
	['CITEREFLadefogedMaddieson1996'] = {'SOWL'},&lt;br /&gt;
	['CITEREFLandau-Tasseron2010'] = {'New Cambridge History of Islam'},&lt;br /&gt;
	['CITEREFLandauCondit1996'] = {'Cite nysky'},&lt;br /&gt;
	['CITEREFLandmann1907'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFLang1983'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFLang2002'] = {'Lang Algebra'},&lt;br /&gt;
	['CITEREFLangaroodiCooper2008'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFLangaroodiCooper2015'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFLangaroodiCooper2015'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFLangaroodiNegahban2008'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFLangaroodiNegahban2015'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFLangaroodiNegahban2015'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFLangaroudi2001'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFLatham1982–2021'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFLazard1975'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFLaërtius1925'] = {'Cite Lives of the Eminent Philosophers', 'Cite LotEP'},&lt;br /&gt;
	['CITEREFLeCoq1986'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFLe_Quien1740'] = {'Oriens Christianus'},&lt;br /&gt;
	['CITEREFLe_Strange1900'] = {'Baghdad During the Abbasid Caliphate'},&lt;br /&gt;
	['CITEREFLe_Strange1905'] = {'Lands of the Eastern Caliphate'},&lt;br /&gt;
	['CITEREFLe_Strange1922'] = {'Baghdad During the Abbasid Caliphate'},&lt;br /&gt;
	['CITEREFLeblanc1979'] = {'Cite DCB'},&lt;br /&gt;
	['CITEREFLee1903'] = {'Cite DNBIE'},&lt;br /&gt;
	['CITEREFLee2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFLegifrance'] = {'Cite Legifrance', 'Cite Légifrance'},&lt;br /&gt;
	['CITEREFLeisingerWollny1993'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFLerner1988'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFLev1999'] = {'Saladin in Egypt'},&lt;br /&gt;
	['CITEREFLevitan2001'] = {'Springer'},&lt;br /&gt;
	['CITEREFLewin1925'] = {'Lewin-EarlyRail'},&lt;br /&gt;
	['CITEREFLewis1969'] = {'Setton-A History of the Crusades'},&lt;br /&gt;
	['CITEREFLewis1986'] = {'Lewis-Shortline-1986'},&lt;br /&gt;
	['CITEREFLewis1991'] = {'Lewis-Shortline-1991'},&lt;br /&gt;
	['CITEREFLewis1996'] = {'Lewis-Shortline-1996'},&lt;br /&gt;
	['CITEREFLewis2001'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFLi2002'] = {'Cite Cambridge History of China'},&lt;br /&gt;
	['CITEREFLiederNet_Archive'] = {'Schubert\'s compositions (references)'},&lt;br /&gt;
	['CITEREFLieu1997'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFLighthouses_of_Australia_Inc'] = {'Cite loa'},&lt;br /&gt;
	['CITEREFLilieLudwigPratschZielke1998–2013'] = {'Prosopographie der mittelbyzantinischen Zeit'},&lt;br /&gt;
	['CITEREFLilieLudwigPratschZielke1999'] = {'Prosopographie der mittelbyzantinischen Zeit', 'PMBZ'},&lt;br /&gt;
	['CITEREFLilieLudwigPratschZielke2000'] = {'Prosopographie der mittelbyzantinischen Zeit'},&lt;br /&gt;
	['CITEREFLilieLudwigPratschZielke2001'] = {'Prosopographie der mittelbyzantinischen Zeit'},&lt;br /&gt;
	['CITEREFLilieLudwigPratschZielke2002'] = {'Prosopographie der mittelbyzantinischen Zeit'},&lt;br /&gt;
	['CITEREFLilieLudwigPratschZielke2009'] = {'Prosopographie der mittelbyzantinischen Zeit'},&lt;br /&gt;
	['CITEREFLilieLudwigPratschZielke2013'] = {'Prosopographie der mittelbyzantinischen Zeit'},&lt;br /&gt;
	['CITEREFLind1986'] = {'Lind-Limiteds'},&lt;br /&gt;
	['CITEREFLittle1974'] = {'Cite DCB'},&lt;br /&gt;
	['CITEREFLongnon1969'] = {'Setton-A History of the Crusades'},&lt;br /&gt;
	['CITEREFLosensky2003'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFLoverance2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFLukonin1983'] = {'Cambridge History of Iran'},&lt;br /&gt;
	['CITEREFLurie'] = {'Lurie-HA'},&lt;br /&gt;
	['CITEREFLurje2010'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFLuttrell1975'] = {'Setton-A History of the Crusades'},&lt;br /&gt;
	['CITEREFLuttrell1987'] = {'DBI'},&lt;br /&gt;
	['CITEREFLynch2004'] = {'Lynch-Penn Central'},&lt;br /&gt;
	['CITEREFLynch2005'] = {'Lynch-New Haven passenger'},&lt;br /&gt;
	['CITEREFLynch2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFLéger1990'] = {'Cite DCB'},&lt;br /&gt;
	['CITEREFle_Fleming1953'] = {'RCTS-LocosGWR-8'},&lt;br /&gt;
	['CITEREFle_Fleming1958'] = {'RCTS-LocosGWR-5'},&lt;br /&gt;
	['CITEREFle_Fleming1960'] = {'RCTS-LocosGWR-8'},&lt;br /&gt;
&lt;br /&gt;
----------&amp;lt; M &amp;gt;----------&lt;br /&gt;
	['CITEREFMacDermot1927'] = {'Infobox GWR'},&lt;br /&gt;
	['CITEREFMacDermot1931'] = {'Infobox GWR'},&lt;br /&gt;
	['CITEREFMacEoin1988'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFMacKenzie1992'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFMachinery&amp;amp;#039;s_Handbook1996'] = {'MachinerysHandbook25e'},&lt;br /&gt;
	['CITEREFMadelung1975'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFMadelung1978'] = {'EI2'},&lt;br /&gt;
	['CITEREFMadelung1983'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFMadelung1984'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFMadelung1988'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFMadelung1993'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFMadelung2003'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFMadelungFelix1995'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFMaeda2009'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFMagdalino2002'] = {'The Empire of Manuel I Komnenos'},&lt;br /&gt;
	['CITEREFMaiken1989'] = {'Maiken-Night Trains'},&lt;br /&gt;
	['CITEREFMailer2004'] = {'Mailer-Omaha Road'},&lt;br /&gt;
	['CITEREFMajidiNegahban'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFMalandra2009'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFManfred_Knedlik2007'] = {'BBKL'},&lt;br /&gt;
	['CITEREFMarshak1994'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFMarshak2002'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFMarshall1823'] = {'Cite RNB1823'},&lt;br /&gt;
	['CITEREFMarshall1824'] = {'Cite RNB1823'},&lt;br /&gt;
	['CITEREFMarshall1825'] = {'Cite RNB1823'},&lt;br /&gt;
	['CITEREFMarshall1827'] = {'Cite RNB1823'},&lt;br /&gt;
	['CITEREFMarshall1828'] = {'Cite RNB1823'},&lt;br /&gt;
	['CITEREFMarshall1829'] = {'Cite RNB1823'},&lt;br /&gt;
	['CITEREFMarshall1830'] = {'Cite RNB1823'},&lt;br /&gt;
	['CITEREFMarshall1831'] = {'Cite RNB1823'},&lt;br /&gt;
	['CITEREFMarshall1832'] = {'Cite RNB1823'},&lt;br /&gt;
	['CITEREFMarshall1833'] = {'Cite RNB1823'},&lt;br /&gt;
	['CITEREFMarshall1835'] = {'Cite RNB1823'},&lt;br /&gt;
	['CITEREFMarshall1972'] = {'Lancashire &amp;amp; Yorkshire Railway 3'},&lt;br /&gt;
	['CITEREFMarshall2001'] = {'Marshall-INGSR'},&lt;br /&gt;
	['CITEREFMartin_Persch1992'] = {'BBKL'},&lt;br /&gt;
	['CITEREFMartin_Persch1993'] = {'BBKL'},&lt;br /&gt;
	['CITEREFMartin_Persch1996'] = {'BBKL'},&lt;br /&gt;
	['CITEREFMartindale1980'] = {'Prosopography of the Later Roman Empire', 'PLRE'},&lt;br /&gt;
	['CITEREFMartindale1992'] = {'Prosopography of the Later Roman Empire', 'PLRE'},&lt;br /&gt;
	['CITEREFMartindaleJonesMorris1971'] = {'Prosopography of the Later Roman Empire', 'PLRE'},&lt;br /&gt;
	['CITEREFMasoud_Jalali-Moqaddam2015'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFMatini1987'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFMatthee2008'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFMatthee2012'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFMatthee2015'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFMaul2005'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFMayGray2006'] = {'MayGray-WAGRPassCar'},&lt;br /&gt;
	['CITEREFMazzaoui2002'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFMcArthurMcArthur2003'] = {'Cite ogn', 'Cite Oregon Geographic Names'},&lt;br /&gt;
	['CITEREFMcCaffrey1990'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFMcCorduck2004'] = {'McCorduck 2004'},&lt;br /&gt;
	['CITEREFMcCurdyRogers1902'] = {'Cite Jewish Encyclopedia'},&lt;br /&gt;
	['CITEREFMcDonnell2015'] = {'McDonnell-Locomotives-2nd'},&lt;br /&gt;
	['CITEREFMcGeerNesbittOikonomides2001'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'},&lt;br /&gt;
	['CITEREFMcGeerNesbittOikonomides2005'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'},&lt;br /&gt;
	['CITEREFMcGhee2008'] = {'Cite McGhee 2008'},&lt;br /&gt;
	['CITEREFMeiningen1704'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFMeints1992'] = {'Meints-Companies'},&lt;br /&gt;
	['CITEREFMeints2005'] = {'Meints-Lines'},&lt;br /&gt;
	['CITEREFMelamed1988'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFMelamed1995'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFMelville1997'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFMelville2003'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFMennell1892'] = {'Dictionary of Australasian Biography'},&lt;br /&gt;
	['CITEREFMetcalfe2009'] = {'The Muslims of Medieval Italy'},&lt;br /&gt;
	['CITEREFMiddleton1961'] = {'Middleton-Interurban'},&lt;br /&gt;
	['CITEREFMiddleton2001'] = {'Middleton-Electrified-2nd'},&lt;br /&gt;
	['CITEREFMiddleton2002'] = {'Middleton-PRR-Under-Wire'},&lt;br /&gt;
	['CITEREFMiddletonSmerkDiehl2007'] = {'Encyclopedia of North American Railroads'},&lt;br /&gt;
	['CITEREFMiles1975'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFMillar2011'] = {'NZR Steam Locomotive'},&lt;br /&gt;
	['CITEREFMiller'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFMiller1908'] = {'The Latins in the Levant', 'Latins in the Levant'},&lt;br /&gt;
	['CITEREFMiller1921'] = {'Essays on the Latin Orient'},&lt;br /&gt;
	['CITEREFMinnich2008'] = {'Country study'},&lt;br /&gt;
	['CITEREFMiramar_Ship_Index'] = {'Csr', 'Cite ship register'},&lt;br /&gt;
	['CITEREFMitchell1965'] = {'Mitchell TOC'},&lt;br /&gt;
	['CITEREFMittermeierKonstantHawkinsLouis2006'] = {'LoM2'},&lt;br /&gt;
	['CITEREFMittermeierLouisRichardsonSchwitzer2010'] = {'LoM3'},&lt;br /&gt;
	['CITEREFMittermeierTattersallKonstantMeyers1994'] = {'LoM1'},&lt;br /&gt;
	['CITEREFMoore1875'] = {'Cite CEM'},&lt;br /&gt;
	['CITEREFMorana1993'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFMorony2009'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFMoschonas1975'] = {'Ιστορία του Ελληνικού Έθνους'},&lt;br /&gt;
	['CITEREFMottahedeh1975'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFMozartHaydnHaydn2008'] = {'Schubert\'s compositions (references)'},&lt;br /&gt;
	['CITEREFMullié1852'] = {'Cite Mullié', 'Mullié'},&lt;br /&gt;
	['CITEREFMunkres1974'] = {'Munkres Topology'},&lt;br /&gt;
	['CITEREFMunkres2000'] = {'Munkres Topology'},&lt;br /&gt;
	['CITEREFMurray2006'] = {'Murray-Illinois Central'},&lt;br /&gt;
	['CITEREFMusserCarleton2005'] = {'MSW3 Muroidea'},&lt;br /&gt;
	['CITEREFMyersWang2002'] = {'Cite Cambridge History of China'},&lt;br /&gt;
	['CITEREFMüller,_Hans-Christian1966'] = template_names['NDB'],&lt;br /&gt;
&lt;br /&gt;
----------&amp;lt; N &amp;gt;----------&lt;br /&gt;
	['CITEREFNSA_II,_15'] = {'Schubert\'s compositions (references)'},&lt;br /&gt;
	['CITEREFNSA_scores'] = {'Schubert\'s compositions (references)'},&lt;br /&gt;
	['CITEREFNSA_website'] = {'Schubert\'s compositions (references)'},&lt;br /&gt;
	['CITEREFNagel1990'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFNariciBeckenstein2011'] = {'Narici Beckenstein Topological Vector Spaces'},&lt;br /&gt;
	['CITEREFNavāʾī1988'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFNegahban2008'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFNemiroffBonnell1998'] = {'Cite APOD'},&lt;br /&gt;
	['CITEREFNemiroffBonnell2004'] = {'Cite APOD'},&lt;br /&gt;
	['CITEREFNemiroffBonnell2005'] = {'Cite APOD'},&lt;br /&gt;
	['CITEREFNemiroffBonnell2006'] = {'Cite APOD'},&lt;br /&gt;
	['CITEREFNemiroffBonnell2007'] = {'Cite APOD'},&lt;br /&gt;
	['CITEREFNersessian2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFNesbittMorrisson2009'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'},&lt;br /&gt;
	['CITEREFNesbittOikonomides1991'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'},&lt;br /&gt;
	['CITEREFNesbittOikonomides1994'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'},&lt;br /&gt;
	['CITEREFNesbittOikonomides1996'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'},&lt;br /&gt;
	['CITEREFNestruev2020'] = {'Nestruev Smooth Manifolds and Observables 2020'},&lt;br /&gt;
	['CITEREFNetzer1998'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFNetzer2007'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFNeukirch1999'] = {'Neukirch ANT'},&lt;br /&gt;
	['CITEREFNeukirchSchmidtWingberg2000'] = {'Neukirch et al. CNF'},&lt;br /&gt;
	['CITEREFNew_York_City_Landmarks_Preservation_CommissionDolkartPostal2009'] = {'Cite nycland'},&lt;br /&gt;
	['CITEREFNewbould1999'] = {'Schubert\'s compositions (references)'},&lt;br /&gt;
	['CITEREFNewman1994'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFNicholson2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFNicholsonCanepaDaryaee2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFNicol1968'] = {'The Byzantine Family of Kantakouzenos'},&lt;br /&gt;
	['CITEREFNicol1984'] = {'The Despotate of Epiros, 1267–1479'},&lt;br /&gt;
	['CITEREFNicol1988'] = {'Byzantium and Venice: A Study in Diplomatic and Cultural Relations'},&lt;br /&gt;
	['CITEREFNicol1992'] = {'The Immortal Emperor: The Life and Legend of Constantine Palaiologos, Last Emperor of the Romans'},&lt;br /&gt;
	['CITEREFNicol1993'] = {'The Last Centuries of Byzantium, 1261–1453', 'The Last Centuries of Byzantium'},&lt;br /&gt;
	['CITEREFNicol1994'] = {'The Byzantine Lady: Ten Portraits, 1250–1500'},&lt;br /&gt;
	['CITEREFNock1974'] = {'Nock-EustonGlasgow'},&lt;br /&gt;
&lt;br /&gt;
----------&amp;lt; O &amp;gt;----------&lt;br /&gt;
	['CITEREFO&amp;amp;#039;Byrne1849'] = {'Cite NBD1849'},&lt;br /&gt;
	['CITEREFO&amp;amp;#039;ConnorRobertson'] = {'MacTutor Biography', 'MacTutor'},&lt;br /&gt;
	['CITEREFO&amp;amp;#039;ConnorRobertson1996'] = {'MacTutor Biography', 'MacTutor'},&lt;br /&gt;
	['CITEREFO&amp;amp;#039;ConnorRobertson2000'] = {'MacTutor Biography', 'MacTutor'},&lt;br /&gt;
	['CITEREFO&amp;amp;#039;ConnorRobertson2004'] = {'MacTutor Biography', 'MacTutor'},&lt;br /&gt;
	['CITEREFO&amp;amp;#039;Donoghue1897'] = {'Cite DNB'},&lt;br /&gt;
	['CITEREFODB'] = template_names['ODB'],&lt;br /&gt;
	['CITEREFODLA'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFOberling1984'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFOberling2008'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFOberling2010'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFOdisheli2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFOfficial_Guide_of_the_Railways1950'] = {'Official Guide of the Railways'},&lt;br /&gt;
	['CITEREFOgorek2012'] = {'Ogorek-South Shore'},&lt;br /&gt;
	['CITEREFOikonomides1991'] = template_names['ODB'],&lt;br /&gt;
	['CITEREFOikonomou1977'] = {'Ιστορία του Ελληνικού Έθνους'},&lt;br /&gt;
	['CITEREFOlbrycht2021'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFOrmsby1982'] = {'Cite DCB'},&lt;br /&gt;
&lt;br /&gt;
----------&amp;lt; P &amp;gt;----------&lt;br /&gt;
	['CITEREFPLP'] = {'Prosopographisches Lexikon der Palaiologenzeit', 'PLP'},&lt;br /&gt;
	['CITEREFPalmer1875'] = {'Cite ADB'},&lt;br /&gt;
	['CITEREFPalmerStewart1965'] = {'Palmer &amp;amp; Stewart'},&lt;br /&gt;
	['CITEREFPanainoAbdollahyBalland1990'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFPandariHirtensteinNegahban2013'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFParvin2003'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFParvin2009'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFPatience1996'] = {'Patience-SteamTwilight'},&lt;br /&gt;
	['CITEREFPatton2005'] = {'MSW3 Geomyidae'},&lt;br /&gt;
	['CITEREFPaul2000'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFPawson1979'] = {'Pawson-Delaware Valley'},&lt;br /&gt;
	['CITEREFPaxtonBourne1985'] = {'Paxton-Bourne'},&lt;br /&gt;
	['CITEREFPeacock2011'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFPeck1898'] = {'HDCA'},&lt;br /&gt;
	['CITEREFPerlis2001'] = {'Springer'},&lt;br /&gt;
	['CITEREFPerreault2004'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFPerry1983'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFPerry1990'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFPerry1991'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFPetropoulosKoumarianou1977'] = {'Ιστορία του Ελληνικού Έθνους'},&lt;br /&gt;
	['CITEREFPetrucci1982'] = {'DBI'},&lt;br /&gt;
	['CITEREFPezeshk2017'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFPezeshkKhaleeli2017'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFPezeshkKhaleeli2017'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFPfau2008'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFPikros1977'] = {'Ιστορία του Ελληνικού Έθνους'},&lt;br /&gt;
	['CITEREFPinkepank1973'] = {'Pinkepank diesel spotters guide 2'},&lt;br /&gt;
	['CITEREFPlantlist2016'] = {'Plantlist'},&lt;br /&gt;
	['CITEREFPlaten1976'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFPloumidisAlexiou1974'] = {'Ιστορία του Ελληνικού Έθνους'},&lt;br /&gt;
	['CITEREFPmbZ'] = {'Prosopographie der mittelbyzantinischen Zeit', 'PMBZ'},&lt;br /&gt;
	['CITEREFPolemis1968'] = {'Polemis-The Doukai'},&lt;br /&gt;
	['CITEREFPope2007'] = {'Encyclopaedia Judaica', 'Cite EJ', 'Cite Encyclopaedia Judaica'},&lt;br /&gt;
	['CITEREFPopplewell'] = {'Popplewell-Gazetteer'},&lt;br /&gt;
	['CITEREFPotts2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFPottsCanepa2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFPourshariati2017'] = {'Encyclopædia Iranica Online'},&lt;br /&gt;
	['CITEREFPozza1992'] = {'DBI', 'Dizionario Biografico degli Italiani'},&lt;br /&gt;
	['CITEREFPrawer1985'] = {'Setton-A History of the Crusades'},&lt;br /&gt;
	['CITEREFPritsak1991'] = template_names['ODB'],&lt;br /&gt;
	['CITEREFProsopographie_der_mittelbyz._Zeit'] = {'Prosopographie der mittelbyzantinischen Zeit'},&lt;br /&gt;
&lt;br /&gt;
----------&amp;lt; Q &amp;gt;----------&lt;br /&gt;
	['CITEREFQuick2009'] = {'Quick-Stations'},&lt;br /&gt;
	['CITEREFQuick2019'] = {'Quick-stations-5'},&lt;br /&gt;
	['CITEREFQuick2020'] = {'Quick-stations-5'},&lt;br /&gt;
	['CITEREFQuick2022'] = {'Quick-stations-5'},&lt;br /&gt;
	['CITEREFQuick2023'] = {'Quick-stations-5.05'},&lt;br /&gt;
	['CITEREFQuinn2003'] = template_names['Iranica'],&lt;br /&gt;
&lt;br /&gt;
----------&amp;lt; R &amp;gt;----------&lt;br /&gt;
	['CITEREFRaditsa1983'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFRahman1983'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFRaja&amp;amp;#039;i1987'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFRamaer1974'] = {'Ramaer-SteamLocosEAR'},&lt;br /&gt;
	['CITEREFRansome-Wallis1971'] = {'Ransome-Wallis 1'},&lt;br /&gt;
	['CITEREFRateliff2007'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFRavegnano2000'] = {'DBI'},&lt;br /&gt;
	['CITEREFReed1953'] = {'RCTS-LocosGWR-2'},&lt;br /&gt;
	['CITEREFReed1975'] = {'Reed-Streamline era'},&lt;br /&gt;
	['CITEREFReed1997'] = {'Schubert\'s compositions (references)'},&lt;br /&gt;
	['CITEREFReinhard_Tenberg1990'] = {'BBKL'},&lt;br /&gt;
	['CITEREFRettinghaus2020'] = {'BDh'},&lt;br /&gt;
	['CITEREFReynolds1921'] = {'Cite Collier\'s', 'Collier\'s'},&lt;br /&gt;
	['CITEREFReynoldsOroszi2000'] = {'Reynolds-BO'},&lt;br /&gt;
	['CITEREFRezaHirtensteinGholami2021'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFRezakhani2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFRezvani2014'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFRichter-Bernburg2003'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFRichter2018'] = {'BDh'},&lt;br /&gt;
	['CITEREFRigo2005'] = template_names['ODB'],&lt;br /&gt;
	['CITEREFRipleyDana1863'] = {'New American Cyclopedia'},&lt;br /&gt;
	['CITEREFRipleyDana1864'] = {'New American Cyclopedia'},&lt;br /&gt;
	['CITEREFRipleyDana1879'] = {'Cite AmCyc'},&lt;br /&gt;
	['CITEREFRistaino1988'] = {'Country study'},&lt;br /&gt;
	['CITEREFRobert_Eitner1891'] = {'Cite ADB'},&lt;br /&gt;
	['CITEREFRobertson1983'] = {'Robertson-OriginScot'},&lt;br /&gt;
	['CITEREFRockafellarWets2009'] = {'Rockafellar Wets Variational Analysis 2009 Springer'},&lt;br /&gt;
	['CITEREFRoe1916'] = {'Roe1916'},&lt;br /&gt;
	['CITEREFRoe1937'] = {'Roe1937'},&lt;br /&gt;
	['CITEREFRoemer1986'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFRoemer1989'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFRoemer2004'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFRolt1965'] = {'Rolt1965'},&lt;br /&gt;
	['CITEREFRoltKichenside1982'] = {'Rolt-Red'},&lt;br /&gt;
	['CITEREFRose1857'] = {'Cite Newgenbio'},&lt;br /&gt;
	['CITEREFRosenfeld1974'] = template_names['NDB'],&lt;br /&gt;
	['CITEREFRosenzweigBlackmar1992'] = {'Cite Central Park History', 'Cite Central Park history'},&lt;br /&gt;
	['CITEREFRowe2002'] = {'Cite Cambridge History of China'},&lt;br /&gt;
	['CITEREFRowledge1975'] = {'Rowledge-Engines of the LMS'},&lt;br /&gt;
	['CITEREFRowledge1993'] = {'Rowledge-Irish Steam Register'},&lt;br /&gt;
	['CITEREFRowlett'] = {'Cite rowlett', 'Cite Rowlett'},&lt;br /&gt;
	['CITEREFRowlett2007'] = {'Cite rowlett', 'Cite Rowlett'},&lt;br /&gt;
	['CITEREFRowlett2012'] = {'Cite rowlett', 'Cite Rowlett'},&lt;br /&gt;
	['CITEREFRowlett2013'] = {'Cite rowlett', 'Cite Rowlett'},&lt;br /&gt;
	['CITEREFRowlett2016'] = {'Cite rowlett', 'Cite Rowlett'},&lt;br /&gt;
	['CITEREFRowlett2017'] = {'Cite rowlett', 'Cite Rowlett'},&lt;br /&gt;
	['CITEREFRowson1998'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFRudin1973'] = {'Rudin Walter Functional Analysis'},&lt;br /&gt;
	['CITEREFRudin1991'] = {'Rudin Walter Functional Analysis'},&lt;br /&gt;
	['CITEREFRunciman1951'] = {'Runciman-A History of the Crusades'},&lt;br /&gt;
	['CITEREFRunciman1951–1954'] = {'Runciman-A History of the Crusades'},&lt;br /&gt;
	['CITEREFRunciman1952'] = {'Runciman-A History of the Crusades'},&lt;br /&gt;
	['CITEREFRunciman1954'] = {'Runciman-A History of the Crusades'},&lt;br /&gt;
	['CITEREFRunciman1989'] = {'Runciman-A History of the Crusades'},&lt;br /&gt;
	['CITEREFRussell1985'] = {'Setton-A History of the Crusades', 'Encyclopædia Iranica Online', 'Encyclopædia Iranica', 'Encyclopaedia Iranica', 'Cite Encyclopædia Iranica Online'},&lt;br /&gt;
	['CITEREFRussell1986'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFRussell1987'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFRussellNorvig2003'] = {'Russell Norvig 2003'},&lt;br /&gt;
	['CITEREFRybczynski2000'] = {'Rybczynski2000'},&lt;br /&gt;
	['CITEREFRypka1968'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
&lt;br /&gt;
----------&amp;lt; S &amp;gt;----------&lt;br /&gt;
	['CITEREFSR_staff2013'] = {'Houston family tree'},&lt;br /&gt;
	['CITEREFSadeghiTehrani2008'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFSadıkoğlu1996'] = {'TDV Encyclopedia of Islam'},&lt;br /&gt;
	['CITEREFSafa1987'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFSafa1988'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFSafa1989'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFSafa1994'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFSafa2003'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFSajjadiAsatryanMelvin-Koushki'] = {'Encyclopaedia Islamica Online'},&lt;br /&gt;
	['CITEREFSajjadiAsatryanMelvin-Koushki'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFSajjadiAsatryanMelvin-Koushki2021'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFSalbiev2021'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFSalo2004'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFSamiʿiMelvin-Koushki2013'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFSanders1998'] = {'The Cambridge History of Egypt', 'Cambridge History of Egypt'},&lt;br /&gt;
	['CITEREFSanders2003'] = {'Sanders-Indiana'},&lt;br /&gt;
	['CITEREFSanders2006'] = {'Sanders-Heartland'},&lt;br /&gt;
	['CITEREFSanders2007'] = {'Sanders-Akron'},&lt;br /&gt;
	['CITEREFSarikakis1974'] = {'Ιστορία του Ελληνικού Έθνους'},&lt;br /&gt;
	['CITEREFSaunders2001'] = {'Saunders-Merging Lines'},&lt;br /&gt;
	['CITEREFSaunders2013'] = {'Saunders-Giants of the Seas'},&lt;br /&gt;
	['CITEREFSavadaShaw1992'] = {'Country study'},&lt;br /&gt;
	['CITEREFSavoryKaramustafa1998'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFScarce1986'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFSchaeferWolff1999'] = {'Schaefer Wolff Topological Vector Spaces'},&lt;br /&gt;
	['CITEREFSchafer1996'] = {'Schafer-Classic-Railroads-1'},&lt;br /&gt;
	['CITEREFSchafer1998'] = {'Schafer-Vintage Diesel'},&lt;br /&gt;
	['CITEREFSchafer2000'] = {'Schafer-More-Classic'},&lt;br /&gt;
	['CITEREFSchafer2003'] = {'Schafer-Classic-Railroads-3'},&lt;br /&gt;
	['CITEREFSchaferSolomon1997'] = {'Schafer-Pennsylvania'},&lt;br /&gt;
	['CITEREFSchaferWelsh1997'] = {'Schafer-Classic'},&lt;br /&gt;
	['CITEREFSchaferWelsh2002'] = {'Schafer-Streamliners'},&lt;br /&gt;
	['CITEREFSchaferWelshHolland2001'] = {'Schafer-American passenger train'},&lt;br /&gt;
	['CITEREFSchaff-Herzog'] = {'Schaff-Herzog'},&lt;br /&gt;
	['CITEREFSchechter1996'] = {'Schechter Handbook of Analysis and Its Foundations'},&lt;br /&gt;
	['CITEREFScheide1960'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFSchicht1805'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFSchilling1997'] = {'Schilling-pop-culture'},&lt;br /&gt;
	['CITEREFSchindel2013'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFSchippmann1986'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFSchippmann1987'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFSchlitter2005'] = {'MSW3 Tubulidentata'},&lt;br /&gt;
	['CITEREFSchlumberger1983'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFSchmieder1950'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFSchmieder1990'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFSchmitt1986'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFSchmitt1989'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFSchmitt1993'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFSchmitt1994'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFSchmitt1995'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFSchmitt2002'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFSchmitt2004'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFSchmitt2005'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFSchmitt2018'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFSchmittBailey1986'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFSchmitz1870'] = {'Cite DGRBM'},&lt;br /&gt;
	['CITEREFSchneider1907'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFSchneider1912'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFScholze1736'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFSchroeter1961'] = {'Schroeter-Eisenbahnen'},&lt;br /&gt;
	['CITEREFSchroeterRamaer1993'] = {'Schroeter-Ramaer-Eisenbahnen'},&lt;br /&gt;
	['CITEREFSchubert-online'] = {'Schubert\'s compositions (references)'},&lt;br /&gt;
	['CITEREFSchubert1968'] = {'Schubert Topology'},&lt;br /&gt;
	['CITEREFSchulenberg2010'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFSchulenberg2013'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFSchulze1980'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFSchulze1983'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFSchulze1984'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFSchwieterman2001'] = {'Schwieterman-Leaves-Eastern'},&lt;br /&gt;
	['CITEREFScottNegus2011'] = {'Scott-Negus-Cellar Door'},&lt;br /&gt;
	['CITEREFScribbins1970'] = {'Scribbins-Hiawatha'},&lt;br /&gt;
	['CITEREFScribbins2008'] = {'Scribbins-400-2008', 'Scribbins-Remembered'},&lt;br /&gt;
	['CITEREFSearle'] = {'Cite sslidx'},&lt;br /&gt;
	['CITEREFSearle1980'] = {'Searle 1980'},&lt;br /&gt;
	['CITEREFSegal1982'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFSellwood1983'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFSemmensGoldfinch2003'] = {'Book-Semmens-Goldfinch-How Steam Locomotives Really Work'},&lt;br /&gt;
	['CITEREFSemsarZand2008'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFSetton1975'] = {'Setton-A History of the Crusades'},&lt;br /&gt;
	['CITEREFSetton1976'] = {'The Papacy and the Levant'},&lt;br /&gt;
	['CITEREFSetton1978'] = {'The Papacy and the Levant'},&lt;br /&gt;
	['CITEREFSetton1984'] = {'The Papacy and the Levant'},&lt;br /&gt;
	['CITEREFSettonHazard1975'] = {'Setton-A History of the Crusades'},&lt;br /&gt;
	['CITEREFSfyroeras1975'] = {'Ιστορία του Ελληνικού Έθνους'},&lt;br /&gt;
	['CITEREFShahbazi1986'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFShahbazi1987'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFShahbazi1988'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFShahbazi1989'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFShahbazi1991'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFShahbazi1994'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFShahbazi2002'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFShahbazi2003'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFShahbazi2004'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFShahbazi2005'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFShahbaziBosworth1990'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFShahbaziRichter-Bernburg2002'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFShaki1991'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFShaughnessy1997'] = {'Shaughnessy-DH'},&lt;br /&gt;
	['CITEREFShaw1978'] = {'Shaw-RailroadAccidents'},&lt;br /&gt;
	['CITEREFShayegan2004'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFShayesteh2013'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFSheikhsofla2018'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFShindo2004'] = {'Kaneto-shindo-shinario-jinsei'},&lt;br /&gt;
	['CITEREFShippey2005'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFShoarian-SattariRezaeeNegahban2008'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFShoshani2005'] = {'MSW3 Shoshani'},&lt;br /&gt;
	['CITEREFShtern2001'] = {'Springer', 'SpringerEOM'},&lt;br /&gt;
	['CITEREFSiegele1957'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFSilanos2014'] = {'DBI', 'Dizionario Biografico degli Italiani'},&lt;br /&gt;
	['CITEREFSilke2006'] = {'O\'Donnell family tree'},&lt;br /&gt;
	['CITEREFSimmons2005'] = {'MSW3 Chiroptera'},&lt;br /&gt;
	['CITEREFSimon1966'] = {'Simon-Wines Australia'},&lt;br /&gt;
	['CITEREFSimonWarner2011'] = {'Amtrak By the Numbers'},&lt;br /&gt;
	['CITEREFSinclair1911'] = {'DCBL'},&lt;br /&gt;
	['CITEREFSinger1905'] = {'Jewish Encyclopedia'},&lt;br /&gt;
	['CITEREFSix1934'] = {'Cite Six', 'Cite six'},&lt;br /&gt;
	['CITEREFSkjærvø2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFSkoulatos1980'] = {'Les personnages byzantins de l\'Alexiade'},&lt;br /&gt;
	['CITEREFSloan1964'] = {'Sloan1964'},&lt;br /&gt;
	['CITEREFSmid2008'] = {'Smid2008'},&lt;br /&gt;
	['CITEREFSmid2010'] = {'Smid2010'},&lt;br /&gt;
	['CITEREFSmith1854'] = {'Cite DGRG', 'DGRG'},&lt;br /&gt;
	['CITEREFSmith1870'] = {'DGRBM', 'Cite DGRBM'},&lt;br /&gt;
	['CITEREFSmith1873'] = {'DGRBM', 'Cite DGRBM'},&lt;br /&gt;
	['CITEREFSmith1876'] = {'DGRBM', 'Cite DGRBM'},&lt;br /&gt;
	['CITEREFSmith1880'] = {'DGRBM', 'Cite DGRBM'},&lt;br /&gt;
	['CITEREFSmith2010'] = {'Smith-Cruise Ships-2010'},&lt;br /&gt;
	['CITEREFSolomentsev2001'] = {'Springer', 'SpringerEOM'},&lt;br /&gt;
	['CITEREFSolomon2000'] = {'Solomon-American Diesel', 'Solomon-UP'},&lt;br /&gt;
	['CITEREFSolomon2003'] = {'Solomon-Masterpieces'},&lt;br /&gt;
	['CITEREFSolomon2004'] = {'Solomon-Amtrak'},&lt;br /&gt;
	['CITEREFSolomon2005'] = {'Solomon-SP-Passenger'},&lt;br /&gt;
	['CITEREFSolomon2006'] = {'Solomon-EMD Locomotives'},&lt;br /&gt;
	['CITEREFSolomon2011'] = {'Solomon-Modern Diesel'},&lt;br /&gt;
	['CITEREFSolomon2014'] = {'Solomon-GE and EMD'},&lt;br /&gt;
	['CITEREFSolomonSchafer2007'] = {'Solomon-New York Central'},&lt;br /&gt;
	['CITEREFSolopova2009'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFSorensen1956'] = {'Sorensen1956'},&lt;br /&gt;
	['CITEREFSoucek1982'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFSoucek1983'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFSoustal1991'] = {'Tabula Imperii Byzantini'},&lt;br /&gt;
	['CITEREFSoustalKoder1981'] = {'Tabula Imperii Byzantini'},&lt;br /&gt;
	['CITEREFSpielhoff1991'] = {'Spielhoff-EL'},&lt;br /&gt;
	['CITEREFSpitta1894'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFSpitta1899'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFSpringirth2016'] = {'Springirth-Philadelphia'},&lt;br /&gt;
	['CITEREFSpuhler1986'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFSpuler1983'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFSpuler1987'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFSpyropoulos1928'] = {'Great Military and Naval Encyclopaedia'},&lt;br /&gt;
	['CITEREFStagner1993'] = {'Stagner-Transition'},&lt;br /&gt;
	['CITEREFStansfield1999'] = {'Stansfield-AyrRenfrew'},&lt;br /&gt;
	['CITEREFStatistical_Yearbook_of_the_Republic_of_Croatia_2015'] = {'Croatia Yearbook 2015'},&lt;br /&gt;
	['CITEREFStaufer1993'] = {'Staufer-Pennsy_III'},&lt;br /&gt;
	['CITEREFStauferPennypacker1962'] = {'Staufer-Pennsy'},&lt;br /&gt;
	['CITEREFStauferPennypacker1968'] = {'Staufer-Pennsy Power II'},&lt;br /&gt;
	['CITEREFStaunton1988'] = {'Australian Dictionary of Biography'},&lt;br /&gt;
	['CITEREFSternFishmanTilove2006'] = {'Cite New York 2000', 'Cite NY2000', 'Cite ny2000', 'Cite NY 2000', 'Cite ny 2000'},&lt;br /&gt;
	['CITEREFSternGilmartinMassengale1983'] = {'Cite New York 1900', 'Cite NY1900'},&lt;br /&gt;
	['CITEREFSternGilmartinMellins1987'] = {'Cite New York 1930', 'Cite NY 1930', 'Cite NY1930', 'Cite ny1930', 'Cite ny 1930'},&lt;br /&gt;
	['CITEREFSternMellinsFishman1995'] = {'Cite New York 1960', 'Cite NY1960', 'Cite NY 1960', 'Cite ny1960', 'Cite ny 1960'},&lt;br /&gt;
	['CITEREFSternMellinsFishman1999'] = {'Cite New York 1880', 'Cite NY1880', 'Cite NY 1880', 'Cite ny1880', 'Cite ny 1880'},&lt;br /&gt;
	['CITEREFStewart1974'] = {'When Steam Was King'},&lt;br /&gt;
	['CITEREFStrachey1981'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFStrickland1983'] = {'Strickland Locomotive Directory'},&lt;br /&gt;
	['CITEREFStähelin1909'] = {'Schaff-Herzog'},&lt;br /&gt;
	['CITEREFSuetin2001'] = {'Springer', 'SpringerEOM'},&lt;br /&gt;
	['CITEREFSundermann1988'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFSusanne_Schurr1992'] = {'BBKL'},&lt;br /&gt;
	['CITEREFSusanne_Siebert1992'] = {'BBKL'},&lt;br /&gt;
	['CITEREFSvolopoulos1977'] = {'Ιστορία του Ελληνικού Έθνους'},&lt;br /&gt;
	['CITEREFSwartz1992'] = {'Swartz An Introduction to Functional Analysis'},&lt;br /&gt;
&lt;br /&gt;
----------&amp;lt; T &amp;gt;----------&lt;br /&gt;
	['CITEREFLondon_Gazette'] = {'London Gazette'},&lt;br /&gt;
	['CITEREFTaber1977'] = {'Taber-DLW-19th'},&lt;br /&gt;
	['CITEREFTaberTaber1980'] = {'Taber-DLW-20th-1'},&lt;br /&gt;
	['CITEREFTaberTaber1981'] = {'Taber-DLW-20th-2'},&lt;br /&gt;
	['CITEREFTafazzoli1999'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFTafazzoli1999'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFTafazzoli2000'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFTalbot1991'] = template_names['ODB'],&lt;br /&gt;
	['CITEREFTalbotKazhdan1991'] = template_names['ODB'],&lt;br /&gt;
	['CITEREFTanındı2008'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFTao2009'] = {'Cite Cambridge History of China', 'The Cambridge History of China'},&lt;br /&gt;
	['CITEREFTao2009'] = {'Cite Cambridge History of China'},&lt;br /&gt;
	['CITEREFTer-Ghewondyan1976'] = {'The Arab Emirates in Bagratid Armenia'},&lt;br /&gt;
	['CITEREFThe_London_Gazette1950'] = {'London Gazette'},&lt;br /&gt;
	['CITEREFThe_London_Gazette_26_September_1919'] = {'London Gazette'},&lt;br /&gt;
	['CITEREFThielemann2012'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFThomas1970'] = {'HistoryofParliament'},&lt;br /&gt;
	['CITEREFThomas1971'] = {'Thomas-History-VI'},&lt;br /&gt;
	['CITEREFThrush2010'] = {'HistoryofParliament'},&lt;br /&gt;
	['CITEREFTikhomirov2001'] = {'Springer'},&lt;br /&gt;
	['CITEREFTittel1966'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFTodt1996'] = {'BBKL'},&lt;br /&gt;
	['CITEREFTodtVest2014'] = {'Tabula Imperii Byzantini'},&lt;br /&gt;
	['CITEREFTolkien1937'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFTolkien1954'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFTolkien1955'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFTolkien1964'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFTolkien1966'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFTolkien1977'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFTolkien1979'] = {'ME-ref'},&lt;br /&gt;
	['CITEREFTolkien1980'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFTolkien1982'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFTolkien1983'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFTolkien1984'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFTolkien1985'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFTolkien1986'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFTolkien1987'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFTolkien1988'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFTolkien1989'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFTolkien1990'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFTolkien1992'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFTolkien1993'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFTolkien1994'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFTolkien1996'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFTolkien1998'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFTolkien1999'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFTolkien2007'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFTolkienSwann1978'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFTolkienSwann2002'] = {'ME-ref'},&lt;br /&gt;
	['CITEREFTolkienTolkien1992'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFTonks1988'] = {'Tonks ironstone'},&lt;br /&gt;
	['CITEREFTonks1989'] = {'Tonks ironstone'},&lt;br /&gt;
	['CITEREFTonks1992'] = {'Tonks ironstone'},&lt;br /&gt;
	['CITEREFTopping1975'] = {'Setton-A History of the Crusades', 'Wisconsin History of the Crusades'},&lt;br /&gt;
	['CITEREFTorri2013'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFTougher2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFToumanoff1986'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFToumanoff2010'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFToumanoffChaumont1987'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFTourret1995'] = {'Tourret-Allied Military Locomotives'},&lt;br /&gt;
	['CITEREFTrapp1991'] = template_names['ODB'],&lt;br /&gt;
	['CITEREFTrappBeyerSturm-Schnabl1983'] = {'Prosopographisches Lexikon der Palaiologenzeit'},&lt;br /&gt;
	['CITEREFTrappWaltherBeyer1976'] = {'Prosopographisches Lexikon der Palaiologenzeit'},&lt;br /&gt;
	['CITEREFTrappWaltherBeyerSturm-Schnabl1978'] = {'Prosopographisches Lexikon der Palaiologenzeit'},&lt;br /&gt;
	['CITEREFTreadgold1988'] = {'The Byzantine Revival, 780–842'},&lt;br /&gt;
	['CITEREFTreadgold1997'] = {'A History of the Byzantine State and Society'},&lt;br /&gt;
	['CITEREFTrèves2006'] = {'Trèves François Topological vector spaces, distributions and kernels'},&lt;br /&gt;
	['CITEREFTsutsiev2014'] = {'Cite Atlas of the Ethno-Political History of the Caucasus'},&lt;br /&gt;
	['CITEREFTucker2009'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFTurim1998'] = {'Turim-oshima'},&lt;br /&gt;
	['CITEREFTuring1950'] = {'Turing 1950'},&lt;br /&gt;
&lt;br /&gt;
----------&amp;lt; U &amp;gt;----------&lt;br /&gt;
	['CITEREFUS-NHub_Music_Deposit_31_(Klavierbüchlein_für_W._F._Bach)_at_Bach_Digital'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFUtas2002'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFUwe_Eckardt2001'] = {'BBKL'},&lt;br /&gt;
	['CITEREFunknown_author1881'] = {'Cite ADB'},&lt;br /&gt;
	['CITEREFunknown_author1882'] = {'Cite ADB'},&lt;br /&gt;
&lt;br /&gt;
----------&amp;lt; V &amp;gt;----------&lt;br /&gt;
	['CITEREFVakalopoulos1975'] = {'Ιστορία του Ελληνικού Έθνους'},&lt;br /&gt;
	['CITEREFVan_Cleve1969'] = {'Setton-A History of the Crusades'},&lt;br /&gt;
	['CITEREFVan_Hoorickx1971'] = {'Schubert\'s compositions (references)'},&lt;br /&gt;
	['CITEREFVan_Hoorickx_1974–1976'] = {'Schubert\'s compositions (references)'},&lt;br /&gt;
	['CITEREFVan_Lint2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFVan_Riemsdijk,_Compound_Locomotives'] = {'Book-Van Riemsdijk-Compound Locomotives'},&lt;br /&gt;
	['CITEREFVan_Riemsdijk1994'] = {'Book-Van Riemsdijk-Compound Locomotives'},&lt;br /&gt;
	['CITEREFVan_Tricht2011'] = {'The Latin Renovatio of Byzantium'},&lt;br /&gt;
	['CITEREFVandenberghen1989'] = {'Vandenberghen-SNCB12.2'},&lt;br /&gt;
	['CITEREFVarzos1984'] = {'Η Γενεαλογία των Κομνηνών', 'Varzos-Genealogy of the Komnenoi'},&lt;br /&gt;
	['CITEREFVasiliev1935'] = {'Byzance et les Arabes'},&lt;br /&gt;
	['CITEREFVasiliev1968'] = {'Byzance et les Arabes'},&lt;br /&gt;
	['CITEREFVenables1911'] = {'DCBL'},&lt;br /&gt;
	['CITEREFVendler1997'] = {'Shakespeare sonnets bibliography'},&lt;br /&gt;
	['CITEREFVenetis2012'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFVenn1954'] = {'VennAC'},&lt;br /&gt;
	['CITEREFVentura1963'] = {'DBI', 'Dizionario Biografico degli Italiani'},&lt;br /&gt;
	['CITEREFVesel1999'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFVetter1713'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFVevainaCanepa2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFVeysey1958'] = {'Veysey-PE-1958'},&lt;br /&gt;
	['CITEREFVischer1912'] = {'Schaff-Herzog'},&lt;br /&gt;
	['CITEREFVogelsang2003'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFVolkmer1991'] = {'Volkmer-Pennsy-Electric'},&lt;br /&gt;
	['CITEREFvan_Leyden1956'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFvan_Lint2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFvon_Prantl1879'] = {'Cite ADB'},&lt;br /&gt;
&lt;br /&gt;
----------&amp;lt; W &amp;gt;----------&lt;br /&gt;
	['CITEREFWagnerBäzoldZschechLüderitz1990'] = {'Wagner-EFA2.3.2'},&lt;br /&gt;
	['CITEREFWalter1967'] = {'DBI', 'Dizionario Biografico degli Italiani'},&lt;br /&gt;
	['CITEREFWalter_Asmus1966'] = template_names['NDB'],&lt;br /&gt;
	['CITEREFWayner1972'] = {'Wayner - Car names, numbers, consists'},&lt;br /&gt;
	['CITEREFWayner1973'] = {'Wayner-Spotter-2nd'},&lt;br /&gt;
	['CITEREFWebb2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFWeber2016'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFWechsler1979'] = {'Cite Cambridge History of China', 'The Cambridge History of China'},&lt;br /&gt;
	['CITEREFWechsler1979'] = {'Cite Cambridge History of China'},&lt;br /&gt;
	['CITEREFWegman2008'] = {'Wegman-Illustrated'},&lt;br /&gt;
	['CITEREFWeibel1994'] = {'Weibel IHA'},&lt;br /&gt;
	['CITEREFWeinrebHibbertKeayKeay2008'] = {'London encyclopedia'},&lt;br /&gt;
	['CITEREFWeisbrod1991'] = {'Weisbrod-EFA1.5'},&lt;br /&gt;
	['CITEREFWeisbrodMüllerPetznik1978'] = {'Weisbrod-EFA1.2'},&lt;br /&gt;
	['CITEREFWeiskopf1987'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFWeiskopf1989'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFWeiskopf1990'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFWeiskopf1993'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFWellhausen1927'] = {'The Arab Kingdom and its Fall'},&lt;br /&gt;
	['CITEREFWells1982'] = {'Accents of English'},&lt;br /&gt;
	['CITEREFWells1990'] = {'Cite LPD'},&lt;br /&gt;
	['CITEREFWells2000'] = {'Cite LPD'},&lt;br /&gt;
	['CITEREFWells2008'] = {'Cite LPD'},&lt;br /&gt;
	['CITEREFWelsh2006'] = {'Welsh-Broadway'},&lt;br /&gt;
	['CITEREFWelsh2008'] = {'Welsh-UP'},&lt;br /&gt;
	['CITEREFWerner_Raupp2001'] = {'BBKL'},&lt;br /&gt;
	['CITEREFWestcott1911'] = {'DCBL'},&lt;br /&gt;
	['CITEREFWestermayer,_Georg1882'] = {'Cite ADB'},&lt;br /&gt;
	['CITEREFWham1997'] = {'Wham-Ayrshire'},&lt;br /&gt;
	['CITEREFWharton1991'] = template_names['ODB'],&lt;br /&gt;
	['CITEREFWhishaw1842'] = {'Whishaw-RailofGB-2ndEd'},&lt;br /&gt;
	['CITEREFWhishaw1969'] = {'Whishaw-RailofGB'},&lt;br /&gt;
	['CITEREFWhite1985'] = {'White-Passenger-1985'},&lt;br /&gt;
	['CITEREFWhite1993'] = {'White - American railroad freight car'},&lt;br /&gt;
	['CITEREFWhiteWillenskyLeadon2010'] = {'Cite aia5'},&lt;br /&gt;
	['CITEREFWhitehurst1973'] = {'Whitehurst GW Engines from 1940'},&lt;br /&gt;
	['CITEREFWhittow1996'] = {'The Making of Byzantium, 600–1025'},&lt;br /&gt;
	['CITEREFWickman1982'] = {'Country study'},&lt;br /&gt;
	['CITEREFWiesehöfer1986'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFWiesehöfer2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFWilansky2008'] = {'Wilansky Topology for Analysis 2008'},&lt;br /&gt;
	['CITEREFWilansky2013'] = {'Wilansky Modern Methods in Topological Vector Spaces'},&lt;br /&gt;
	['CITEREFWillard2004'] = {'Willard General Topology'},&lt;br /&gt;
	['CITEREFWilliams1998'] = {'Williams-Philadelphia'},&lt;br /&gt;
	['CITEREFWilliams2003'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFWilliams2014'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFWillis1750'] = {'Cite Notitia Parliamentaria'},&lt;br /&gt;
	['CITEREFWilson2017'] = {'Wilson-Guide'},&lt;br /&gt;
	['CITEREFWilsonFiske1889'] = {'Appletons\'', 'Cite Appletons\'', 'Appletons'},&lt;br /&gt;
	['CITEREFWilsonFiske1891'] = {'Appletons\'', 'Cite Appletons\'', 'Appletons'},&lt;br /&gt;
	['CITEREFWilsonFiske1892'] = {'Appletons\'', 'Cite Appletons\'', 'Appletons'},&lt;br /&gt;
	['CITEREFWilsonFiske1900'] = {'Appletons\'', 'Cite Appletons\'', 'Appletons'},&lt;br /&gt;
	['CITEREFWiltshire2000'] = {'Lloyd-Margaret River'},&lt;br /&gt;
	['CITEREFWinfieldLyon2004'] = {'Winfield'},&lt;br /&gt;
	['CITEREFWinkler1883'] = template_names['ADB'],&lt;br /&gt;
	['CITEREFWitakowski2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFWolff1969'] = {'Setton-A History of the Crusades'},&lt;br /&gt;
	['CITEREFWollny2015'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFWood1907'] = {'Cite Nuttall', 'Nuttall'},&lt;br /&gt;
	['CITEREFWoodsKilpatrick2005'] = {'MSW3 Hystricognathi'},&lt;br /&gt;
	['CITEREFWorden2008'] = {'Country study'},&lt;br /&gt;
	['CITEREFWortley2010'] = {'John Skylitzes: A Synopsis of Byzantine History, 811–1057'},&lt;br /&gt;
	['CITEREFWozencraft2005'] = {'MSW3 Carnivora'},&lt;br /&gt;
	['CITEREFWright1979'] = {'Cite Cambridge History of China', 'The Cambridge History of China'},&lt;br /&gt;
	['CITEREFWright1979'] = {'Cite Cambridge History of China'},&lt;br /&gt;
	['CITEREFWright2000'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFWägliJacobi2010'] = {'Schienennetz Schweiz'},&lt;br /&gt;
	['CITEREFWürsch2013'] = template_names['Iranica'],&lt;br /&gt;
&lt;br /&gt;
----------&amp;lt; X &amp;gt;----------&lt;br /&gt;
	&lt;br /&gt;
&lt;br /&gt;
----------&amp;lt; Y &amp;gt;----------&lt;br /&gt;
	['CITEREFYakubova2016'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFYarshater1983'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFYarshater1986'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFYarshater1988'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFYarshater2018'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFYarshater2021'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFYazici2002'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFYenne2005'] = {'Yenne-Chiefs'},&lt;br /&gt;
	['CITEREFYildiz2004'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFYonge1990'] = {'Quail-4'},&lt;br /&gt;
	['CITEREFYonge1994'] = {'Quail-5'},&lt;br /&gt;
	['CITEREFYonge2002'] = {'Quail-5'},&lt;br /&gt;
	['CITEREFYonge2008'] = {'Quail-5'},&lt;br /&gt;
	['CITEREFYonge2016'] = {'Quail-2-2016'},&lt;br /&gt;
	['CITEREFYongePadgettSzwenk2013'] = {'Quail-4-Paper-3rdEd'},&lt;br /&gt;
	['CITEREFYu1986'] = {'Cite Cambridge History of China'},&lt;br /&gt;
	['CITEREFYusofi1990'] = template_names['Iranica'],&lt;br /&gt;
&lt;br /&gt;
----------&amp;lt; Z &amp;gt;----------&lt;br /&gt;
	['CITEREFZahn1889–1893'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFZakeri2021'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFZarrinkoubNegahban2008'] = {'Encyclopaedia Islamica'},&lt;br /&gt;
	['CITEREFZarrinkub1975'] = template_names['Cam_Hist_Iran'],&lt;br /&gt;
	['CITEREFZeiniWiesehöfer2018'] = template_names['ODLA'],&lt;br /&gt;
	['CITEREFZekulich2000'] = {'Zekulich-WineWA'},&lt;br /&gt;
	['CITEREFZimmermann2004'] = {'Zimmermann-Burlington'},&lt;br /&gt;
	['CITEREFZimmermann2007'] = {'Zimmermann-GrandLuxe'},&lt;br /&gt;
	['CITEREFZuccaric._1747'] = {'Bach\'s compositions (sources)'},&lt;br /&gt;
	['CITEREFZălinescu2002'] = {'Zălinescu Convex Analysis in General Vector Spaces 2002'},&lt;br /&gt;
&lt;br /&gt;
----------&amp;lt; OTHER &amp;gt;----------&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----------&amp;lt; UNSORTED &amp;gt;----------&lt;br /&gt;
	['CITEREFDaniel2001'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFΙστορία_του_Ελληνικού_Έθνους'] = {'Ιστορία του Ελληνικού Έθνους'},&lt;br /&gt;
	['CITEREFÖz1993'] = {'TDV Encyclopedia of Islam'},&lt;br /&gt;
	['CITEREFÖzgüdenli2008'] = template_names['Iranica'],&lt;br /&gt;
	['CITEREFÖzaydın2002'] = {'TDV Encyclopedia of Islam'},&lt;br /&gt;
	['CITEREFÖzaydın2006'] = {'TDV Encyclopedia of Islam'},&lt;br /&gt;
	['CITEREFÖzkuyumcu2006'] = {'TDV Encyclopedia of Islam'},&lt;br /&gt;
	['CITEREFÖztürk2013'] = {'TDV Encyclopedia of Islam'},&lt;br /&gt;
	['CITEREFΜεγάλη_Στρατιωτικὴ_καὶ_Ναυτικὴ_Ἐγκυκλοπαιδεία'] = {'Great Military and Naval Encyclopaedia'},&lt;br /&gt;
	['CITEREFŞeşen1988'] = {'TDV Encyclopedia of Islam'},&lt;br /&gt;
	['CITEREFCotsonis2020'] = {'Catalogue of Byzantine Seals at Dumbarton Oaks and in the Fogg Museum of Art'},&lt;br /&gt;
	['CITEREFКавказский_календарь_на_1913_год'] = {'Cite Kavkazskiy Kalendar 1913'},&lt;br /&gt;
	['CITEREFКавказский_календарь_на_1917_год'] = {'Cite Kavkazskiy Kalendar 1917'},&lt;br /&gt;
	['CITEREFКавказский_календарь_на_1910_год'] = {'Cite Kavkazskiy Kalendar 1910'},&lt;br /&gt;
	['CITEREFКавказский_календарь_на_1915_год'] = {'Cite Kavkazskiy Kalendar 1915'},&lt;br /&gt;
	['CITEREFTolkien2015'] = template_names['ME-ref'],&lt;br /&gt;
&lt;br /&gt;
	['CITEREFTolkien2015'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFTolkien2018'] = template_names['ME-ref'],&lt;br /&gt;
	['CITEREFShippey2001'] = template_names['ME-ref'],&lt;br /&gt;
&lt;br /&gt;
	['CITEREFTolkien2014'] = template_names['ME-ref'],&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E X P O R T E D   T A B L E S &amp;gt;------------------------------------------------&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	DNB_special_patterns = DNB_special_patterns,&lt;br /&gt;
	DNB_template_names = template_names['DNB'],&lt;br /&gt;
	special_patterns = special_patterns,&lt;br /&gt;
	whitelist = whitelist,&lt;br /&gt;
	wrapper_templates = wrapper_templates,&lt;br /&gt;
	}&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%A8%A1%E5%9D%97:Footnotes/anchor_id_list&amp;diff=35656</id>
		<title>模块:Footnotes/anchor id list</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%A8%A1%E5%9D%97:Footnotes/anchor_id_list&amp;diff=35656"/>
		<updated>2024-07-04T08:37:15Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：建立内容为“require('strict'); local data = mw.loadData ('Module:Footnotes/anchor id list/data'); local whitelist = mw.loadData ('Module:Footnotes/whitelist'); local Lang_obj…”的新页面&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;require('strict');&lt;br /&gt;
local data = mw.loadData ('Module:Footnotes/anchor id list/data');&lt;br /&gt;
local whitelist = mw.loadData ('Module:Footnotes/whitelist');&lt;br /&gt;
local Lang_obj = mw.language.getContentLanguage();								-- used by template_list_add() to uppercase first letter of template name TODO: better way to do that?&lt;br /&gt;
&lt;br /&gt;
local redirects_date = {&lt;br /&gt;
	['date'] = true,&lt;br /&gt;
	['datetomos'] = true,&lt;br /&gt;
	['formatdate'] = true,&lt;br /&gt;
	['isotodmymdy'] = true,&lt;br /&gt;
	['isotomos'] = true,&lt;br /&gt;
	}&lt;br /&gt;
local redirects_patent = {														-- special case cs1-like templates because uses different parameters for name and date in anchor ID&lt;br /&gt;
	['Cite patent'] = true,&lt;br /&gt;
	['Citeref patent'] = true,&lt;br /&gt;
	['Ref patent'] = true,&lt;br /&gt;
	}&lt;br /&gt;
local redirects_sfnref = {&lt;br /&gt;
	['sfnref'] = true,&lt;br /&gt;
	['harvid'] = true,&lt;br /&gt;
	}&lt;br /&gt;
local aliases_author = {														-- these use pseudo-patterns in the same way as cs1|2; '#' represents 1 or more enumerator digits&lt;br /&gt;
	'last#',&lt;br /&gt;
	'author#',&lt;br /&gt;
	'surname#',&lt;br /&gt;
	'author-last#',&lt;br /&gt;
	'author#-last',&lt;br /&gt;
	'subject#',&lt;br /&gt;
	'host#',&lt;br /&gt;
	}&lt;br /&gt;
local aliases_contributor = {&lt;br /&gt;
	'contributor#',&lt;br /&gt;
	'contributor-last#',&lt;br /&gt;
	'contributor#-last',&lt;br /&gt;
	'contributor-surname#',&lt;br /&gt;
	'contributor#-surname',&lt;br /&gt;
	}&lt;br /&gt;
local aliases_editor = {&lt;br /&gt;
	'editor#',&lt;br /&gt;
	'editor-last#',&lt;br /&gt;
	'editor#-last',&lt;br /&gt;
	'editor-surname#',&lt;br /&gt;
	'editor#-surname',&lt;br /&gt;
	}&lt;br /&gt;
local aliases_harvc_author = {&lt;br /&gt;
	'last#',&lt;br /&gt;
	'author#',&lt;br /&gt;
	}&lt;br /&gt;
local aliases_inventor = {														-- cite patent&lt;br /&gt;
	'inventor#',&lt;br /&gt;
	'inventor-last#',&lt;br /&gt;
	'inventor#-last',&lt;br /&gt;
	'inventor-surname#',&lt;br /&gt;
	'inventor#-surname',&lt;br /&gt;
	'invent#',&lt;br /&gt;
	'invent-#',&lt;br /&gt;
	}&lt;br /&gt;
local alias_patterns_date = {													-- normal lua patterns for most cs1|2-like templates&lt;br /&gt;
	'|%s*year%s*=%s*',&lt;br /&gt;
	'|%s*date%s*=%s*',&lt;br /&gt;
	'|%s*publication%-?date%s*=%s*',&lt;br /&gt;
	'|%s*air%-?date%s*=%s*',&lt;br /&gt;
	}&lt;br /&gt;
local alias_patterns_harvc_date = {												-- normal lua patterns for harvc template&lt;br /&gt;
	'|%s*anchor%-year%s*=%s*',&lt;br /&gt;
	'|%s*year%s*=%s*',&lt;br /&gt;
	}&lt;br /&gt;
local alias_patterns_patent_date = {											-- normal lua patterns for cite patent templates&lt;br /&gt;
	'|%s*issue%-date%s*=%s*',&lt;br /&gt;
	'|%s*gdate%s*=%s*',&lt;br /&gt;
	'|%s*publication%-date%s*=%s*',&lt;br /&gt;
	'|%s*pubdate%s*=%s*',&lt;br /&gt;
	}&lt;br /&gt;
local patterns_date = {															-- normal lua patterns&lt;br /&gt;
--	'(%d%d%d%d–%d%d%d%d%l?)$',													-- YYYY–YYYY four-digit year range at end (Season YYYY–YYYY); with or without dab&lt;br /&gt;
	'(%d%d%d%d)%D+(%d%d%d%d%l?)$',												-- any range with four-digit years; with or without dab; not two captures&lt;br /&gt;
	'^(%d%d%d%d–%d%d%l?)$',														-- YYYY–YY two-digit year range; with or without dab&lt;br /&gt;
	'^(c%. %d%d%d%d?%l?)$',														-- three- or four-digit circa year; with or without dab&lt;br /&gt;
	'(%d%d%d%d?%l?)$',															-- three- or four-digit year at end of date (dmy or mdy); with or without dab&lt;br /&gt;
	'^(%d%d%d%d?%l?)',															-- three- or four-digit year at beginning of date (ymd or YYYY); with or without dab&lt;br /&gt;
	'^(n%.d%.%l?)$',															-- 'no date' with dots; with or without dab&lt;br /&gt;
	'^(nd%l?)$',																-- 'no date' without dots; with or without dab&lt;br /&gt;
	}&lt;br /&gt;
local patterns_tags = {&lt;br /&gt;
	'&amp;lt;nowiki&amp;gt;.-&amp;lt;/nowiki&amp;gt;',&lt;br /&gt;
	'&amp;lt;!%-%-.-%-%-&amp;gt;',&lt;br /&gt;
	'&amp;lt;pre&amp;gt;.-&amp;lt;/pre&amp;gt;',&lt;br /&gt;
	'&amp;lt;syntaxhighlight.-&amp;gt;.-&amp;lt;/syntaxhighlight&amp;gt;',&lt;br /&gt;
	'&amp;lt;source.-&amp;gt;.-&amp;lt;/source&amp;gt;',													-- deprecated alias of syntaxhighlight tag&lt;br /&gt;
	}&lt;br /&gt;
local template_skip = {															-- templates to be skipped for whatever reason; mostly because they resemble cs1-like templates&lt;br /&gt;
	['Citation-attribution'] = true,&lt;br /&gt;
	}&lt;br /&gt;
local Article_content;&lt;br /&gt;
&lt;br /&gt;
local anchor_id_list = {};														-- exported tables&lt;br /&gt;
local template_list = {};&lt;br /&gt;
local article_whitelist = {};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A R T I C L E _ C O N T E N T _ G E T &amp;gt;----------------------------------------&lt;br /&gt;
&lt;br /&gt;
get article content, remove certain html-like tags and their content so that this code doesn't include any citation&lt;br /&gt;
templates inside the tags as valid tagets; they are not.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function article_content_get ()&lt;br /&gt;
	if not Article_content then&lt;br /&gt;
		Article_content = mw.title.getCurrentTitle():getContent() or '';		-- get the content of the article or ''; new pages edited w/ve do not have 'content' until saved; ve does not preview; phab:T221625&lt;br /&gt;
		for _, tag in ipairs (patterns_tags) do&lt;br /&gt;
			Article_content = Article_content:gsub (tag, '');					-- remove certain html-like tags and their content&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S F N R E F _ G E T &amp;gt;----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
make an anchor id from the contents of {{sfnref}} or {{harvid}}.  this function assumes that {{sfnref}} and {{harvid}}&lt;br /&gt;
are correctly formed.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function sfnref_get (template)&lt;br /&gt;
	template = template:gsub ('{{%s*(.-)%s*}}', '%1');							-- strip bounding template markup and trim&lt;br /&gt;
	local parts = mw.text.split (template, '%s*|%s*');							-- split at the pipe and remove extraneous space characters&lt;br /&gt;
	local anchor_id = {};&lt;br /&gt;
&lt;br /&gt;
	if redirects_sfnref[parts[1]:lower()] then&lt;br /&gt;
		anchor_id[1] = 'CITEREF';&lt;br /&gt;
	else&lt;br /&gt;
		return nil;																-- not an sfnref or harvid template&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local i = 2;																-- indexer into parts{} table&lt;br /&gt;
	local j = 2;																-- indexer into anchor_id{} table which already has 'CITEREF' at [1]&lt;br /&gt;
	while parts[i] and 7 &amp;gt; j do													-- loop through what should be just positional parameters for names and year (2-6 four names and a date)&lt;br /&gt;
		if not parts[i]:find ('=') then											-- look for equal sign (named paraneter in a template that doesn't support named parameters)&lt;br /&gt;
			anchor_id[j] = parts[i];											-- positional parameters are saved&lt;br /&gt;
			j = j+1;															-- bump the anchor_id{} indexer&lt;br /&gt;
		end&lt;br /&gt;
		i = i+ 1;																-- bump the parts{} indexer&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return table.concat (anchor_id, '');&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; D A T E _ G E T &amp;gt;--------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
extract year from one of |year=, |date=, |publicationdate=, or |publication-date in that order.  Does not error&lt;br /&gt;
check (that is left to the cs1|2 templates to do)&lt;br /&gt;
&lt;br /&gt;
also gets date from |&amp;lt;date alias&amp;gt;={{date|...}}&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function date_get (template, aliases)&lt;br /&gt;
	local rvalue;&lt;br /&gt;
&lt;br /&gt;
	for _, pattern in ipairs (aliases) do										-- spin through the date alias patterns&lt;br /&gt;
		rvalue = tostring(template):match (pattern);							-- is this |&amp;lt;date alias&amp;gt;= used (tostring() because something makes match() think template is a table)&lt;br /&gt;
		if rvalue then&lt;br /&gt;
			rvalue = tostring(template):match (pattern .. '(%b{})');			-- is rvalue a template?&lt;br /&gt;
			if rvalue then&lt;br /&gt;
				rvalue = rvalue:gsub ('{{%s*(.-)%s*}}', '%1');					-- strip bounding template markup and trim&lt;br /&gt;
				local parts = mw.text.split (rvalue, '%s*|%s*');				-- split at the pipe and remove extraneous space characters&lt;br /&gt;
&lt;br /&gt;
				if redirects_date[parts[1]:lower()] then						-- if parts[1] names {{date}} or redirect&lt;br /&gt;
					rvalue = parts[2];											-- assume that date template is properly formed, first positional parameter is the date&lt;br /&gt;
				else&lt;br /&gt;
					return '';													-- |date= holds some other template than {{date}} or redirect&lt;br /&gt;
				end&lt;br /&gt;
			else&lt;br /&gt;
				rvalue = template:match (pattern .. '([^|}]+)');&lt;br /&gt;
				if rvalue then													-- if rvalue is something&lt;br /&gt;
					rvalue = mw.text.trim (rvalue);								-- trim it&lt;br /&gt;
				end&lt;br /&gt;
				&lt;br /&gt;
				if not rvalue or '' == rvalue then								-- if rvale was nothing or trimed to nothing&lt;br /&gt;
					rvalue = nil;												-- ensure that it is unset so we can try the next parameter in the list&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			if rvalue then&lt;br /&gt;
				for _, pattern in ipairs (patterns_date) do						-- spin through the recognized date formats&lt;br /&gt;
--					date = rvalue:match (pattern);								-- attempt to extract year portion according to the pattern&lt;br /&gt;
					local date, date2 = rvalue:match (pattern);					-- attempt to extract year portion according to the pattern; &amp;lt;date2&amp;gt; gets second year in any range&lt;br /&gt;
					if date then&lt;br /&gt;
						if date2 then											-- when a second year&lt;br /&gt;
							date = table.concat ({date, '–', date2});			-- build a date range&lt;br /&gt;
						end&lt;br /&gt;
						return date;											-- matched so return;&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
				break;															-- found a date but it was malformed so abandon&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return '';																	-- no date param or date param doesn't hold a recognized date; empty string for concatenation&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
--[[--------------------------&amp;lt; V N A M E S _ G E T &amp;gt;----------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
extract names from |vauthors= or |veditors=; there is no |vcontributors= parameter.&lt;br /&gt;
&lt;br /&gt;
splits the v parameter value at the comma; correctly handles accept-as-witten markup when used to wrap a comma-&lt;br /&gt;
separated names (corporate)&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function vnames_get (params, vparam)&lt;br /&gt;
	local vnames = {};															-- first four author or editor names go here&lt;br /&gt;
	local split = {};															-- temp table to assist in decoding accept-as-witten-markup&lt;br /&gt;
&lt;br /&gt;
	if params[vparam] then														-- test for |vauthors= or |veditor=&lt;br /&gt;
		split = mw.text.split (params[vparam], '%s*,%s*');						-- this will separate portions of ((Black, Brown, White, an Co.))&lt;br /&gt;
	&lt;br /&gt;
		local i = 1;															-- an indexer&lt;br /&gt;
		&lt;br /&gt;
		while split[i] do&lt;br /&gt;
			if split[i]:match ('^%(%(.*[^%)][^%)]$') then						-- first segment of comma-separated accept-as-witten; this segment has the opening doubled parens&lt;br /&gt;
				local name = split[i];&lt;br /&gt;
				i=i+1;															-- bump indexer to next segment&lt;br /&gt;
				while split[i] do&lt;br /&gt;
					name = name .. ', ' .. split[i];							-- concatenate with previous segments&lt;br /&gt;
					if split[i]:match ('^.*%)%)$') then							-- if this table member has the closing doubled parens&lt;br /&gt;
						break;													-- and done reassembling so&lt;br /&gt;
					end&lt;br /&gt;
					i=i+1;														-- bump indexer&lt;br /&gt;
				end&lt;br /&gt;
				table.insert (vnames, name);									-- and add accept-as-witten name to the vnames table&lt;br /&gt;
	&lt;br /&gt;
			else&lt;br /&gt;
				table.insert (vnames, split[i]);								-- and add name to the vnames table&lt;br /&gt;
			end&lt;br /&gt;
		i=i+1;																	-- bump indexer&lt;br /&gt;
		if 5 == i then break; end												-- limit to four names&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		for i, vname in ipairs (vnames) do&lt;br /&gt;
			if not vname:match ('%(%(.-%)%)') then								-- without accept-this-value-as-written markup&lt;br /&gt;
				vnames[i] = vname:gsub ('(.-)%s+%u+$', '%1');					-- extract and save surname(s)&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		for i, vname in ipairs (vnames) do										-- repeat, this time for accept-this-value-as-written markup&lt;br /&gt;
			vnames[i] = vname:gsub ('%(%((.-)%)%)', '%1');						-- remove markup if present and save the whole name&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return 0 ~= #vnames and table.concat (vnames) or nil						-- return a concatenation of the vnames; nil else&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; N A M E S _ G E T &amp;gt;------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
cs1|2 makes anchor id from contributor, author, or editor name-lists in that order&lt;br /&gt;
&lt;br /&gt;
get the names from the cs1|2 template;  if there are no contributor names, try author names, then try editor names.&lt;br /&gt;
&lt;br /&gt;
returns concatenated names in enumeration order when successful; nil else&lt;br /&gt;
&lt;br /&gt;
empty name (nameholding parameter n is present without value) and missing name (nameholding parameter n is not&lt;br /&gt;
present) are included as empty string with all other names&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function names_get (params, aliases_list)&lt;br /&gt;
	local names = {};															-- first four author or editor names go here&lt;br /&gt;
	local enum_alias;															-- alias with '#' replaced with a digit&lt;br /&gt;
&lt;br /&gt;
	for enum=1, 4 do															-- four names only&lt;br /&gt;
		for i, alias in ipairs (aliases_list) do&lt;br /&gt;
			if not names[enum] then												-- hanven't found a previous alias with this [enum]? see if we can find this alias with this enum&lt;br /&gt;
				enum_alias = alias:gsub ('#', enum);							-- replace '#' to make 'lastn'&lt;br /&gt;
	&lt;br /&gt;
				if 1 == enum then												-- because |last= and last1= are exact aliases&lt;br /&gt;
					if params[enum_alias] then									-- test |last1= first&lt;br /&gt;
						names[enum] = params[enum_alias];						-- found so save the value assigned to |last1=&lt;br /&gt;
						break;													-- next enum&lt;br /&gt;
					else&lt;br /&gt;
						enum_alias = alias:gsub ('#', '');						-- replace '#' to make 'last'&lt;br /&gt;
						if params[enum_alias] then&lt;br /&gt;
							names[enum] = params[enum_alias];					-- found so save the value assigned to |last=&lt;br /&gt;
							break;												-- next enum&lt;br /&gt;
						end&lt;br /&gt;
					end&lt;br /&gt;
				else															-- here for enum 2, 3, 4&lt;br /&gt;
					if params[enum_alias] then&lt;br /&gt;
						names[enum] = params[enum_alias];						-- found so save the value assigned to |lastn=&lt;br /&gt;
						break;													-- next enum&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for enum=1, 4 do															-- spin through the names table and&lt;br /&gt;
		local name = names[enum];&lt;br /&gt;
		if not name then														-- when nameholding parameter n is not present (nil)&lt;br /&gt;
			name = '';															-- convert to empty string for concatenation&lt;br /&gt;
		end&lt;br /&gt;
		name = name:gsub('%(%((.-)%)%)', '%1');									-- remove accept-as-written markup if present&lt;br /&gt;
		names[enum] = name;														-- save the modified name&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local name_str = table.concat (names);										-- concatenate the names&lt;br /&gt;
	return '' ~= name_str and name_str or nil;									-- return the concatenation if not empty string; nil else&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T E M P L A T E _ S T R I P &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
removes the citation or havrc template's {{ and }} markup then removes, in whole, any templates found inside the&lt;br /&gt;
citation or harvc template.&lt;br /&gt;
&lt;br /&gt;
Templates are not allowed in parameters that are made part of COinS metadata; yet, they will appear.  cs1|2 does&lt;br /&gt;
not see the template markup but instead sees the result of the template as html.  cs1|2 strips the html which&lt;br /&gt;
leaves the displayed value for the anchor id.  We can't do that here so, because templates aren't allowed in&lt;br /&gt;
parameters, we simply discard any templates found in the cs1|2 template.&lt;br /&gt;
&lt;br /&gt;
this may leave a |lastn= parameter empty which will be treated as if it were really empty as cs1|2 do (three authors,&lt;br /&gt;
|last2= empty -&amp;gt; CITEREFLast1Last3YYYY (the harv and sfn render: 'Last1, &amp;amp; Last3 YYYY' with CITEREFLast1Last3YYYY).&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function template_strip (template)&lt;br /&gt;
	template = template:gsub ('^{{%s*', ''):gsub ('%s*}}$', '', 1);				-- remove outer {{ and }} (cs1|2 template delimiters with trailing/leading whitespace)&lt;br /&gt;
	template = template:gsub ('%b{}', '');										-- remove any templates from the cs1|2 template&lt;br /&gt;
	return template;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E S C A P E _ L U A _ M A G I C _ C H A R S &amp;gt;----------------------------------&lt;br /&gt;
&lt;br /&gt;
Returns a string where all of lua's magic characters have been escaped.  This is important because functions like&lt;br /&gt;
string.gsub() treat their pattern and replace strings as patterns, not literal strings.&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function escape_lua_magic_chars (argument)&lt;br /&gt;
	argument = argument:gsub(&amp;quot;%%&amp;quot;, &amp;quot;%%%%&amp;quot;);										-- replace % with %%&lt;br /&gt;
	argument = argument:gsub(&amp;quot;([%^%$%(%)%.%[%]%*%+%-%?])&amp;quot;, &amp;quot;%%%1&amp;quot;);				-- replace all other lua magic pattern characters&lt;br /&gt;
	return argument;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[=[-------------------------&amp;lt; W I K I L I N K _ S T R I P &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Wikilink markup does not belong in an anchor id and can / does confuse the code that parses apart citation and&lt;br /&gt;
harvc templates so here we remove any wiki markup:&lt;br /&gt;
	[[link|label]] -&amp;gt; label&lt;br /&gt;
	[[link]] -&amp;gt; link&lt;br /&gt;
	&lt;br /&gt;
]=]&lt;br /&gt;
&lt;br /&gt;
local function wikilink_strip (template)&lt;br /&gt;
	for wikilink in template:gmatch ('%[%b[]%]') do								-- get a wikilink&lt;br /&gt;
		template = template:gsub ('%[%b[]%]', '__57r1P__', 1);					-- install a marker&lt;br /&gt;
		if wikilink:match ('%[%[.-|(.-)%]%]') then&lt;br /&gt;
			wikilink = wikilink:match ('%[%[.-|(.-)%]%]');						-- extract label from complex [[link|label]] wikilink&lt;br /&gt;
		else&lt;br /&gt;
			wikilink = wikilink:match ('%[%[(.-)%]%]');							-- extract link from simple [[link]] wikilinks&lt;br /&gt;
		end&lt;br /&gt;
		wikilink = escape_lua_magic_chars (wikilink);							-- in case there are lua magic characters in wikilink&lt;br /&gt;
		template = template:gsub ('__57r1P__', wikilink, 1);					-- replace the marker with the appropriate text&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return template;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T E M P L A T E _ N A M E _ G E T &amp;gt;--------------------------------------------&lt;br /&gt;
&lt;br /&gt;
return the citation or harvc template's name; convert to lower case and trim leading and trailing whitespace;&lt;br /&gt;
&lt;br /&gt;
when the template is a sandbox the subpage portion of the template name is omitted from the returned template name&lt;br /&gt;
	{{Cite book/new |...}} returns cite book&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function template_name_get (template)&lt;br /&gt;
	local template_name = template:match ('^{{%s*([^/|}]+)');					-- get template name; ignore subpages ~/new, ~/sandbox; parser functions&lt;br /&gt;
&lt;br /&gt;
	if not template_name or template_name:match ('^#') then						-- parser functions, magic words don't count as templates&lt;br /&gt;
		return nil;																-- could not get template name from (possibly corrupt) template; extraneous opening { mid template can cause this;&lt;br /&gt;
	end;&lt;br /&gt;
	template_name = template_name:gsub ('%s*$', '');							-- trim trailing whitespace; leading whitespace already removed&lt;br /&gt;
	return Lang_obj:ucfirst (template_name);									-- first character in template name must be uppercase (same as canonical template name) TODO: better way to do this?&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T E M P L A T E _ P A R A M S _ G E T &amp;gt;----------------------------------------&lt;br /&gt;
&lt;br /&gt;
parse apart a template's parameters and store in the params table where key is the parameter's name and value is&lt;br /&gt;
the parameter's value; empty parameters are not saved&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function template_params_get (template, params_t)&lt;br /&gt;
	template = wikilink_strip (template);										-- because piped wikilinks confuse code that builds params_t{} and because wikilinks not allowed in an anchor id&lt;br /&gt;
																				-- strip templates after getting |ref= value because |ref={{sfnref}} and |ref={{harvid}} are allowed&lt;br /&gt;
	template = template_strip (template);										-- because template markup can confuse code that builds params_t{} and because templates in name parameters are not allowed&lt;br /&gt;
&lt;br /&gt;
	local temp_t = mw.text.split (template, '%s*|%s*');							--split on the pipe&lt;br /&gt;
	for _, param in ipairs (temp_t) do&lt;br /&gt;
		if param:find ('=', 1, true) then										-- a named parameter?&lt;br /&gt;
			local k, v = param:match ('%s*([^=]-)%s*=%s*([^|}]+)');&lt;br /&gt;
			if v then															-- there must be a value&lt;br /&gt;
				if '' ~= v and not v:match ('^%s$') then						-- skip when value is empty string or only whitespace&lt;br /&gt;
					params_t[k] = mw.text.trim (v);								-- add trimmed value else&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; C I T E R E F _ M A K E _ H A R V C &amp;gt;------------------------------------------&lt;br /&gt;
&lt;br /&gt;
makes anchor_id from {{harvc}} or redirects&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function anchor_id_make_harvc (template)&lt;br /&gt;
	local date = date_get (template, alias_patterns_harvc_date);				-- get date; done here because might be in {{date}}; return date if valid; empty string else&lt;br /&gt;
	local anchor_id;&lt;br /&gt;
	local params = {};															-- table of harvc parameters&lt;br /&gt;
	local id;																	-- custom anchor id for this {{harvc}} template&lt;br /&gt;
&lt;br /&gt;
	id = template:match ('|%s*id%s*=%s*(%b{})');								-- in case |id={{sfnref}}; done here because templates will be stripped&lt;br /&gt;
&lt;br /&gt;
	template_params_get (template, params);										-- build a table of template parameters and their values; this strips wikilinks and templates&lt;br /&gt;
&lt;br /&gt;
	if id then																	-- when set is {{sfnref}} or {{harvid}} template&lt;br /&gt;
		return sfnref_get (id);													-- returns content of {{sfnref}} or {{harvid}}; nil else&lt;br /&gt;
	end&lt;br /&gt;
	if params.id then															-- custom anchor for this {{harvc}} template (text)&lt;br /&gt;
		return params.id;														-- |id= value as written&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	anchor_id = names_get (params, aliases_harvc_author);						-- get the harvc contributor names&lt;br /&gt;
&lt;br /&gt;
	if anchor_id then															-- if names were gotten&lt;br /&gt;
		return 'CITEREF' .. anchor_id .. date;&lt;br /&gt;
	end&lt;br /&gt;
	return nil;																	-- no names; no anchor_id&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A N C H O R _ I D _ M A K E _ W R A P P E R &amp;gt;----------------------------------&lt;br /&gt;
&lt;br /&gt;
for wrapper templates&lt;br /&gt;
&lt;br /&gt;
inspect externally visible |ref= to decide what to do:&lt;br /&gt;
	|ref=										- empty or missing: get names and date from whitelist defaults; override defaults from externally visible template parameters&lt;br /&gt;
	|ref=harv									- same as empty or missing&lt;br /&gt;
	|ref={{SfnRef|name|name|name|name|year}}	- assemble an anchor id from {{sfnref}} positional parameters&lt;br /&gt;
	|ref={{Harvid|name|name|name|name|year}}	- assemble an anchor id from {{harvid}} positional parameters&lt;br /&gt;
	|ref=none									- skip; do nothing because an anchor id intentionally suppressed; TODO: keep with a type code of '0'?&lt;br /&gt;
	|ref=&amp;lt;text&amp;gt;									- save param value because may match an anchor id override value in {{harv}} template |ref= parameter or {{harvc}} |id= parameter&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function anchor_id_make_wrapper (template)&lt;br /&gt;
	local ref;																	-- content of |ref=&lt;br /&gt;
	local template_name;														-- name of the template&lt;br /&gt;
	local anchor_id;															-- the assembled anchor id from this template&lt;br /&gt;
	local date;&lt;br /&gt;
	local name_default;&lt;br /&gt;
	local date_default;&lt;br /&gt;
	local vol;&lt;br /&gt;
	local params = {};															-- table of template parameters&lt;br /&gt;
	&lt;br /&gt;
	template_name = template_name_get (template);								-- get first char uppercase trimmed template name; ignore subpages ~/new, ~/sandbox&lt;br /&gt;
	if not template_name or template_skip[template_name] then&lt;br /&gt;
		return nil;																-- could not extract template name from (possibly corrupted) template (extraneous opening { in the template will cause this)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	date = date_get (template, alias_patterns_date);							-- get date; done here because might be in {{date}}&lt;br /&gt;
--	if '' == date then&lt;br /&gt;
--		date = whitelist.wrapper_templates[template_name][2] or '';				-- no externally visible date so get default date&lt;br /&gt;
--	end&lt;br /&gt;
&lt;br /&gt;
	ref = template:match ('|%s*ref%s*=%s*(%b{})');								-- first look for |ref={{sfnref}} or |ref={{harvid}} because we will strip templates from the wrapper template&lt;br /&gt;
	if not ref then&lt;br /&gt;
		if template:match ('|%s*ref%s*=([^|}]+)') then							-- |ref={{template}} not found; if there is a |ref= param with an assigned value&lt;br /&gt;
			ref = template:match ('|%s*ref%s*=([^|}]+)');						-- get the value; whitespace is a 'value'&lt;br /&gt;
			if ref then															-- nil when |ref=|... or when |ref=}} (no spaces between assignment operator and pipe or closing brace)&lt;br /&gt;
				ref = mw.text.trim (ref);										-- something, could be just whitespace, so trim leading / trailing whitespace&lt;br /&gt;
				if '' == ref then												-- trimming a string of whitespace makes an empty string&lt;br /&gt;
					ref = nil;													-- make empty ref same as missing ref&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	template_params_get (template, params);										-- build a table of template parameters and their values&lt;br /&gt;
&lt;br /&gt;
	if whitelist.wrapper_templates[template_name][1] then						-- is this wrapper a simple-default wrapper?&lt;br /&gt;
		name_default = whitelist.wrapper_templates[template_name][1];			-- get the default names&lt;br /&gt;
		date_default = whitelist.wrapper_templates[template_name][2];			-- get the default date&lt;br /&gt;
	else&lt;br /&gt;
		vol = params['volume'] or 'default';&lt;br /&gt;
		if not whitelist.wrapper_templates[template_name][vol] then				-- make sure this volume exists&lt;br /&gt;
			vol = 'default';													-- doesn't exist, use default volume&lt;br /&gt;
		end&lt;br /&gt;
		name_default = whitelist.wrapper_templates[template_name][vol][1];		-- get the default names&lt;br /&gt;
		date_default = whitelist.wrapper_templates[template_name][vol][2];		-- get the default date&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if 'harv' == ref  or not ref then											-- |ref=harv specified or |ref= missing or empty&lt;br /&gt;
		anchor_id = names_get (params, aliases_contributor) or					-- get contributor, author, or editor names&lt;br /&gt;
			names_get (params, aliases_author) or&lt;br /&gt;
			vnames_get (params, 'vauthors') or									-- |vauthors=&lt;br /&gt;
			names_get (params, aliases_editor) or&lt;br /&gt;
			vnames_get (params, 'veditors') or									-- |veditors=&lt;br /&gt;
			name_default;														-- default names from whitelist&lt;br /&gt;
--			whitelist.wrapper_templates[template_name][1];						-- default names from whitelist&lt;br /&gt;
&lt;br /&gt;
		if '' == date then														-- if date not provided in the template&lt;br /&gt;
			date = date_default;												-- use the default date from whitelist&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if anchor_id then														-- if names were gotten&lt;br /&gt;
			anchor_id = 'CITEREF' .. anchor_id .. date;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif ref:match ('%b{}') then												-- ref holds a template&lt;br /&gt;
		anchor_id = sfnref_get (ref);											-- returns content of {{sfnref}} or {{harvid}}; nil else&lt;br /&gt;
&lt;br /&gt;
	elseif 'none' == ref then													-- |ref=none&lt;br /&gt;
		return nil;																-- anchor id expicitly suppressed&lt;br /&gt;
		&lt;br /&gt;
	else&lt;br /&gt;
		anchor_id = ref;														-- |ref=&amp;lt;text&amp;gt; may match an anchor id override value in {{harv}} template |ref= parameter&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return anchor_id;															-- anchor_id text; nil else&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A N C H O R _ I D _ M A K E _ C S 1 2 &amp;gt;----------------------------------------&lt;br /&gt;
&lt;br /&gt;
for cs1|2 template and cs1-like templates&lt;br /&gt;
&lt;br /&gt;
inspect |ref= to decide what to do:&lt;br /&gt;
	|ref=										- empty or missing: get names and date from template parameters; all cs1|2 create CITEREF anchor IDs&lt;br /&gt;
	|ref=harv									- get names and date from template parameters&lt;br /&gt;
	|ref={{SfnRef|name|name|name|name|year}}	- assemble an anchor id from {{sfnref}} positional parameters&lt;br /&gt;
	|ref={{Harvid|name|name|name|name|year}}	- assemble an anchor id from {{harvid}} positional parameters&lt;br /&gt;
	|ref=none									- skip; do nothing because an anchor id intentionally suppressed; TODO: keep with a type code of '0'?&lt;br /&gt;
	|ref=&amp;lt;text&amp;gt;									- save param value because may match an anchor id override value in {{harv}} template |ref= parameter or {{harvc}} |id= parameter&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function anchor_id_make_cs12 (template)&lt;br /&gt;
	local ref;																	-- content of |ref=&lt;br /&gt;
	local template_name;														-- name of the template&lt;br /&gt;
	local anchor_id;															-- the assembled anchor id from this template&lt;br /&gt;
	local date;&lt;br /&gt;
	local params = {};															-- table of template parameters&lt;br /&gt;
	&lt;br /&gt;
	template_name = template_name_get (template);								-- get first char uppercase trimmed template name; ignore subpages ~/new, ~/sandbox&lt;br /&gt;
	if not template_name or template_skip[template_name] then&lt;br /&gt;
		return nil;																-- could not extract template name from (possibly corrupted) template (extraneous opening { in the template will cause this)&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if redirects_patent[template_name] then&lt;br /&gt;
		date = date_get (template, alias_patterns_patent_date);					-- get date; done here because might be in {{date}} &lt;br /&gt;
	else&lt;br /&gt;
		date = date_get (template, alias_patterns_date);&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	ref = template:match ('|%s*ref%s*=%s*(%b{})');								-- first look for |ref={{sfnref}} or |ref={{harvid}} because we will strip templates from the cs1|2 template&lt;br /&gt;
	if not ref then&lt;br /&gt;
		if template:match ('|%s*ref%s*=([^|}]+)') then							-- |ref={{template}} not found; if there is a |ref= param with an assigned value&lt;br /&gt;
			ref = template:match ('|%s*ref%s*=([^|}]+)');						-- get the value; whitespace is a 'value'&lt;br /&gt;
			if ref then															-- nil when |ref=|... or when |ref=}} (no spaces between assignment operator and pipe or closing brace)&lt;br /&gt;
				ref = mw.text.trim (ref);										-- something, could be just whitespace, so trim leading / trailing whitespace&lt;br /&gt;
				if '' == ref then												-- trimming a string of whitespace makes an empty string&lt;br /&gt;
					ref = nil;													-- make empty ref same as missing ref&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	template_params_get (template, params);										-- build a table of template parameters and their values&lt;br /&gt;
&lt;br /&gt;
	if not ref then																-- |ref= not set, might be cite LSA which doesn't support |ref=&lt;br /&gt;
		if 'cite lsa' == template_name then&lt;br /&gt;
			return 'CITEREF' .. (params.last or '') .. (params.year or '');		-- cite LSA always creates an anchor id using only |last= and |year= (no aliases)&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if 'harv' == ref  or not ref then											-- |ref=harv specified or |ref= missing or empty&lt;br /&gt;
		if redirects_patent[template_name] then									-- if this is a cite patent template&lt;br /&gt;
			anchor_id = names_get (params, aliases_inventor);					-- inventor names only&lt;br /&gt;
		else																	-- cs1|2 template&lt;br /&gt;
			anchor_id = names_get (params, aliases_contributor) or				-- get contributor, author, or editor names&lt;br /&gt;
				names_get (params, aliases_author) or&lt;br /&gt;
				vnames_get (params, 'vauthors') or								-- |vauthors=&lt;br /&gt;
				names_get (params, aliases_editor) or&lt;br /&gt;
				vnames_get (params, 'veditors');								-- |veditors=&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		if anchor_id then														-- if names were gotten&lt;br /&gt;
			anchor_id = 'CITEREF' .. anchor_id .. date;&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif ref:match ('%b{}') then												-- ref holds a template&lt;br /&gt;
		anchor_id = sfnref_get (ref);											-- returns content of {{sfnref}} or {{harvid}}; nil else&lt;br /&gt;
&lt;br /&gt;
	elseif 'none' == ref and not redirects_patent[template_name] then			-- |ref=none; not supported by cite patent&lt;br /&gt;
		return nil;																-- anchor id expicitly suppressed&lt;br /&gt;
		&lt;br /&gt;
	else&lt;br /&gt;
		anchor_id = ref;														-- |ref=&amp;lt;text&amp;gt; may match an anchor id override value in {{harv}} template |ref= parameter&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return anchor_id;															-- anchor_id text; nil else&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; L I S T _ A D D &amp;gt;--------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
adds an &amp;lt;item&amp;gt; to &amp;lt;list&amp;gt; table; for anchor IDs, the boolean &amp;lt;encode&amp;gt; argument must be set true; no return value&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function list_add (item, list, encode)&lt;br /&gt;
	if item then																-- if there was an item&lt;br /&gt;
		if encode then															-- for anchor IDs ...&lt;br /&gt;
			item = mw.uri.anchorEncode (item);									-- encode to remove wikimarkup, convert spaces to underscores etc&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if not list[item] then													-- if not already saved&lt;br /&gt;
			list[item] = 1;														-- save it &lt;br /&gt;
		else																	-- here when this item already saved&lt;br /&gt;
			list[item] = list[item] + 1;										-- to indicate that there are multiple items&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A N C H O R _ I D _ M A K E _ A N C H O R &amp;gt;------------------------------------&lt;br /&gt;
&lt;br /&gt;
make anchor IDs from {{anchor}}; there may be more than one because {{anchor}} is not limited to the number of&lt;br /&gt;
anchors it may hold.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function anchor_id_make_anchor (template, anchor_id_list)&lt;br /&gt;
	template = template:gsub ('^{{[^|]+|', ''):gsub ('}}$', '', 1);				-- remove outer {{ and }} and template name&lt;br /&gt;
&lt;br /&gt;
	template = wikilink_strip (template);										-- strip any wikilink markup (there shouldn't be any but just in case)&lt;br /&gt;
	&lt;br /&gt;
	local params = {};&lt;br /&gt;
	local anchor_id;&lt;br /&gt;
	&lt;br /&gt;
	for param in template:gmatch ('%b{}') do									-- loop through the template; remove and save templates (presumed to be sfnref or harvid)&lt;br /&gt;
		table.insert (params, param);											-- save it&lt;br /&gt;
		template = template:gsub ('%b{}', '', 1);								-- remove it from source template&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for _, t in ipairs (params) do												-- spin through the templates in params&lt;br /&gt;
		anchor_id = sfnref_get (t);												-- attempt to decode {{sfnref}} and {{harvid}}&lt;br /&gt;
		if anchor_id then														-- nil when not {{sfnref}} or {{harvid}}&lt;br /&gt;
			list_add (anchor_id, anchor_id_list, true);							-- add anchor ID to the list&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	template = template:gsub ('|%s*|', '|');									-- when pipe follows pipe with or without white space, remove extraneous pipe&lt;br /&gt;
	template = template:gsub ('^|', ''):gsub('|$', '');							-- remove extraneous leading and trailing pipes&lt;br /&gt;
&lt;br /&gt;
	params = mw.text.split (template, '%s*|%s*');								-- split at the pipe and remove extraneous space characters&lt;br /&gt;
	&lt;br /&gt;
	for _, t in ipairs (params) do												-- spin through the anchor IDs&lt;br /&gt;
		anchor_id = mw.text.trim (t);											-- trim white space&lt;br /&gt;
		if '' ~= anchor_id then													-- should always have something&lt;br /&gt;
			list_add (anchor_id, anchor_id_list, true);							-- add anchor ID to the list&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T E M P L A T E _ L I S T _ A D D &amp;gt;--------------------------------------------&lt;br /&gt;
&lt;br /&gt;
makes a list of templates use in the article.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function template_list_add (template)&lt;br /&gt;
	local template = template:match ('{{%s*(.-)[|}]');							-- keep the case of the template - this is different from template_name_get()&lt;br /&gt;
	if template and not template:match ('^#') then								-- found a template or magic word; ignore magic words&lt;br /&gt;
		template=mw.text.trim (template);										-- trim whitespace&lt;br /&gt;
		template = Lang_obj:ucfirst (template);									-- first character in template name must be uppercase (same as canonical template name) TODO: better way to do this?&lt;br /&gt;
		list_add (template, template_list);										-- add to list with (unused) tally&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A N C H O R _ I D _ L I S T _ M A K E &amp;gt;----------------------------------------&lt;br /&gt;
&lt;br /&gt;
makes a list of anchor ids from cs1|2, cs1|2-like, vcite xxx, harvc, anchor, wikicite templates&lt;br /&gt;
&lt;br /&gt;
Because cs1|2 wrapper templates can, and often do, hide the author and date parameters inside the wrapper,&lt;br /&gt;
these parameters are not available in the article's wikisource so {{harv}}, {{sfn}}, and {{harvc}} templates that&lt;br /&gt;
link correctly to those wrapper templates will incorrectly show error messages.  Use |ignore-err=yes in the {{harv}},&lt;br /&gt;
{{sfn}}, and {{harvc}} templates to supress the error message.&lt;br /&gt;
&lt;br /&gt;
creates a list of templates used in the article for use with the whitelist&lt;br /&gt;
&lt;br /&gt;
creates a list of article-local whitelisted anchor IDs from {{sfn whitelist}}&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function anchor_id_list_make ()&lt;br /&gt;
	article_content_get ();														-- attempt to get this article's content&lt;br /&gt;
&lt;br /&gt;
	if '' == Article_content then												-- when there is no article content&lt;br /&gt;
		return '';																-- no point in continuing&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local template;																-- place to hold the template that we found&lt;br /&gt;
	local template_name;&lt;br /&gt;
	local anchor_id;															-- place to hold an anchor id as it is extracted / decoded&lt;br /&gt;
&lt;br /&gt;
	local find_pattern = '%f[{]{{[^{]';&lt;br /&gt;
	local tstart, tend = Article_content:find (find_pattern);					-- find the first template; do not find template variables: {{{template var|}}} &lt;br /&gt;
&lt;br /&gt;
	while tstart do&lt;br /&gt;
		template = Article_content:match ('%b{}', tstart);						-- get the whole template&lt;br /&gt;
		if not template then&lt;br /&gt;
			break;																-- template is nil for some reason (last template missing closing }} for example) so declare ourselves done&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		template_name = template_name_get (template);							-- get first char uppercase trimmed template name; ignore subpages ~/new, ~/sandbox&lt;br /&gt;
		template_list_add (template);											-- add this template's name to the list&lt;br /&gt;
&lt;br /&gt;
		if data.known_templates_cs12 [template_name] then&lt;br /&gt;
			anchor_id = anchor_id_make_cs12 (template);							-- extract an anchor id from this template&lt;br /&gt;
			list_add (anchor_id, anchor_id_list, true)&lt;br /&gt;
&lt;br /&gt;
		elseif data.known_templates_vcite [template_name] then&lt;br /&gt;
			local ref = template:match ('|%s*ref%s*=%s*(%b{})');				-- first look for |ref={{sfnref}} or |ref={{harvid}} because we will strip templates from the vcite template&lt;br /&gt;
			if ref then															-- |ref={{template}}&lt;br /&gt;
				anchor_id = sfnref_get (ref);									-- returns content of {{sfnref}} or {{harvid}}; nil else&lt;br /&gt;
				list_add (anchor_id, anchor_id_list, true);&lt;br /&gt;
			else&lt;br /&gt;
				local params = {};&lt;br /&gt;
&lt;br /&gt;
				template_params_get (template, params);							-- build a table of template parameters and their values&lt;br /&gt;
&lt;br /&gt;
				anchor_id = params['ref'];										-- when both set, vcite uses value from |ref=&lt;br /&gt;
				if not anchor_id and params['harvid'] then&lt;br /&gt;
					anchor_id = 'CITEREF' .. params['harvid'];					-- in vcite, |harvid= auto-adds 'CITEREF' prefix to the value in |harvid=&lt;br /&gt;
				end&lt;br /&gt;
				list_add (anchor_id, anchor_id_list, true);&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		elseif data.known_templates_harvc [template_name] then&lt;br /&gt;
			anchor_id = anchor_id_make_harvc (template);						-- extract an anchor id from this template&lt;br /&gt;
			list_add (anchor_id, anchor_id_list, true);&lt;br /&gt;
			&lt;br /&gt;
		elseif data.known_templates_wikicite [template_name] then&lt;br /&gt;
			local ref = template:match ('|%s*ref%s*=%s*(%b{})');				-- first look for |ref={{sfnref}} or |ref={{harvid}}&lt;br /&gt;
			&lt;br /&gt;
			if ref then&lt;br /&gt;
				anchor_id = sfnref_get (ref);&lt;br /&gt;
	&lt;br /&gt;
			elseif template:match ('|%s*ref%s*=([^|}]+)') then&lt;br /&gt;
				anchor_id = template:match ('|%s*ref%s*=([^|}]+)');				-- plain-text&lt;br /&gt;
	&lt;br /&gt;
			elseif template:match ('|%s*id%s*=%s*(%b{})') then&lt;br /&gt;
				ref = template:match ('|%s*id%s*=%s*(%b{})');&lt;br /&gt;
				anchor_id = 'Reference-' .. sfnref_get (ref);&lt;br /&gt;
&lt;br /&gt;
			elseif template:match ('|%s*id%s*=([^|}]+)') then&lt;br /&gt;
				anchor_id = 'Reference-' .. template:match ('|%s*id%s*=([^|}]+)');	-- plain-text&lt;br /&gt;
&lt;br /&gt;
			else&lt;br /&gt;
				anchor_id = nil;												-- no matches, ensure that anchor_id has no value&lt;br /&gt;
			end&lt;br /&gt;
			&lt;br /&gt;
			if anchor_id then&lt;br /&gt;
				list_add (anchor_id, anchor_id_list, true);&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		elseif data.known_templates_anchor [template_name] then&lt;br /&gt;
			anchor_id_make_anchor (template, anchor_id_list);					-- extract anchor ids from this template if any&lt;br /&gt;
		&lt;br /&gt;
		elseif data.known_templates_sfn_whitelist [template_name] then&lt;br /&gt;
			template = template:gsub ('^{{[^|]+|', ''):gsub ('}}$', '', 1);		-- remove outer {{ and }} and template name&lt;br /&gt;
			template = mw.text.trim (template, '%s|');							-- trim leading trailing white space and pipes&lt;br /&gt;
			template = mw.text.split (template, '%s*|%s*');						-- make a table of the template's parameters&lt;br /&gt;
&lt;br /&gt;
			for _, anchor_id in ipairs (template) do							-- spin through this template's parameter&lt;br /&gt;
				if '' ~= anchor_id and not article_whitelist[anchor_id] then&lt;br /&gt;
					anchor_id = mw.uri.anchorEncode (anchor_id)&lt;br /&gt;
					article_whitelist[anchor_id] = 1;							-- add to the whitelist&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		&lt;br /&gt;
		elseif template_name and whitelist.wrapper_templates[template_name] then&lt;br /&gt;
			anchor_id = anchor_id_make_wrapper (template);						-- extract an anchor id from this template if possible&lt;br /&gt;
			list_add (anchor_id, anchor_id_list, true);&lt;br /&gt;
&lt;br /&gt;
		elseif template_name and template_name:match ('^Cit[ea]') then			-- not known, not known wrapper; last gasp, try as cs1-like&lt;br /&gt;
			anchor_id = anchor_id_make_cs12 (template);							-- extract an anchor id from this template if possible&lt;br /&gt;
			list_add (anchor_id, anchor_id_list, true);&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		tstart, tend = Article_content:find (find_pattern, tend);				-- search for another template; begin at end of last search&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
mw.logObject (anchor_id_list, 'anchor_id_list');&lt;br /&gt;
mw.logObject (template_list, 'template_list');&lt;br /&gt;
mw.logObject (article_whitelist, 'article_whitelist');&lt;br /&gt;
&lt;br /&gt;
	return anchor_id_list;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E X P O R T E D _ T A B L E S &amp;gt;------------------------------------------------&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	anchor_id_list = anchor_id_list_make(),										-- table of anchor ids available in this article&lt;br /&gt;
	article_whitelist = article_whitelist,										-- table of anchor ids with false-positive error message to be suppressed&lt;br /&gt;
	template_list = template_list,												-- table of templates used in this article&lt;br /&gt;
	}&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%A8%A1%E5%9D%97:Footnotes&amp;diff=35655</id>
		<title>模块:Footnotes</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%A8%A1%E5%9D%97:Footnotes&amp;diff=35655"/>
		<updated>2024-07-04T08:27:15Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;require('Module:No globals')&lt;br /&gt;
&lt;br /&gt;
local getArgs = require ('Module:Arguments').getArgs;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A R G S _ D E F A U L T &amp;gt;------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
a table to specify initial values.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local args_default = {&lt;br /&gt;
	bracket_left = '',&lt;br /&gt;
	bracket_right = '',&lt;br /&gt;
	bracket_year_left = '',&lt;br /&gt;
	bracket_year_right = '',&lt;br /&gt;
	postscript = '',&lt;br /&gt;
	page = '',&lt;br /&gt;
	pages = '',&lt;br /&gt;
	location = '',&lt;br /&gt;
	page_sep = &amp;quot;, p.&amp;amp;nbsp;&amp;quot;,&lt;br /&gt;
	pages_sep = &amp;quot;, pp.&amp;amp;nbsp;&amp;quot;,&lt;br /&gt;
	ref = '',&lt;br /&gt;
	template = 'harv',															-- if template name not provided in {{#invoke:}} use this&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T A R G E T _ C H E C K &amp;gt;------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
look for anchor_id (CITEREF name-list and year or text from |ref=) in anchor_id_list&lt;br /&gt;
&lt;br /&gt;
the 'no target' error may be suppressed with |ignore-err=yes when target cannot be found because target is inside&lt;br /&gt;
a template that wraps another template; 'multiple targets' error may not be suppressed&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function target_check (anchor_id, args)&lt;br /&gt;
	local namespace = mw.title.getCurrentTitle().namespace;&lt;br /&gt;
	local anchor_id_list_module = mw.loadData ('Module:Footnotes/anchor_id_list');&lt;br /&gt;
	local anchor_id_list = anchor_id_list_module.anchor_id_list;&lt;br /&gt;
	local article_whitelist = anchor_id_list_module.article_whitelist;&lt;br /&gt;
	local template_list = anchor_id_list_module.template_list;&lt;br /&gt;
	&lt;br /&gt;
	local whitelist_module = mw.loadData ('Module:Footnotes/whitelist');&lt;br /&gt;
	local whitelist = whitelist_module.whitelist;&lt;br /&gt;
	local special_patterns = whitelist_module.special_patterns;&lt;br /&gt;
	local DNB_special_patterns = whitelist_module.DNB_special_patterns;&lt;br /&gt;
	local DNB_template_names = whitelist_module.DNB_template_names;&lt;br /&gt;
&lt;br /&gt;
	if 10 == namespace then&lt;br /&gt;
		return '';																-- automatic form of |no-tracking=yes; TODO: is this too broad?&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local tally = anchor_id_list[anchor_id];									-- nil when anchor_id not in list; else a tally&lt;br /&gt;
	local msg;&lt;br /&gt;
	local category;&lt;br /&gt;
&lt;br /&gt;
	if not tally then&lt;br /&gt;
		if args.ignore then&lt;br /&gt;
			return '';															-- if ignore is true then no message, no category&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if article_whitelist and article_whitelist[anchor_id] then				-- if an article-local whitelist and anchor ID is in it&lt;br /&gt;
			return '';															-- done&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local wl_anchor_id = anchor_id;											-- copy to be modified to index into the whitelist&lt;br /&gt;
		&lt;br /&gt;
		if args.year then														-- for anchor IDs created by this template (not in |ref=) that have a date&lt;br /&gt;
			if args.year:match ('%d%l$') or										-- use the date value to determine if we should remove the disambiguator&lt;br /&gt;
				args.year:match ('n%.d%.%l$') or&lt;br /&gt;
				args.year:match ('nd%l$') then&lt;br /&gt;
					wl_anchor_id = wl_anchor_id:gsub ('%l$', '');				-- remove the disambiguator&lt;br /&gt;
			end&lt;br /&gt;
		end		&lt;br /&gt;
&lt;br /&gt;
		local t_tbl = whitelist[wl_anchor_id];									-- get list of templates associated with this anchor ID&lt;br /&gt;
&lt;br /&gt;
		if t_tbl then															-- when anchor ID not whitelisted t_tbl is nil&lt;br /&gt;
			for _, t in ipairs (t_tbl) do										-- spin through the list of templates associated with this anchor ID&lt;br /&gt;
				if template_list[t] then										-- if associated template is found in the list of templates in the article&lt;br /&gt;
					return '';													-- anchor ID is whitlisted and article has matching template so no error&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		for _, pattern in ipairs (special_patterns) do							-- spin through the spcial patterns and try to match&lt;br /&gt;
			if anchor_id:match (pattern) then&lt;br /&gt;
				return '';&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		for _, dnb_t in ipairs (DNB_template_names or {}) do					-- getting desparate now, are there any DNB templates? DNB_template_names may be nil; empty table prevents script error&lt;br /&gt;
			if template_list[dnb_t] then										-- if the article has this DNB template&lt;br /&gt;
				for _, pattern in ipairs (DNB_special_patterns) do				-- spin through the DNB-specifiec wildcard patterns&lt;br /&gt;
					if anchor_id:match (pattern) then							-- and attempt a match&lt;br /&gt;
						return '';												-- found a match&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		msg = 'no target: ' .. anchor_id;										-- anchor_id not found&lt;br /&gt;
		category = '[[Category:Harv and Sfn no-target errors]]';&lt;br /&gt;
&lt;br /&gt;
	elseif 1 &amp;lt; tally then&lt;br /&gt;
		msg = 'multiple targets (' .. tally .. '×): ' .. anchor_id;				-- more than one anchor_id in this article&lt;br /&gt;
		category = 0 == namespace and '[[Category:Harv and Sfn multiple-target errors]]' or '';								-- only categorize in article space&lt;br /&gt;
		return '&amp;lt;span class=&amp;quot;error harv-error&amp;quot; style=&amp;quot;display: inline; font-size:100%&amp;quot;&amp;gt; ' .. args.template .. ' error: ' .. msg .. ' ([[:Category:Harv and Sfn template errors|help]])&amp;lt;/span&amp;gt;' .. category;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
--	category = 0 == namespace and '[[Category:Harv and Sfn template errors]]' or '';	-- only categorize in article space&lt;br /&gt;
	category = 0 == namespace and category or '';								-- only categorize in article space&lt;br /&gt;
&lt;br /&gt;
--use this version to show error messages&lt;br /&gt;
--	return msg and '&amp;lt;span class=&amp;quot;error harv-error&amp;quot; style=&amp;quot;display: inline; font-size:100%&amp;quot;&amp;gt; ' .. args.template .. ' error: ' .. msg .. ' ([[:Category:Harv and Sfn template errors|help]])&amp;lt;/span&amp;gt;' .. category or '';&lt;br /&gt;
--use this version to hide error messages&lt;br /&gt;
	return msg and '&amp;lt;span class=&amp;quot;error harv-error&amp;quot; style=&amp;quot;display: none; font-size:100%&amp;quot;&amp;gt; ' .. args.template .. ' error: ' .. msg .. ' ([[:Category:Harv and Sfn template errors|help]])&amp;lt;/span&amp;gt;' .. category or '';&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ Y E A R &amp;gt;----------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
evaluates param to see if it is one of these forms with or without lowercase letter disambiguator:&lt;br /&gt;
	YYYY&lt;br /&gt;
	n.d.&lt;br /&gt;
	nd	&lt;br /&gt;
	c. YYYY&lt;br /&gt;
	YYYY–YYYY	(separator is endash)&lt;br /&gt;
	YYYY–YY		(separator is endash)&lt;br /&gt;
&lt;br /&gt;
return true when param has a recognized form; false else&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local patterns_date= {&lt;br /&gt;
	'^%d%d%d%d?%l?$',&lt;br /&gt;
	'^n%.d%.%l?$',&lt;br /&gt;
	'^nd%l?$',&lt;br /&gt;
	'^c%. %d%d%d%d?%l?$',&lt;br /&gt;
	'^%d%d%d%d–%d%d%d%d%l?$',&lt;br /&gt;
	'^%d%d%d%d–%d%d%l?$',&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
local function is_year (param, args)&lt;br /&gt;
	args.year = '';																-- used for harv error; &lt;br /&gt;
	&lt;br /&gt;
	for _, pattern in ipairs (patterns_date) do&lt;br /&gt;
		if mw.ustring.match (param, pattern) then&lt;br /&gt;
			args.year = param;													-- used for harv error; &lt;br /&gt;
			return true;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; C O R E &amp;gt;----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
returns an anchor link (CITEREF) formed from one to four author names, year, and insource location (|p=, |pp=, loc=)&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function core( args )&lt;br /&gt;
	local result;&lt;br /&gt;
	local err_msg = ''&lt;br /&gt;
&lt;br /&gt;
	if args.P5 ~= '' then&lt;br /&gt;
		if is_year (args.P5, args) then&lt;br /&gt;
			result = table.concat ({args.P1, ' et al. ', args.bracket_year_left, args.P5, args.bracket_year_right});&lt;br /&gt;
		else&lt;br /&gt;
			args.P5 = '';														-- when P5 not a year don't include in anchor&lt;br /&gt;
			result = table.concat ({args.P1, ' et al.'});						-- and don't render it&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif args.P4 ~= '' then&lt;br /&gt;
		if is_year (args.P4, args) then&lt;br /&gt;
			result = table.concat ({args.P1, ', ', args.P2, ' &amp;amp;amp; ', args.P3, ' ', args.bracket_year_left, args.P4, args.bracket_year_right});	-- three names and a year&lt;br /&gt;
		else&lt;br /&gt;
			result = table.concat ({args.P1, ' et al.'});						-- four names&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif args.P3 ~= '' then&lt;br /&gt;
		if is_year (args.P3, args) then&lt;br /&gt;
			result = table.concat ({args.P1, ' &amp;amp;amp; ', args.P2, ' ', args.bracket_year_left, args.P3, args.bracket_year_right});	-- two names and a year&lt;br /&gt;
		else&lt;br /&gt;
			result = table.concat ({args.P1, ', ', args.P2, ' ', ' &amp;amp;amp; ', args.P3});	-- three names&lt;br /&gt;
		end&lt;br /&gt;
			&lt;br /&gt;
	elseif args.P2 ~= '' then&lt;br /&gt;
		if is_year (args.P2, args) then&lt;br /&gt;
			result = table.concat ({args.P1, ' ', args.bracket_year_left, args.P2, args.bracket_year_right});	-- one name and year&lt;br /&gt;
		else&lt;br /&gt;
			result = table.concat ({args.P1, ' &amp;amp;amp; ', args.P2});				-- two names&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
	else&lt;br /&gt;
		result = args.P1;														-- one name&lt;br /&gt;
	end&lt;br /&gt;
																				-- when author-date result ends with a dot (typically when the last positional parameter holds 'n.d.')&lt;br /&gt;
																				-- and when no in-source location (no |p=, |pp=, or |loc=)&lt;br /&gt;
																				-- and when the first or only character in args.postscript is a dot&lt;br /&gt;
																				-- remove the author-date result trailing dot&lt;br /&gt;
																				-- the author-date result trailing dot will be replaced later with the content of args.postscript (usually a dot)&lt;br /&gt;
	if ('.' == result:sub(-1)) and ('.' == args.postscript:sub(1)) and ('' == args.page) and ('' == args.pages) and ('' == args.location) then&lt;br /&gt;
		result = result:gsub ('%.$', '');&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.ref ~= 'none' then&lt;br /&gt;
		local anchor_id;&lt;br /&gt;
		if args.ref ~= '' then&lt;br /&gt;
			anchor_id = mw.uri.anchorEncode (args.ref);&lt;br /&gt;
			err_msg = target_check (anchor_id, args);&lt;br /&gt;
			result = table.concat ({'[[#', anchor_id, '|', result, ']]'});&lt;br /&gt;
		else&lt;br /&gt;
			anchor_id = mw.uri.anchorEncode (table.concat ({'CITEREF', args.P1, args.P2, args.P3, args.P4, args.P5}));&lt;br /&gt;
			err_msg = target_check (anchor_id, args);&lt;br /&gt;
			result = table.concat ({'[[#', anchor_id, '|', result, ']]'});&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.page ~= '' then&lt;br /&gt;
		result = table.concat ({result, args.page_sep, args.page});&lt;br /&gt;
	elseif args.pages ~= ''then&lt;br /&gt;
		result = table.concat ({result, args.pages_sep, args.pages});&lt;br /&gt;
	end      &lt;br /&gt;
&lt;br /&gt;
	if args.location ~= '' then&lt;br /&gt;
		result = table.concat ({result, ', ', args.location});&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	result = table.concat ({args.bracket_left, result, args.bracket_right, args.postscript}):gsub ('%s+', ' ');		-- strip redundant spaces&lt;br /&gt;
	return result .. err_msg;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; H Y P H E N _ T O _ D A S H &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Converts a hyphen to a dash under certain conditions.  The hyphen must separate&lt;br /&gt;
like items; unlike items are returned unmodified.  These forms are modified:&lt;br /&gt;
	letter - letter (A - B)&lt;br /&gt;
	digit - digit (4-5)&lt;br /&gt;
	digit separator digit - digit separator digit (4.1-4.5 or 4-1-4-5)&lt;br /&gt;
	letterdigit - letterdigit (A1-A5) (an optional separator between letter and&lt;br /&gt;
		digit is supported – a.1-a.5 or a-1-a-5)&lt;br /&gt;
	digitletter - digitletter (5a - 5d) (an optional separator between letter and&lt;br /&gt;
		digit is supported – 5.a-5.d or 5-a-5-d)&lt;br /&gt;
&lt;br /&gt;
any other forms are returned unmodified.&lt;br /&gt;
&lt;br /&gt;
str may be a comma- or semicolon-separated list&lt;br /&gt;
&lt;br /&gt;
This code copied from Module:Citation/CS1.  The only modification is to require Module:Citation/CS1/Utilities&lt;br /&gt;
so that it has access to the functions is_set() and has_accept_as_written()&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function hyphen_to_dash( str )&lt;br /&gt;
	local utilities = require ('Module:Citation/CS1/Utilities');				-- only modification so that this function has access to is_set() and has_accept_as_written()&lt;br /&gt;
&lt;br /&gt;
	if not utilities.is_set (str) then&lt;br /&gt;
		return str;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local accept; -- Boolean&lt;br /&gt;
&lt;br /&gt;
	str = str:gsub ('&amp;amp;[nm]dash;', {['&amp;amp;ndash;'] = '–', ['&amp;amp;mdash;'] = '—'});		-- replace &amp;amp;mdash; and &amp;amp;ndash; entities with their characters; semicolon mucks up the text.split&lt;br /&gt;
	str = str:gsub ('&amp;amp;#45;', '-'); -- replace HTML numeric entity with hyphen character&lt;br /&gt;
&lt;br /&gt;
	str = str:gsub ('&amp;amp;nbsp;', ' '); -- replace &amp;amp;nbsp; entity with generic keyboard space character&lt;br /&gt;
	&lt;br /&gt;
	local out = {};&lt;br /&gt;
	local list = mw.text.split (str, '%s*[,;]%s*');								-- split str at comma or semicolon separators if there are any&lt;br /&gt;
&lt;br /&gt;
	for _, item in ipairs (list) do												-- for each item in the list&lt;br /&gt;
		item, accept = utilities.has_accept_as_written (item);					-- remove accept-this-as-written markup when it wraps all of item&lt;br /&gt;
		if not accept and mw.ustring.match (item, '^%w*[%.%-]?%w+%s*[%-–—]%s*%w*[%.%-]?%w+$') then	-- if a hyphenated range or has endash or emdash separators&lt;br /&gt;
			if item:match ('^%a+[%.%-]?%d+%s*%-%s*%a+[%.%-]?%d+$') or			-- letterdigit hyphen letterdigit (optional separator between letter and digit)&lt;br /&gt;
				item:match ('^%d+[%.%-]?%a+%s*%-%s*%d+[%.%-]?%a+$') or			-- digitletter hyphen digitletter (optional separator between digit and letter)&lt;br /&gt;
				item:match ('^%d+[%.%-]%d+%s*%-%s*%d+[%.%-]%d+$') or			-- digit separator digit hyphen digit separator digit&lt;br /&gt;
				item:match ('^%d+%s*%-%s*%d+$') or								-- digit hyphen digit&lt;br /&gt;
				item:match ('^%a+%s*%-%s*%a+$') then							-- letter hyphen letter&lt;br /&gt;
					item = item:gsub ('(%w*[%.%-]?%w+)%s*%-%s*(%w*[%.%-]?%w+)', '%1–%2');	-- replace hyphen, remove extraneous space characters&lt;br /&gt;
			else&lt;br /&gt;
				item = mw.ustring.gsub (item, '%s*[–—]%s*', '–');				-- for endash or emdash separated ranges, replace em with en, remove extraneous whitespace&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		table.insert (out, item);												-- add the (possibly modified) item to the output table&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local temp_str = '';														-- concatenate the output table into a comma separated string&lt;br /&gt;
	temp_str, accept = utilities.has_accept_as_written (table.concat (out, ', ')); -- remove accept-this-as-written markup when it wraps all of concatenated out&lt;br /&gt;
	if accept then&lt;br /&gt;
		temp_str = utilities.has_accept_as_written (str);						-- when global markup removed, return original str; do it this way to suppress boolean second return value&lt;br /&gt;
		return temp_str;&lt;br /&gt;
	else&lt;br /&gt;
		return temp_str;														-- else, return assembled temp_str&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A R G S  _ F E T C H &amp;gt;---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Because all of the templates share a common set of parameters, a single common function to fetch those parameters&lt;br /&gt;
from frame and parent frame.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function args_fetch (frame, ps)&lt;br /&gt;
	local args = args_default;													-- create a copy of the default table&lt;br /&gt;
	local pframe = frame:getParent();											-- point to the template's parameter table&lt;br /&gt;
&lt;br /&gt;
	for k, v in pairs (frame.args) do											-- override defaults with values provided in the #invoke: if any&lt;br /&gt;
		args[k] = v;	   &lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	args.postscript = pframe.args.postscript or pframe.args.ps or ps;&lt;br /&gt;
	if 'none' == args.postscript then&lt;br /&gt;
		args.postscript = '';&lt;br /&gt;
	end&lt;br /&gt;
	args.page = pframe.args.p or pframe.args.page or '';&lt;br /&gt;
	args.pages = pframe.args.pp or pframe.args.pages or '';&lt;br /&gt;
	args.pages = ('' ~= args.pages) and hyphen_to_dash (args.pages) or '';&lt;br /&gt;
	args.location = pframe.args.at or pframe.args.loc or '';&lt;br /&gt;
	args.ref = pframe.args.ref or pframe.args.Ref or '';&lt;br /&gt;
	args.ignore = ('yes' == pframe.args['ignore-false-positive']) or ('yes' == pframe.args['ignore-err']);&lt;br /&gt;
&lt;br /&gt;
	for i, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do						-- loop through the five positional parameters and trim if set else empty string&lt;br /&gt;
		args[v] = (pframe.args[i] and mw.text.trim (pframe.args[i])) or '';&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.P5 and not is_year (args.P5, args) then&lt;br /&gt;
		local i = 6;															-- initialize the indexer to the sixth positional parameter&lt;br /&gt;
		while pframe.args[i] do													-- in case there are too many authors loop through the authors looking for a year&lt;br /&gt;
			local v = mw.text.trim (pframe.args[i]);							-- trim&lt;br /&gt;
			if is_year (v, args) then											-- if a year&lt;br /&gt;
				args.P5 = v;													-- overwrite whatever was in args.P5 with year&lt;br /&gt;
				break;															-- and abandon the search&lt;br /&gt;
			end&lt;br /&gt;
			i = i + 1;															-- bump the indexer&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return args;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; H A R V A R D _ C I T A T I O N &amp;gt;----------------------------------------------&lt;br /&gt;
&lt;br /&gt;
common entry point for:&lt;br /&gt;
	{{harvard citation}} aka {{harv}}&lt;br /&gt;
	{{Harvard citation no brackets}} aka {{harvnb}}&lt;br /&gt;
	{{harvcol}}&lt;br /&gt;
	{{harvcolnb}}&lt;br /&gt;
	{{harvcoltxt}}&lt;br /&gt;
	{{Harvard citation text}} aka {{harvtxt}}&lt;br /&gt;
	{{Harvp}}&lt;br /&gt;
&lt;br /&gt;
Distinguishing features (brackets and page separators) are specified in this module's {{#invoke}} in the respective templates.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function harvard_citation (frame)&lt;br /&gt;
	local args = args_fetch (frame, '');										-- get the template and invoke parameters; default postscript is empty string&lt;br /&gt;
&lt;br /&gt;
	return core (args);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S T R I P _ U R L &amp;gt;------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
used by sfn() and sfnm().  This function fixes an issue with reference tooltip gadget where the tooltip is not displayed&lt;br /&gt;
when an insource locator (|p=, |pp=, |loc=) has an external wikilink that contains a # character&lt;br /&gt;
&lt;br /&gt;
strip uri-reserved characters from urls in |p=, |pp-, and |loc= parameters  The researved characters are:&lt;br /&gt;
	!#$&amp;amp;'()*+,/:;=?@[]&lt;br /&gt;
	&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function strip_url (pages)&lt;br /&gt;
	local escaped_uri;&lt;br /&gt;
	if not pages or ('' == pages) then&lt;br /&gt;
		return pages;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for uri in pages:gmatch ('%[(%a[%w%+%.%-]*://%S+)') do						-- for each external link get the uri&lt;br /&gt;
		escaped_uri = uri:gsub (&amp;quot;([%(%)%.%%%+%-%*%?%[%^%$%]])&amp;quot;, &amp;quot;%%%1&amp;quot; );		-- save a copy with lua pattern characters escaped&lt;br /&gt;
		uri = uri:gsub (&amp;quot;[!#%$&amp;amp;'%(%)%*%+,/:;=%?@%[%]%.%%]&amp;quot;, '');				-- remove reserved characters and '%' because '%20' (space character) is a lua 'invalid capture index'&lt;br /&gt;
		pages = pages:gsub (escaped_uri, uri, 1);								-- replace original uri with the stripped version&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return pages;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S F N &amp;gt;------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
entry point for {{sfn}} and {{sfnp}}&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function sfn (frame)&lt;br /&gt;
	local args = args_fetch (frame, '.');										-- get the template and invoke parameters; default postscript is a dot&lt;br /&gt;
&lt;br /&gt;
	local result = core (args);													-- go make a CITEREF anchor&lt;br /&gt;
																				-- put it all together and then strip redundant spaces&lt;br /&gt;
	local name = table.concat ({'FOOTNOTE', args.P1, args.P2, args.P3, args.P4, args.P5, strip_url (args.page), strip_url (args.pages), strip_url (args.location)}):gsub ('%s+', ' ');&lt;br /&gt;
&lt;br /&gt;
	return frame:extensionTag ({name='ref', args={name=name}, content=result});	&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S F N M &amp;gt;----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
common entry point for {{sfnm}} and {{sfnmp}}&lt;br /&gt;
&lt;br /&gt;
Distinguishing features (brackets) are specified in this module's {{#invoke}} in the respective templates.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function sfnm (frame)&lt;br /&gt;
	local args = args_default;													-- create a copy of the default table&lt;br /&gt;
	local pframe = frame:getParent();											-- point to the template's parameter table&lt;br /&gt;
	&lt;br /&gt;
	local n = 1;																-- index of source; this is the 'n' in na1, ny, etc&lt;br /&gt;
	local first_pnum = 1;														-- first of a pair of positional parameters&lt;br /&gt;
	local second_pnum = 2;														-- second of a pair of positional parameters&lt;br /&gt;
&lt;br /&gt;
	local last_ps = 0;															-- index of the last source with |nps= set&lt;br /&gt;
	local last_index = 0;														-- index of the last source; these used to determine which of |ps= or |nps= will terminate the whole rendering&lt;br /&gt;
&lt;br /&gt;
	local out = {};																-- table to hold rendered sources&lt;br /&gt;
	local footnote = {'FOOTNOTE'};												-- all author, date, insource location stuff becomes part of the reference's footnote id; added as we go&lt;br /&gt;
&lt;br /&gt;
	for k, v in pairs (frame.args) do											-- override defaults with values provided in the #invoke: if any&lt;br /&gt;
		args[k] = v;	   &lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	while true do&lt;br /&gt;
		if not pframe.args[table.concat ({n, 'a1'})] and not pframe.args[first_pnum] then&lt;br /&gt;
			break;																-- no na1 or matching positional parameter so done&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if pframe.args[table.concat ({n, 'a1'})] then							-- does this source use named parameters?&lt;br /&gt;
			for _, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do				-- initialize for this source&lt;br /&gt;
				args[v] = '';&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			for i, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do				-- extract author and year parameters for this source&lt;br /&gt;
				args[v] = pframe.args[table.concat ({n, 'a', i})] or '';		-- attempt to assign author name&lt;br /&gt;
				if '' == args[v] then											-- when there wasn't an author name&lt;br /&gt;
					args[v] = pframe.args[table.concat ({n, 'y'})] or '';		-- attempt to assign year&lt;br /&gt;
					break;														-- done with author/date for this source&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		else																	-- this source uses positional parameters&lt;br /&gt;
			args.P1 = mw.text.trim (pframe.args[first_pnum]);					-- yes, only one author supported&lt;br /&gt;
			args.P2 = (pframe.args[second_pnum] and mw.text.trim (pframe.args[second_pnum])) or '';	-- when positional author, year must also be positional&lt;br /&gt;
&lt;br /&gt;
			for _, v in ipairs ({'P3', 'P4', 'P5'}) do							-- blank the rest of these for this source&lt;br /&gt;
				args[v] = '';&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			first_pnum = first_pnum + 2;										-- source must use positional author and positional year&lt;br /&gt;
			second_pnum = first_pnum + 1;										-- bump these for possible next positional source&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		args.postscript = pframe.args[table.concat ({n, 'ps'})] or '';&lt;br /&gt;
		if 'none' == args.postscript then										-- this for compatibility with other footnote templates; does nothing&lt;br /&gt;
			args.postscript = '';&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		args.ref = pframe.args[table.concat ({n, 'ref'})] or '';				-- alternate reference for this source&lt;br /&gt;
&lt;br /&gt;
		args.page = pframe.args[table.concat ({n, 'p'})] or '';					-- insource locations for this source&lt;br /&gt;
		args.pages = pframe.args[table.concat ({n, 'pp'})] or '';&lt;br /&gt;
		args.pages = ('' ~= args.pages) and hyphen_to_dash (args.pages) or '';&lt;br /&gt;
		args.location = pframe.args[table.concat ({n, 'loc'})] or pframe.args[table.concat ({n, 'at'})] or '';&lt;br /&gt;
		args.ignore = ('yes' == pframe.args[table.concat ({n, 'ignore-false-positive'})]) or ('yes' == pframe.args[table.concat ({n, 'ignore-err'})]);&lt;br /&gt;
&lt;br /&gt;
		table.insert (out, core (args));										-- save the rendering of this source&lt;br /&gt;
		&lt;br /&gt;
		for k, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do					-- create the FOOTNOTE id&lt;br /&gt;
			if '' ~= args[v] then&lt;br /&gt;
				table.insert (footnote, args[v]);&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		for k, v in ipairs ({'page', 'pages', 'location'}) do					-- these done separately so that we can strip uri-reserved characters from extlinked page numbers &lt;br /&gt;
			if '' ~= args[v] then&lt;br /&gt;
				table.insert (footnote, strip_url (args[v]))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		last_index = n;															-- flags used to select terminal postscript from nps or from end_ps&lt;br /&gt;
		if '' ~= args.postscript then							&lt;br /&gt;
			last_ps = n;&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		n = n+1;																-- bump for the next one&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local name = table.concat (footnote):gsub ('%s+', ' ');						-- put the footnote together and strip redundant space&lt;br /&gt;
	&lt;br /&gt;
	args.end_ps = pframe.args.postscript or pframe.args.ps or '.';				-- this is the postscript for the whole not for the individual sources&lt;br /&gt;
	if 'none' == args.end_ps then												-- not an original sfnm parameter value; added for compatibility with other footnote templates&lt;br /&gt;
		args.end_ps = '';&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local result = table.concat ({table.concat (out, '; '), (last_index == last_ps) and '' or  args.end_ps});&lt;br /&gt;
	return frame:extensionTag ({name='ref', args={name=name}, content=result});&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S F N R E F &amp;gt;------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
implements {{sfnref}}&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function sfnref (frame)&lt;br /&gt;
	local args = getArgs (frame);&lt;br /&gt;
	local out = {};&lt;br /&gt;
	&lt;br /&gt;
	for i=1, 5 do																-- get the first five args if there are five args&lt;br /&gt;
		if args[i] then&lt;br /&gt;
			out[i] = args[i];&lt;br /&gt;
		else&lt;br /&gt;
			break;																-- less than 5 args break out&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if 5 == #out then															-- when we have seen five args there may bemore&lt;br /&gt;
		local i = 6;															-- initialize the indexer to the sixth positional parameter&lt;br /&gt;
		while args[i] do														-- in case there are too many authors loop through the authors looking for a year&lt;br /&gt;
			if is_year (args[i], args) then										-- if a year&lt;br /&gt;
				out[5] = args[i];												-- overwrite whatever was in args[5] with year&lt;br /&gt;
				break;															-- and abandon the search&lt;br /&gt;
			end&lt;br /&gt;
			i = i + 1;															-- bump the indexer&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return mw.uri.anchorEncode ('CITEREF' .. table.concat (out));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E X P O R T E D   F U N C T I O N S &amp;gt;------------------------------------------&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	harvard_citation = harvard_citation,&lt;br /&gt;
	sfn = sfn,&lt;br /&gt;
	sfnm = sfnm,&lt;br /&gt;
	sfnref = sfnref,&lt;br /&gt;
	};&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%A8%A1%E5%9D%97:Footnotes&amp;diff=35654</id>
		<title>模块:Footnotes</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%A8%A1%E5%9D%97:Footnotes&amp;diff=35654"/>
		<updated>2024-07-04T08:22:14Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;local getArgs = require ('Module:Arguments').getArgs;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A R G S _ D E F A U L T &amp;gt;------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
a table to specify initial values.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local args_default = {&lt;br /&gt;
	bracket_left = '',&lt;br /&gt;
	bracket_right = '',&lt;br /&gt;
	bracket_year_left = '',&lt;br /&gt;
	bracket_year_right = '',&lt;br /&gt;
	postscript = '',&lt;br /&gt;
	page = '',&lt;br /&gt;
	pages = '',&lt;br /&gt;
	location = '',&lt;br /&gt;
	page_sep = &amp;quot;, p.&amp;amp;nbsp;&amp;quot;,&lt;br /&gt;
	pages_sep = &amp;quot;, pp.&amp;amp;nbsp;&amp;quot;,&lt;br /&gt;
	ref = '',&lt;br /&gt;
	template = 'harv',															-- if template name not provided in {{#invoke:}} use this&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T A R G E T _ C H E C K &amp;gt;------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
look for anchor_id (CITEREF name-list and year or text from |ref=) in anchor_id_list&lt;br /&gt;
&lt;br /&gt;
the 'no target' error may be suppressed with |ignore-err=yes when target cannot be found because target is inside&lt;br /&gt;
a template that wraps another template; 'multiple targets' error may not be suppressed&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function target_check (anchor_id, args)&lt;br /&gt;
	local namespace = mw.title.getCurrentTitle().namespace;&lt;br /&gt;
	local anchor_id_list_module = mw.loadData ('Module:Footnotes/anchor_id_list');&lt;br /&gt;
	local anchor_id_list = anchor_id_list_module.anchor_id_list;&lt;br /&gt;
	local article_whitelist = anchor_id_list_module.article_whitelist;&lt;br /&gt;
	local template_list = anchor_id_list_module.template_list;&lt;br /&gt;
	&lt;br /&gt;
	local whitelist_module = mw.loadData ('Module:Footnotes/whitelist');&lt;br /&gt;
	local whitelist = whitelist_module.whitelist;&lt;br /&gt;
	local special_patterns = whitelist_module.special_patterns;&lt;br /&gt;
	local DNB_special_patterns = whitelist_module.DNB_special_patterns;&lt;br /&gt;
	local DNB_template_names = whitelist_module.DNB_template_names;&lt;br /&gt;
&lt;br /&gt;
	if 10 == namespace then&lt;br /&gt;
		return '';																-- automatic form of |no-tracking=yes; TODO: is this too broad?&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local tally = anchor_id_list[anchor_id];									-- nil when anchor_id not in list; else a tally&lt;br /&gt;
	local msg;&lt;br /&gt;
	local category;&lt;br /&gt;
&lt;br /&gt;
	if not tally then&lt;br /&gt;
		if args.ignore then&lt;br /&gt;
			return '';															-- if ignore is true then no message, no category&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if article_whitelist and article_whitelist[anchor_id] then				-- if an article-local whitelist and anchor ID is in it&lt;br /&gt;
			return '';															-- done&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local wl_anchor_id = anchor_id;											-- copy to be modified to index into the whitelist&lt;br /&gt;
		&lt;br /&gt;
		if args.year then														-- for anchor IDs created by this template (not in |ref=) that have a date&lt;br /&gt;
			if args.year:match ('%d%l$') or										-- use the date value to determine if we should remove the disambiguator&lt;br /&gt;
				args.year:match ('n%.d%.%l$') or&lt;br /&gt;
				args.year:match ('nd%l$') then&lt;br /&gt;
					wl_anchor_id = wl_anchor_id:gsub ('%l$', '');				-- remove the disambiguator&lt;br /&gt;
			end&lt;br /&gt;
		end		&lt;br /&gt;
&lt;br /&gt;
		local t_tbl = whitelist[wl_anchor_id];									-- get list of templates associated with this anchor ID&lt;br /&gt;
&lt;br /&gt;
		if t_tbl then															-- when anchor ID not whitelisted t_tbl is nil&lt;br /&gt;
			for _, t in ipairs (t_tbl) do										-- spin through the list of templates associated with this anchor ID&lt;br /&gt;
				if template_list[t] then										-- if associated template is found in the list of templates in the article&lt;br /&gt;
					return '';													-- anchor ID is whitlisted and article has matching template so no error&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		for _, pattern in ipairs (special_patterns) do							-- spin through the spcial patterns and try to match&lt;br /&gt;
			if anchor_id:match (pattern) then&lt;br /&gt;
				return '';&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		for _, dnb_t in ipairs (DNB_template_names or {}) do					-- getting desparate now, are there any DNB templates? DNB_template_names may be nil; empty table prevents script error&lt;br /&gt;
			if template_list[dnb_t] then										-- if the article has this DNB template&lt;br /&gt;
				for _, pattern in ipairs (DNB_special_patterns) do				-- spin through the DNB-specifiec wildcard patterns&lt;br /&gt;
					if anchor_id:match (pattern) then							-- and attempt a match&lt;br /&gt;
						return '';												-- found a match&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		msg = 'no target: ' .. anchor_id;										-- anchor_id not found&lt;br /&gt;
		category = '[[Category:Harv and Sfn no-target errors]]';&lt;br /&gt;
&lt;br /&gt;
	elseif 1 &amp;lt; tally then&lt;br /&gt;
		msg = 'multiple targets (' .. tally .. '×): ' .. anchor_id;				-- more than one anchor_id in this article&lt;br /&gt;
		category = 0 == namespace and '[[Category:Harv and Sfn multiple-target errors]]' or '';								-- only categorize in article space&lt;br /&gt;
		return '&amp;lt;span class=&amp;quot;error harv-error&amp;quot; style=&amp;quot;display: inline; font-size:100%&amp;quot;&amp;gt; ' .. args.template .. ' error: ' .. msg .. ' ([[:Category:Harv and Sfn template errors|help]])&amp;lt;/span&amp;gt;' .. category;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
--	category = 0 == namespace and '[[Category:Harv and Sfn template errors]]' or '';	-- only categorize in article space&lt;br /&gt;
	category = 0 == namespace and category or '';								-- only categorize in article space&lt;br /&gt;
&lt;br /&gt;
--use this version to show error messages&lt;br /&gt;
--	return msg and '&amp;lt;span class=&amp;quot;error harv-error&amp;quot; style=&amp;quot;display: inline; font-size:100%&amp;quot;&amp;gt; ' .. args.template .. ' error: ' .. msg .. ' ([[:Category:Harv and Sfn template errors|help]])&amp;lt;/span&amp;gt;' .. category or '';&lt;br /&gt;
--use this version to hide error messages&lt;br /&gt;
	return msg and '&amp;lt;span class=&amp;quot;error harv-error&amp;quot; style=&amp;quot;display: none; font-size:100%&amp;quot;&amp;gt; ' .. args.template .. ' error: ' .. msg .. ' ([[:Category:Harv and Sfn template errors|help]])&amp;lt;/span&amp;gt;' .. category or '';&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ Y E A R &amp;gt;----------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
evaluates param to see if it is one of these forms with or without lowercase letter disambiguator:&lt;br /&gt;
	YYYY&lt;br /&gt;
	n.d.&lt;br /&gt;
	nd	&lt;br /&gt;
	c. YYYY&lt;br /&gt;
	YYYY–YYYY	(separator is endash)&lt;br /&gt;
	YYYY–YY		(separator is endash)&lt;br /&gt;
&lt;br /&gt;
return true when param has a recognized form; false else&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local patterns_date= {&lt;br /&gt;
	'^%d%d%d%d?%l?$',&lt;br /&gt;
	'^n%.d%.%l?$',&lt;br /&gt;
	'^nd%l?$',&lt;br /&gt;
	'^c%. %d%d%d%d?%l?$',&lt;br /&gt;
	'^%d%d%d%d–%d%d%d%d%l?$',&lt;br /&gt;
	'^%d%d%d%d–%d%d%l?$',&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
local function is_year (param, args)&lt;br /&gt;
	args.year = '';																-- used for harv error; &lt;br /&gt;
	&lt;br /&gt;
	for _, pattern in ipairs (patterns_date) do&lt;br /&gt;
		if mw.ustring.match (param, pattern) then&lt;br /&gt;
			args.year = param;													-- used for harv error; &lt;br /&gt;
			return true;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; C O R E &amp;gt;----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
returns an anchor link (CITEREF) formed from one to four author names, year, and insource location (|p=, |pp=, loc=)&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function core( args )&lt;br /&gt;
	local result;&lt;br /&gt;
	local err_msg = ''&lt;br /&gt;
&lt;br /&gt;
	if args.P5 ~= '' then&lt;br /&gt;
		if is_year (args.P5, args) then&lt;br /&gt;
			result = table.concat ({args.P1, ' et al. ', args.bracket_year_left, args.P5, args.bracket_year_right});&lt;br /&gt;
		else&lt;br /&gt;
			args.P5 = '';														-- when P5 not a year don't include in anchor&lt;br /&gt;
			result = table.concat ({args.P1, ' et al.'});						-- and don't render it&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif args.P4 ~= '' then&lt;br /&gt;
		if is_year (args.P4, args) then&lt;br /&gt;
			result = table.concat ({args.P1, ', ', args.P2, ' &amp;amp;amp; ', args.P3, ' ', args.bracket_year_left, args.P4, args.bracket_year_right});	-- three names and a year&lt;br /&gt;
		else&lt;br /&gt;
			result = table.concat ({args.P1, ' et al.'});						-- four names&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif args.P3 ~= '' then&lt;br /&gt;
		if is_year (args.P3, args) then&lt;br /&gt;
			result = table.concat ({args.P1, ' &amp;amp;amp; ', args.P2, ' ', args.bracket_year_left, args.P3, args.bracket_year_right});	-- two names and a year&lt;br /&gt;
		else&lt;br /&gt;
			result = table.concat ({args.P1, ', ', args.P2, ' ', ' &amp;amp;amp; ', args.P3});	-- three names&lt;br /&gt;
		end&lt;br /&gt;
			&lt;br /&gt;
	elseif args.P2 ~= '' then&lt;br /&gt;
		if is_year (args.P2, args) then&lt;br /&gt;
			result = table.concat ({args.P1, ' ', args.bracket_year_left, args.P2, args.bracket_year_right});	-- one name and year&lt;br /&gt;
		else&lt;br /&gt;
			result = table.concat ({args.P1, ' &amp;amp;amp; ', args.P2});				-- two names&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
	else&lt;br /&gt;
		result = args.P1;														-- one name&lt;br /&gt;
	end&lt;br /&gt;
																				-- when author-date result ends with a dot (typically when the last positional parameter holds 'n.d.')&lt;br /&gt;
																				-- and when no in-source location (no |p=, |pp=, or |loc=)&lt;br /&gt;
																				-- and when the first or only character in args.postscript is a dot&lt;br /&gt;
																				-- remove the author-date result trailing dot&lt;br /&gt;
																				-- the author-date result trailing dot will be replaced later with the content of args.postscript (usually a dot)&lt;br /&gt;
	if ('.' == result:sub(-1)) and ('.' == args.postscript:sub(1)) and ('' == args.page) and ('' == args.pages) and ('' == args.location) then&lt;br /&gt;
		result = result:gsub ('%.$', '');&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.ref ~= 'none' then&lt;br /&gt;
		local anchor_id;&lt;br /&gt;
		if args.ref ~= '' then&lt;br /&gt;
			anchor_id = mw.uri.anchorEncode (args.ref);&lt;br /&gt;
			err_msg = target_check (anchor_id, args);&lt;br /&gt;
			result = table.concat ({'[[#', anchor_id, '|', result, ']]'});&lt;br /&gt;
		else&lt;br /&gt;
			anchor_id = mw.uri.anchorEncode (table.concat ({'CITEREF', args.P1, args.P2, args.P3, args.P4, args.P5}));&lt;br /&gt;
			err_msg = target_check (anchor_id, args);&lt;br /&gt;
			result = table.concat ({'[[#', anchor_id, '|', result, ']]'});&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.page ~= '' then&lt;br /&gt;
		result = table.concat ({result, args.page_sep, args.page});&lt;br /&gt;
	elseif args.pages ~= ''then&lt;br /&gt;
		result = table.concat ({result, args.pages_sep, args.pages});&lt;br /&gt;
	end      &lt;br /&gt;
&lt;br /&gt;
	if args.location ~= '' then&lt;br /&gt;
		result = table.concat ({result, ', ', args.location});&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	result = table.concat ({args.bracket_left, result, args.bracket_right, args.postscript}):gsub ('%s+', ' ');		-- strip redundant spaces&lt;br /&gt;
	return result .. err_msg;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; H Y P H E N _ T O _ D A S H &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Converts a hyphen to a dash under certain conditions.  The hyphen must separate&lt;br /&gt;
like items; unlike items are returned unmodified.  These forms are modified:&lt;br /&gt;
	letter - letter (A - B)&lt;br /&gt;
	digit - digit (4-5)&lt;br /&gt;
	digit separator digit - digit separator digit (4.1-4.5 or 4-1-4-5)&lt;br /&gt;
	letterdigit - letterdigit (A1-A5) (an optional separator between letter and&lt;br /&gt;
		digit is supported – a.1-a.5 or a-1-a-5)&lt;br /&gt;
	digitletter - digitletter (5a - 5d) (an optional separator between letter and&lt;br /&gt;
		digit is supported – 5.a-5.d or 5-a-5-d)&lt;br /&gt;
&lt;br /&gt;
any other forms are returned unmodified.&lt;br /&gt;
&lt;br /&gt;
str may be a comma- or semicolon-separated list&lt;br /&gt;
&lt;br /&gt;
This code copied from Module:Citation/CS1.  The only modification is to require Module:Citation/CS1/Utilities&lt;br /&gt;
so that it has access to the functions is_set() and has_accept_as_written()&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function hyphen_to_dash( str )&lt;br /&gt;
	local utilities = require ('Module:Citation/CS1/Utilities');				-- only modification so that this function has access to is_set() and has_accept_as_written()&lt;br /&gt;
&lt;br /&gt;
	if not utilities.is_set (str) then&lt;br /&gt;
		return str;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local accept; -- Boolean&lt;br /&gt;
&lt;br /&gt;
	str = str:gsub ('&amp;amp;[nm]dash;', {['&amp;amp;ndash;'] = '–', ['&amp;amp;mdash;'] = '—'});		-- replace &amp;amp;mdash; and &amp;amp;ndash; entities with their characters; semicolon mucks up the text.split&lt;br /&gt;
	str = str:gsub ('&amp;amp;#45;', '-'); -- replace HTML numeric entity with hyphen character&lt;br /&gt;
&lt;br /&gt;
	str = str:gsub ('&amp;amp;nbsp;', ' '); -- replace &amp;amp;nbsp; entity with generic keyboard space character&lt;br /&gt;
	&lt;br /&gt;
	local out = {};&lt;br /&gt;
	local list = mw.text.split (str, '%s*[,;]%s*');								-- split str at comma or semicolon separators if there are any&lt;br /&gt;
&lt;br /&gt;
	for _, item in ipairs (list) do												-- for each item in the list&lt;br /&gt;
		item, accept = utilities.has_accept_as_written (item);					-- remove accept-this-as-written markup when it wraps all of item&lt;br /&gt;
		if not accept and mw.ustring.match (item, '^%w*[%.%-]?%w+%s*[%-–—]%s*%w*[%.%-]?%w+$') then	-- if a hyphenated range or has endash or emdash separators&lt;br /&gt;
			if item:match ('^%a+[%.%-]?%d+%s*%-%s*%a+[%.%-]?%d+$') or			-- letterdigit hyphen letterdigit (optional separator between letter and digit)&lt;br /&gt;
				item:match ('^%d+[%.%-]?%a+%s*%-%s*%d+[%.%-]?%a+$') or			-- digitletter hyphen digitletter (optional separator between digit and letter)&lt;br /&gt;
				item:match ('^%d+[%.%-]%d+%s*%-%s*%d+[%.%-]%d+$') or			-- digit separator digit hyphen digit separator digit&lt;br /&gt;
				item:match ('^%d+%s*%-%s*%d+$') or								-- digit hyphen digit&lt;br /&gt;
				item:match ('^%a+%s*%-%s*%a+$') then							-- letter hyphen letter&lt;br /&gt;
					item = item:gsub ('(%w*[%.%-]?%w+)%s*%-%s*(%w*[%.%-]?%w+)', '%1–%2');	-- replace hyphen, remove extraneous space characters&lt;br /&gt;
			else&lt;br /&gt;
				item = mw.ustring.gsub (item, '%s*[–—]%s*', '–');				-- for endash or emdash separated ranges, replace em with en, remove extraneous whitespace&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		table.insert (out, item);												-- add the (possibly modified) item to the output table&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local temp_str = '';														-- concatenate the output table into a comma separated string&lt;br /&gt;
	temp_str, accept = utilities.has_accept_as_written (table.concat (out, ', ')); -- remove accept-this-as-written markup when it wraps all of concatenated out&lt;br /&gt;
	if accept then&lt;br /&gt;
		temp_str = utilities.has_accept_as_written (str);						-- when global markup removed, return original str; do it this way to suppress boolean second return value&lt;br /&gt;
		return temp_str;&lt;br /&gt;
	else&lt;br /&gt;
		return temp_str;														-- else, return assembled temp_str&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A R G S  _ F E T C H &amp;gt;---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Because all of the templates share a common set of parameters, a single common function to fetch those parameters&lt;br /&gt;
from frame and parent frame.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function args_fetch (frame, ps)&lt;br /&gt;
	local args = args_default;													-- create a copy of the default table&lt;br /&gt;
	local pframe = frame:getParent();											-- point to the template's parameter table&lt;br /&gt;
&lt;br /&gt;
	for k, v in pairs (frame.args) do											-- override defaults with values provided in the #invoke: if any&lt;br /&gt;
		args[k] = v;	   &lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	args.postscript = pframe.args.postscript or pframe.args.ps or ps;&lt;br /&gt;
	if 'none' == args.postscript then&lt;br /&gt;
		args.postscript = '';&lt;br /&gt;
	end&lt;br /&gt;
	args.page = pframe.args.p or pframe.args.page or '';&lt;br /&gt;
	args.pages = pframe.args.pp or pframe.args.pages or '';&lt;br /&gt;
	args.pages = ('' ~= args.pages) and hyphen_to_dash (args.pages) or '';&lt;br /&gt;
	args.location = pframe.args.at or pframe.args.loc or '';&lt;br /&gt;
	args.ref = pframe.args.ref or pframe.args.Ref or '';&lt;br /&gt;
	args.ignore = ('yes' == pframe.args['ignore-false-positive']) or ('yes' == pframe.args['ignore-err']);&lt;br /&gt;
&lt;br /&gt;
	for i, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do						-- loop through the five positional parameters and trim if set else empty string&lt;br /&gt;
		args[v] = (pframe.args[i] and mw.text.trim (pframe.args[i])) or '';&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.P5 and not is_year (args.P5, args) then&lt;br /&gt;
		local i = 6;															-- initialize the indexer to the sixth positional parameter&lt;br /&gt;
		while pframe.args[i] do													-- in case there are too many authors loop through the authors looking for a year&lt;br /&gt;
			local v = mw.text.trim (pframe.args[i]);							-- trim&lt;br /&gt;
			if is_year (v, args) then											-- if a year&lt;br /&gt;
				args.P5 = v;													-- overwrite whatever was in args.P5 with year&lt;br /&gt;
				break;															-- and abandon the search&lt;br /&gt;
			end&lt;br /&gt;
			i = i + 1;															-- bump the indexer&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return args;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; H A R V A R D _ C I T A T I O N &amp;gt;----------------------------------------------&lt;br /&gt;
&lt;br /&gt;
common entry point for:&lt;br /&gt;
	{{harvard citation}} aka {{harv}}&lt;br /&gt;
	{{Harvard citation no brackets}} aka {{harvnb}}&lt;br /&gt;
	{{harvcol}}&lt;br /&gt;
	{{harvcolnb}}&lt;br /&gt;
	{{harvcoltxt}}&lt;br /&gt;
	{{Harvard citation text}} aka {{harvtxt}}&lt;br /&gt;
	{{Harvp}}&lt;br /&gt;
&lt;br /&gt;
Distinguishing features (brackets and page separators) are specified in this module's {{#invoke}} in the respective templates.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function harvard_citation (frame)&lt;br /&gt;
	local args = args_fetch (frame, '');										-- get the template and invoke parameters; default postscript is empty string&lt;br /&gt;
&lt;br /&gt;
	return core (args);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S T R I P _ U R L &amp;gt;------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
used by sfn() and sfnm().  This function fixes an issue with reference tooltip gadget where the tooltip is not displayed&lt;br /&gt;
when an insource locator (|p=, |pp=, |loc=) has an external wikilink that contains a # character&lt;br /&gt;
&lt;br /&gt;
strip uri-reserved characters from urls in |p=, |pp-, and |loc= parameters  The researved characters are:&lt;br /&gt;
	!#$&amp;amp;'()*+,/:;=?@[]&lt;br /&gt;
	&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function strip_url (pages)&lt;br /&gt;
	local escaped_uri;&lt;br /&gt;
	if not pages or ('' == pages) then&lt;br /&gt;
		return pages;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for uri in pages:gmatch ('%[(%a[%w%+%.%-]*://%S+)') do						-- for each external link get the uri&lt;br /&gt;
		escaped_uri = uri:gsub (&amp;quot;([%(%)%.%%%+%-%*%?%[%^%$%]])&amp;quot;, &amp;quot;%%%1&amp;quot; );		-- save a copy with lua pattern characters escaped&lt;br /&gt;
		uri = uri:gsub (&amp;quot;[!#%$&amp;amp;'%(%)%*%+,/:;=%?@%[%]%.%%]&amp;quot;, '');				-- remove reserved characters and '%' because '%20' (space character) is a lua 'invalid capture index'&lt;br /&gt;
		pages = pages:gsub (escaped_uri, uri, 1);								-- replace original uri with the stripped version&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return pages;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S F N &amp;gt;------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
entry point for {{sfn}} and {{sfnp}}&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function sfn (frame)&lt;br /&gt;
	local args = args_fetch (frame, '.');										-- get the template and invoke parameters; default postscript is a dot&lt;br /&gt;
&lt;br /&gt;
	local result = core (args);													-- go make a CITEREF anchor&lt;br /&gt;
																				-- put it all together and then strip redundant spaces&lt;br /&gt;
	local name = table.concat ({'FOOTNOTE', args.P1, args.P2, args.P3, args.P4, args.P5, strip_url (args.page), strip_url (args.pages), strip_url (args.location)}):gsub ('%s+', ' ');&lt;br /&gt;
&lt;br /&gt;
	return frame:extensionTag ({name='ref', args={name=name}, content=result});	&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S F N M &amp;gt;----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
common entry point for {{sfnm}} and {{sfnmp}}&lt;br /&gt;
&lt;br /&gt;
Distinguishing features (brackets) are specified in this module's {{#invoke}} in the respective templates.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function sfnm (frame)&lt;br /&gt;
	local args = args_default;													-- create a copy of the default table&lt;br /&gt;
	local pframe = frame:getParent();											-- point to the template's parameter table&lt;br /&gt;
	&lt;br /&gt;
	local n = 1;																-- index of source; this is the 'n' in na1, ny, etc&lt;br /&gt;
	local first_pnum = 1;														-- first of a pair of positional parameters&lt;br /&gt;
	local second_pnum = 2;														-- second of a pair of positional parameters&lt;br /&gt;
&lt;br /&gt;
	local last_ps = 0;															-- index of the last source with |nps= set&lt;br /&gt;
	local last_index = 0;														-- index of the last source; these used to determine which of |ps= or |nps= will terminate the whole rendering&lt;br /&gt;
&lt;br /&gt;
	local out = {};																-- table to hold rendered sources&lt;br /&gt;
	local footnote = {'FOOTNOTE'};												-- all author, date, insource location stuff becomes part of the reference's footnote id; added as we go&lt;br /&gt;
&lt;br /&gt;
	for k, v in pairs (frame.args) do											-- override defaults with values provided in the #invoke: if any&lt;br /&gt;
		args[k] = v;	   &lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	while true do&lt;br /&gt;
		if not pframe.args[table.concat ({n, 'a1'})] and not pframe.args[first_pnum] then&lt;br /&gt;
			break;																-- no na1 or matching positional parameter so done&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if pframe.args[table.concat ({n, 'a1'})] then							-- does this source use named parameters?&lt;br /&gt;
			for _, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do				-- initialize for this source&lt;br /&gt;
				args[v] = '';&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			for i, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do				-- extract author and year parameters for this source&lt;br /&gt;
				args[v] = pframe.args[table.concat ({n, 'a', i})] or '';		-- attempt to assign author name&lt;br /&gt;
				if '' == args[v] then											-- when there wasn't an author name&lt;br /&gt;
					args[v] = pframe.args[table.concat ({n, 'y'})] or '';		-- attempt to assign year&lt;br /&gt;
					break;														-- done with author/date for this source&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		else																	-- this source uses positional parameters&lt;br /&gt;
			args.P1 = mw.text.trim (pframe.args[first_pnum]);					-- yes, only one author supported&lt;br /&gt;
			args.P2 = (pframe.args[second_pnum] and mw.text.trim (pframe.args[second_pnum])) or '';	-- when positional author, year must also be positional&lt;br /&gt;
&lt;br /&gt;
			for _, v in ipairs ({'P3', 'P4', 'P5'}) do							-- blank the rest of these for this source&lt;br /&gt;
				args[v] = '';&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			first_pnum = first_pnum + 2;										-- source must use positional author and positional year&lt;br /&gt;
			second_pnum = first_pnum + 1;										-- bump these for possible next positional source&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		args.postscript = pframe.args[table.concat ({n, 'ps'})] or '';&lt;br /&gt;
		if 'none' == args.postscript then										-- this for compatibility with other footnote templates; does nothing&lt;br /&gt;
			args.postscript = '';&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		args.ref = pframe.args[table.concat ({n, 'ref'})] or '';				-- alternate reference for this source&lt;br /&gt;
&lt;br /&gt;
		args.page = pframe.args[table.concat ({n, 'p'})] or '';					-- insource locations for this source&lt;br /&gt;
		args.pages = pframe.args[table.concat ({n, 'pp'})] or '';&lt;br /&gt;
		args.pages = ('' ~= args.pages) and hyphen_to_dash (args.pages) or '';&lt;br /&gt;
		args.location = pframe.args[table.concat ({n, 'loc'})] or pframe.args[table.concat ({n, 'at'})] or '';&lt;br /&gt;
		args.ignore = ('yes' == pframe.args[table.concat ({n, 'ignore-false-positive'})]) or ('yes' == pframe.args[table.concat ({n, 'ignore-err'})]);&lt;br /&gt;
&lt;br /&gt;
		table.insert (out, core (args));										-- save the rendering of this source&lt;br /&gt;
		&lt;br /&gt;
		for k, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do					-- create the FOOTNOTE id&lt;br /&gt;
			if '' ~= args[v] then&lt;br /&gt;
				table.insert (footnote, args[v]);&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		for k, v in ipairs ({'page', 'pages', 'location'}) do					-- these done separately so that we can strip uri-reserved characters from extlinked page numbers &lt;br /&gt;
			if '' ~= args[v] then&lt;br /&gt;
				table.insert (footnote, strip_url (args[v]))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		last_index = n;															-- flags used to select terminal postscript from nps or from end_ps&lt;br /&gt;
		if '' ~= args.postscript then							&lt;br /&gt;
			last_ps = n;&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		n = n+1;																-- bump for the next one&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local name = table.concat (footnote):gsub ('%s+', ' ');						-- put the footnote together and strip redundant space&lt;br /&gt;
	&lt;br /&gt;
	args.end_ps = pframe.args.postscript or pframe.args.ps or '.';				-- this is the postscript for the whole not for the individual sources&lt;br /&gt;
	if 'none' == args.end_ps then												-- not an original sfnm parameter value; added for compatibility with other footnote templates&lt;br /&gt;
		args.end_ps = '';&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local result = table.concat ({table.concat (out, '; '), (last_index == last_ps) and '' or  args.end_ps});&lt;br /&gt;
	return frame:extensionTag ({name='ref', args={name=name}, content=result});&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S F N R E F &amp;gt;------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
implements {{sfnref}}&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function sfnref (frame)&lt;br /&gt;
	local args = getArgs (frame);&lt;br /&gt;
	local out = {};&lt;br /&gt;
	&lt;br /&gt;
	for i=1, 5 do																-- get the first five args if there are five args&lt;br /&gt;
		if args[i] then&lt;br /&gt;
			out[i] = args[i];&lt;br /&gt;
		else&lt;br /&gt;
			break;																-- less than 5 args break out&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if 5 == #out then															-- when we have seen five args there may bemore&lt;br /&gt;
		local i = 6;															-- initialize the indexer to the sixth positional parameter&lt;br /&gt;
		while args[i] do														-- in case there are too many authors loop through the authors looking for a year&lt;br /&gt;
			if is_year (args[i], args) then										-- if a year&lt;br /&gt;
				out[5] = args[i];												-- overwrite whatever was in args[5] with year&lt;br /&gt;
				break;															-- and abandon the search&lt;br /&gt;
			end&lt;br /&gt;
			i = i + 1;															-- bump the indexer&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return mw.uri.anchorEncode ('CITEREF' .. table.concat (out));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E X P O R T E D   F U N C T I O N S &amp;gt;------------------------------------------&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	harvard_citation = harvard_citation,&lt;br /&gt;
	sfn = sfn,&lt;br /&gt;
	sfnm = sfnm,&lt;br /&gt;
	sfnref = sfnref,&lt;br /&gt;
	};&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation_text&amp;diff=35653</id>
		<title>模板:Harvard citation text</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation_text&amp;diff=35653"/>
		<updated>2024-07-04T08:20:20Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:Footnotes|harvard_citation&lt;br /&gt;
|bracket_year_left = (&lt;br /&gt;
|bracket_year_right = {{#if:{{{p|}}}{{{page|}}}{{{pp|}}}{{{pages|}}}{{{loc|}}}{{{at|}}}||)}}&lt;br /&gt;
|bracket_right = {{#if:{{{p|}}}{{{page|}}}{{{pp|}}}{{{pages|}}}{{{loc|}}}{{{at|}}}|)}}&lt;br /&gt;
|template=harvtxt&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%A8%A1%E5%9D%97:Footnotes&amp;diff=35652</id>
		<title>模块:Footnotes</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%A8%A1%E5%9D%97:Footnotes&amp;diff=35652"/>
		<updated>2024-07-04T08:19:50Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;require('No globals');&lt;br /&gt;
local getArgs = require ('Module:Arguments').getArgs;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A R G S _ D E F A U L T &amp;gt;------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
a table to specify initial values.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local args_default = {&lt;br /&gt;
	bracket_left = '',&lt;br /&gt;
	bracket_right = '',&lt;br /&gt;
	bracket_year_left = '',&lt;br /&gt;
	bracket_year_right = '',&lt;br /&gt;
	postscript = '',&lt;br /&gt;
	page = '',&lt;br /&gt;
	pages = '',&lt;br /&gt;
	location = '',&lt;br /&gt;
	page_sep = &amp;quot;, p.&amp;amp;nbsp;&amp;quot;,&lt;br /&gt;
	pages_sep = &amp;quot;, pp.&amp;amp;nbsp;&amp;quot;,&lt;br /&gt;
	ref = '',&lt;br /&gt;
	template = 'harv',															-- if template name not provided in {{#invoke:}} use this&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T A R G E T _ C H E C K &amp;gt;------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
look for anchor_id (CITEREF name-list and year or text from |ref=) in anchor_id_list&lt;br /&gt;
&lt;br /&gt;
the 'no target' error may be suppressed with |ignore-err=yes when target cannot be found because target is inside&lt;br /&gt;
a template that wraps another template; 'multiple targets' error may not be suppressed&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function target_check (anchor_id, args)&lt;br /&gt;
	local namespace = mw.title.getCurrentTitle().namespace;&lt;br /&gt;
	local anchor_id_list_module = mw.loadData ('Module:Footnotes/anchor_id_list');&lt;br /&gt;
	local anchor_id_list = anchor_id_list_module.anchor_id_list;&lt;br /&gt;
	local article_whitelist = anchor_id_list_module.article_whitelist;&lt;br /&gt;
	local template_list = anchor_id_list_module.template_list;&lt;br /&gt;
	&lt;br /&gt;
	local whitelist_module = mw.loadData ('Module:Footnotes/whitelist');&lt;br /&gt;
	local whitelist = whitelist_module.whitelist;&lt;br /&gt;
	local special_patterns = whitelist_module.special_patterns;&lt;br /&gt;
	local DNB_special_patterns = whitelist_module.DNB_special_patterns;&lt;br /&gt;
	local DNB_template_names = whitelist_module.DNB_template_names;&lt;br /&gt;
&lt;br /&gt;
	if 10 == namespace then&lt;br /&gt;
		return '';																-- automatic form of |no-tracking=yes; TODO: is this too broad?&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local tally = anchor_id_list[anchor_id];									-- nil when anchor_id not in list; else a tally&lt;br /&gt;
	local msg;&lt;br /&gt;
	local category;&lt;br /&gt;
&lt;br /&gt;
	if not tally then&lt;br /&gt;
		if args.ignore then&lt;br /&gt;
			return '';															-- if ignore is true then no message, no category&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if article_whitelist and article_whitelist[anchor_id] then				-- if an article-local whitelist and anchor ID is in it&lt;br /&gt;
			return '';															-- done&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local wl_anchor_id = anchor_id;											-- copy to be modified to index into the whitelist&lt;br /&gt;
		&lt;br /&gt;
		if args.year then														-- for anchor IDs created by this template (not in |ref=) that have a date&lt;br /&gt;
			if args.year:match ('%d%l$') or										-- use the date value to determine if we should remove the disambiguator&lt;br /&gt;
				args.year:match ('n%.d%.%l$') or&lt;br /&gt;
				args.year:match ('nd%l$') then&lt;br /&gt;
					wl_anchor_id = wl_anchor_id:gsub ('%l$', '');				-- remove the disambiguator&lt;br /&gt;
			end&lt;br /&gt;
		end		&lt;br /&gt;
&lt;br /&gt;
		local t_tbl = whitelist[wl_anchor_id];									-- get list of templates associated with this anchor ID&lt;br /&gt;
&lt;br /&gt;
		if t_tbl then															-- when anchor ID not whitelisted t_tbl is nil&lt;br /&gt;
			for _, t in ipairs (t_tbl) do										-- spin through the list of templates associated with this anchor ID&lt;br /&gt;
				if template_list[t] then										-- if associated template is found in the list of templates in the article&lt;br /&gt;
					return '';													-- anchor ID is whitlisted and article has matching template so no error&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		for _, pattern in ipairs (special_patterns) do							-- spin through the spcial patterns and try to match&lt;br /&gt;
			if anchor_id:match (pattern) then&lt;br /&gt;
				return '';&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		for _, dnb_t in ipairs (DNB_template_names or {}) do					-- getting desparate now, are there any DNB templates? DNB_template_names may be nil; empty table prevents script error&lt;br /&gt;
			if template_list[dnb_t] then										-- if the article has this DNB template&lt;br /&gt;
				for _, pattern in ipairs (DNB_special_patterns) do				-- spin through the DNB-specifiec wildcard patterns&lt;br /&gt;
					if anchor_id:match (pattern) then							-- and attempt a match&lt;br /&gt;
						return '';												-- found a match&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		msg = 'no target: ' .. anchor_id;										-- anchor_id not found&lt;br /&gt;
		category = '[[Category:Harv and Sfn no-target errors]]';&lt;br /&gt;
&lt;br /&gt;
	elseif 1 &amp;lt; tally then&lt;br /&gt;
		msg = 'multiple targets (' .. tally .. '×): ' .. anchor_id;				-- more than one anchor_id in this article&lt;br /&gt;
		category = 0 == namespace and '[[Category:Harv and Sfn multiple-target errors]]' or '';								-- only categorize in article space&lt;br /&gt;
		return '&amp;lt;span class=&amp;quot;error harv-error&amp;quot; style=&amp;quot;display: inline; font-size:100%&amp;quot;&amp;gt; ' .. args.template .. ' error: ' .. msg .. ' ([[:Category:Harv and Sfn template errors|help]])&amp;lt;/span&amp;gt;' .. category;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
--	category = 0 == namespace and '[[Category:Harv and Sfn template errors]]' or '';	-- only categorize in article space&lt;br /&gt;
	category = 0 == namespace and category or '';								-- only categorize in article space&lt;br /&gt;
&lt;br /&gt;
--use this version to show error messages&lt;br /&gt;
--	return msg and '&amp;lt;span class=&amp;quot;error harv-error&amp;quot; style=&amp;quot;display: inline; font-size:100%&amp;quot;&amp;gt; ' .. args.template .. ' error: ' .. msg .. ' ([[:Category:Harv and Sfn template errors|help]])&amp;lt;/span&amp;gt;' .. category or '';&lt;br /&gt;
--use this version to hide error messages&lt;br /&gt;
	return msg and '&amp;lt;span class=&amp;quot;error harv-error&amp;quot; style=&amp;quot;display: none; font-size:100%&amp;quot;&amp;gt; ' .. args.template .. ' error: ' .. msg .. ' ([[:Category:Harv and Sfn template errors|help]])&amp;lt;/span&amp;gt;' .. category or '';&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ Y E A R &amp;gt;----------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
evaluates param to see if it is one of these forms with or without lowercase letter disambiguator:&lt;br /&gt;
	YYYY&lt;br /&gt;
	n.d.&lt;br /&gt;
	nd	&lt;br /&gt;
	c. YYYY&lt;br /&gt;
	YYYY–YYYY	(separator is endash)&lt;br /&gt;
	YYYY–YY		(separator is endash)&lt;br /&gt;
&lt;br /&gt;
return true when param has a recognized form; false else&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local patterns_date= {&lt;br /&gt;
	'^%d%d%d%d?%l?$',&lt;br /&gt;
	'^n%.d%.%l?$',&lt;br /&gt;
	'^nd%l?$',&lt;br /&gt;
	'^c%. %d%d%d%d?%l?$',&lt;br /&gt;
	'^%d%d%d%d–%d%d%d%d%l?$',&lt;br /&gt;
	'^%d%d%d%d–%d%d%l?$',&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
local function is_year (param, args)&lt;br /&gt;
	args.year = '';																-- used for harv error; &lt;br /&gt;
	&lt;br /&gt;
	for _, pattern in ipairs (patterns_date) do&lt;br /&gt;
		if mw.ustring.match (param, pattern) then&lt;br /&gt;
			args.year = param;													-- used for harv error; &lt;br /&gt;
			return true;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; C O R E &amp;gt;----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
returns an anchor link (CITEREF) formed from one to four author names, year, and insource location (|p=, |pp=, loc=)&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function core( args )&lt;br /&gt;
	local result;&lt;br /&gt;
	local err_msg = ''&lt;br /&gt;
&lt;br /&gt;
	if args.P5 ~= '' then&lt;br /&gt;
		if is_year (args.P5, args) then&lt;br /&gt;
			result = table.concat ({args.P1, ' et al. ', args.bracket_year_left, args.P5, args.bracket_year_right});&lt;br /&gt;
		else&lt;br /&gt;
			args.P5 = '';														-- when P5 not a year don't include in anchor&lt;br /&gt;
			result = table.concat ({args.P1, ' et al.'});						-- and don't render it&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif args.P4 ~= '' then&lt;br /&gt;
		if is_year (args.P4, args) then&lt;br /&gt;
			result = table.concat ({args.P1, ', ', args.P2, ' &amp;amp;amp; ', args.P3, ' ', args.bracket_year_left, args.P4, args.bracket_year_right});	-- three names and a year&lt;br /&gt;
		else&lt;br /&gt;
			result = table.concat ({args.P1, ' et al.'});						-- four names&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif args.P3 ~= '' then&lt;br /&gt;
		if is_year (args.P3, args) then&lt;br /&gt;
			result = table.concat ({args.P1, ' &amp;amp;amp; ', args.P2, ' ', args.bracket_year_left, args.P3, args.bracket_year_right});	-- two names and a year&lt;br /&gt;
		else&lt;br /&gt;
			result = table.concat ({args.P1, ', ', args.P2, ' ', ' &amp;amp;amp; ', args.P3});	-- three names&lt;br /&gt;
		end&lt;br /&gt;
			&lt;br /&gt;
	elseif args.P2 ~= '' then&lt;br /&gt;
		if is_year (args.P2, args) then&lt;br /&gt;
			result = table.concat ({args.P1, ' ', args.bracket_year_left, args.P2, args.bracket_year_right});	-- one name and year&lt;br /&gt;
		else&lt;br /&gt;
			result = table.concat ({args.P1, ' &amp;amp;amp; ', args.P2});				-- two names&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
	else&lt;br /&gt;
		result = args.P1;														-- one name&lt;br /&gt;
	end&lt;br /&gt;
																				-- when author-date result ends with a dot (typically when the last positional parameter holds 'n.d.')&lt;br /&gt;
																				-- and when no in-source location (no |p=, |pp=, or |loc=)&lt;br /&gt;
																				-- and when the first or only character in args.postscript is a dot&lt;br /&gt;
																				-- remove the author-date result trailing dot&lt;br /&gt;
																				-- the author-date result trailing dot will be replaced later with the content of args.postscript (usually a dot)&lt;br /&gt;
	if ('.' == result:sub(-1)) and ('.' == args.postscript:sub(1)) and ('' == args.page) and ('' == args.pages) and ('' == args.location) then&lt;br /&gt;
		result = result:gsub ('%.$', '');&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.ref ~= 'none' then&lt;br /&gt;
		local anchor_id;&lt;br /&gt;
		if args.ref ~= '' then&lt;br /&gt;
			anchor_id = mw.uri.anchorEncode (args.ref);&lt;br /&gt;
			err_msg = target_check (anchor_id, args);&lt;br /&gt;
			result = table.concat ({'[[#', anchor_id, '|', result, ']]'});&lt;br /&gt;
		else&lt;br /&gt;
			anchor_id = mw.uri.anchorEncode (table.concat ({'CITEREF', args.P1, args.P2, args.P3, args.P4, args.P5}));&lt;br /&gt;
			err_msg = target_check (anchor_id, args);&lt;br /&gt;
			result = table.concat ({'[[#', anchor_id, '|', result, ']]'});&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.page ~= '' then&lt;br /&gt;
		result = table.concat ({result, args.page_sep, args.page});&lt;br /&gt;
	elseif args.pages ~= ''then&lt;br /&gt;
		result = table.concat ({result, args.pages_sep, args.pages});&lt;br /&gt;
	end      &lt;br /&gt;
&lt;br /&gt;
	if args.location ~= '' then&lt;br /&gt;
		result = table.concat ({result, ', ', args.location});&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	result = table.concat ({args.bracket_left, result, args.bracket_right, args.postscript}):gsub ('%s+', ' ');		-- strip redundant spaces&lt;br /&gt;
	return result .. err_msg;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; H Y P H E N _ T O _ D A S H &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Converts a hyphen to a dash under certain conditions.  The hyphen must separate&lt;br /&gt;
like items; unlike items are returned unmodified.  These forms are modified:&lt;br /&gt;
	letter - letter (A - B)&lt;br /&gt;
	digit - digit (4-5)&lt;br /&gt;
	digit separator digit - digit separator digit (4.1-4.5 or 4-1-4-5)&lt;br /&gt;
	letterdigit - letterdigit (A1-A5) (an optional separator between letter and&lt;br /&gt;
		digit is supported – a.1-a.5 or a-1-a-5)&lt;br /&gt;
	digitletter - digitletter (5a - 5d) (an optional separator between letter and&lt;br /&gt;
		digit is supported – 5.a-5.d or 5-a-5-d)&lt;br /&gt;
&lt;br /&gt;
any other forms are returned unmodified.&lt;br /&gt;
&lt;br /&gt;
str may be a comma- or semicolon-separated list&lt;br /&gt;
&lt;br /&gt;
This code copied from Module:Citation/CS1.  The only modification is to require Module:Citation/CS1/Utilities&lt;br /&gt;
so that it has access to the functions is_set() and has_accept_as_written()&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function hyphen_to_dash( str )&lt;br /&gt;
	local utilities = require ('Module:Citation/CS1/Utilities');				-- only modification so that this function has access to is_set() and has_accept_as_written()&lt;br /&gt;
&lt;br /&gt;
	if not utilities.is_set (str) then&lt;br /&gt;
		return str;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local accept; -- Boolean&lt;br /&gt;
&lt;br /&gt;
	str = str:gsub ('&amp;amp;[nm]dash;', {['&amp;amp;ndash;'] = '–', ['&amp;amp;mdash;'] = '—'});		-- replace &amp;amp;mdash; and &amp;amp;ndash; entities with their characters; semicolon mucks up the text.split&lt;br /&gt;
	str = str:gsub ('&amp;amp;#45;', '-'); -- replace HTML numeric entity with hyphen character&lt;br /&gt;
&lt;br /&gt;
	str = str:gsub ('&amp;amp;nbsp;', ' '); -- replace &amp;amp;nbsp; entity with generic keyboard space character&lt;br /&gt;
	&lt;br /&gt;
	local out = {};&lt;br /&gt;
	local list = mw.text.split (str, '%s*[,;]%s*');								-- split str at comma or semicolon separators if there are any&lt;br /&gt;
&lt;br /&gt;
	for _, item in ipairs (list) do												-- for each item in the list&lt;br /&gt;
		item, accept = utilities.has_accept_as_written (item);					-- remove accept-this-as-written markup when it wraps all of item&lt;br /&gt;
		if not accept and mw.ustring.match (item, '^%w*[%.%-]?%w+%s*[%-–—]%s*%w*[%.%-]?%w+$') then	-- if a hyphenated range or has endash or emdash separators&lt;br /&gt;
			if item:match ('^%a+[%.%-]?%d+%s*%-%s*%a+[%.%-]?%d+$') or			-- letterdigit hyphen letterdigit (optional separator between letter and digit)&lt;br /&gt;
				item:match ('^%d+[%.%-]?%a+%s*%-%s*%d+[%.%-]?%a+$') or			-- digitletter hyphen digitletter (optional separator between digit and letter)&lt;br /&gt;
				item:match ('^%d+[%.%-]%d+%s*%-%s*%d+[%.%-]%d+$') or			-- digit separator digit hyphen digit separator digit&lt;br /&gt;
				item:match ('^%d+%s*%-%s*%d+$') or								-- digit hyphen digit&lt;br /&gt;
				item:match ('^%a+%s*%-%s*%a+$') then							-- letter hyphen letter&lt;br /&gt;
					item = item:gsub ('(%w*[%.%-]?%w+)%s*%-%s*(%w*[%.%-]?%w+)', '%1–%2');	-- replace hyphen, remove extraneous space characters&lt;br /&gt;
			else&lt;br /&gt;
				item = mw.ustring.gsub (item, '%s*[–—]%s*', '–');				-- for endash or emdash separated ranges, replace em with en, remove extraneous whitespace&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		table.insert (out, item);												-- add the (possibly modified) item to the output table&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local temp_str = '';														-- concatenate the output table into a comma separated string&lt;br /&gt;
	temp_str, accept = utilities.has_accept_as_written (table.concat (out, ', ')); -- remove accept-this-as-written markup when it wraps all of concatenated out&lt;br /&gt;
	if accept then&lt;br /&gt;
		temp_str = utilities.has_accept_as_written (str);						-- when global markup removed, return original str; do it this way to suppress boolean second return value&lt;br /&gt;
		return temp_str;&lt;br /&gt;
	else&lt;br /&gt;
		return temp_str;														-- else, return assembled temp_str&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A R G S  _ F E T C H &amp;gt;---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Because all of the templates share a common set of parameters, a single common function to fetch those parameters&lt;br /&gt;
from frame and parent frame.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function args_fetch (frame, ps)&lt;br /&gt;
	local args = args_default;													-- create a copy of the default table&lt;br /&gt;
	local pframe = frame:getParent();											-- point to the template's parameter table&lt;br /&gt;
&lt;br /&gt;
	for k, v in pairs (frame.args) do											-- override defaults with values provided in the #invoke: if any&lt;br /&gt;
		args[k] = v;	   &lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	args.postscript = pframe.args.postscript or pframe.args.ps or ps;&lt;br /&gt;
	if 'none' == args.postscript then&lt;br /&gt;
		args.postscript = '';&lt;br /&gt;
	end&lt;br /&gt;
	args.page = pframe.args.p or pframe.args.page or '';&lt;br /&gt;
	args.pages = pframe.args.pp or pframe.args.pages or '';&lt;br /&gt;
	args.pages = ('' ~= args.pages) and hyphen_to_dash (args.pages) or '';&lt;br /&gt;
	args.location = pframe.args.at or pframe.args.loc or '';&lt;br /&gt;
	args.ref = pframe.args.ref or pframe.args.Ref or '';&lt;br /&gt;
	args.ignore = ('yes' == pframe.args['ignore-false-positive']) or ('yes' == pframe.args['ignore-err']);&lt;br /&gt;
&lt;br /&gt;
	for i, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do						-- loop through the five positional parameters and trim if set else empty string&lt;br /&gt;
		args[v] = (pframe.args[i] and mw.text.trim (pframe.args[i])) or '';&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.P5 and not is_year (args.P5, args) then&lt;br /&gt;
		local i = 6;															-- initialize the indexer to the sixth positional parameter&lt;br /&gt;
		while pframe.args[i] do													-- in case there are too many authors loop through the authors looking for a year&lt;br /&gt;
			local v = mw.text.trim (pframe.args[i]);							-- trim&lt;br /&gt;
			if is_year (v, args) then											-- if a year&lt;br /&gt;
				args.P5 = v;													-- overwrite whatever was in args.P5 with year&lt;br /&gt;
				break;															-- and abandon the search&lt;br /&gt;
			end&lt;br /&gt;
			i = i + 1;															-- bump the indexer&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return args;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; H A R V A R D _ C I T A T I O N &amp;gt;----------------------------------------------&lt;br /&gt;
&lt;br /&gt;
common entry point for:&lt;br /&gt;
	{{harvard citation}} aka {{harv}}&lt;br /&gt;
	{{Harvard citation no brackets}} aka {{harvnb}}&lt;br /&gt;
	{{harvcol}}&lt;br /&gt;
	{{harvcolnb}}&lt;br /&gt;
	{{harvcoltxt}}&lt;br /&gt;
	{{Harvard citation text}} aka {{harvtxt}}&lt;br /&gt;
	{{Harvp}}&lt;br /&gt;
&lt;br /&gt;
Distinguishing features (brackets and page separators) are specified in this module's {{#invoke}} in the respective templates.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function harvard_citation (frame)&lt;br /&gt;
	local args = args_fetch (frame, '');										-- get the template and invoke parameters; default postscript is empty string&lt;br /&gt;
&lt;br /&gt;
	return core (args);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S T R I P _ U R L &amp;gt;------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
used by sfn() and sfnm().  This function fixes an issue with reference tooltip gadget where the tooltip is not displayed&lt;br /&gt;
when an insource locator (|p=, |pp=, |loc=) has an external wikilink that contains a # character&lt;br /&gt;
&lt;br /&gt;
strip uri-reserved characters from urls in |p=, |pp-, and |loc= parameters  The researved characters are:&lt;br /&gt;
	!#$&amp;amp;'()*+,/:;=?@[]&lt;br /&gt;
	&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function strip_url (pages)&lt;br /&gt;
	local escaped_uri;&lt;br /&gt;
	if not pages or ('' == pages) then&lt;br /&gt;
		return pages;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for uri in pages:gmatch ('%[(%a[%w%+%.%-]*://%S+)') do						-- for each external link get the uri&lt;br /&gt;
		escaped_uri = uri:gsub (&amp;quot;([%(%)%.%%%+%-%*%?%[%^%$%]])&amp;quot;, &amp;quot;%%%1&amp;quot; );		-- save a copy with lua pattern characters escaped&lt;br /&gt;
		uri = uri:gsub (&amp;quot;[!#%$&amp;amp;'%(%)%*%+,/:;=%?@%[%]%.%%]&amp;quot;, '');				-- remove reserved characters and '%' because '%20' (space character) is a lua 'invalid capture index'&lt;br /&gt;
		pages = pages:gsub (escaped_uri, uri, 1);								-- replace original uri with the stripped version&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return pages;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S F N &amp;gt;------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
entry point for {{sfn}} and {{sfnp}}&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function sfn (frame)&lt;br /&gt;
	local args = args_fetch (frame, '.');										-- get the template and invoke parameters; default postscript is a dot&lt;br /&gt;
&lt;br /&gt;
	local result = core (args);													-- go make a CITEREF anchor&lt;br /&gt;
																				-- put it all together and then strip redundant spaces&lt;br /&gt;
	local name = table.concat ({'FOOTNOTE', args.P1, args.P2, args.P3, args.P4, args.P5, strip_url (args.page), strip_url (args.pages), strip_url (args.location)}):gsub ('%s+', ' ');&lt;br /&gt;
&lt;br /&gt;
	return frame:extensionTag ({name='ref', args={name=name}, content=result});	&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S F N M &amp;gt;----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
common entry point for {{sfnm}} and {{sfnmp}}&lt;br /&gt;
&lt;br /&gt;
Distinguishing features (brackets) are specified in this module's {{#invoke}} in the respective templates.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function sfnm (frame)&lt;br /&gt;
	local args = args_default;													-- create a copy of the default table&lt;br /&gt;
	local pframe = frame:getParent();											-- point to the template's parameter table&lt;br /&gt;
	&lt;br /&gt;
	local n = 1;																-- index of source; this is the 'n' in na1, ny, etc&lt;br /&gt;
	local first_pnum = 1;														-- first of a pair of positional parameters&lt;br /&gt;
	local second_pnum = 2;														-- second of a pair of positional parameters&lt;br /&gt;
&lt;br /&gt;
	local last_ps = 0;															-- index of the last source with |nps= set&lt;br /&gt;
	local last_index = 0;														-- index of the last source; these used to determine which of |ps= or |nps= will terminate the whole rendering&lt;br /&gt;
&lt;br /&gt;
	local out = {};																-- table to hold rendered sources&lt;br /&gt;
	local footnote = {'FOOTNOTE'};												-- all author, date, insource location stuff becomes part of the reference's footnote id; added as we go&lt;br /&gt;
&lt;br /&gt;
	for k, v in pairs (frame.args) do											-- override defaults with values provided in the #invoke: if any&lt;br /&gt;
		args[k] = v;	   &lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	while true do&lt;br /&gt;
		if not pframe.args[table.concat ({n, 'a1'})] and not pframe.args[first_pnum] then&lt;br /&gt;
			break;																-- no na1 or matching positional parameter so done&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if pframe.args[table.concat ({n, 'a1'})] then							-- does this source use named parameters?&lt;br /&gt;
			for _, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do				-- initialize for this source&lt;br /&gt;
				args[v] = '';&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			for i, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do				-- extract author and year parameters for this source&lt;br /&gt;
				args[v] = pframe.args[table.concat ({n, 'a', i})] or '';		-- attempt to assign author name&lt;br /&gt;
				if '' == args[v] then											-- when there wasn't an author name&lt;br /&gt;
					args[v] = pframe.args[table.concat ({n, 'y'})] or '';		-- attempt to assign year&lt;br /&gt;
					break;														-- done with author/date for this source&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		else																	-- this source uses positional parameters&lt;br /&gt;
			args.P1 = mw.text.trim (pframe.args[first_pnum]);					-- yes, only one author supported&lt;br /&gt;
			args.P2 = (pframe.args[second_pnum] and mw.text.trim (pframe.args[second_pnum])) or '';	-- when positional author, year must also be positional&lt;br /&gt;
&lt;br /&gt;
			for _, v in ipairs ({'P3', 'P4', 'P5'}) do							-- blank the rest of these for this source&lt;br /&gt;
				args[v] = '';&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			first_pnum = first_pnum + 2;										-- source must use positional author and positional year&lt;br /&gt;
			second_pnum = first_pnum + 1;										-- bump these for possible next positional source&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		args.postscript = pframe.args[table.concat ({n, 'ps'})] or '';&lt;br /&gt;
		if 'none' == args.postscript then										-- this for compatibility with other footnote templates; does nothing&lt;br /&gt;
			args.postscript = '';&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		args.ref = pframe.args[table.concat ({n, 'ref'})] or '';				-- alternate reference for this source&lt;br /&gt;
&lt;br /&gt;
		args.page = pframe.args[table.concat ({n, 'p'})] or '';					-- insource locations for this source&lt;br /&gt;
		args.pages = pframe.args[table.concat ({n, 'pp'})] or '';&lt;br /&gt;
		args.pages = ('' ~= args.pages) and hyphen_to_dash (args.pages) or '';&lt;br /&gt;
		args.location = pframe.args[table.concat ({n, 'loc'})] or pframe.args[table.concat ({n, 'at'})] or '';&lt;br /&gt;
		args.ignore = ('yes' == pframe.args[table.concat ({n, 'ignore-false-positive'})]) or ('yes' == pframe.args[table.concat ({n, 'ignore-err'})]);&lt;br /&gt;
&lt;br /&gt;
		table.insert (out, core (args));										-- save the rendering of this source&lt;br /&gt;
		&lt;br /&gt;
		for k, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do					-- create the FOOTNOTE id&lt;br /&gt;
			if '' ~= args[v] then&lt;br /&gt;
				table.insert (footnote, args[v]);&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		for k, v in ipairs ({'page', 'pages', 'location'}) do					-- these done separately so that we can strip uri-reserved characters from extlinked page numbers &lt;br /&gt;
			if '' ~= args[v] then&lt;br /&gt;
				table.insert (footnote, strip_url (args[v]))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		last_index = n;															-- flags used to select terminal postscript from nps or from end_ps&lt;br /&gt;
		if '' ~= args.postscript then							&lt;br /&gt;
			last_ps = n;&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		n = n+1;																-- bump for the next one&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local name = table.concat (footnote):gsub ('%s+', ' ');						-- put the footnote together and strip redundant space&lt;br /&gt;
	&lt;br /&gt;
	args.end_ps = pframe.args.postscript or pframe.args.ps or '.';				-- this is the postscript for the whole not for the individual sources&lt;br /&gt;
	if 'none' == args.end_ps then												-- not an original sfnm parameter value; added for compatibility with other footnote templates&lt;br /&gt;
		args.end_ps = '';&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local result = table.concat ({table.concat (out, '; '), (last_index == last_ps) and '' or  args.end_ps});&lt;br /&gt;
	return frame:extensionTag ({name='ref', args={name=name}, content=result});&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S F N R E F &amp;gt;------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
implements {{sfnref}}&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function sfnref (frame)&lt;br /&gt;
	local args = getArgs (frame);&lt;br /&gt;
	local out = {};&lt;br /&gt;
	&lt;br /&gt;
	for i=1, 5 do																-- get the first five args if there are five args&lt;br /&gt;
		if args[i] then&lt;br /&gt;
			out[i] = args[i];&lt;br /&gt;
		else&lt;br /&gt;
			break;																-- less than 5 args break out&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if 5 == #out then															-- when we have seen five args there may bemore&lt;br /&gt;
		local i = 6;															-- initialize the indexer to the sixth positional parameter&lt;br /&gt;
		while args[i] do														-- in case there are too many authors loop through the authors looking for a year&lt;br /&gt;
			if is_year (args[i], args) then										-- if a year&lt;br /&gt;
				out[5] = args[i];												-- overwrite whatever was in args[5] with year&lt;br /&gt;
				break;															-- and abandon the search&lt;br /&gt;
			end&lt;br /&gt;
			i = i + 1;															-- bump the indexer&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return mw.uri.anchorEncode ('CITEREF' .. table.concat (out));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E X P O R T E D   F U N C T I O N S &amp;gt;------------------------------------------&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	harvard_citation = harvard_citation,&lt;br /&gt;
	sfn = sfn,&lt;br /&gt;
	sfnm = sfnm,&lt;br /&gt;
	sfnref = sfnref,&lt;br /&gt;
	};&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation_text&amp;diff=35651</id>
		<title>模板:Harvard citation text</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation_text&amp;diff=35651"/>
		<updated>2024-07-04T08:08:19Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;&lt;br /&gt;
  {{#if: {{{year|}}}&lt;br /&gt;
    | ({{{year}}}{{#if: {{{p|}}}{{{page|}}}{{{pp|}}}{{{pages|}}}{{{loc|}}}{{{at|}}}||)}}&lt;br /&gt;
  }}&lt;br /&gt;
  {{#if: {{{p|}}}{{{page|}}}{{{pp|}}}{{{pages|}}}{{{loc|}}}{{{at|}}}&lt;br /&gt;
    | pp. {{{p|}}}{{{page|}}}{{{pp|}}}{{{pages|}}}{{{loc|}}}{{{at|}}}&lt;br /&gt;
  }}&lt;br /&gt;
&amp;lt;/includeonly&amp;gt;&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation_text&amp;diff=35650</id>
		<title>模板:Harvard citation text</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation_text&amp;diff=35650"/>
		<updated>2024-07-04T08:03:43Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{&lt;br /&gt;
|bracket_year_left = (&lt;br /&gt;
|bracket_year_right = {{#if:{{{p|}}}{{{page|}}}{{{pp|}}}{{{pages|}}}{{{loc|}}}||)}}&lt;br /&gt;
|bracket_right = {{#if:{{{p|}}}{{{page|}}}{{{pp|}}}{{{pages|}}}{{{loc|}}}|)}}&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation_text&amp;diff=35649</id>
		<title>模板:Harvard citation text</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation_text&amp;diff=35649"/>
		<updated>2024-07-04T07:54:15Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:Footnotes|harvard_citation&lt;br /&gt;
|bracket_year_left = (&lt;br /&gt;
|bracket_year_right = {{#if:{{{p|}}}{{{page|}}}{{{pp|}}}{{{pages|}}}{{{loc|}}}||)}}&lt;br /&gt;
|bracket_right = {{#if:{{{p|}}}{{{page|}}}{{{pp|}}}{{{pages|}}}{{{loc|}}}|)}}&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%A8%A1%E5%9D%97:Footnotes&amp;diff=35648</id>
		<title>模块:Footnotes</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%A8%A1%E5%9D%97:Footnotes&amp;diff=35648"/>
		<updated>2024-07-04T07:52:36Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：建立内容为“require('strict'); local getArgs = require ('Module:Arguments').getArgs;   --[[--------------------------&amp;lt; A R G S _ D E F A U L T &amp;gt;------------------------------…”的新页面&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;require('strict');&lt;br /&gt;
local getArgs = require ('Module:Arguments').getArgs;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A R G S _ D E F A U L T &amp;gt;------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
a table to specify initial values.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local args_default = {&lt;br /&gt;
	bracket_left = '',&lt;br /&gt;
	bracket_right = '',&lt;br /&gt;
	bracket_year_left = '',&lt;br /&gt;
	bracket_year_right = '',&lt;br /&gt;
	postscript = '',&lt;br /&gt;
	page = '',&lt;br /&gt;
	pages = '',&lt;br /&gt;
	location = '',&lt;br /&gt;
	page_sep = &amp;quot;, p.&amp;amp;nbsp;&amp;quot;,&lt;br /&gt;
	pages_sep = &amp;quot;, pp.&amp;amp;nbsp;&amp;quot;,&lt;br /&gt;
	ref = '',&lt;br /&gt;
	template = 'harv',															-- if template name not provided in {{#invoke:}} use this&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; T A R G E T _ C H E C K &amp;gt;------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
look for anchor_id (CITEREF name-list and year or text from |ref=) in anchor_id_list&lt;br /&gt;
&lt;br /&gt;
the 'no target' error may be suppressed with |ignore-err=yes when target cannot be found because target is inside&lt;br /&gt;
a template that wraps another template; 'multiple targets' error may not be suppressed&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function target_check (anchor_id, args)&lt;br /&gt;
	local namespace = mw.title.getCurrentTitle().namespace;&lt;br /&gt;
	local anchor_id_list_module = mw.loadData ('Module:Footnotes/anchor_id_list');&lt;br /&gt;
	local anchor_id_list = anchor_id_list_module.anchor_id_list;&lt;br /&gt;
	local article_whitelist = anchor_id_list_module.article_whitelist;&lt;br /&gt;
	local template_list = anchor_id_list_module.template_list;&lt;br /&gt;
	&lt;br /&gt;
	local whitelist_module = mw.loadData ('Module:Footnotes/whitelist');&lt;br /&gt;
	local whitelist = whitelist_module.whitelist;&lt;br /&gt;
	local special_patterns = whitelist_module.special_patterns;&lt;br /&gt;
	local DNB_special_patterns = whitelist_module.DNB_special_patterns;&lt;br /&gt;
	local DNB_template_names = whitelist_module.DNB_template_names;&lt;br /&gt;
&lt;br /&gt;
	if 10 == namespace then&lt;br /&gt;
		return '';																-- automatic form of |no-tracking=yes; TODO: is this too broad?&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local tally = anchor_id_list[anchor_id];									-- nil when anchor_id not in list; else a tally&lt;br /&gt;
	local msg;&lt;br /&gt;
	local category;&lt;br /&gt;
&lt;br /&gt;
	if not tally then&lt;br /&gt;
		if args.ignore then&lt;br /&gt;
			return '';															-- if ignore is true then no message, no category&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if article_whitelist and article_whitelist[anchor_id] then				-- if an article-local whitelist and anchor ID is in it&lt;br /&gt;
			return '';															-- done&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		local wl_anchor_id = anchor_id;											-- copy to be modified to index into the whitelist&lt;br /&gt;
		&lt;br /&gt;
		if args.year then														-- for anchor IDs created by this template (not in |ref=) that have a date&lt;br /&gt;
			if args.year:match ('%d%l$') or										-- use the date value to determine if we should remove the disambiguator&lt;br /&gt;
				args.year:match ('n%.d%.%l$') or&lt;br /&gt;
				args.year:match ('nd%l$') then&lt;br /&gt;
					wl_anchor_id = wl_anchor_id:gsub ('%l$', '');				-- remove the disambiguator&lt;br /&gt;
			end&lt;br /&gt;
		end		&lt;br /&gt;
&lt;br /&gt;
		local t_tbl = whitelist[wl_anchor_id];									-- get list of templates associated with this anchor ID&lt;br /&gt;
&lt;br /&gt;
		if t_tbl then															-- when anchor ID not whitelisted t_tbl is nil&lt;br /&gt;
			for _, t in ipairs (t_tbl) do										-- spin through the list of templates associated with this anchor ID&lt;br /&gt;
				if template_list[t] then										-- if associated template is found in the list of templates in the article&lt;br /&gt;
					return '';													-- anchor ID is whitlisted and article has matching template so no error&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		for _, pattern in ipairs (special_patterns) do							-- spin through the spcial patterns and try to match&lt;br /&gt;
			if anchor_id:match (pattern) then&lt;br /&gt;
				return '';&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		for _, dnb_t in ipairs (DNB_template_names or {}) do					-- getting desparate now, are there any DNB templates? DNB_template_names may be nil; empty table prevents script error&lt;br /&gt;
			if template_list[dnb_t] then										-- if the article has this DNB template&lt;br /&gt;
				for _, pattern in ipairs (DNB_special_patterns) do				-- spin through the DNB-specifiec wildcard patterns&lt;br /&gt;
					if anchor_id:match (pattern) then							-- and attempt a match&lt;br /&gt;
						return '';												-- found a match&lt;br /&gt;
					end&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		msg = 'no target: ' .. anchor_id;										-- anchor_id not found&lt;br /&gt;
		category = '[[Category:Harv and Sfn no-target errors]]';&lt;br /&gt;
&lt;br /&gt;
	elseif 1 &amp;lt; tally then&lt;br /&gt;
		msg = 'multiple targets (' .. tally .. '×): ' .. anchor_id;				-- more than one anchor_id in this article&lt;br /&gt;
		category = 0 == namespace and '[[Category:Harv and Sfn multiple-target errors]]' or '';								-- only categorize in article space&lt;br /&gt;
		return '&amp;lt;span class=&amp;quot;error harv-error&amp;quot; style=&amp;quot;display: inline; font-size:100%&amp;quot;&amp;gt; ' .. args.template .. ' error: ' .. msg .. ' ([[:Category:Harv and Sfn template errors|help]])&amp;lt;/span&amp;gt;' .. category;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
--	category = 0 == namespace and '[[Category:Harv and Sfn template errors]]' or '';	-- only categorize in article space&lt;br /&gt;
	category = 0 == namespace and category or '';								-- only categorize in article space&lt;br /&gt;
&lt;br /&gt;
--use this version to show error messages&lt;br /&gt;
--	return msg and '&amp;lt;span class=&amp;quot;error harv-error&amp;quot; style=&amp;quot;display: inline; font-size:100%&amp;quot;&amp;gt; ' .. args.template .. ' error: ' .. msg .. ' ([[:Category:Harv and Sfn template errors|help]])&amp;lt;/span&amp;gt;' .. category or '';&lt;br /&gt;
--use this version to hide error messages&lt;br /&gt;
	return msg and '&amp;lt;span class=&amp;quot;error harv-error&amp;quot; style=&amp;quot;display: none; font-size:100%&amp;quot;&amp;gt; ' .. args.template .. ' error: ' .. msg .. ' ([[:Category:Harv and Sfn template errors|help]])&amp;lt;/span&amp;gt;' .. category or '';&lt;br /&gt;
&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; I S _ Y E A R &amp;gt;----------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
evaluates param to see if it is one of these forms with or without lowercase letter disambiguator:&lt;br /&gt;
	YYYY&lt;br /&gt;
	n.d.&lt;br /&gt;
	nd	&lt;br /&gt;
	c. YYYY&lt;br /&gt;
	YYYY–YYYY	(separator is endash)&lt;br /&gt;
	YYYY–YY		(separator is endash)&lt;br /&gt;
&lt;br /&gt;
return true when param has a recognized form; false else&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local patterns_date= {&lt;br /&gt;
	'^%d%d%d%d?%l?$',&lt;br /&gt;
	'^n%.d%.%l?$',&lt;br /&gt;
	'^nd%l?$',&lt;br /&gt;
	'^c%. %d%d%d%d?%l?$',&lt;br /&gt;
	'^%d%d%d%d–%d%d%d%d%l?$',&lt;br /&gt;
	'^%d%d%d%d–%d%d%l?$',&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
local function is_year (param, args)&lt;br /&gt;
	args.year = '';																-- used for harv error; &lt;br /&gt;
	&lt;br /&gt;
	for _, pattern in ipairs (patterns_date) do&lt;br /&gt;
		if mw.ustring.match (param, pattern) then&lt;br /&gt;
			args.year = param;													-- used for harv error; &lt;br /&gt;
			return true;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; C O R E &amp;gt;----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
returns an anchor link (CITEREF) formed from one to four author names, year, and insource location (|p=, |pp=, loc=)&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function core( args )&lt;br /&gt;
	local result;&lt;br /&gt;
	local err_msg = ''&lt;br /&gt;
&lt;br /&gt;
	if args.P5 ~= '' then&lt;br /&gt;
		if is_year (args.P5, args) then&lt;br /&gt;
			result = table.concat ({args.P1, ' et al. ', args.bracket_year_left, args.P5, args.bracket_year_right});&lt;br /&gt;
		else&lt;br /&gt;
			args.P5 = '';														-- when P5 not a year don't include in anchor&lt;br /&gt;
			result = table.concat ({args.P1, ' et al.'});						-- and don't render it&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif args.P4 ~= '' then&lt;br /&gt;
		if is_year (args.P4, args) then&lt;br /&gt;
			result = table.concat ({args.P1, ', ', args.P2, ' &amp;amp;amp; ', args.P3, ' ', args.bracket_year_left, args.P4, args.bracket_year_right});	-- three names and a year&lt;br /&gt;
		else&lt;br /&gt;
			result = table.concat ({args.P1, ' et al.'});						-- four names&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	elseif args.P3 ~= '' then&lt;br /&gt;
		if is_year (args.P3, args) then&lt;br /&gt;
			result = table.concat ({args.P1, ' &amp;amp;amp; ', args.P2, ' ', args.bracket_year_left, args.P3, args.bracket_year_right});	-- two names and a year&lt;br /&gt;
		else&lt;br /&gt;
			result = table.concat ({args.P1, ', ', args.P2, ' ', ' &amp;amp;amp; ', args.P3});	-- three names&lt;br /&gt;
		end&lt;br /&gt;
			&lt;br /&gt;
	elseif args.P2 ~= '' then&lt;br /&gt;
		if is_year (args.P2, args) then&lt;br /&gt;
			result = table.concat ({args.P1, ' ', args.bracket_year_left, args.P2, args.bracket_year_right});	-- one name and year&lt;br /&gt;
		else&lt;br /&gt;
			result = table.concat ({args.P1, ' &amp;amp;amp; ', args.P2});				-- two names&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
	else&lt;br /&gt;
		result = args.P1;														-- one name&lt;br /&gt;
	end&lt;br /&gt;
																				-- when author-date result ends with a dot (typically when the last positional parameter holds 'n.d.')&lt;br /&gt;
																				-- and when no in-source location (no |p=, |pp=, or |loc=)&lt;br /&gt;
																				-- and when the first or only character in args.postscript is a dot&lt;br /&gt;
																				-- remove the author-date result trailing dot&lt;br /&gt;
																				-- the author-date result trailing dot will be replaced later with the content of args.postscript (usually a dot)&lt;br /&gt;
	if ('.' == result:sub(-1)) and ('.' == args.postscript:sub(1)) and ('' == args.page) and ('' == args.pages) and ('' == args.location) then&lt;br /&gt;
		result = result:gsub ('%.$', '');&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if args.ref ~= 'none' then&lt;br /&gt;
		local anchor_id;&lt;br /&gt;
		if args.ref ~= '' then&lt;br /&gt;
			anchor_id = mw.uri.anchorEncode (args.ref);&lt;br /&gt;
			err_msg = target_check (anchor_id, args);&lt;br /&gt;
			result = table.concat ({'[[#', anchor_id, '|', result, ']]'});&lt;br /&gt;
		else&lt;br /&gt;
			anchor_id = mw.uri.anchorEncode (table.concat ({'CITEREF', args.P1, args.P2, args.P3, args.P4, args.P5}));&lt;br /&gt;
			err_msg = target_check (anchor_id, args);&lt;br /&gt;
			result = table.concat ({'[[#', anchor_id, '|', result, ']]'});&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.page ~= '' then&lt;br /&gt;
		result = table.concat ({result, args.page_sep, args.page});&lt;br /&gt;
	elseif args.pages ~= ''then&lt;br /&gt;
		result = table.concat ({result, args.pages_sep, args.pages});&lt;br /&gt;
	end      &lt;br /&gt;
&lt;br /&gt;
	if args.location ~= '' then&lt;br /&gt;
		result = table.concat ({result, ', ', args.location});&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	result = table.concat ({args.bracket_left, result, args.bracket_right, args.postscript}):gsub ('%s+', ' ');		-- strip redundant spaces&lt;br /&gt;
	return result .. err_msg;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; H Y P H E N _ T O _ D A S H &amp;gt;--------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Converts a hyphen to a dash under certain conditions.  The hyphen must separate&lt;br /&gt;
like items; unlike items are returned unmodified.  These forms are modified:&lt;br /&gt;
	letter - letter (A - B)&lt;br /&gt;
	digit - digit (4-5)&lt;br /&gt;
	digit separator digit - digit separator digit (4.1-4.5 or 4-1-4-5)&lt;br /&gt;
	letterdigit - letterdigit (A1-A5) (an optional separator between letter and&lt;br /&gt;
		digit is supported – a.1-a.5 or a-1-a-5)&lt;br /&gt;
	digitletter - digitletter (5a - 5d) (an optional separator between letter and&lt;br /&gt;
		digit is supported – 5.a-5.d or 5-a-5-d)&lt;br /&gt;
&lt;br /&gt;
any other forms are returned unmodified.&lt;br /&gt;
&lt;br /&gt;
str may be a comma- or semicolon-separated list&lt;br /&gt;
&lt;br /&gt;
This code copied from Module:Citation/CS1.  The only modification is to require Module:Citation/CS1/Utilities&lt;br /&gt;
so that it has access to the functions is_set() and has_accept_as_written()&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function hyphen_to_dash( str )&lt;br /&gt;
	local utilities = require ('Module:Citation/CS1/Utilities');				-- only modification so that this function has access to is_set() and has_accept_as_written()&lt;br /&gt;
&lt;br /&gt;
	if not utilities.is_set (str) then&lt;br /&gt;
		return str;&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local accept; -- Boolean&lt;br /&gt;
&lt;br /&gt;
	str = str:gsub ('&amp;amp;[nm]dash;', {['&amp;amp;ndash;'] = '–', ['&amp;amp;mdash;'] = '—'});		-- replace &amp;amp;mdash; and &amp;amp;ndash; entities with their characters; semicolon mucks up the text.split&lt;br /&gt;
	str = str:gsub ('&amp;amp;#45;', '-'); -- replace HTML numeric entity with hyphen character&lt;br /&gt;
&lt;br /&gt;
	str = str:gsub ('&amp;amp;nbsp;', ' '); -- replace &amp;amp;nbsp; entity with generic keyboard space character&lt;br /&gt;
	&lt;br /&gt;
	local out = {};&lt;br /&gt;
	local list = mw.text.split (str, '%s*[,;]%s*');								-- split str at comma or semicolon separators if there are any&lt;br /&gt;
&lt;br /&gt;
	for _, item in ipairs (list) do												-- for each item in the list&lt;br /&gt;
		item, accept = utilities.has_accept_as_written (item);					-- remove accept-this-as-written markup when it wraps all of item&lt;br /&gt;
		if not accept and mw.ustring.match (item, '^%w*[%.%-]?%w+%s*[%-–—]%s*%w*[%.%-]?%w+$') then	-- if a hyphenated range or has endash or emdash separators&lt;br /&gt;
			if item:match ('^%a+[%.%-]?%d+%s*%-%s*%a+[%.%-]?%d+$') or			-- letterdigit hyphen letterdigit (optional separator between letter and digit)&lt;br /&gt;
				item:match ('^%d+[%.%-]?%a+%s*%-%s*%d+[%.%-]?%a+$') or			-- digitletter hyphen digitletter (optional separator between digit and letter)&lt;br /&gt;
				item:match ('^%d+[%.%-]%d+%s*%-%s*%d+[%.%-]%d+$') or			-- digit separator digit hyphen digit separator digit&lt;br /&gt;
				item:match ('^%d+%s*%-%s*%d+$') or								-- digit hyphen digit&lt;br /&gt;
				item:match ('^%a+%s*%-%s*%a+$') then							-- letter hyphen letter&lt;br /&gt;
					item = item:gsub ('(%w*[%.%-]?%w+)%s*%-%s*(%w*[%.%-]?%w+)', '%1–%2');	-- replace hyphen, remove extraneous space characters&lt;br /&gt;
			else&lt;br /&gt;
				item = mw.ustring.gsub (item, '%s*[–—]%s*', '–');				-- for endash or emdash separated ranges, replace em with en, remove extraneous whitespace&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		table.insert (out, item);												-- add the (possibly modified) item to the output table&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local temp_str = '';														-- concatenate the output table into a comma separated string&lt;br /&gt;
	temp_str, accept = utilities.has_accept_as_written (table.concat (out, ', ')); -- remove accept-this-as-written markup when it wraps all of concatenated out&lt;br /&gt;
	if accept then&lt;br /&gt;
		temp_str = utilities.has_accept_as_written (str);						-- when global markup removed, return original str; do it this way to suppress boolean second return value&lt;br /&gt;
		return temp_str;&lt;br /&gt;
	else&lt;br /&gt;
		return temp_str;														-- else, return assembled temp_str&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; A R G S  _ F E T C H &amp;gt;---------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
Because all of the templates share a common set of parameters, a single common function to fetch those parameters&lt;br /&gt;
from frame and parent frame.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function args_fetch (frame, ps)&lt;br /&gt;
	local args = args_default;													-- create a copy of the default table&lt;br /&gt;
	local pframe = frame:getParent();											-- point to the template's parameter table&lt;br /&gt;
&lt;br /&gt;
	for k, v in pairs (frame.args) do											-- override defaults with values provided in the #invoke: if any&lt;br /&gt;
		args[k] = v;	   &lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	args.postscript = pframe.args.postscript or pframe.args.ps or ps;&lt;br /&gt;
	if 'none' == args.postscript then&lt;br /&gt;
		args.postscript = '';&lt;br /&gt;
	end&lt;br /&gt;
	args.page = pframe.args.p or pframe.args.page or '';&lt;br /&gt;
	args.pages = pframe.args.pp or pframe.args.pages or '';&lt;br /&gt;
	args.pages = ('' ~= args.pages) and hyphen_to_dash (args.pages) or '';&lt;br /&gt;
	args.location = pframe.args.at or pframe.args.loc or '';&lt;br /&gt;
	args.ref = pframe.args.ref or pframe.args.Ref or '';&lt;br /&gt;
	args.ignore = ('yes' == pframe.args['ignore-false-positive']) or ('yes' == pframe.args['ignore-err']);&lt;br /&gt;
&lt;br /&gt;
	for i, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do						-- loop through the five positional parameters and trim if set else empty string&lt;br /&gt;
		args[v] = (pframe.args[i] and mw.text.trim (pframe.args[i])) or '';&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if args.P5 and not is_year (args.P5, args) then&lt;br /&gt;
		local i = 6;															-- initialize the indexer to the sixth positional parameter&lt;br /&gt;
		while pframe.args[i] do													-- in case there are too many authors loop through the authors looking for a year&lt;br /&gt;
			local v = mw.text.trim (pframe.args[i]);							-- trim&lt;br /&gt;
			if is_year (v, args) then											-- if a year&lt;br /&gt;
				args.P5 = v;													-- overwrite whatever was in args.P5 with year&lt;br /&gt;
				break;															-- and abandon the search&lt;br /&gt;
			end&lt;br /&gt;
			i = i + 1;															-- bump the indexer&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return args;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; H A R V A R D _ C I T A T I O N &amp;gt;----------------------------------------------&lt;br /&gt;
&lt;br /&gt;
common entry point for:&lt;br /&gt;
	{{harvard citation}} aka {{harv}}&lt;br /&gt;
	{{Harvard citation no brackets}} aka {{harvnb}}&lt;br /&gt;
	{{harvcol}}&lt;br /&gt;
	{{harvcolnb}}&lt;br /&gt;
	{{harvcoltxt}}&lt;br /&gt;
	{{Harvard citation text}} aka {{harvtxt}}&lt;br /&gt;
	{{Harvp}}&lt;br /&gt;
&lt;br /&gt;
Distinguishing features (brackets and page separators) are specified in this module's {{#invoke}} in the respective templates.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function harvard_citation (frame)&lt;br /&gt;
	local args = args_fetch (frame, '');										-- get the template and invoke parameters; default postscript is empty string&lt;br /&gt;
&lt;br /&gt;
	return core (args);&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S T R I P _ U R L &amp;gt;------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
used by sfn() and sfnm().  This function fixes an issue with reference tooltip gadget where the tooltip is not displayed&lt;br /&gt;
when an insource locator (|p=, |pp=, |loc=) has an external wikilink that contains a # character&lt;br /&gt;
&lt;br /&gt;
strip uri-reserved characters from urls in |p=, |pp-, and |loc= parameters  The researved characters are:&lt;br /&gt;
	!#$&amp;amp;'()*+,/:;=?@[]&lt;br /&gt;
	&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function strip_url (pages)&lt;br /&gt;
	local escaped_uri;&lt;br /&gt;
	if not pages or ('' == pages) then&lt;br /&gt;
		return pages;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	for uri in pages:gmatch ('%[(%a[%w%+%.%-]*://%S+)') do						-- for each external link get the uri&lt;br /&gt;
		escaped_uri = uri:gsub (&amp;quot;([%(%)%.%%%+%-%*%?%[%^%$%]])&amp;quot;, &amp;quot;%%%1&amp;quot; );		-- save a copy with lua pattern characters escaped&lt;br /&gt;
		uri = uri:gsub (&amp;quot;[!#%$&amp;amp;'%(%)%*%+,/:;=%?@%[%]%.%%]&amp;quot;, '');				-- remove reserved characters and '%' because '%20' (space character) is a lua 'invalid capture index'&lt;br /&gt;
		pages = pages:gsub (escaped_uri, uri, 1);								-- replace original uri with the stripped version&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return pages;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S F N &amp;gt;------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
entry point for {{sfn}} and {{sfnp}}&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function sfn (frame)&lt;br /&gt;
	local args = args_fetch (frame, '.');										-- get the template and invoke parameters; default postscript is a dot&lt;br /&gt;
&lt;br /&gt;
	local result = core (args);													-- go make a CITEREF anchor&lt;br /&gt;
																				-- put it all together and then strip redundant spaces&lt;br /&gt;
	local name = table.concat ({'FOOTNOTE', args.P1, args.P2, args.P3, args.P4, args.P5, strip_url (args.page), strip_url (args.pages), strip_url (args.location)}):gsub ('%s+', ' ');&lt;br /&gt;
&lt;br /&gt;
	return frame:extensionTag ({name='ref', args={name=name}, content=result});	&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S F N M &amp;gt;----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
common entry point for {{sfnm}} and {{sfnmp}}&lt;br /&gt;
&lt;br /&gt;
Distinguishing features (brackets) are specified in this module's {{#invoke}} in the respective templates.&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function sfnm (frame)&lt;br /&gt;
	local args = args_default;													-- create a copy of the default table&lt;br /&gt;
	local pframe = frame:getParent();											-- point to the template's parameter table&lt;br /&gt;
	&lt;br /&gt;
	local n = 1;																-- index of source; this is the 'n' in na1, ny, etc&lt;br /&gt;
	local first_pnum = 1;														-- first of a pair of positional parameters&lt;br /&gt;
	local second_pnum = 2;														-- second of a pair of positional parameters&lt;br /&gt;
&lt;br /&gt;
	local last_ps = 0;															-- index of the last source with |nps= set&lt;br /&gt;
	local last_index = 0;														-- index of the last source; these used to determine which of |ps= or |nps= will terminate the whole rendering&lt;br /&gt;
&lt;br /&gt;
	local out = {};																-- table to hold rendered sources&lt;br /&gt;
	local footnote = {'FOOTNOTE'};												-- all author, date, insource location stuff becomes part of the reference's footnote id; added as we go&lt;br /&gt;
&lt;br /&gt;
	for k, v in pairs (frame.args) do											-- override defaults with values provided in the #invoke: if any&lt;br /&gt;
		args[k] = v;	   &lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	while true do&lt;br /&gt;
		if not pframe.args[table.concat ({n, 'a1'})] and not pframe.args[first_pnum] then&lt;br /&gt;
			break;																-- no na1 or matching positional parameter so done&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if pframe.args[table.concat ({n, 'a1'})] then							-- does this source use named parameters?&lt;br /&gt;
			for _, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do				-- initialize for this source&lt;br /&gt;
				args[v] = '';&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			for i, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do				-- extract author and year parameters for this source&lt;br /&gt;
				args[v] = pframe.args[table.concat ({n, 'a', i})] or '';		-- attempt to assign author name&lt;br /&gt;
				if '' == args[v] then											-- when there wasn't an author name&lt;br /&gt;
					args[v] = pframe.args[table.concat ({n, 'y'})] or '';		-- attempt to assign year&lt;br /&gt;
					break;														-- done with author/date for this source&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
		else																	-- this source uses positional parameters&lt;br /&gt;
			args.P1 = mw.text.trim (pframe.args[first_pnum]);					-- yes, only one author supported&lt;br /&gt;
			args.P2 = (pframe.args[second_pnum] and mw.text.trim (pframe.args[second_pnum])) or '';	-- when positional author, year must also be positional&lt;br /&gt;
&lt;br /&gt;
			for _, v in ipairs ({'P3', 'P4', 'P5'}) do							-- blank the rest of these for this source&lt;br /&gt;
				args[v] = '';&lt;br /&gt;
			end&lt;br /&gt;
&lt;br /&gt;
			first_pnum = first_pnum + 2;										-- source must use positional author and positional year&lt;br /&gt;
			second_pnum = first_pnum + 1;										-- bump these for possible next positional source&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		args.postscript = pframe.args[table.concat ({n, 'ps'})] or '';&lt;br /&gt;
		if 'none' == args.postscript then										-- this for compatibility with other footnote templates; does nothing&lt;br /&gt;
			args.postscript = '';&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
		args.ref = pframe.args[table.concat ({n, 'ref'})] or '';				-- alternate reference for this source&lt;br /&gt;
&lt;br /&gt;
		args.page = pframe.args[table.concat ({n, 'p'})] or '';					-- insource locations for this source&lt;br /&gt;
		args.pages = pframe.args[table.concat ({n, 'pp'})] or '';&lt;br /&gt;
		args.pages = ('' ~= args.pages) and hyphen_to_dash (args.pages) or '';&lt;br /&gt;
		args.location = pframe.args[table.concat ({n, 'loc'})] or pframe.args[table.concat ({n, 'at'})] or '';&lt;br /&gt;
		args.ignore = ('yes' == pframe.args[table.concat ({n, 'ignore-false-positive'})]) or ('yes' == pframe.args[table.concat ({n, 'ignore-err'})]);&lt;br /&gt;
&lt;br /&gt;
		table.insert (out, core (args));										-- save the rendering of this source&lt;br /&gt;
		&lt;br /&gt;
		for k, v in ipairs ({'P1', 'P2', 'P3', 'P4', 'P5'}) do					-- create the FOOTNOTE id&lt;br /&gt;
			if '' ~= args[v] then&lt;br /&gt;
				table.insert (footnote, args[v]);&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		for k, v in ipairs ({'page', 'pages', 'location'}) do					-- these done separately so that we can strip uri-reserved characters from extlinked page numbers &lt;br /&gt;
			if '' ~= args[v] then&lt;br /&gt;
				table.insert (footnote, strip_url (args[v]))&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		last_index = n;															-- flags used to select terminal postscript from nps or from end_ps&lt;br /&gt;
		if '' ~= args.postscript then							&lt;br /&gt;
			last_ps = n;&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		n = n+1;																-- bump for the next one&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	local name = table.concat (footnote):gsub ('%s+', ' ');						-- put the footnote together and strip redundant space&lt;br /&gt;
	&lt;br /&gt;
	args.end_ps = pframe.args.postscript or pframe.args.ps or '.';				-- this is the postscript for the whole not for the individual sources&lt;br /&gt;
	if 'none' == args.end_ps then												-- not an original sfnm parameter value; added for compatibility with other footnote templates&lt;br /&gt;
		args.end_ps = '';&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	local result = table.concat ({table.concat (out, '; '), (last_index == last_ps) and '' or  args.end_ps});&lt;br /&gt;
	return frame:extensionTag ({name='ref', args={name=name}, content=result});&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; S F N R E F &amp;gt;------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
implements {{sfnref}}&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function sfnref (frame)&lt;br /&gt;
	local args = getArgs (frame);&lt;br /&gt;
	local out = {};&lt;br /&gt;
	&lt;br /&gt;
	for i=1, 5 do																-- get the first five args if there are five args&lt;br /&gt;
		if args[i] then&lt;br /&gt;
			out[i] = args[i];&lt;br /&gt;
		else&lt;br /&gt;
			break;																-- less than 5 args break out&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if 5 == #out then															-- when we have seen five args there may bemore&lt;br /&gt;
		local i = 6;															-- initialize the indexer to the sixth positional parameter&lt;br /&gt;
		while args[i] do														-- in case there are too many authors loop through the authors looking for a year&lt;br /&gt;
			if is_year (args[i], args) then										-- if a year&lt;br /&gt;
				out[5] = args[i];												-- overwrite whatever was in args[5] with year&lt;br /&gt;
				break;															-- and abandon the search&lt;br /&gt;
			end&lt;br /&gt;
			i = i + 1;															-- bump the indexer&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return mw.uri.anchorEncode ('CITEREF' .. table.concat (out));&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
--[[--------------------------&amp;lt; E X P O R T E D   F U N C T I O N S &amp;gt;------------------------------------------&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
return {&lt;br /&gt;
	harvard_citation = harvard_citation,&lt;br /&gt;
	sfn = sfn,&lt;br /&gt;
	sfnm = sfnm,&lt;br /&gt;
	sfnref = sfnref,&lt;br /&gt;
	};&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation&amp;diff=35647</id>
		<title>模板:Harvard citation</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation&amp;diff=35647"/>
		<updated>2024-07-04T07:46:07Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{&lt;br /&gt;
|bracket_left= (&lt;br /&gt;
|bracket_right = )&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation&amp;diff=35646</id>
		<title>模板:Harvard citation</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation&amp;diff=35646"/>
		<updated>2024-07-04T07:45:41Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{harvard_citation&lt;br /&gt;
|bracket_left= (&lt;br /&gt;
|bracket_right = )&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation_text&amp;diff=35645</id>
		<title>模板:Harvard citation text</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation_text&amp;diff=35645"/>
		<updated>2024-07-04T07:43:55Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:harvard_citation&lt;br /&gt;
|bracket_year_left = (&lt;br /&gt;
|bracket_year_right = {{#if:{{{p|}}}{{{page|}}}{{{pp|}}}{{{pages|}}}{{{loc|}}}||)}}&lt;br /&gt;
|bracket_right = {{#if:{{{p|}}}{{{page|}}}{{{pp|}}}{{{pages|}}}{{{loc|}}}|)}}&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation&amp;diff=35644</id>
		<title>模板:Harvard citation</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation&amp;diff=35644"/>
		<updated>2024-07-04T07:42:34Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：已移除至模板:Harvard citation text的重定向&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:harvard_citation&lt;br /&gt;
|bracket_left= (&lt;br /&gt;
|bracket_right = )&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation_text&amp;diff=35643</id>
		<title>模板:Harvard citation text</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation_text&amp;diff=35643"/>
		<updated>2024-07-04T07:37:41Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{harvard_citation_text&lt;br /&gt;
|bracket_year_left = (&lt;br /&gt;
|bracket_year_right = {{#if:{{{p|}}}{{{page|}}}{{{pp|}}}{{{pages|}}}{{{loc|}}}||)}}&lt;br /&gt;
|bracket_right = {{#if:{{{p|}}}{{{page|}}}{{{pp|}}}{{{pages|}}}{{{loc|}}}|)}}&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation_txt&amp;diff=35642</id>
		<title>模板:Harvard citation txt</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation_txt&amp;diff=35642"/>
		<updated>2024-07-04T07:32:53Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：重定向页面至模板:Harvard citation text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT[[Template:Harvard citation text]]&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation_text&amp;diff=35641</id>
		<title>模板:Harvard citation text</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation_text&amp;diff=35641"/>
		<updated>2024-07-04T07:28:38Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{harvard_citation_txt&lt;br /&gt;
|bracket_year_left = (&lt;br /&gt;
|bracket_year_right = {{#if:{{{p|}}}{{{page|}}}{{{pp|}}}{{{pages|}}}{{{loc|}}}||)}}&lt;br /&gt;
|bracket_right = {{#if:{{{p|}}}{{{page|}}}{{{pp|}}}{{{pages|}}}{{{loc|}}}|)}}&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation&amp;diff=35640</id>
		<title>模板:Harvard citation</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation&amp;diff=35640"/>
		<updated>2024-07-04T07:26:00Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：重定向页面至模板:Harvard citation text&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT[[Template:Harvard citation text]]&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation&amp;diff=35637</id>
		<title>模板:Harvard citation</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation&amp;diff=35637"/>
		<updated>2024-07-04T07:18:08Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{harvard_citation&lt;br /&gt;
|bracket_left= (&lt;br /&gt;
|bracket_right = )&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation&amp;diff=35636</id>
		<title>模板:Harvard citation</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation&amp;diff=35636"/>
		<updated>2024-07-04T07:16:15Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：建立内容为“&amp;lt;includeonly&amp;gt;{{#invoke:Footnotes|harvard_citation |bracket_left= ( |bracket_right = ) }}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt; {{documentation}} &amp;lt;!-- Add categories to the /do…”的新页面&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{#invoke:Footnotes|harvard_citation&lt;br /&gt;
|bracket_left= (&lt;br /&gt;
|bracket_right = )&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation_text&amp;diff=35452</id>
		<title>模板:Harvard citation text</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%A8%A1%E6%9D%BF:Harvard_citation_text&amp;diff=35452"/>
		<updated>2024-06-20T02:44:27Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;includeonly&amp;gt;{{harvard_citation&lt;br /&gt;
|bracket_year_left = (&lt;br /&gt;
|bracket_year_right = {{#if:{{{p|}}}{{{page|}}}{{{pp|}}}{{{pages|}}}{{{loc|}}}||)}}&lt;br /&gt;
|bracket_right = {{#if:{{{p|}}}{{{page|}}}{{{pp|}}}{{{pages|}}}{{{loc|}}}|)}}&lt;br /&gt;
|template=harvtxt&lt;br /&gt;
}}&amp;lt;/includeonly&amp;gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{documentation}}&lt;br /&gt;
&amp;lt;!-- Add categories to the /doc subpage, interwikis to Wikidata, not here --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%89%8B%E5%86%99%E8%AF%86%E5%88%AB%E8%AF%95%E9%AA%8C&amp;diff=34639</id>
		<title>手写识别试验</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%89%8B%E5%86%99%E8%AF%86%E5%88%AB%E8%AF%95%E9%AA%8C&amp;diff=34639"/>
		<updated>2024-05-07T17:53:41Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=神经网络, 手写识别&lt;br /&gt;
|description=神经网络, 手写识别&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* 名 称：手写识别试验&lt;br /&gt;
* 作 者：nay0648&lt;br /&gt;
* 源代码：[[媒体文件:Java pwriter.zip|pwriter.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=350 height=400  frameborder=1 scrolling=no path=&amp;quot;/javaclass/classes/PDWriter/PWriter2.htm&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;iframe width=350 height=400  frameborder=1 scrolling=no key=&amp;quot;swarma&amp;quot; path=&amp;quot;/article/299&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=运行方法=&lt;br /&gt;
  &lt;br /&gt;
首先，在面板上写好字母点input键后，程序把面板上的图象信息转换为一个二进制向量，即按从左到右，从上到下的顺序检查面板，如果该位置被写过则对应1，如果没被写过则对应0。然后对该二进制向量进行单位化，单位化的目的是使得各种输入向量都有相等的长度，以便在第一层神经元中实现公平竞争。单位化了的向量送入神经网络进行计算。&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=运行原理=&lt;br /&gt;
  &lt;br /&gt;
PWriter2所用的神经网络共两层，结构如图下图所示，注意图中大写粗体字母表示矩阵，小写粗体字母表示向量，小写细体字母表示标量。&lt;br /&gt;
&lt;br /&gt;
网络的第一层有256个输入，26个神经元，每个输入都和各个神经元相连，即每个神经元都能接收这256个输入。每个神经元有256个权值，是字母的标准写法，即每个神经元都储存着一个标准模式，26个大写字母的标准写法分别由对应的这26个神经元储存。每个神经元的权值向量也是单位化的，同样是为了实现公平竞争。该层的传输函数为竞争函数。所谓竞争函数即每个神经元互相竞争，净输入最大者获胜，输出为1，其余净输入较小的神经元竞争失败，输出为0，以竞争函数为传输函数的神经元层每次只有净输入最大的那个神经元输出为1，其余都为0（不考虑净输入相等的情况）。&lt;br /&gt;
&lt;br /&gt;
[[File:Ins.jpg|center]] &lt;br /&gt;
&lt;br /&gt;
单神经元净输入的计算方法是输入向量的各个分量和权值向量的对应分量相乘，然后相加，再加上偏置值，即输入向量和权值向量的内积加上过竞争函数，该神经元输出1，其余输出0，这样一来就得到了一个26维向量，该向量进入第二层神经元继续计算。&lt;br /&gt;
&lt;br /&gt;
第二层有26个输入，8个神经元，26个字母的ASCII码由这8个神经元的权值共同记录着，即每个神经元权值向量的第一个分量记录“A”的ASCII码，以二进制表示，第二个分量记录“B”……这层的传输函数为hardlim函数，该函数当净输入大于等于0时输出1，小于0时输出0。先前得到的向量进入该层后，由于只有一个分量为1，所以每个神经元只有该位置的数据为原来的数，其余分量位置上的数据都为0。再加上-0.5的偏置，使原来&lt;br /&gt;
 &lt;br /&gt;
为1的量为0.5，原来为0的量为-0.5，通过hardlim函数后所得的向量就为对应字母的ASCII码，再通过程序转换后就可输出该字母。&lt;br /&gt;
&lt;br /&gt;
这个程序的问题还很多。由于第一层神经元记录的标准模式连字母在面板中的位置也记录了，所以即使当输入已经非常象一个标准模式，但位置偏了，所得的向量仍与标准向量差别较大，所以仍会认不准。而且，由于使用了竞争函数，所以即使人看来输入不象其中任何一个字母时，还是总会有一个标准向量与输入的内积最大，所以还是会认定一个错误的字母&lt;br /&gt;
&lt;br /&gt;
==相关wiki==&lt;br /&gt;
*[[SVM支持向量机]]&lt;br /&gt;
*[[Nsod2]]&lt;br /&gt;
*[[手写识别体]]&lt;br /&gt;
&lt;br /&gt;
[[category:旧网站]]&lt;br /&gt;
[[category:旧网站-虚拟世界]]&lt;br /&gt;
[[category:模拟程序]]&lt;br /&gt;
[[category:神经网络]]&lt;br /&gt;
[[Category:旧词条迁移]]&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%89%8B%E5%86%99%E8%AF%86%E5%88%AB%E8%AF%95%E9%AA%8C&amp;diff=34638</id>
		<title>手写识别试验</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%89%8B%E5%86%99%E8%AF%86%E5%88%AB%E8%AF%95%E9%AA%8C&amp;diff=34638"/>
		<updated>2024-05-07T17:49:00Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=神经网络, 手写识别&lt;br /&gt;
|description=神经网络, 手写识别&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* 名 称：手写识别试验&lt;br /&gt;
* 作 者：nay0648&lt;br /&gt;
* 源代码：[[媒体文件:Java pwriter.zip|pwriter.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=350 height=400  frameborder=1 scrolling=no path=&amp;quot;/javaclass/classes/PDWriter/PWriter2.htm&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;iframe width=350 height=400  frameborder=1 scrolling=no path=&amp;quot;/article/299&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=运行方法=&lt;br /&gt;
  &lt;br /&gt;
首先，在面板上写好字母点input键后，程序把面板上的图象信息转换为一个二进制向量，即按从左到右，从上到下的顺序检查面板，如果该位置被写过则对应1，如果没被写过则对应0。然后对该二进制向量进行单位化，单位化的目的是使得各种输入向量都有相等的长度，以便在第一层神经元中实现公平竞争。单位化了的向量送入神经网络进行计算。&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=运行原理=&lt;br /&gt;
  &lt;br /&gt;
PWriter2所用的神经网络共两层，结构如图下图所示，注意图中大写粗体字母表示矩阵，小写粗体字母表示向量，小写细体字母表示标量。&lt;br /&gt;
&lt;br /&gt;
网络的第一层有256个输入，26个神经元，每个输入都和各个神经元相连，即每个神经元都能接收这256个输入。每个神经元有256个权值，是字母的标准写法，即每个神经元都储存着一个标准模式，26个大写字母的标准写法分别由对应的这26个神经元储存。每个神经元的权值向量也是单位化的，同样是为了实现公平竞争。该层的传输函数为竞争函数。所谓竞争函数即每个神经元互相竞争，净输入最大者获胜，输出为1，其余净输入较小的神经元竞争失败，输出为0，以竞争函数为传输函数的神经元层每次只有净输入最大的那个神经元输出为1，其余都为0（不考虑净输入相等的情况）。&lt;br /&gt;
&lt;br /&gt;
[[File:Ins.jpg|center]] &lt;br /&gt;
&lt;br /&gt;
单神经元净输入的计算方法是输入向量的各个分量和权值向量的对应分量相乘，然后相加，再加上偏置值，即输入向量和权值向量的内积加上过竞争函数，该神经元输出1，其余输出0，这样一来就得到了一个26维向量，该向量进入第二层神经元继续计算。&lt;br /&gt;
&lt;br /&gt;
第二层有26个输入，8个神经元，26个字母的ASCII码由这8个神经元的权值共同记录着，即每个神经元权值向量的第一个分量记录“A”的ASCII码，以二进制表示，第二个分量记录“B”……这层的传输函数为hardlim函数，该函数当净输入大于等于0时输出1，小于0时输出0。先前得到的向量进入该层后，由于只有一个分量为1，所以每个神经元只有该位置的数据为原来的数，其余分量位置上的数据都为0。再加上-0.5的偏置，使原来&lt;br /&gt;
 &lt;br /&gt;
为1的量为0.5，原来为0的量为-0.5，通过hardlim函数后所得的向量就为对应字母的ASCII码，再通过程序转换后就可输出该字母。&lt;br /&gt;
&lt;br /&gt;
这个程序的问题还很多。由于第一层神经元记录的标准模式连字母在面板中的位置也记录了，所以即使当输入已经非常象一个标准模式，但位置偏了，所得的向量仍与标准向量差别较大，所以仍会认不准。而且，由于使用了竞争函数，所以即使人看来输入不象其中任何一个字母时，还是总会有一个标准向量与输入的内积最大，所以还是会认定一个错误的字母&lt;br /&gt;
&lt;br /&gt;
==相关wiki==&lt;br /&gt;
*[[SVM支持向量机]]&lt;br /&gt;
*[[Nsod2]]&lt;br /&gt;
*[[手写识别体]]&lt;br /&gt;
&lt;br /&gt;
[[category:旧网站]]&lt;br /&gt;
[[category:旧网站-虚拟世界]]&lt;br /&gt;
[[category:模拟程序]]&lt;br /&gt;
[[category:神经网络]]&lt;br /&gt;
[[Category:旧词条迁移]]&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%89%8B%E5%86%99%E8%AF%86%E5%88%AB%E8%AF%95%E9%AA%8C&amp;diff=34637</id>
		<title>手写识别试验</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%89%8B%E5%86%99%E8%AF%86%E5%88%AB%E8%AF%95%E9%AA%8C&amp;diff=34637"/>
		<updated>2024-05-07T17:42:33Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=神经网络, 手写识别&lt;br /&gt;
|description=神经网络, 手写识别&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* 名 称：手写识别试验&lt;br /&gt;
* 作 者：nay0648&lt;br /&gt;
* 源代码：[[媒体文件:Java pwriter.zip|pwriter.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=350 height=400  frameborder=1 scrolling=no src=&amp;quot;http://www.swarma.org/javaclass/classes/PDWriter/PWriter2.htm&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;iframe width=350 height=400  frameborder=1 scrolling=no data-src=&amp;quot;http://www.swarma.org&amp;quot;/&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=运行方法=&lt;br /&gt;
  &lt;br /&gt;
首先，在面板上写好字母点input键后，程序把面板上的图象信息转换为一个二进制向量，即按从左到右，从上到下的顺序检查面板，如果该位置被写过则对应1，如果没被写过则对应0。然后对该二进制向量进行单位化，单位化的目的是使得各种输入向量都有相等的长度，以便在第一层神经元中实现公平竞争。单位化了的向量送入神经网络进行计算。&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=运行原理=&lt;br /&gt;
  &lt;br /&gt;
PWriter2所用的神经网络共两层，结构如图下图所示，注意图中大写粗体字母表示矩阵，小写粗体字母表示向量，小写细体字母表示标量。&lt;br /&gt;
&lt;br /&gt;
网络的第一层有256个输入，26个神经元，每个输入都和各个神经元相连，即每个神经元都能接收这256个输入。每个神经元有256个权值，是字母的标准写法，即每个神经元都储存着一个标准模式，26个大写字母的标准写法分别由对应的这26个神经元储存。每个神经元的权值向量也是单位化的，同样是为了实现公平竞争。该层的传输函数为竞争函数。所谓竞争函数即每个神经元互相竞争，净输入最大者获胜，输出为1，其余净输入较小的神经元竞争失败，输出为0，以竞争函数为传输函数的神经元层每次只有净输入最大的那个神经元输出为1，其余都为0（不考虑净输入相等的情况）。&lt;br /&gt;
&lt;br /&gt;
[[File:Ins.jpg|center]] &lt;br /&gt;
&lt;br /&gt;
单神经元净输入的计算方法是输入向量的各个分量和权值向量的对应分量相乘，然后相加，再加上偏置值，即输入向量和权值向量的内积加上过竞争函数，该神经元输出1，其余输出0，这样一来就得到了一个26维向量，该向量进入第二层神经元继续计算。&lt;br /&gt;
&lt;br /&gt;
第二层有26个输入，8个神经元，26个字母的ASCII码由这8个神经元的权值共同记录着，即每个神经元权值向量的第一个分量记录“A”的ASCII码，以二进制表示，第二个分量记录“B”……这层的传输函数为hardlim函数，该函数当净输入大于等于0时输出1，小于0时输出0。先前得到的向量进入该层后，由于只有一个分量为1，所以每个神经元只有该位置的数据为原来的数，其余分量位置上的数据都为0。再加上-0.5的偏置，使原来&lt;br /&gt;
 &lt;br /&gt;
为1的量为0.5，原来为0的量为-0.5，通过hardlim函数后所得的向量就为对应字母的ASCII码，再通过程序转换后就可输出该字母。&lt;br /&gt;
&lt;br /&gt;
这个程序的问题还很多。由于第一层神经元记录的标准模式连字母在面板中的位置也记录了，所以即使当输入已经非常象一个标准模式，但位置偏了，所得的向量仍与标准向量差别较大，所以仍会认不准。而且，由于使用了竞争函数，所以即使人看来输入不象其中任何一个字母时，还是总会有一个标准向量与输入的内积最大，所以还是会认定一个错误的字母&lt;br /&gt;
&lt;br /&gt;
==相关wiki==&lt;br /&gt;
*[[SVM支持向量机]]&lt;br /&gt;
*[[Nsod2]]&lt;br /&gt;
*[[手写识别体]]&lt;br /&gt;
&lt;br /&gt;
[[category:旧网站]]&lt;br /&gt;
[[category:旧网站-虚拟世界]]&lt;br /&gt;
[[category:模拟程序]]&lt;br /&gt;
[[category:神经网络]]&lt;br /&gt;
[[Category:旧词条迁移]]&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%89%8B%E5%86%99%E8%AF%86%E5%88%AB%E8%AF%95%E9%AA%8C&amp;diff=34631</id>
		<title>手写识别试验</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%89%8B%E5%86%99%E8%AF%86%E5%88%AB%E8%AF%95%E9%AA%8C&amp;diff=34631"/>
		<updated>2024-05-07T06:39:00Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#seo:&lt;br /&gt;
|keywords=神经网络, 手写识别&lt;br /&gt;
|description=神经网络, 手写识别&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
* 名 称：手写识别试验&lt;br /&gt;
* 作 者：nay0648&lt;br /&gt;
* 源代码：[[媒体文件:Java pwriter.zip|pwriter.zip]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;iframe width=350 height=400  frameborder=1 scrolling=no src=&amp;quot;http://www.swarma.org/javaclass/classes/PDWriter/PWriter2.htm&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;/iframe&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Result: &amp;lt;htmltag tagname=&amp;quot;a&amp;quot; href=&amp;quot;http://google.com&amp;quot; b=&amp;quot;c&amp;quot;&amp;gt;This is a link to Google.&amp;lt;/htmltag&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=运行方法=&lt;br /&gt;
  &lt;br /&gt;
首先，在面板上写好字母点input键后，程序把面板上的图象信息转换为一个二进制向量，即按从左到右，从上到下的顺序检查面板，如果该位置被写过则对应1，如果没被写过则对应0。然后对该二进制向量进行单位化，单位化的目的是使得各种输入向量都有相等的长度，以便在第一层神经元中实现公平竞争。单位化了的向量送入神经网络进行计算。&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
=运行原理=&lt;br /&gt;
  &lt;br /&gt;
PWriter2所用的神经网络共两层，结构如图下图所示，注意图中大写粗体字母表示矩阵，小写粗体字母表示向量，小写细体字母表示标量。&lt;br /&gt;
&lt;br /&gt;
网络的第一层有256个输入，26个神经元，每个输入都和各个神经元相连，即每个神经元都能接收这256个输入。每个神经元有256个权值，是字母的标准写法，即每个神经元都储存着一个标准模式，26个大写字母的标准写法分别由对应的这26个神经元储存。每个神经元的权值向量也是单位化的，同样是为了实现公平竞争。该层的传输函数为竞争函数。所谓竞争函数即每个神经元互相竞争，净输入最大者获胜，输出为1，其余净输入较小的神经元竞争失败，输出为0，以竞争函数为传输函数的神经元层每次只有净输入最大的那个神经元输出为1，其余都为0（不考虑净输入相等的情况）。&lt;br /&gt;
&lt;br /&gt;
[[File:Ins.jpg|center]] &lt;br /&gt;
&lt;br /&gt;
单神经元净输入的计算方法是输入向量的各个分量和权值向量的对应分量相乘，然后相加，再加上偏置值，即输入向量和权值向量的内积加上过竞争函数，该神经元输出1，其余输出0，这样一来就得到了一个26维向量，该向量进入第二层神经元继续计算。&lt;br /&gt;
&lt;br /&gt;
第二层有26个输入，8个神经元，26个字母的ASCII码由这8个神经元的权值共同记录着，即每个神经元权值向量的第一个分量记录“A”的ASCII码，以二进制表示，第二个分量记录“B”……这层的传输函数为hardlim函数，该函数当净输入大于等于0时输出1，小于0时输出0。先前得到的向量进入该层后，由于只有一个分量为1，所以每个神经元只有该位置的数据为原来的数，其余分量位置上的数据都为0。再加上-0.5的偏置，使原来&lt;br /&gt;
 &lt;br /&gt;
为1的量为0.5，原来为0的量为-0.5，通过hardlim函数后所得的向量就为对应字母的ASCII码，再通过程序转换后就可输出该字母。&lt;br /&gt;
&lt;br /&gt;
这个程序的问题还很多。由于第一层神经元记录的标准模式连字母在面板中的位置也记录了，所以即使当输入已经非常象一个标准模式，但位置偏了，所得的向量仍与标准向量差别较大，所以仍会认不准。而且，由于使用了竞争函数，所以即使人看来输入不象其中任何一个字母时，还是总会有一个标准向量与输入的内积最大，所以还是会认定一个错误的字母&lt;br /&gt;
&lt;br /&gt;
==相关wiki==&lt;br /&gt;
*[[SVM支持向量机]]&lt;br /&gt;
*[[Nsod2]]&lt;br /&gt;
*[[手写识别体]]&lt;br /&gt;
&lt;br /&gt;
[[category:旧网站]]&lt;br /&gt;
[[category:旧网站-虚拟世界]]&lt;br /&gt;
[[category:模拟程序]]&lt;br /&gt;
[[category:神经网络]]&lt;br /&gt;
[[Category:旧词条迁移]]&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:Nltk_python.jpeg&amp;diff=34383</id>
		<title>文件:Nltk python.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%96%87%E4%BB%B6:Nltk_python.jpeg&amp;diff=34383"/>
		<updated>2024-04-14T12:26:26Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E5%82%A8%E5%A4%87%E6%B1%A0%E8%AE%A1%E7%AE%97&amp;diff=29581</id>
		<title>储备池计算</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E5%82%A8%E5%A4%87%E6%B1%A0%E8%AE%A1%E7%AE%97&amp;diff=29581"/>
		<updated>2022-03-25T07:57:18Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：Moved page from wikipedia:en:Reservoir computing (history)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;此词条暂由彩云小译翻译，翻译字数共1698，未经人工整理和审校，带来阅读不便，请见谅。&lt;br /&gt;
&lt;br /&gt;
{{Short description|A type of recurrent neural network with random and non-trainable internal structure}}&lt;br /&gt;
'''Reservoir computing''' is a framework for computation derived from [[recurrent neural network]] theory that maps input signals into higher dimensional computational spaces through the dynamics of a fixed, non-linear system called a reservoir.&amp;lt;ref name=&amp;quot;:4&amp;quot;&amp;gt;{{Cite journal|last1=Tanaka|first1=Gouhei|last2=Yamane|first2=Toshiyuki|last3=Héroux|first3=Jean Benoit|last4=Nakane|first4=Ryosho|last5=Kanazawa|first5=Naoki|last6=Takeda|first6=Seiji|last7=Numata|first7=Hidetoshi|last8=Nakano|first8=Daiju|last9=Hirose|first9=Akira|title=Recent advances in physical reservoir computing: A review|journal=Neural Networks|volume=115|pages=100–123|doi=10.1016/j.neunet.2019.03.005|pmid=30981085|issn=0893-6080|year=2019|doi-access=free}}&amp;lt;/ref&amp;gt; After the input signal is fed into the reservoir, which is treated as a &amp;quot;black box,&amp;quot; a simple readout mechanism is trained to read the state of the reservoir and map it to the desired output.&amp;lt;ref name=&amp;quot;:4&amp;quot; /&amp;gt; The first key benefit of this framework is that training is performed only at the readout stage, as the reservoir dynamics are fixed.&amp;lt;ref name=&amp;quot;:4&amp;quot; /&amp;gt; The second is that the computational power of naturally available systems, both classical and quantum mechanical, can be used to reduce the effective computational cost.&amp;lt;ref&amp;gt;{{Cite journal|last1=Röhm|first1=André|last2=Lüdge|first2=Kathy|date=2018-08-03|title=Multiplexed networks: reservoir computing with virtual and real nodes|journal=Journal of Physics Communications|volume=2|issue=8|pages=085007|bibcode=2018JPhCo...2h5007R|doi=10.1088/2399-6528/aad56d|issn=2399-6528|doi-access=free}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reservoir computing is a framework for computation derived from recurrent neural network theory that maps input signals into higher dimensional computational spaces through the dynamics of a fixed, non-linear system called a reservoir. After the input signal is fed into the reservoir, which is treated as a &amp;quot;black box,&amp;quot; a simple readout mechanism is trained to read the state of the reservoir and map it to the desired output. The first key benefit of this framework is that training is performed only at the readout stage, as the reservoir dynamics are fixed. The second is that the computational power of naturally available systems, both classical and quantum mechanical, can be used to reduce the effective computational cost.&lt;br /&gt;
&lt;br /&gt;
油藏计算是一个由递归神经网络理论导出的计算框架，它通过一个固定的非线性系统，称为油藏的动力学，将输入信号映射到更高维的计算空间。当输入信号被送入储存器(被视为一个“黑匣子”)后，一个简单的读出机制被训练来读取储存器的状态并将其映射到所需的输出。这个框架的第一个关键好处是，训练只在读出阶段进行，因为储层动态是固定的。第二是自然可用系统的计算能力，无论是经典的还是量子力学的，都可以用来降低有效的计算成本。&lt;br /&gt;
&lt;br /&gt;
== History ==&lt;br /&gt;
The concept of reservoir computing stems from the use of recursive connections within [[neural network]]s to create a complex dynamical system.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;[[Benjamin Schrauwen|Schrauwen, Benjamin]], [[David Verstraeten]], and [[Jan Van Campenhout]]. &lt;br /&gt;
&amp;quot;An overview of reservoir computing: theory, applications, and implementations.&amp;quot; &lt;br /&gt;
Proceedings of the European Symposium on Artificial Neural Networks ESANN 2007, pp. 471–482.&amp;lt;/ref&amp;gt; It is a generalisation of earlier neural network architectures such as recurrent neural networks, [[Liquid state machine|liquid-state machines]] and [[Echo state network|echo-state networks]]. Reservoir computing also extends to physical systems that are not networks in the classical sense, but rather continuous systems in space and/or time: e.g. a literal &amp;quot;bucket of water&amp;quot; can serve as a reservoir that performs computations on inputs given as perturbations of the surface.&amp;lt;ref&amp;gt;{{Cite book|last1=Fernando|first1=C.|last2=Sojakka|first2=Sampsa|title=Advances in Artificial Life|chapter=Pattern Recognition in a Bucket|date=2003 |url=https://www.semanticscholar.org/paper/Pattern-Recognition-in-a-Bucket-Fernando-Sojakka/af342af4d0e674aef3bced5fd90875c6f2e04abc |series=Lecture Notes in Computer Science|volume=2801|pages=588–597|doi=10.1007/978-3-540-39432-7_63|isbn=978-3-540-20057-4|s2cid=15073928}}&amp;lt;/ref&amp;gt; The resultant complexity of such recurrent neural networks was found to be useful in solving a variety of problems including language processing and dynamic system modeling.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; However, training of recurrent neural networks is challenging and computationally expensive.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; Reservoir computing reduces those training-related challenges by fixing the dynamics of the reservoir and only training the linear output layer.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The concept of reservoir computing stems from the use of recursive connections within neural networks to create a complex dynamical system.Schrauwen, Benjamin, David Verstraeten, and Jan Van Campenhout. &lt;br /&gt;
&amp;quot;An overview of reservoir computing: theory, applications, and implementations.&amp;quot; &lt;br /&gt;
Proceedings of the European Symposium on Artificial Neural Networks ESANN 2007, pp. 471–482. It is a generalisation of earlier neural network architectures such as recurrent neural networks, liquid-state machines and echo-state networks. Reservoir computing also extends to physical systems that are not networks in the classical sense, but rather continuous systems in space and/or time: e.g. a literal &amp;quot;bucket of water&amp;quot; can serve as a reservoir that performs computations on inputs given as perturbations of the surface. The resultant complexity of such recurrent neural networks was found to be useful in solving a variety of problems including language processing and dynamic system modeling. However, training of recurrent neural networks is challenging and computationally expensive. Reservoir computing reduces those training-related challenges by fixing the dynamics of the reservoir and only training the linear output layer.&lt;br /&gt;
&lt;br /&gt;
= = 历史 = = 油藏计算的概念源于神经网络中使用递归连接来创建一个复杂的动力系统。和 Jan Van Campenhout。油藏计算概述: 理论、应用和实现2007年欧洲人工神经网络研讨会论文集。471–482.它是早期神经网络体系结构，如回归神经网络，液态机和回声状态网络的一个推广。储备计算还扩展到物理系统，不是传统意义上的网络，而是空间和/或时间上的连续系统: 例如:。“一桶水”可以作为一个蓄水池，对地表的扰动输入进行计算。这种递归神经网络的结果复杂性被发现在解决包括语言处理和动态系统建模在内的各种问题中是有用的。然而，递归神经网络的训练是具有挑战性和计算代价昂贵的。油藏计算通过固定油藏的动态和只训练线性输出层来减少那些与训练相关的挑战。&lt;br /&gt;
&lt;br /&gt;
A large variety of nonlinear dynamical systems can serve as a reservoir that performs computations. In recent years semiconductor lasers have attracted considerable interest as computation can be fast and energy efficient compared to electrical components.&lt;br /&gt;
&lt;br /&gt;
A large variety of nonlinear dynamical systems can serve as a reservoir that performs computations. In recent years semiconductor lasers have attracted considerable interest as computation can be fast and energy efficient compared to electrical components.&lt;br /&gt;
&lt;br /&gt;
各种各样的非线性动力系统可以作为一个水库，执行计算。近年来，半导体激光器引起了人们的极大兴趣，因为与电子元件相比，半导体激光器的运算速度更快，能量效率更高。&lt;br /&gt;
&lt;br /&gt;
Recent advances in both AI and quantum information theory have given rise to the concept of [[quantum neural networks]].&amp;lt;ref name=&amp;quot;:2&amp;quot; /&amp;gt; These hold promise in quantum information processing, which is challenging to classical networks, but can also find application in solving classical problems.&amp;lt;ref name=&amp;quot;:2&amp;quot;&amp;gt;{{Cite journal|last1=Ghosh|first1=Sanjib|last2=Opala|first2=Andrzej|last3=Matuszewski|first3=Michał|last4=Paterek|first4=Tomasz|last5=Liew|first5=Timothy C. H.|date=December 2019|title=Quantum reservoir processing|arxiv=1811.10335|journal=NPJ Quantum Information|volume=5|issue=1|pages=35|doi=10.1038/s41534-019-0149-8|bibcode=2019npjQI...5...35G|s2cid=119197635|issn=2056-6387}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;:3&amp;quot;&amp;gt;{{cite arXiv|last1=Negoro|first1=Makoto|last2=Mitarai|first2=Kosuke|last3=Fujii|first3=Keisuke|last4=Nakajima|first4=Kohei|last5=Kitagawa|first5=Masahiro|date=2018-06-28|title=Machine learning with controllable quantum dynamics of a nuclear spin ensemble in a solid|class=quant-ph|eprint=1806.10910}}&amp;lt;/ref&amp;gt;  In 2018, a physical realization of a quantum reservoir computing architecture was demonstrated in the form of nuclear spins within a molecular solid.&amp;lt;ref name=&amp;quot;:3&amp;quot; /&amp;gt; However, the nuclear spin experiments in &amp;lt;ref name=&amp;quot;:3&amp;quot; /&amp;gt; did not demonstrate quantum reservoir computing per se as they did not involve processing of sequential data. Rather the data were vector inputs, which makes this more accurately a demonstration of quantum implementation of a [[random kitchen sink]]&amp;lt;ref name=&amp;quot;RB08&amp;quot;&amp;gt;{{cite journal|last1=Rahimi|first1=Ali|last2=Recht|first2=Benjamin|date=December 2008|title=Weighted Sums of Random Kitchen Sinks: Replacing minimization with randomization in Learning|journal=NIPS'08: Proceedings of the 21st International Conference on Neural Information Processing Systems|url=http://papers.nips.cc/paper/3495-weighted-sums-of-random-kitchen-sinks-replacing-minimization-with-randomization-in-learning.pdf|pages=1313–1320}}&amp;lt;/ref&amp;gt; algorithm (also going by the name of [[extreme learning machine]]s in some communities). In 2019, another possible implementation of quantum reservoir processors was proposed in the form of two-dimensional fermionic lattices.&amp;lt;ref name=&amp;quot;:3&amp;quot; /&amp;gt; In 2020, realization of reservoir computing on gate-based quantum computers was proposed and demonstrated on cloud-based IBM superconducting near-term quantum computers.&amp;lt;ref name=&amp;quot;JNY20&amp;quot;&amp;gt;{{cite journal|last1=Chen|first1=Jiayin|last2=Nurdin|first2=Hendra|last3=Yamamoto|first3=Naoki|title=Temporal Information Processing on Noisy Quantum Computers|journal=Physical Review Applied|volume=14|pages=024065|date=2020-08-24|issue=2|doi=10.1103/PhysRevApplied.14.024065|arxiv=2001.09498|bibcode=2020PhRvP..14b4065C|s2cid=210920543|url=https://doi.org/10.1103/PhysRevApplied.14.024065}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Recent advances in both AI and quantum information theory have given rise to the concept of quantum neural networks. These hold promise in quantum information processing, which is challenging to classical networks, but can also find application in solving classical problems.  In 2018, a physical realization of a quantum reservoir computing architecture was demonstrated in the form of nuclear spins within a molecular solid. However, the nuclear spin experiments in  did not demonstrate quantum reservoir computing per se as they did not involve processing of sequential data. Rather the data were vector inputs, which makes this more accurately a demonstration of quantum implementation of a random kitchen sink algorithm (also going by the name of extreme learning machines in some communities). In 2019, another possible implementation of quantum reservoir processors was proposed in the form of two-dimensional fermionic lattices. In 2020, realization of reservoir computing on gate-based quantum computers was proposed and demonstrated on cloud-based IBM superconducting near-term quantum computers.&lt;br /&gt;
&lt;br /&gt;
人工智能和量子信息理论的最新进展引出了量子神经网络的概念。这些技术在量子信息处理领域具有广阔的应用前景，而量子信息处理是对经典网络的挑战，同时在解决经典问题方面也具有广阔的应用前景。2018年，一个量子库计算架构的物理实现被证明是以分子固体中的核自旋的形式出现的。然而，年的核自旋实验并没有证明量子库计算本身，因为它们并不涉及序列数据的处理。相反，数据是矢量输入，这使得这更准确地演示了一个随机厨房水槽算法的量子实现(在一些社区中也使用极端学习机的名称)。2019年，另一种可能的量子库处理器的实现被提出为二维费米晶格的形式。2020年，在基于门的量子计算机上实现了蓄电池计算，并在基于云的 IBM 超导近期量子计算机上进行了演示。&lt;br /&gt;
&lt;br /&gt;
Reservoir computers have been used for [[Time series|time-series]] analysis purposes. In particular, some of their usages involve [[Chaos theory|chaotic]] [[Time series|time-series]] prediction,&amp;lt;ref&amp;gt;{{Cite journal|last1=Pathak|first1=Jaideep|last2=Hunt|first2=Brian|last3=Girvan|first3=Michelle|last4=Lu|first4=Zhixin|last5=Ott|first5=Edward|date=2018-01-12|title=Model-Free Prediction of Large Spatiotemporally Chaotic Systems from Data: A Reservoir Computing Approach|journal=Physical Review Letters|volume=120|issue=2|pages=024102|doi=10.1103/PhysRevLett.120.024102|pmid=29376715|bibcode=2018PhRvL.120b4102P|doi-access=free}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Cite journal|last1=Vlachas|first1=P.R.|last2=Pathak|first2=J.|last3=Hunt|first3=B.R.|last4=Sapsis|first4=T.P.|last5=Girvan|first5=M.|last6=Ott|first6=E.|last7=Koumoutsakos|first7=P.|date=2020-03-21|title=Backpropagation algorithms and Reservoir Computing in Recurrent Neural Networks for the forecasting of complex spatiotemporal dynamics|url=http://dx.doi.org/10.1016/j.neunet.2020.02.016|journal=Neural Networks|volume=126|pages=191–217|doi=10.1016/j.neunet.2020.02.016|pmid=32248008|issn=0893-6080|arxiv=1910.05266|s2cid=211146609}}&amp;lt;/ref&amp;gt; separation of [[Chaos theory|chaotic]] signals,&amp;lt;ref&amp;gt;{{Cite journal|last1=Krishnagopal|first1=Sanjukta|last2=Girvan|first2=Michelle|last3=Ott|first3=Edward|last4=Hunt|first4=Brian R.|date=2020-02-01|title=Separation of chaotic signals by reservoir computing|url=https://aip.scitation.org/doi/10.1063/1.5132766|journal=Chaos: An Interdisciplinary Journal of Nonlinear Science|volume=30|issue=2|pages=023123|doi=10.1063/1.5132766|pmid=32113243|issn=1054-1500|arxiv=1910.10080|bibcode=2020Chaos..30b3123K|s2cid=204823815}}&amp;lt;/ref&amp;gt; and link inference of [[Network theory|networks]] from their dynamics.&amp;lt;ref&amp;gt;{{Cite journal|last1=Banerjee|first1=Amitava|last2=Hart|first2=Joseph D.|last3=Roy|first3=Rajarshi|last4=Ott|first4=Edward|date=2021-07-20|title=Machine Learning Link Inference of Noisy Delay-Coupled Networks with Optoelectronic Experimental Tests|journal=Physical Review X|volume=11|issue=3|pages=031014|doi=10.1103/PhysRevX.11.031014|arxiv=2010.15289|bibcode=2021PhRvX..11c1014B|doi-access=free}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reservoir computers have been used for time-series analysis purposes. In particular, some of their usages involve chaotic time-series prediction, separation of chaotic signals, and link inference of networks from their dynamics.&lt;br /&gt;
&lt;br /&gt;
储层计算机已用于时间序列分析的目的。特别是混沌时间序列预测、混沌信号分离、网络动力学链路推理等方面的应用。&lt;br /&gt;
&lt;br /&gt;
== Classical reservoir computing ==&lt;br /&gt;
&lt;br /&gt;
== Classical reservoir computing ==&lt;br /&gt;
&lt;br /&gt;
= = = 经典的油藏计算 = = &lt;br /&gt;
&lt;br /&gt;
=== Reservoir ===&lt;br /&gt;
The 'reservoir' in reservoir computing is the internal structure of the computer, and must have two properties: it must be made up of individual, non-linear units, and it must be capable of storing information. The non-linearity describes the response of each unit to input, which is what allows reservoir computers to solve complex problems. Reservoirs are able to store information by connecting the units in recurrent loops, where the previous input affects the next response. The change in reaction due to the past allows the computers to be trained to complete specific tasks.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;{{Cite journal|last=Soriano|first=Miguel C.|date=2017-02-06|title=Viewpoint: Reservoir Computing Speeds Up|url=https://physics.aps.org/articles/v10/12|journal=Physics|language=en|volume=10|doi=10.1103/Physics.10.12|doi-access=free}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The 'reservoir' in reservoir computing is the internal structure of the computer, and must have two properties: it must be made up of individual, non-linear units, and it must be capable of storing information. The non-linearity describes the response of each unit to input, which is what allows reservoir computers to solve complex problems. Reservoirs are able to store information by connecting the units in recurrent loops, where the previous input affects the next response. The change in reaction due to the past allows the computers to be trained to complete specific tasks.&lt;br /&gt;
&lt;br /&gt;
油藏计算中的“油藏”是计算机的内部结构，必须具有两个特性: 它必须由单个的非线性单元组成，并且必须能够存储信息。非线性描述了每个单元对输入的响应，这使得油藏计算机能够解决复杂的问题。水库能够储存的信息，连接单位在循环回路，其中前一个输入影响下一个响应。由于过去的反应的变化允许计算机被训练来完成特定的任务。&lt;br /&gt;
&lt;br /&gt;
Reservoirs can be virtual or physical.&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt; Virtual reservoirs are typically randomly generated and are designed like neural networks.&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; Virtual reservoirs can be designed to have non-linearity and recurrent loops, but, unlike neural networks, the connections between units are randomized and remain unchanged throughout computation.&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt; Physical reservoirs are possible because of the inherent non-linearity of certain natural systems. The interaction between ripples on the surface of water contains the nonlinear dynamics required in reservoir creation, and a pattern recognition RC was developed by first inputting ripples with electric motors then recording and analyzing the ripples in the readout.&amp;lt;ref name=&amp;quot;:4&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Reservoirs can be virtual or physical. Virtual reservoirs are typically randomly generated and are designed like neural networks. Virtual reservoirs can be designed to have non-linearity and recurrent loops, but, unlike neural networks, the connections between units are randomized and remain unchanged throughout computation. Physical reservoirs are possible because of the inherent non-linearity of certain natural systems. The interaction between ripples on the surface of water contains the nonlinear dynamics required in reservoir creation, and a pattern recognition RC was developed by first inputting ripples with electric motors then recording and analyzing the ripples in the readout.&lt;br /&gt;
&lt;br /&gt;
储油层可以是虚拟的，也可以是实体的。虚拟水库通常是随机产生的，设计类似于神经网络。虚拟水库可以设计成具有非线性和循环回路，但是，与神经网络不同，单元之间的连接是随机的，并且在整个计算过程中保持不变。由于某些自然系统固有的非线性，物理储层是可能存在的。水面波纹之间的相互作用包含了水库形成所需的非线性动力学，通过电动机输入波纹，然后对读出的波纹进行记录和分析，建立了模式识别 RC。&lt;br /&gt;
&lt;br /&gt;
=== Readout ===&lt;br /&gt;
&lt;br /&gt;
=== Readout ===&lt;br /&gt;
&lt;br /&gt;
= = = 读出 = = &lt;br /&gt;
&lt;br /&gt;
The readout is a neural network layer that performs a linear transformation on the output of the reservoir.&amp;lt;ref name=&amp;quot;:4&amp;quot; /&amp;gt; The weights of the readout layer are trained by analyzing the spatiotemporal patterns of the reservoir after excitation by known inputs, and by utilizing a training method such as a [[linear regression]] or a [[Ridge regression]].&amp;lt;ref name=&amp;quot;:4&amp;quot; /&amp;gt; As its implementation depends on spatiotemporal reservoir patterns, the details of readout methods are tailored to each type of reservoir.&amp;lt;ref name=&amp;quot;:4&amp;quot; /&amp;gt; For example, the readout for a reservoir computer using a container of liquid as its reservoir might entail observing spatiotemporal patterns on the surface of the liquid.&amp;lt;ref name=&amp;quot;:4&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The readout is a neural network layer that performs a linear transformation on the output of the reservoir. The weights of the readout layer are trained by analyzing the spatiotemporal patterns of the reservoir after excitation by known inputs, and by utilizing a training method such as a linear regression or a Ridge regression. As its implementation depends on spatiotemporal reservoir patterns, the details of readout methods are tailored to each type of reservoir. For example, the readout for a reservoir computer using a container of liquid as its reservoir might entail observing spatiotemporal patterns on the surface of the liquid.&lt;br /&gt;
&lt;br /&gt;
读数是一个神经网络层，对水库的输出执行一个线性映射。通过分析已知输入激发后的水库时空模式，以及利用线性回归或岭回归等训练方法，对读出层的权重进行训练。由于其实施取决于时空储存器模式，读出方法的细节是针对每种储存器类型量身定制的。例如，储存器计算机使用液体容器作为储存器的读数可能需要观察液体表面的时空模式。&lt;br /&gt;
&lt;br /&gt;
=== Types ===&lt;br /&gt;
&lt;br /&gt;
=== Types ===&lt;br /&gt;
&lt;br /&gt;
= = = 类型 = = &lt;br /&gt;
&lt;br /&gt;
==== Context reverberation network ====&lt;br /&gt;
An early example of reservoir computing was the context reverberation network.&amp;lt;ref&amp;gt;&lt;br /&gt;
[[Kevin Kirby|Kirby, Kevin]]. &amp;quot;Context dynamics in neural sequential learning.&amp;quot;&lt;br /&gt;
Proceedings of the Florida Artificial Intelligence Research Symposium FLAIRS (1991), 66–70.&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
In this architecture, an input layer feeds into a high dimensional dynamical system which is read out by a trainable single-layer [[perceptron]]. Two kinds of dynamical system were described: a recurrent neural network with fixed random weights, and a continuous [[reaction–diffusion system]] inspired by [[Alan Turing]]’s model of [[morphogenesis]]. At the trainable layer, the perceptron associates current inputs with the signals that [[Reverberation|reverberate]] in the dynamical system; the latter were said to provide a dynamic &amp;quot;context&amp;quot; for the inputs.  In the language of later work, the reaction–diffusion system served as the reservoir.&lt;br /&gt;
&lt;br /&gt;
An early example of reservoir computing was the context reverberation network.&lt;br /&gt;
Kirby, Kevin. &amp;quot;Context dynamics in neural sequential learning.&amp;quot;&lt;br /&gt;
Proceedings of the Florida Artificial Intelligence Research Symposium FLAIRS (1991), 66–70.&lt;br /&gt;
&lt;br /&gt;
In this architecture, an input layer feeds into a high dimensional dynamical system which is read out by a trainable single-layer perceptron. Two kinds of dynamical system were described: a recurrent neural network with fixed random weights, and a continuous reaction–diffusion system inspired by Alan Turing’s model of morphogenesis. At the trainable layer, the perceptron associates current inputs with the signals that reverberate in the dynamical system; the latter were said to provide a dynamic &amp;quot;context&amp;quot; for the inputs.  In the language of later work, the reaction–diffusion system served as the reservoir.&lt;br /&gt;
&lt;br /&gt;
上下文混响网络上下文混响网络是油藏计算的一个早期实例。凯文 · 柯比。“神经连续学习中的环境动力学。”佛罗里达人工智能研究会论文集，FLAIRS (1991) ，66-70。在这种架构中，一个输入层输入到一个高维动力系统中，这个高维信息由一个可训练的单层感知器读出。描述了两种动力系统: 一种是固定随机重量的递归神经网络，另一种是受 Alan Turing 的形态发生模型启发的连续反应扩散系统。在可训练层，感知器将当前输入与在动力系统中回响的信号联系起来; 后者被认为为输入提供了一个动态的“上下文”。用后来的工作语言来说，反应扩散系统就是水库。&lt;br /&gt;
&lt;br /&gt;
==== Echo state network ====&lt;br /&gt;
{{main|Echo state network}}The Tree Echo State Network (TreeESN) model represents a generalization of the reservoir computing framework to tree structured data.&amp;lt;ref&amp;gt;{{Cite journal|last1=Gallicchio|first1=Claudio|last2=Micheli|first2=Alessio|year=2013|title=Tree Echo State Networks|journal=Neurocomputing|volume=101|pages=319–337|doi=10.1016/j.neucom.2012.08.017|hdl=11568/158480|hdl-access=free}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Tree Echo State Network (TreeESN) model represents a generalization of the reservoir computing framework to tree structured data.&lt;br /&gt;
&lt;br /&gt;
= = = = 回声状态网络 = = = = = 树状回声状态网络(TreeESN)模型代表了油藏计算框架向树状结构数据的推广。&lt;br /&gt;
&lt;br /&gt;
==== Liquid-state machine ====&lt;br /&gt;
{{main|Liquid-state machine}}'''Chaotic Liquid State Machine'''&lt;br /&gt;
&lt;br /&gt;
Chaotic Liquid State Machine&lt;br /&gt;
&lt;br /&gt;
= = = = 液态机 = = = 混沌液态机&lt;br /&gt;
&lt;br /&gt;
The liquid (i.e. reservoir) of a Chaotic Liquid State Machine (CLSM),&amp;lt;ref name=&amp;quot;:7&amp;quot;&amp;gt;{{Cite journal|last1=Aoun|first1=Mario Antoine|last2=Boukadoum|first2=Mounir|date=2014|title=Learning algorithm and neurocomputing architecture for NDS Neurons|url=http://dx.doi.org/10.1109/icci-cc.2014.6921451|journal=2014 IEEE 13th International Conference on Cognitive Informatics and Cognitive Computing|pages=126–132|publisher=IEEE|doi=10.1109/icci-cc.2014.6921451|isbn=978-1-4799-6081-1|s2cid=16026952}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;:8&amp;quot;&amp;gt;{{Cite journal|last1=Aoun|first1=Mario Antoine|last2=Boukadoum|first2=Mounir|date=2015|title=Chaotic Liquid State Machine|url=http://dx.doi.org/10.4018/ijcini.2015100101|journal=International Journal of Cognitive Informatics and Natural Intelligence|volume=9|issue=4|pages=1–20|doi=10.4018/ijcini.2015100101|issn=1557-3958}}&amp;lt;/ref&amp;gt; or chaotic reservoir, is made from chaotic spiking neurons but which stabilize their activity by settling to a single hypothesis that describes the trained inputs of the machine. This is in contrast to general types of reservoirs that don’t stabilize. The liquid stabilization occurs via synaptic plasticity and chaos control that govern neural connections inside the liquid. CLSM showed promising results in learning sensitive time series data.&amp;lt;ref name=&amp;quot;:7&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;:8&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The liquid (i.e. reservoir) of a Chaotic Liquid State Machine (CLSM), or chaotic reservoir, is made from chaotic spiking neurons but which stabilize their activity by settling to a single hypothesis that describes the trained inputs of the machine. This is in contrast to general types of reservoirs that don’t stabilize. The liquid stabilization occurs via synaptic plasticity and chaos control that govern neural connections inside the liquid. CLSM showed promising results in learning sensitive time series data.&lt;br /&gt;
&lt;br /&gt;
该液体(即。混沌液态机(CLSM)或混沌液态机(CLSM)中的混沌液态机(reservoir)是由混沌脉冲神经元构成，但它们通过建立一个描述机器训练输入的单一假设来稳定其活动。这与一般不稳定的储层形成了鲜明的对比。液体的稳定是通过突触可塑性和混沌控制来实现的，混沌控制控制着液体内部的神经连接。CLSM 在学习敏感时间序列数据方面取得了良好的效果。&lt;br /&gt;
&lt;br /&gt;
==== Nonlinear transient computation ====&lt;br /&gt;
This type of information processing is most relevant when time-dependent input signals depart from the mechanism’s internal dynamics.&amp;lt;ref name=&amp;quot;NTC&amp;quot; /&amp;gt; These departures cause transients or temporary altercations which are represented in the device’s output.&amp;lt;ref name=&amp;quot;NTC&amp;quot;&amp;gt;{{cite journal |last1=Crook |first1=Nigel |title=Nonlinear Transient Computation |journal=Neurocomputing |date=2007 |volume=70 |issue=7–9 |pages=1167–1176 |doi=10.1016/j.neucom.2006.10.148}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This type of information processing is most relevant when time-dependent input signals depart from the mechanism’s internal dynamics. These departures cause transients or temporary altercations which are represented in the device’s output.&lt;br /&gt;
&lt;br /&gt;
= = = = = 非线性瞬态计算 = = = = = 这种类型的信息处理是最相关的时间依赖的输入信号离开机制的内部动态。这些偏离引起瞬态或暂时的变化，这些变化在设备的输出中得到了体现。&lt;br /&gt;
&lt;br /&gt;
==== Deep reservoir computing ====&lt;br /&gt;
The extension of the reservoir computing framework towards Deep Learning, with the introduction of Deep Reservoir Computing and of the Deep Echo State Network (DeepESN) model&amp;lt;ref&amp;gt;{{cite thesis |type=PhD thesis |last=Pedrelli |first=Luca |date=2019 |title=Deep Reservoir Computing: A Novel Class of Deep Recurrent Neural Networks |publisher=Università di Pisa |url=https://etd.adm.unipi.it/t/etd-02282019-191815/}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Cite journal|last1=Gallicchio|first1=Claudio|last2=Micheli|first2=Alessio|last3=Pedrelli|first3=Luca|title=Deep reservoir computing: A critical experimental analysis|journal=Neurocomputing|volume=268|pages=87–99|doi=10.1016/j.neucom.2016.12.089|date=2017-12-13|hdl=11568/851934|hdl-access=free}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Cite journal|last1=Gallicchio|first1=Claudio|last2=Micheli|first2=Alessio|date=2017-05-05|title=Echo State Property of Deep Reservoir Computing Networks|journal=Cognitive Computation|volume=9|issue=3|pages=337–350|doi=10.1007/s12559-017-9461-9|issn=1866-9956|hdl=11568/851932|s2cid=1077549|hdl-access=free}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Cite journal|last1=Gallicchio|first1=Claudio|last2=Micheli|first2=Alessio|last3=Pedrelli|first3=Luca|date=December 2018|title=Design of deep echo state networks|journal=Neural Networks|volume=108|pages=33–47|doi=10.1016/j.neunet.2018.08.002|pmid=30138751|issn=0893-6080|hdl=11568/939082|s2cid=52075702|hdl-access=free}}&amp;lt;/ref&amp;gt; allows to develop efficiently trained models for hierarchical processing of temporal data, at the same time enabling the investigation on the inherent role of layered composition in [[recurrent neural network]]s.&lt;br /&gt;
&lt;br /&gt;
The extension of the reservoir computing framework towards Deep Learning, with the introduction of Deep Reservoir Computing and of the Deep Echo State Network (DeepESN) model allows to develop efficiently trained models for hierarchical processing of temporal data, at the same time enabling the investigation on the inherent role of layered composition in recurrent neural networks.&lt;br /&gt;
&lt;br /&gt;
* = = = = = = = = = = = = 深度油藏计算扩展到深度学习的油藏计算框架，引入了深度油藏计算和深度回波状态网络(DeepESN)模型，允许开发有效训练的时间数据层次化处理模型，同时允许研究层状组合在回归神经网络中的固有作用。&lt;br /&gt;
&lt;br /&gt;
== Quantum reservoir computing ==&lt;br /&gt;
Quantum reservoir computing may use the nonlinear nature of quantum mechanical interactions or processes to form the characteristic nonlinear reservoirs&amp;lt;ref name=&amp;quot;:2&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;:3&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;CN19&amp;quot;&amp;gt;{{Cite journal|last1=Chen|first1=Jiayin|last2=Nurdin|first2=Hendra|date=2019-05-15|title=Learning nonlinear input–output maps with dissipative quantum systems|url=https://link.springer.com/article/10.1007%2Fs11128-019-2311-9|journal=Quantum Information Processing|volume=18|issue=7|page=198|doi=10.1007/s11128-019-2311-9|arxiv=1901.01653|bibcode=2019QuIP...18..198C|s2cid=57573677}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;JNY20&amp;quot;/&amp;gt; but may also be done with linear reservoirs when the injection of the input to the reservoir creates the nonlinearity.&amp;lt;ref name=&amp;quot;:5&amp;quot;&amp;gt;{{cite journal|last1=Nokkala|first1=Johannes|last2=Martínez-Peña|first2=Rodrigo|last3=Giorgi|first3=Gian Luca|last4=Parigi|first4=Valentina|last5=Soriano|first5=Miguel C.|last6=Zambrini|first6=Roberta|title=Gaussian states of continuous-variable quantum systems provide universal and versatile reservoir computing|journal=Communications Physics|year=2021|volume=4|issue=1|page=53|doi=10.1038/s42005-021-00556-w|arxiv=2006.04821|bibcode=2021CmPhy...4...53N|s2cid=234355683}}&amp;lt;/ref&amp;gt; The marriage of machine learning and quantum devices is leading to the emergence of quantum neuromorphic computing as a new research area.&amp;lt;ref name=&amp;quot;MG20&amp;quot;&amp;gt;{{cite journal|last1=Marković|first1=Danijela |last2=Grollier|first2=Julie|title=Quantum Neuromorphic Computing|journal=Applied Physics Letters|volume=117|pages=150501|date=2020-10-13|issue=15|doi=10.1063/5.0020014|arxiv=2006.15111|bibcode=2020ApPhL.117o0501M |s2cid=210920543|url=https://doi.org/10.1063/5.0020014}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Quantum reservoir computing may use the nonlinear nature of quantum mechanical interactions or processes to form the characteristic nonlinear reservoirs but may also be done with linear reservoirs when the injection of the input to the reservoir creates the nonlinearity. The marriage of machine learning and quantum devices is leading to the emergence of quantum neuromorphic computing as a new research area.&lt;br /&gt;
&lt;br /&gt;
量子油藏计算可以利用量子力学相互作用或过程的非线性本质来形成特征非线性油藏，但也可以利用线性油藏，当向油藏注入的输入产生非线性时。量子神经形态计算是机器学习和量子装置的结合，是量子神经形态计算的一个新的研究领域。&lt;br /&gt;
&lt;br /&gt;
=== Types ===&lt;br /&gt;
&lt;br /&gt;
=== Types ===&lt;br /&gt;
&lt;br /&gt;
= = = 类型 = = &lt;br /&gt;
&lt;br /&gt;
==== Gaussian states of interacting quantum harmonic oscillators ====&lt;br /&gt;
&lt;br /&gt;
==== Gaussian states of interacting quantum harmonic oscillators ====&lt;br /&gt;
&lt;br /&gt;
= = = 相互作用量子谐振子的高斯态 = = = &lt;br /&gt;
&lt;br /&gt;
Gaussian states are a paradigmatic class of states of [[Continuous-variable quantum information|continuous variable quantum systems]].&amp;lt;ref&amp;gt;{{cite arXiv|last1=Ferraro|first1=Alessandro|last2=Olivares|first2=Stefano|last3=Paris|first3=Matteo G. A.|date=2005-03-31|title=Gaussian states in continuous variable quantum information|eprint=quant-ph/0503237}}&amp;lt;/ref&amp;gt; Although they can nowadays be created and manipulated in, e.g, state-of-the-art optical platforms,&amp;lt;ref&amp;gt;{{Cite journal|last1=Roslund|first1=Jonathan|last2=de Araújo|first2=Renné Medeiros|last3=Jiang|first3=Shifeng|last4=Fabre|first4=Claude|last5=Treps|first5=Nicolas|date=2013-12-15|title=Wavelength-multiplexed quantum networks with ultrafast frequency combs|url=https://www.nature.com/articles/nphoton.2013.340|journal=Nature Photonics|language=en|volume=8|issue=2|pages=109–112|doi=10.1038/nphoton.2013.340|arxiv=1307.1216|s2cid=2328402|issn=1749-4893}}&amp;lt;/ref&amp;gt; naturally robust to [[Quantum decoherence|decoherence]], it is well-known that they are not sufficient for, e.g., universal [[quantum computing]] because transformations that preserve the Gaussian nature of a state are linear.&amp;lt;ref&amp;gt;{{Cite journal|last1=Bartlett|first1=Stephen D.|last2=Sanders|first2=Barry C.|last3=Braunstein|first3=Samuel L.|last4=Nemoto|first4=Kae|date=2002-02-14|title=Efficient Classical Simulation of Continuous Variable Quantum Information Processes|url=https://link.aps.org/doi/10.1103/PhysRevLett.88.097904|journal=Physical Review Letters|volume=88|issue=9|pages=097904|doi=10.1103/PhysRevLett.88.097904|pmid=11864057|arxiv=quant-ph/0109047|bibcode=2002PhRvL..88i7904B|s2cid=2161585}}&amp;lt;/ref&amp;gt; Normally, linear dynamics would not be sufficient for nontrivial reservoir computing either. It is nevertheless possible to harness such dynamics for reservoir computing purposes by considering a network of interacting [[quantum harmonic oscillator]]s and injecting the input by periodical state resets of a subset of the oscillators. With a suitable choice of how the states of this subset of oscillators depends on the input, the observables of the rest of the oscillators can become nonlinear functions of the input suitable for reservoir computing; indeed, thanks to the properties of these functions, even universal reservoir computing becomes possible by combining the observables with a polynomial readout function.&amp;lt;ref name=&amp;quot;:5&amp;quot; /&amp;gt; In principle, such reservoir computers could be implemented with controlled multimode [[Optical parametric oscillator|optical parametric processes]],&amp;lt;ref&amp;gt;{{Cite journal|last1=Nokkala|first1=J.|last2=Arzani|first2=F.|last3=Galve|first3=F.|last4=Zambrini|first4=R.|last5=Maniscalco|first5=S.|last6=Piilo|first6=J.|last7=Treps|first7=N.|last8=Parigi|first8=V.|date=2018-05-09|title=Reconfigurable optical implementation of quantum complex networks|url=https://doi.org/10.1088%2F1367-2630%2Faabc77|journal=New Journal of Physics|language=en|volume=20|issue=5|pages=053024|doi=10.1088/1367-2630/aabc77|arxiv=1708.08726|bibcode=2018NJPh...20e3024N|s2cid=119091176|issn=1367-2630}}&amp;lt;/ref&amp;gt; however efficient extraction of the output from the system is challenging especially in the quantum regime where [[Measurement in quantum mechanics#State change due to measurement|measurement back-action]] must be taken into account.&lt;br /&gt;
&lt;br /&gt;
Gaussian states are a paradigmatic class of states of continuous variable quantum systems. Although they can nowadays be created and manipulated in, e.g, state-of-the-art optical platforms, naturally robust to decoherence, it is well-known that they are not sufficient for, e.g., universal quantum computing because transformations that preserve the Gaussian nature of a state are linear. Normally, linear dynamics would not be sufficient for nontrivial reservoir computing either. It is nevertheless possible to harness such dynamics for reservoir computing purposes by considering a network of interacting quantum harmonic oscillators and injecting the input by periodical state resets of a subset of the oscillators. With a suitable choice of how the states of this subset of oscillators depends on the input, the observables of the rest of the oscillators can become nonlinear functions of the input suitable for reservoir computing; indeed, thanks to the properties of these functions, even universal reservoir computing becomes possible by combining the observables with a polynomial readout function. In principle, such reservoir computers could be implemented with controlled multimode optical parametric processes, however efficient extraction of the output from the system is challenging especially in the quantum regime where measurement back-action must be taken into account.&lt;br /&gt;
&lt;br /&gt;
高斯态是连续变量量子系统的一类典型态。尽管它们现在可以在诸如最先进的光学平台上创建和操作，这些平台对去相干具有天然的鲁棒性，但众所周知，它们对于诸如通用量子计算来说是不够的，因为保持状态的高斯性质的变换是线性的。正常情况下，线性动力学也不足以进行非平凡的储层计算。然而，通过考虑一个由相互作用的量子谐振子组成的网络，并通过周期性的振子子集的状态重置注入输入，可以将这种动力学应用于水库计算目的。选择一个合适的振荡器子集的状态如何取决于输入，其余振荡器的观测量可以成为非线性函数的输入适合于水库计算; 事实上，由于这些函数的性质，甚至通用水库计算成为可能，通过结合观测量和一个多项式读出函数。原则上，这种蓄电池计算机可以通过受控的多模光学参量过程实现，但是从系统中有效地提取输出是一个挑战，特别是在必须考虑测量反作用的量子体制中。&lt;br /&gt;
&lt;br /&gt;
==== 2-D quantum dot lattices ====&lt;br /&gt;
In this architecture, randomized coupling between lattice sites grants the reservoir the “black box” property inherent to reservoir processors.&amp;lt;ref name=&amp;quot;:2&amp;quot; /&amp;gt; The reservoir is then excited, which acts as the input, by an incident [[optical field]]. Readout occurs in the form of occupational numbers of lattice sites, which are naturally nonlinear functions of the input.&amp;lt;ref name=&amp;quot;:2&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this architecture, randomized coupling between lattice sites grants the reservoir the “black box” property inherent to reservoir processors. The reservoir is then excited, which acts as the input, by an incident optical field. Readout occurs in the form of occupational numbers of lattice sites, which are naturally nonlinear functions of the input.&lt;br /&gt;
&lt;br /&gt;
= = = = = = 2-D 量子点格子 = = = = = = 在这种结构中，格点之间的随机耦合赋予了蓄电池处理器固有的“黑盒”属性。然后通过一个入射光场激发储存器，作为输入。读出以格点的职业数的形式出现，这是输入的自然非线性函数。&lt;br /&gt;
&lt;br /&gt;
==== Nuclear spins in a molecular solid ====&lt;br /&gt;
In this architecture, quantum mechanical coupling between spins of neighboring atoms within the [[molecular solid]] provides the non-linearity required to create the higher-dimensional computational space.&amp;lt;ref name=&amp;quot;:3&amp;quot; /&amp;gt; The reservoir is then excited by radiofrequency [[electromagnetic radiation]] tuned to the [[resonance]] frequencies of relevant [[Spin (physics)|nuclear spins]].&amp;lt;ref name=&amp;quot;:3&amp;quot; /&amp;gt; Readout occurs by measuring the nuclear spin states.&amp;lt;ref name=&amp;quot;:3&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this architecture, quantum mechanical coupling between spins of neighboring atoms within the molecular solid provides the non-linearity required to create the higher-dimensional computational space. The reservoir is then excited by radiofrequency electromagnetic radiation tuned to the resonance frequencies of relevant nuclear spins. Readout occurs by measuring the nuclear spin states.&lt;br /&gt;
&lt;br /&gt;
分子固体中的核自旋在这种结构中，分子固体中相邻原子自旋之间的量子力学耦合提供了创造高维计算空间所需的非线性。然后，该蓄电池被调谐到相关核自旋共振频率的射频电磁辐射所激发。通过测量原子核的自旋态就可以读出数据。&lt;br /&gt;
&lt;br /&gt;
==== Reservoir computing on gate-based near-term superconducting quantum computers ====&lt;br /&gt;
The most prevalent model of quantum computing is the gate-based model where quantum computation is performed by sequential applications of unitary quantum gates on qubits of a quantum computer.&amp;lt;ref&amp;gt;{{Citation|last1=Nielsen|first1=Michael|last2=Chuang|first2=Isaac|title=Quantum Computation and Quantum Information|publisher=Cambridge University Press Cambridge|date=2010|edition=2}}&amp;lt;/ref&amp;gt; A theory for the implementation of reservoir computing on a gate-based quantum computer with proof-of-principle demonstrations on a number of IBM superconducting [[NISQ era|noisy intermediate-scale quantum]] (NISQ) computers&amp;lt;ref&amp;gt;[[John Preskill]]. &amp;quot;Quantum Computing in the NISQ era and beyond.&amp;quot; Quantum 2,79 (2018)&amp;lt;/ref&amp;gt; has been reported in.&amp;lt;ref name=&amp;quot;JNY20&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The most prevalent model of quantum computing is the gate-based model where quantum computation is performed by sequential applications of unitary quantum gates on qubits of a quantum computer. A theory for the implementation of reservoir computing on a gate-based quantum computer with proof-of-principle demonstrations on a number of IBM superconducting noisy intermediate-scale quantum (NISQ) computersJohn Preskill. &amp;quot;Quantum Computing in the NISQ era and beyond.&amp;quot; Quantum 2,79 (2018) has been reported in.&lt;br /&gt;
&lt;br /&gt;
= = = = 基于门的近期超导量子计算机上的蓄水池计算 = = = = = 量子计算最流行的模型是基于门的模型，量子计算是通过量子计算机量子比特上的幺正量子门顺序应用来执行的。在基于栅极的量子计算机上实现蓄电池计算的理论，并在 IBM 超导带噪中级量子计算机(NISQ)上进行了原理论证。“量子计算在 NISQ 时代和以后。”量子2,79(2018)已于。&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[Deep learning]]&lt;br /&gt;
* [[Extreme learning machine]]s&lt;br /&gt;
&lt;br /&gt;
* Deep learning&lt;br /&gt;
* Extreme learning machines&lt;br /&gt;
&lt;br /&gt;
= = = = 深度学习 = = 极限学习机器&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
== Further reading ==&lt;br /&gt;
* [http://www.nature.com/ncomms/journal/v2/n9/full/ncomms1476.html?WT.ec_id=NCOMMS-20110913 Reservoir Computing using delay systems], Nature Communications 2011&lt;br /&gt;
* [http://www.nature.com/srep/2012/120227/srep00287/full/srep00287.html Optoelectronic Reservoir Computing], Scientific Reports February 2012&lt;br /&gt;
* [http://www.opticsinfobase.org/oe/abstract.cfm?uri=oe-20-3-3241 Optoelectronic Reservoir Computing], Optics Express 2012&lt;br /&gt;
* [http://www.nature.com/ncomms/journal/v4/n1/full/ncomms2368.html All-optical Reservoir Computing], Nature Communications 2013&lt;br /&gt;
* [http://www.mitpressjournals.org/doi/10.1162/NECO_a_00694#.WL4P9iHyvIo Memristor Models for Machine learning], Neural Computation 2014 [https://arxiv.org/abs/1406.2210 arxiv]&lt;br /&gt;
&lt;br /&gt;
* Reservoir Computing using delay systems, Nature Communications 2011&lt;br /&gt;
* Optoelectronic Reservoir Computing, Scientific Reports February 2012&lt;br /&gt;
* Optoelectronic Reservoir Computing, Optics Express 2012&lt;br /&gt;
* All-optical Reservoir Computing, Nature Communications 2013&lt;br /&gt;
* Memristor Models for Machine learning, Neural Computation 2014 arxiv&lt;br /&gt;
&lt;br /&gt;
光电子水库计算，Optics Express 2012，All-optical Reservoir Computing，Nature Communications 2013，Memristor Models for Machine learning，Neural calculation 2014 arxiv&lt;br /&gt;
&lt;br /&gt;
[[Category:Artificial neural networks]]&lt;br /&gt;
&lt;br /&gt;
Category:Artificial neural networks&lt;br /&gt;
&lt;br /&gt;
类别: 人工神经网络&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;This page was moved from [[wikipedia:en:Reservoir computing]]. Its edit history can be viewed at [[储备池计算/edithistory]]&amp;lt;/small&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:待整理页面]]&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E7%A5%9E%E7%BB%8F%E5%BD%A2%E6%80%81%E8%AE%A1%E7%AE%97&amp;diff=29568</id>
		<title>神经形态计算</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E7%A5%9E%E7%BB%8F%E5%BD%A2%E6%80%81%E8%AE%A1%E7%AE%97&amp;diff=29568"/>
		<updated>2022-03-25T07:39:19Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：Moved page from wikipedia:en:Neuromorphic engineering (history)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;此词条暂由彩云小译翻译，翻译字数共2431，未经人工整理和审校，带来阅读不便，请见谅。&lt;br /&gt;
&lt;br /&gt;
{{Use American English|date = January 2019}}&lt;br /&gt;
{{Use mdy dates|date = January 2019}}&lt;br /&gt;
&lt;br /&gt;
'''Neuromorphic engineering''', also known as '''neuromorphic computing''',&amp;lt;ref&amp;gt;{{Cite journal | doi = 10.1145/2601069| title = Neuromorphic computing gets ready for the (really) big time| journal = [[Communications of the ACM]]| volume = 57| issue = 6| year = 2014| last1 = Monroe | first1 = D. | pages = 13–15| s2cid = 20051102}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Cite journal | doi = 10.1088/0957-4484/21/17/175202| pmid = 20368686| title = Nanotube devices based crossbar architecture: Toward neuromorphic computing| journal = Nanotechnology| volume = 21| issue = 17| pages = 175202| year = 2010| last1 = Zhao | first1 = W. S. | last2 = Agnus | first2 = G. | last3 = Derycke | first3 = V. | last4 = Filoramo | first4 = A. | last5 = Bourgoin | first5 = J. -P. | last6 = Gamrat | first6 = C. | bibcode = 2010Nanot..21q5202Z| url = https://zenodo.org/record/3428659}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;humanbrainproject&amp;quot;&amp;gt;{{YouTube|id=6RoiZ90mGfw|title=The Human Brain Project SP 9: Neuromorphic Computing Platform}}&amp;lt;/ref&amp;gt; is the use of [[very-large-scale integration]] (VLSI) systems containing electronic [[analog circuit]]s to mimic neuro-biological architectures present in the nervous system. A neuromorphic computer/chip is any device that uses physical artificial neurons (made from silicon) to do computations.&amp;lt;ref&amp;gt;{{cite journal|last1=Mead|first1=Carver|title=Neuromorphic electronic systems|journal=Proceedings of the IEEE|date=1990|volume=78|issue=10|pages=1629–1636|doi=10.1109/5.58356|url=https://authors.library.caltech.edu/53090/1/00058356.pdf}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;:2&amp;quot; /&amp;gt; In recent times, the term ''neuromorphic'' has been used to describe analog, digital, mixed-mode analog/digital VLSI, and software systems that implement models of [[neural system]]s (for [[perception]], [[motor control]], or [[multisensory integration]]). The implementation of neuromorphic computing on the hardware level can be realized by oxide-based [[memristor]]s,&amp;lt;ref name=&amp;quot;Maan 1–13&amp;quot;&amp;gt;{{Cite journal|last1=Maan|first1=A. K.|last2=Jayadevi|first2=D. A.|last3=James|first3=A. P.|date=2016-01-01|title=A Survey of Memristive Threshold Logic Circuits|journal=IEEE Transactions on Neural Networks and Learning Systems|volume=PP|issue=99|pages=1734–1746|doi=10.1109/TNNLS.2016.2547842|pmid=27164608|issn=2162-237X|arxiv=1604.07121|bibcode=2016arXiv160407121M|s2cid=1798273}}&amp;lt;/ref&amp;gt; spintronic memories, threshold switches, and [[transistor]]s.&amp;lt;ref&amp;gt;{{Cite journal|title = Mott Memory and Neuromorphic Devices|journal = Proceedings of the IEEE|date = 2015-08-01|issn = 0018-9219|pages = 1289–1310|volume = 103|issue = 8|doi = 10.1109/JPROC.2015.2431914|first1 = You|last1 = Zhou|first2 = S.|last2 = Ramanathan|s2cid = 11347598|url = https://zenodo.org/record/895565}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;:2&amp;quot;&amp;gt;{{Cite document|title=Neuromorphic Circuits With Neural Modulation Enhancing the Information Content of Neural Signaling {{!}} International Conference on Neuromorphic Systems 2020|language=EN|doi=10.1145/3407197.3407204|s2cid=220794387}}&amp;lt;/ref&amp;gt; Training software-based neuromorphic systems of spiking neural networks can be achieved using error backpropagation, e.g., using [[Python (programming language)|Python]] based frameworks such as snnTorch,&amp;lt;ref&amp;gt;{{cite journal |last1=Eshraghian|first1=Jason K.|last2=Ward|first2=Max|last3=Neftci |first3=Emre|last4=Wang|first4=Xinxin|last5=Lenz|first5=Gregor|last6=Dwivedi|first6=Girish|last7=Bennamoun|first7=Mohammed|last8=Jeong|first8=Doo Seok|last9=Lu|first9=Wei D.|title=Training Spiking Neural Networks Using Lessons from Deep Learning |date=1 October 2021 |arxiv=2109.12894 }}&amp;lt;/ref&amp;gt; or using canonical learning rules from the biological learning literature, e.g., using BindsNet.&amp;lt;ref&amp;gt;{{Cite web | url=https://github.com/Hananel-Hazan/bindsnet | title=Hananel-Hazan/bindsnet: Simulation of spiking neural networks (SNNs) using PyTorch.| date=31 March 2020}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Neuromorphic engineering, also known as neuromorphic computing, is the use of very-large-scale integration (VLSI) systems containing electronic analog circuits to mimic neuro-biological architectures present in the nervous system. A neuromorphic computer/chip is any device that uses physical artificial neurons (made from silicon) to do computations. In recent times, the term neuromorphic has been used to describe analog, digital, mixed-mode analog/digital VLSI, and software systems that implement models of neural systems (for perception, motor control, or multisensory integration). The implementation of neuromorphic computing on the hardware level can be realized by oxide-based memristors, spintronic memories, threshold switches, and transistors. Training software-based neuromorphic systems of spiking neural networks can be achieved using error backpropagation, e.g., using Python based frameworks such as snnTorch, or using canonical learning rules from the biological learning literature, e.g., using BindsNet.&lt;br /&gt;
&lt;br /&gt;
神经形态工程，也称为神经形态计算，是使用包含电子模拟电路的超大规模集成电路系统来模拟神经系统中的神经生物结构。神经形态计算机/芯片是任何使用物理人造神经元(由硅制成)进行计算的设备。近年来，神经形态学这个术语被用来描述模拟、数字、混合模式模拟/数字 VLSI，以及实现神经系统模型的软件系统(感知、运动控制或多感官整合)。神经形态计算的硬件实现可以通过基于氧化物的记忆电阻、自旋电子存储器、阈值开关和晶体管来实现。训练基于软件的脉冲神经网络的神经形态系统可以通过错误反向传播来实现，例如，使用基于 Python 的框架，例如 snnTorch，或者使用来自生物学习文献的规范学习规则，例如，使用 BindsNet。&lt;br /&gt;
&lt;br /&gt;
A key aspect of neuromorphic engineering is understanding how the morphology of individual neurons, circuits, applications, and overall architectures creates desirable computations, affects how information is represented, influences robustness to damage, incorporates learning and development, adapts to local change (plasticity), and facilitates evolutionary change.&lt;br /&gt;
&lt;br /&gt;
A key aspect of neuromorphic engineering is understanding how the morphology of individual neurons, circuits, applications, and overall architectures creates desirable computations, affects how information is represented, influences robustness to damage, incorporates learning and development, adapts to local change (plasticity), and facilitates evolutionary change.&lt;br /&gt;
&lt;br /&gt;
神经形态工程的一个关键方面是理解单个神经元、电路、应用和整体结构的形态如何产生理想的计算，如何影响信息的表示，如何影响对损伤的鲁棒性，如何整合学习和发展，如何适应局部变化(可塑性) ，以及促进进化变化。&lt;br /&gt;
&lt;br /&gt;
Neuromorphic engineering is an interdisciplinary subject that takes inspiration from [[biology]], [[physics]], [[mathematics]], [[computer science]], and [[electronic engineering]]&amp;lt;ref name=&amp;quot;:2&amp;quot; /&amp;gt; to design artificial neural systems, such as [[Machine vision|vision systems]], head-eye systems, auditory processors, and autonomous robots, whose physical architecture and design principles are based on those of biological nervous systems.&amp;lt;ref&amp;gt;{{Cite journal | doi = 10.1155/2012/705483| title = Qualitative Functional Decomposition Analysis of Evolved Neuromorphic Flight Controllers| journal = Applied Computational Intelligence and Soft Computing| volume = 2012| pages = 1–21| year = 2012| last1 = Boddhu | first1 = S. K. | last2 = Gallagher | first2 = J. C. | doi-access = free}}&amp;lt;/ref&amp;gt; It was developed by [[Carver Mead]]&amp;lt;ref&amp;gt;{{cite web|title=carver mead website|last1=Mead|first1=Carver|url=http://www.carvermead.caltech.edu/index.html|website=carvermead}}&amp;lt;/ref&amp;gt; in the late 1980s.&lt;br /&gt;
&lt;br /&gt;
Neuromorphic engineering is an interdisciplinary subject that takes inspiration from biology, physics, mathematics, computer science, and electronic engineering to design artificial neural systems, such as vision systems, head-eye systems, auditory processors, and autonomous robots, whose physical architecture and design principles are based on those of biological nervous systems. It was developed by Carver Mead in the late 1980s.&lt;br /&gt;
&lt;br /&gt;
神经形态工程是以生物学、物理学、数学、计算机科学和电子工程为基础，设计人工神经系统，如视觉系统、头眼系统、听觉处理器和自主机器人的一门交叉学科。它是由卡弗 · 米德在20世纪80年代后期开发的。&lt;br /&gt;
&lt;br /&gt;
==Neurological inspiration==&lt;br /&gt;
Neuromorphic engineering is set apart by the inspiration it takes from what we know about the structure and operations of the [[brain]]. Neuromorphic engineering translates what we know about the brain's function into computer systems. Work has mostly focused on replicating the analog nature of [[biological computation]] and the role of [[neuron]]s in [[cognition]].&lt;br /&gt;
&lt;br /&gt;
Neuromorphic engineering is set apart by the inspiration it takes from what we know about the structure and operations of the brain. Neuromorphic engineering translates what we know about the brain's function into computer systems. Work has mostly focused on replicating the analog nature of biological computation and the role of neurons in cognition.&lt;br /&gt;
&lt;br /&gt;
神经学灵感工程学是从我们对大脑结构和运作的了解中获得灵感而形成的。神经形态工程学将我们对大脑功能的了解转化为计算机系统。工作主要集中在复制生物计算的模拟特性和神经元在认知中的作用。&lt;br /&gt;
&lt;br /&gt;
The biological processes of neurons and their [[synapse]]s are dauntingly complex, and thus very difficult to artificially simulate. A key feature of biological brains is that all of the processing in neurons use analog chemical signals. This makes it hard to replicate brains in computers because the current generation of computers is completely digital. However, the characteristics of these parts can be abstracted into mathematical functions that closely capture the essence of the neuron's operations.&lt;br /&gt;
&lt;br /&gt;
The biological processes of neurons and their synapses are dauntingly complex, and thus very difficult to artificially simulate. A key feature of biological brains is that all of the processing in neurons use analog chemical signals. This makes it hard to replicate brains in computers because the current generation of computers is completely digital. However, the characteristics of these parts can be abstracted into mathematical functions that closely capture the essence of the neuron's operations.&lt;br /&gt;
&lt;br /&gt;
神经元及其突触的生物学过程极其复杂，难以人工模拟。生物大脑的一个关键特征是，神经元的所有处理过程都使用模拟化学信号。这使得很难在计算机中复制大脑，因为目前的计算机是完全数字化的。然而，这些部分的特征可以抽象为数学函数，这些函数紧密地抓住了神经元运行的本质。&lt;br /&gt;
&lt;br /&gt;
The goal of neuromorphic computing is not to perfectly mimic the brain and all of its functions, but instead to extract what is known of its structure and operations to be used in a practical computing system. No neuromorphic system will claim nor attempt to reproduce every element of neurons and synapses, but all adhere to the idea that computation is highly [[distributed processing|distributed]] throughout a series of small computing elements analogous to a neuron. While this sentiment is standard, researchers chase this goal with different methods.&amp;lt;ref&amp;gt;{{Cite journal | doi = 10.1088/1741-2560/13/5/051001| title = Large-scale neuromorphic computing systems| journal = Journal of Neural Engineering| volume = 13| pages = 1–15| year = 2016| last1 = Furber | first1 = Steve| issue = 5| pmid = 27529195| bibcode = 2016JNEng..13e1001F| doi-access = free}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The goal of neuromorphic computing is not to perfectly mimic the brain and all of its functions, but instead to extract what is known of its structure and operations to be used in a practical computing system. No neuromorphic system will claim nor attempt to reproduce every element of neurons and synapses, but all adhere to the idea that computation is highly distributed throughout a series of small computing elements analogous to a neuron. While this sentiment is standard, researchers chase this goal with different methods.&lt;br /&gt;
&lt;br /&gt;
神经形态计算的目标不是完美地模拟大脑及其所有功能，而是提取已知的大脑结构和操作，用于实际的计算系统。没有哪个神经形态学系统会声称或试图复制神经元和突触的每一个元素，但所有人都坚持这样的观点，即计算是高度分布在一系列类似于神经元的小型计算元素中的。虽然这种情绪是标准的，但研究人员用不同的方法追求这一目标。&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
As early as 2006, researchers at [[Georgia Tech]] published a field programmable neural array.&amp;lt;ref&amp;gt;{{Cite book|title = A field programmable neural array|last1 = Farquhar|first1 = Ethan|date = May 2006|journal = IEEE International Symposium on Circuits and Systems|pages = 4114–4117|last2 = Hasler|first2 = Paul.|doi = 10.1109/ISCAS.2006.1693534|isbn = 978-0-7803-9389-9|s2cid = 206966013}}&amp;lt;/ref&amp;gt; This chip was the first in a line of increasingly complex arrays of floating gate transistors that allowed programmability of charge on the gates of [[MOSFET]]s to model the channel-ion characteristics of neurons in the brain and was one of the first cases of a silicon programmable array of neurons.&lt;br /&gt;
&lt;br /&gt;
As early as 2006, researchers at Georgia Tech published a field programmable neural array. This chip was the first in a line of increasingly complex arrays of floating gate transistors that allowed programmability of charge on the gates of MOSFETs to model the channel-ion characteristics of neurons in the brain and was one of the first cases of a silicon programmable array of neurons.&lt;br /&gt;
&lt;br /&gt;
早在2006年，佐治亚理工学院的研究人员就发表了现场可编程神经阵列。这种芯片是一系列越来越复杂的浮栅晶体管阵列中的第一个，这些晶体管可以在 mosfet 的栅极上编程来模拟大脑中神经元的通道离子特性，这也是硅可编程神经元阵列的首批案例之一。&lt;br /&gt;
&lt;br /&gt;
In November 2011, a group of [[MIT]] researchers created a computer chip that mimics the analog, ion-based communication in a synapse between two neurons using 400 transistors and standard [[CMOS]] manufacturing techniques.&amp;lt;ref&amp;gt;{{cite web|title=MIT creates &amp;quot;brain chip&amp;quot;|url=http://www.extremetech.com/extreme/105067-mit-creates-brain-chip|access-date=4 December 2012}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;Neuromorphic silicon paper&amp;quot;&amp;gt;{{cite journal|title=Neuromorphic silicon neurons and large-scale neural networks: challenges and opportunities|doi=10.3389/fnins.2011.00108|pmid=21991244|pmc=3181466|volume=5|pages=108|journal=Frontiers in Neuroscience|year=2011|last1=Poon|first1=Chi-Sang|last2=Zhou|first2=Kuan|doi-access=free}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In November 2011, a group of MIT researchers created a computer chip that mimics the analog, ion-based communication in a synapse between two neurons using 400 transistors and standard CMOS manufacturing techniques.&lt;br /&gt;
&lt;br /&gt;
2011年11月，麻省理工学院的一组研究人员发明了一种计算机芯片，该芯片使用400个晶体管和标准的 CMOS 制造技术，在两个神经元之间的突触中模拟模拟基于离子的通讯。&lt;br /&gt;
&lt;br /&gt;
In June 2012, [[spintronic]] researchers at [[Purdue University]] presented a paper on the design of a neuromorphic chip using [[Spin valve|lateral spin valve]]s and [[memristor]]s. They argue that the architecture works similarly to neurons and can therefore be used to test methods of reproducing the brain's processing. In addition, these chips are significantly more energy-efficient than conventional ones.&amp;lt;ref name=&amp;quot;Spin Devices Prop&amp;quot;&amp;gt;{{Cite arXiv|title=Proposal For Neuromorphic Hardware Using Spin Devices|eprint=1206.3227|last1=Sharad|first1=Mrigank|last2=Augustine|first2=Charles|last3=Panagopoulos|first3=Georgios|last4=Roy|first4=Kaushik|class=cond-mat.dis-nn|year=2012}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In June 2012, spintronic researchers at Purdue University presented a paper on the design of a neuromorphic chip using lateral spin valves and memristors. They argue that the architecture works similarly to neurons and can therefore be used to test methods of reproducing the brain's processing. In addition, these chips are significantly more energy-efficient than conventional ones.&lt;br /&gt;
&lt;br /&gt;
2012年6月，普渡大学的自旋电子学研究人员发表了一篇关于利用侧向自旋阀和记忆电阻器设计神经形态芯片的论文。他们认为，这种结构的工作原理与神经元相似，因此可以用来测试复制大脑处理过程的方法。此外，这些芯片明显比传统芯片更节能。&lt;br /&gt;
&lt;br /&gt;
Research at [[HP Labs]] on Mott memristors has shown that while they can be non-[[Volatile memory|volatile]], the volatile behavior exhibited at temperatures significantly below the [[phase transition]] temperature can be exploited to fabricate a [[neuristor]],&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; a biologically-inspired device that mimics behavior found in neurons.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;{{Cite journal | doi = 10.1038/nmat3510| pmid = 23241533| title = A scalable neuristor built with Mott memristors| journal = Nature Materials| volume = 12| issue = 2| pages = 114–7| year = 2012| last1 = Pickett | first1 = M. D. | last2 = Medeiros-Ribeiro | first2 = G. | last3 = Williams | first3 = R. S. | bibcode = 2013NatMa..12..114P| s2cid = 16271627| url = https://semanticscholar.org/paper/b6ba6f496ace2b947f111059663e76bb60e9efeb}}&amp;lt;/ref&amp;gt; In September 2013, they presented models and simulations that show how the spiking behavior of these neuristors can be used to form the components required for a [[Turing machine]].&amp;lt;ref&amp;gt;{{cite journal|doi=10.1088/0957-4484/24/38/384002|title=Phase transitions enable computational universality in neuristor-based cellular automata|author1=Matthew D Pickett|author2=R Stanley Williams|name-list-style=amp|date=September 2013|publisher=IOP Publishing Ltd|journal=Nanotechnology|volume=24|issue=38|pmid=23999059|bibcode=2013Nanot..24L4002P|at=384002}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Research at HP Labs on Mott memristors has shown that while they can be non-volatile, the volatile behavior exhibited at temperatures significantly below the phase transition temperature can be exploited to fabricate a neuristor, a biologically-inspired device that mimics behavior found in neurons. In September 2013, they presented models and simulations that show how the spiking behavior of these neuristors can be used to form the components required for a Turing machine.&lt;br /&gt;
&lt;br /&gt;
惠普实验室在莫特记忆电阻器上的研究表明，尽管它们可以是非挥发性的，但是在相变温度以下显示的挥发性行为可以被用来制造神经元电阻器，这是一种模仿神经元行为的生物设备。2013年9月，他们展示了模型和仿真，展示了这些神经元的尖峰行为是如何被用来形成图灵机所需的元件的。&lt;br /&gt;
&lt;br /&gt;
[[Neurogrid]], built by ''Brains in Silicon'' at [[Stanford University]],&amp;lt;ref&amp;gt;{{cite journal|last1=Boahen|first1=Kwabena|title=Neurogrid: A Mixed-Analog-Digital Multichip System for Large-Scale Neural Simulations|journal=Proceedings of the IEEE|date=24 April 2014|volume=102|issue=5|pages=699–716|doi=10.1109/JPROC.2014.2313565|s2cid=17176371}}&amp;lt;/ref&amp;gt; is an example of hardware designed using neuromorphic engineering principles. The circuit board is composed of 16 custom-designed chips, referred to as NeuroCores. Each NeuroCore's analog circuitry is designed to emulate neural elements for 65536 neurons, maximizing energy efficiency. The emulated neurons are connected using digital circuitry designed to maximize spiking throughput.&amp;lt;ref&amp;gt;{{cite journal|doi=10.1038/503022a|pmid = 24201264|title = Neuroelectronics: Smart connections|journal = Nature|volume = 503|issue = 7474|pages = 22–4|year = 2013|last1 = Waldrop|first1 = M. Mitchell|bibcode = 2013Natur.503...22W|doi-access = free}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite journal|doi=10.1109/JPROC.2014.2313565|title = Neurogrid: A Mixed-Analog-Digital Multichip System for Large-Scale Neural Simulations|journal = Proceedings of the IEEE|volume = 102|issue = 5|pages = 699–716|year = 2014|last1 = Benjamin|first1 = Ben Varkey|last2 = Peiran Gao|last3 = McQuinn|first3 = Emmett|last4 = Choudhary|first4 = Swadesh|last5 = Chandrasekaran|first5 = Anand R.|last6 = Bussat|first6 = Jean-Marie|last7 = Alvarez-Icaza|first7 = Rodrigo|last8 = Arthur|first8 = John V.|last9 = Merolla|first9 = Paul A.|last10 = Boahen|first10 = Kwabena|s2cid = 17176371}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Neurogrid, built by Brains in Silicon at Stanford University, is an example of hardware designed using neuromorphic engineering principles. The circuit board is composed of 16 custom-designed chips, referred to as NeuroCores. Each NeuroCore's analog circuitry is designed to emulate neural elements for 65536 neurons, maximizing energy efficiency. The emulated neurons are connected using digital circuitry designed to maximize spiking throughput.&lt;br /&gt;
&lt;br /&gt;
神经网格是由斯坦福大学硅谷大脑公司建立的，是一个使用神经形态工程原理设计硬件的例子。该电路板由16个定制设计的芯片组成，称为 NeuroCores。每个 NeuroCore 的模拟电路被设计为模拟65536个神经元的神经元元件，最大限度地提高能量效率。模拟的神经元通过设计的数字电路连接，以最大化脉冲吞吐量。&lt;br /&gt;
&lt;br /&gt;
A research project with implications for neuromorphic engineering is the [[Human Brain Project]] that is attempting to simulate a complete human brain in a supercomputer using biological data. It is made up of a group of researchers in neuroscience, medicine, and computing.&amp;lt;ref&amp;gt;{{cite web|title=Involved Organizations|url=http://www.humanbrainproject.eu/partners.html|access-date=22 February 2013|url-status=dead|archive-url=https://web.archive.org/web/20130302142627/http://www.humanbrainproject.eu/partners.html|archive-date=2 March 2013}}&amp;lt;/ref&amp;gt; [[Henry Markram]], the project's co-director, has stated that the project proposes to establish a foundation to explore and understand the brain and its diseases, and to use that knowledge to build new computing technologies. The three primary goals of the project are to better understand how the pieces of the brain fit and work together, to understand how to objectively diagnose and treat brain diseases, and to use the understanding of the human brain to develop neuromorphic computers. That the simulation of a complete human brain will require a supercomputer a thousand times more powerful than today's encourages the current focus on neuromorphic computers.&amp;lt;ref&amp;gt;{{cite web|title=Human Brain Project|url=http://www.humanbrainproject.eu|access-date=22 February 2013}}&amp;lt;/ref&amp;gt; $1.3 billion has been allocated to the project by The [[European Commission]].&amp;lt;ref&amp;gt;{{cite web|title=The Human Brain Project and Recruiting More Cyberwarriors|url=http://www.marketplace.org/topics/tech/human-brain-project-and-recruiting-more-cyberwarriors|access-date=22 February 2013|date=January 29, 2013}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A research project with implications for neuromorphic engineering is the Human Brain Project that is attempting to simulate a complete human brain in a supercomputer using biological data. It is made up of a group of researchers in neuroscience, medicine, and computing. Henry Markram, the project's co-director, has stated that the project proposes to establish a foundation to explore and understand the brain and its diseases, and to use that knowledge to build new computing technologies. The three primary goals of the project are to better understand how the pieces of the brain fit and work together, to understand how to objectively diagnose and treat brain diseases, and to use the understanding of the human brain to develop neuromorphic computers. That the simulation of a complete human brain will require a supercomputer a thousand times more powerful than today's encourages the current focus on neuromorphic computers. $1.3 billion has been allocated to the project by The European Commission.&lt;br /&gt;
&lt;br /&gt;
一个对神经形态工程有影响的研究项目是人脑项目，它试图用生物数据在超级计算机中模拟完整的人脑。它由一群神经科学、医学和计算机科学的研究人员组成。该项目的联合主管亨利•马克拉姆(Henry Markram)表示，该项目提议建立一个基础，以探索和了解大脑及其疾病，并利用这些知识构建新的计算机技术。这个项目的三个主要目标是: 更好地理解大脑的各个部分是如何相互匹配和协同工作的; 理解如何客观地诊断和治疗脑部疾病; 以及利用对人类大脑的理解来开发神经形态计算机。模拟一个完整的人类大脑需要一台比现在强大一千倍的超级计算机，这鼓励了当前对神经形态计算机的关注。欧洲委员会已经拨款13亿美元用于这个项目。&lt;br /&gt;
&lt;br /&gt;
Other research with implications for neuromorphic engineering involves the [[BRAIN Initiative]]&amp;lt;ref name=&amp;quot;economist&amp;quot;&amp;gt;[https://www.economist.com/news/science-and-technology/21582495-computers-will-help-people-understand-brains-better-and-understanding-brains Neuromorphic computing: The machine of a new soul], The Economist, 2013-08-03&amp;lt;/ref&amp;gt; and the [[TrueNorth]] chip from [[IBM]].&amp;lt;ref&amp;gt;{{cite journal|last1=Modha|first1=Dharmendra|title=A million spiking-neuron integrated circuit with a scalable communication network and interface|journal=Science|date=Aug 2014|volume=345|issue=6197|pages=668–673|doi=10.1126/science.1254642|pmid=25104385|bibcode=2014Sci...345..668M|s2cid=12706847}}&amp;lt;/ref&amp;gt; Neuromorphic devices have also been demonstrated using nanocrystals, nanowires, and conducting polymers.&amp;lt;ref&amp;gt;{{Cite web|url=http://jessamynfairfield.com/wp-content/uploads/2017/03/PWMar17Fairfield.pdf|title=Smarter Machines|last=Fairfield|first=Jessamyn|date=March 1, 2017}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Other research with implications for neuromorphic engineering involves the BRAIN InitiativeNeuromorphic computing: The machine of a new soul, The Economist, 2013-08-03 and the TrueNorth chip from IBM. Neuromorphic devices have also been demonstrated using nanocrystals, nanowires, and conducting polymers.&lt;br /&gt;
&lt;br /&gt;
其他与神经形态工程有关的研究还包括 BRAIN initiativity/euromorphic computing: The machine of a new soul，The Economist，2013-08-03 and The TrueNorth chip from IBM。神经形态学设备也已经被证明使用纳米晶体、纳米线和导电聚合物。&lt;br /&gt;
&lt;br /&gt;
[[Intel]] unveiled its neuromorphic research chip, called “[[Intel Loihi|Loihi]]”, in October 2017. The chip uses an asynchronous [[spiking neural network]] (SNN) to implement adaptive self-modifying event-driven fine-grained parallel computations used to implement learning and inference with high efficiency.&amp;lt;ref&amp;gt;{{cite journal |last1=Davies |first1=Mike |title=Loihi: A Neuromorphic Manycore Processor with On-Chip Learning |journal=IEEE Micro |date=January 16, 2018 |volume=38 |issue=1 |pages=82–99 |display-authors=etal|doi=10.1109/MM.2018.112130359 |s2cid=3608458 }}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;Morris2017&amp;quot;&amp;gt;{{cite web |last1=Morris |first1=John |title=Why Intel built a neuromorphic chip |url=https://www.zdnet.com/article/why-intel-built-a-neuromorphic-chip/ |website=ZDNet |access-date=17 August 2018 |language=en}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Intel unveiled its neuromorphic research chip, called “Loihi”, in October 2017. The chip uses an asynchronous spiking neural network (SNN) to implement adaptive self-modifying event-driven fine-grained parallel computations used to implement learning and inference with high efficiency.&lt;br /&gt;
&lt;br /&gt;
2017年10月，英特尔公布了其神经形态研究芯片“ Loihi”。该芯片采用异步脉冲神经网络(SNN)实现自适应自修改事件驱动的细粒度并行计算，实现了高效的学习和推理。&lt;br /&gt;
&lt;br /&gt;
[[IMEC]], a Belgium-based nanoelectronics research center, demonstrated the world's first self-learning neuromorphic chip. The brain-inspired chip, based on OxRAM technology, has the capability of self-learning and has been demonstrated to have the ability to compose music.&amp;lt;ref&amp;gt;{{cite web |title=Imec demonstrates self-learning neuromorphic chip that composes music |url=https://www.imec-int.com/en/articles/imec-demonstrates-self-learning-neuromorphic-chip-that-composes-music |website=IMEC International |access-date=1 October 2019}}&amp;lt;/ref&amp;gt; IMEC released the 30-second tune composed by the prototype. The chip was sequentially loaded with songs in the same time signature and style. The songs were old Belgian and French flute minuets, from which the chip learned the rules at play and then applied them.&amp;lt;ref&amp;gt;{{cite web|last1=Bourzac|first1=Katherine|title=A Neuromorphic Chip That Makes Music|url=https://spectrum.ieee.org/a-neuromorphic-chip-that-makes-music|url-status=live|access-date=1 October 2019|website=IEEE Spectrum|date=May 23, 2017}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
IMEC, a Belgium-based nanoelectronics research center, demonstrated the world's first self-learning neuromorphic chip. The brain-inspired chip, based on OxRAM technology, has the capability of self-learning and has been demonstrated to have the ability to compose music. IMEC released the 30-second tune composed by the prototype. The chip was sequentially loaded with songs in the same time signature and style. The songs were old Belgian and French flute minuets, from which the chip learned the rules at play and then applied them.&lt;br /&gt;
&lt;br /&gt;
比利时的一个纳米电子学研究中心 IMEC 展示了世界上第一个自学习神经形态芯片。这种基于 OxRAM 技术的大脑启发芯片具有自学习能力，并已被证明具有创作音乐的能力。IMEC 发布了由原型机谱写的30秒曲调。芯片按顺序加载同时签名和风格的歌曲。歌曲是古老的比利时和法国长笛小步舞曲，筹码从中学习游戏规则，然后应用它们。&lt;br /&gt;
&lt;br /&gt;
[[Blue Brain Project|The Blue Brain Project]], led by Henry Markram, aims to build biologically detailed digital reconstructions and simulations of the mouse brain. The Blue Brain Project has created in silico models of rodent brains, while attempting to replicate as many details about its biology as possible. The supercomputer-based simulations offer new perspectives on understanding the structure and functions of the brain.&lt;br /&gt;
&lt;br /&gt;
The Blue Brain Project, led by Henry Markram, aims to build biologically detailed digital reconstructions and simulations of the mouse brain. The Blue Brain Project has created in silico models of rodent brains, while attempting to replicate as many details about its biology as possible. The supercomputer-based simulations offer new perspectives on understanding the structure and functions of the brain.&lt;br /&gt;
&lt;br /&gt;
由亨利 · 马克拉姆领导的蓝脑计划旨在建立小鼠大脑的生物细节数字重建和模拟。蓝色大脑项目已经在啮齿动物大脑的电子模型中创建，同时试图尽可能多地复制其生物学细节。基于超级计算机的模拟为理解大脑的结构和功能提供了新的视角。&lt;br /&gt;
&lt;br /&gt;
The European Union funded a series of projects at the University of Heidelberg, which led to the development of &lt;br /&gt;
[[BrainScaleS]] (brain-inspired multiscale computation in neuromorphic hybrid systems), a hybrid analog [[neuromorphic]] supercomputer located at Heidelberg University, Germany. It was developed as part of the [[Human Brain Project]] neuromorphic computing platform and is the complement to the [[SpiNNaker]] supercomputer (which is based on digital technology). The architecture used in BrainScaleS mimics biological neurons and their connections on a physical level; additionally, since the components are made of silicon, these model neurons operate on average 864 times (24 hours of real time is 100 seconds in the machine simulation) that of their biological counterparts.&amp;lt;ref&amp;gt;{{Cite web|date=2016-03-21|title=Beyond von Neumann, Neuromorphic Computing Steadily Advances|url=https://www.hpcwire.com/2016/03/21/lacking-breakthrough-neuromorphic-computing-steadily-advance/|access-date=2021-10-08|website=HPCwire|language=en-US}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The European Union funded a series of projects at the University of Heidelberg, which led to the development of &lt;br /&gt;
BrainScaleS (brain-inspired multiscale computation in neuromorphic hybrid systems), a hybrid analog neuromorphic supercomputer located at Heidelberg University, Germany. It was developed as part of the Human Brain Project neuromorphic computing platform and is the complement to the SpiNNaker supercomputer (which is based on digital technology). The architecture used in BrainScaleS mimics biological neurons and their connections on a physical level; additionally, since the components are made of silicon, these model neurons operate on average 864 times (24 hours of real time is 100 seconds in the machine simulation) that of their biological counterparts.&lt;br /&gt;
&lt;br /&gt;
欧盟资助了海德堡大学的一系列项目，这些项目导致了 BrainScaleS (神经形态混合系统中受大脑启发的多尺度计算)的发展，这是一台位于德国海德堡大学的混合模拟神经形态超级计算机。它是作为人脑计划神经形态计算平台的一部分而开发的，是 SpiNNaker 超级计算机(基于数字技术)的补充。大脑尺度中使用的体系结构模拟了生物神经元及其在物理层面上的连接; 此外，由于这些组件是由硅制成的，这些模型神经元平均运行864倍(在机器模拟中，24小时的实时时间是100秒)。&lt;br /&gt;
&lt;br /&gt;
===Neuromorphic sensors===&lt;br /&gt;
The concept of neuromorphic systems can be extended to sensors (not just to computation). An example of this applied to detecting [[light]] is the [[retinomorphic sensor]] or, when employed in an array, the [[event camera]].&lt;br /&gt;
&lt;br /&gt;
The concept of neuromorphic systems can be extended to sensors (not just to computation). An example of this applied to detecting light is the retinomorphic sensor or, when employed in an array, the event camera.&lt;br /&gt;
&lt;br /&gt;
= = = 神经形态传感器 = = = 神经形态系统的概念可以扩展到传感器(而不仅仅是计算)。用于检测光线的一个例子是视网膜变形传感器，或者在阵列中使用的事件摄像机。&lt;br /&gt;
&lt;br /&gt;
== Ethical considerations ==&lt;br /&gt;
While the interdisciplinary concept of neuromorphic engineering is relatively new, many of the same ethical considerations apply to neuromorphic systems as apply to [[human-like machines]] and [[artificial intelligence]] in general. However, the fact that neuromorphic systems are designed to mimic a [[human brain]] gives rise to unique ethical questions surrounding their usage.&lt;br /&gt;
&lt;br /&gt;
While the interdisciplinary concept of neuromorphic engineering is relatively new, many of the same ethical considerations apply to neuromorphic systems as apply to human-like machines and artificial intelligence in general. However, the fact that neuromorphic systems are designed to mimic a human brain gives rise to unique ethical questions surrounding their usage.&lt;br /&gt;
&lt;br /&gt;
虽然神经形态工程的跨学科概念相对较新，但许多同样的伦理考虑适用于神经形态系统，就像适用于类人机器和一般人工智能一样。然而，神经形态系统是为了模仿人类大脑而设计的这一事实引起了围绕其使用的独特的伦理问题。&lt;br /&gt;
&lt;br /&gt;
However, the practical debate is that neuromorphic hardware as well as artificial &amp;quot;neural networks&amp;quot; are immensely simplified models of how the brain operates or processes information at a much lower [[complex system|complexity in terms of size and functional technology]] and a much more regular structure in terms of [[brain connectivity|connectivity]]. Comparing [[neuromorphic chip]]s to the brain is a very crude comparison similar to comparing a plane to a bird just because they both have wings and a tail. The fact is that neural cognitive systems are many orders of magnitude more [[Energy efficiency (physics)|energy-]] and compute-efficient than current state-of-the-art AI and neuromorphic engineering is an attempt to narrow this gap by inspiring from the brain's mechanism just like many engineering designs have [[bioengineering|bio-inspired features]].&lt;br /&gt;
&lt;br /&gt;
However, the practical debate is that neuromorphic hardware as well as artificial &amp;quot;neural networks&amp;quot; are immensely simplified models of how the brain operates or processes information at a much lower complexity in terms of size and functional technology and a much more regular structure in terms of connectivity. Comparing neuromorphic chips to the brain is a very crude comparison similar to comparing a plane to a bird just because they both have wings and a tail. The fact is that neural cognitive systems are many orders of magnitude more energy- and compute-efficient than current state-of-the-art AI and neuromorphic engineering is an attempt to narrow this gap by inspiring from the brain's mechanism just like many engineering designs have bio-inspired features.&lt;br /&gt;
&lt;br /&gt;
然而，实际上的争论是，神经形态硬件和人工“神经网络”是大脑如何运作或处理信息的极其简化的模型，在大小和功能技术方面的复杂性要低得多，在连接方面的结构则更加规则。将神经形态芯片与大脑进行比较是一种非常粗糙的比较，类似于仅仅因为一架飞机有翅膀和一条尾巴就将它与一只鸟进行比较。事实上，神经认知系统比当前最先进的人工智能具有更多的能量和计算效率，而神经形态工程是一种通过从大脑机制中激发灵感来缩小这种差距的尝试，就像许多工程设计具有生物启发的特征一样。数量级。&lt;br /&gt;
&lt;br /&gt;
=== Democratic concerns ===&lt;br /&gt;
Significant ethical limitations may be placed on neuromorphic engineering due to public perception.&amp;lt;ref&amp;gt;{{Cite report|url=https://ai100.stanford.edu/sites/g/files/sbiybj9861/f/ai_100_report_0831fnl.pdf|title=Artificial Intelligence and Life in 2030|author=2015 Study Panel|date=September 2016|work=One Hundred Year Study on Artificial Intelligence (AI100)|publisher=Stanford University}}&amp;lt;/ref&amp;gt; Special [[Eurobarometer]] 382: Public Attitudes Towards Robots, a survey conducted by the European Commission, found that 60% of [[European Union]] citizens wanted a ban of robots in the care of children, the elderly, or the disabled. Furthermore, 34% were in favor of a ban on robots in education, 27% in healthcare, and 20% in leisure. The European Commission classifies these areas as notably “human.” The report cites increased public concern with robots that are able to mimic or replicate human functions. Neuromorphic engineering, by definition, is designed to replicate the function of the human brain.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;{{Cite web|url=http://ec.europa.eu/commfrontoffice/publicopinion/archives/ebs/ebs_382_en.pdf|title=Special Eurobarometer 382: Public Attitudes Towards Robots|last=European Commission|date=September 2012|website=European Commission}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Significant ethical limitations may be placed on neuromorphic engineering due to public perception. Special Eurobarometer 382: Public Attitudes Towards Robots, a survey conducted by the European Commission, found that 60% of European Union citizens wanted a ban of robots in the care of children, the elderly, or the disabled. Furthermore, 34% were in favor of a ban on robots in education, 27% in healthcare, and 20% in leisure. The European Commission classifies these areas as notably “human.” The report cites increased public concern with robots that are able to mimic or replicate human functions. Neuromorphic engineering, by definition, is designed to replicate the function of the human brain.&lt;br /&gt;
&lt;br /&gt;
由于公众的认知，神经形态工程学可能会受到严重的伦理限制。欧盟委员会进行的一项调查发现，60% 的欧盟公民希望禁止照顾儿童、老人或残疾人的机器人。此外，34% 的人支持禁止机器人用于教育，27% 的人支持医疗保健，20% 的人支持休闲。欧盟委员会将这些地区明显归类为“人类”报告指出，公众越来越关注能够模仿或复制人类功能的机器人。神经形态工程，顾名思义，是为了复制人脑的功能而设计的。&lt;br /&gt;
&lt;br /&gt;
The democratic concerns surrounding neuromorphic engineering are likely to become even more profound in the future. The European Commission found that EU citizens between the ages of 15 and 24 are more likely to think of robots as human-like (as opposed to instrument-like) than EU citizens over the age of 55. When presented an image of a robot that had been defined as human-like, 75% of EU citizens aged 15–24 said it corresponded with the idea they had of robots while only 57% of EU citizens over the age of 55 responded the same way. The human-like nature of neuromorphic systems, therefore, could place them in the categories of robots many EU citizens would like to see banned in the future.&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The democratic concerns surrounding neuromorphic engineering are likely to become even more profound in the future. The European Commission found that EU citizens between the ages of 15 and 24 are more likely to think of robots as human-like (as opposed to instrument-like) than EU citizens over the age of 55. When presented an image of a robot that had been defined as human-like, 75% of EU citizens aged 15–24 said it corresponded with the idea they had of robots while only 57% of EU citizens over the age of 55 responded the same way. The human-like nature of neuromorphic systems, therefore, could place them in the categories of robots many EU citizens would like to see banned in the future.&lt;br /&gt;
&lt;br /&gt;
围绕神经形态工程的民主关注可能在未来变得更加深刻。欧盟委员会(European Commission)发现，15至24岁的欧盟公民比55岁以上的欧盟公民更有可能认为机器人像人(而不是像仪器)。当看到一张被定义为“类人”的机器人图片时，年龄在15岁至24岁之间的欧盟公民中有75% 的人表示，这与他们对机器人的想法相符，而55岁以上的欧盟公民中只有57% 的人有同样的反应。因此，类似人类的神经形态系统，可以把它们归入许多欧盟公民希望在未来禁止使用的机器人类别。&lt;br /&gt;
&lt;br /&gt;
=== Personhood ===&lt;br /&gt;
As neuromorphic systems have become increasingly advanced, some scholars{{who|date=August 2021}} have advocated for granting [[personhood]] rights to these systems. If the brain is what grants humans their personhood, to what extent does a neuromorphic system have to mimic the human brain to be granted personhood rights? Critics of technology development in the [[Human Brain Project]], which aims to advance brain-inspired computing, have argued that advancement in neuromorphic computing could lead to machine consciousness or personhood.&amp;lt;ref&amp;gt;{{Cite journal|last=Aicardi|first=Christine|date=September 2018|title=Accompanying technology development in the Human Brain Project: From foresight to ethics management|journal=Futures|volume=102|pages=114–124|doi=10.1016/j.futures.2018.01.005|doi-access=free}}&amp;lt;/ref&amp;gt; If these systems are to be treated as people, critics argue, then many tasks humans perform using neuromorphic systems, including the act of termination of neuromorphic systems, may be morally impermissible as these acts would violate the autonomy of the neuromorphic systems.&amp;lt;ref&amp;gt;{{Cite journal|last=Lim|first=Daniel|date=2014-06-01|title=Brain simulation and personhood: a concern with the Human Brain Project|journal=Ethics and Information Technology|language=en|volume=16|issue=2|pages=77–89|doi=10.1007/s10676-013-9330-5|s2cid=17415814|issn=1572-8439}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As neuromorphic systems have become increasingly advanced, some scholars have advocated for granting personhood rights to these systems. If the brain is what grants humans their personhood, to what extent does a neuromorphic system have to mimic the human brain to be granted personhood rights? Critics of technology development in the Human Brain Project, which aims to advance brain-inspired computing, have argued that advancement in neuromorphic computing could lead to machine consciousness or personhood. If these systems are to be treated as people, critics argue, then many tasks humans perform using neuromorphic systems, including the act of termination of neuromorphic systems, may be morally impermissible as these acts would violate the autonomy of the neuromorphic systems.&lt;br /&gt;
&lt;br /&gt;
= = = 人格 = = 随着神经形态系统的日益发展，一些学者主张赋予这些系统人格权。如果是大脑赋予了人类人格，那么神经形态系统在多大程度上必须模仿人类大脑才能被赋予人格权利？“人脑计划”旨在推进以大脑为灵感的计算机技术发展，该计划的批评者认为，神经形态计算机技术的进步可能导致机器意识或人格的形成。批评家认为，如果这些系统被当作人来对待，那么人类使用神经形态系统执行的许多任务，包括终止神经形态系统的行为，可能在道德上是不允许的，因为这些行为将违反神经形态系统的自主性。&lt;br /&gt;
&lt;br /&gt;
==Dual use (military applications) ==&lt;br /&gt;
The [[Joint Artificial Intelligence Center]], a branch of the U.S. military, is a center dedicated to the procurement and implementation of AI software and neuromorphic hardware for combat use. Specific applications include smart headsets/goggles and robots. JAIC intends to rely heavily on neuromorphic technology to connect &amp;quot;every fighter every shooter&amp;quot; within a network of neuromorphic-enabled units.&lt;br /&gt;
&lt;br /&gt;
The Joint Artificial Intelligence Center, a branch of the U.S. military, is a center dedicated to the procurement and implementation of AI software and neuromorphic hardware for combat use. Specific applications include smart headsets/goggles and robots. JAIC intends to rely heavily on neuromorphic technology to connect &amp;quot;every fighter every shooter&amp;quot; within a network of neuromorphic-enabled units.&lt;br /&gt;
&lt;br /&gt;
军民两用联合人工智能中心是美国军队的一个分支，专门从事采购和实施用于战斗的人工智能软件和神经形态硬件。具体应用包括智能耳机/护目镜和机器人。JAIC 打算严重依赖神经形态技术来连接神经形态单位网络中的“每个战士每个射手”。&lt;br /&gt;
&lt;br /&gt;
== Legal considerations ==&lt;br /&gt;
Skeptics have argued that there is no way to apply the electronic personhood, the concept of personhood that would apply to neuromorphic technology, legally. In a letter signed by 285 experts in law, robotics, medicine, and ethics opposing a European Commission proposal to recognize “smart robots” as legal persons, the authors write, “A legal status for a robot can’t derive from the [[Natural person|Natural Person]] model, since the robot would then hold [[human rights]], such as the right to dignity, the right to its integrity, the right to remuneration or the right to citizenship, thus directly confronting the Human rights. This would be in contradiction with the [[Charter of Fundamental Rights of the European Union]] and the [[Convention for the Protection of Human Rights and Fundamental Freedoms]].”&amp;lt;ref&amp;gt;{{Cite web|url=http://www.robotics-openletter.eu/|title=Robotics Openletter {{!}} Open letter to the European Commission|language=fr-FR|access-date=2019-05-10}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Skeptics have argued that there is no way to apply the electronic personhood, the concept of personhood that would apply to neuromorphic technology, legally. In a letter signed by 285 experts in law, robotics, medicine, and ethics opposing a European Commission proposal to recognize “smart robots” as legal persons, the authors write, “A legal status for a robot can’t derive from the Natural Person model, since the robot would then hold human rights, such as the right to dignity, the right to its integrity, the right to remuneration or the right to citizenship, thus directly confronting the Human rights. This would be in contradiction with the Charter of Fundamental Rights of the European Union and the Convention for the Protection of Human Rights and Fundamental Freedoms.”&lt;br /&gt;
&lt;br /&gt;
= = 法律方面的考虑 = = 怀疑论者认为，在法律上没有办法应用电子人格，这个人格概念将适用于神经形态技术。在一封由285名法律、机器人、医学和伦理学专家签名的信中，作者们反对欧盟委员会承认“智能机器人”为法人的提议，他们写道，“机器人的法律地位不能从自然人模型中推导出来，因为机器人将拥有人权，如尊严权、完整权、报酬权或公民权，从而直接面对人权。这将有悖于《欧洲联盟基本权利宪章和《保护人权和基本自由公约》。”&lt;br /&gt;
&lt;br /&gt;
=== Ownership and property rights ===&lt;br /&gt;
There is significant legal debate around property rights and artificial intelligence. In ''Acohs Pty Ltd v. Ucorp Pty Ltd'', Justice Christopher Jessup of the [[Federal Court of Australia]] found that the [[source code]] for [[Material safety data sheets|Material Safety Data Sheets]] could not be [[Copyright law of Australia|copyrighted]] as it was generated by a [[software interface]] rather than a human author.&amp;lt;ref&amp;gt;{{Cite web|url=http://www.lavan.com.au/advice/intellectual_property_technology/copyright_in_source_code_and_digital_products|title=Copyright in source code and digital products|last=Lavan|website=Lavan|language=en|access-date=2019-05-10}}&amp;lt;/ref&amp;gt; The same question may apply to neuromorphic systems: if a neuromorphic system successfully mimics a human brain and produces a piece of original work, who, if anyone, should be able to claim ownership of the work?&amp;lt;ref&amp;gt;{{cite journal |last1=Eshraghian|first1=Jason K. |title=Human Ownership of Artificial Creativity |journal=Nature Machine Intelligence |date=9 March 2020 |volume=2 |pages=157–160  |doi=10.1038/s42256-020-0161-x}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There is significant legal debate around property rights and artificial intelligence. In Acohs Pty Ltd v. Ucorp Pty Ltd, Justice Christopher Jessup of the Federal Court of Australia found that the source code for Material Safety Data Sheets could not be copyrighted as it was generated by a software interface rather than a human author. The same question may apply to neuromorphic systems: if a neuromorphic system successfully mimics a human brain and produces a piece of original work, who, if anyone, should be able to claim ownership of the work?&lt;br /&gt;
&lt;br /&gt;
= = = 所有权和财产权 = = = 围绕财产权和人工智能有着重大的法律争论。在 Acohs Pty Ltd 诉 Ucorp Pty Ltd 一案中，澳大利亚联邦法院的克里斯托弗 · 杰瑟普法官发现，材料安全数据表的源代码不能受版权保护，因为它是由软件界面而不是人工作者生成的。同样的问题可能也适用于神经形态系统: 如果一个神经形态系统成功地模仿了人类的大脑并产生了一部原创作品，那么谁，如果有人，应该声称拥有这部作品的所有权？&lt;br /&gt;
&lt;br /&gt;
==Neuromemristive systems==&lt;br /&gt;
Neuromemristive systems are a subclass of neuromorphic computing systems that focus on the use of [[memristors]] to implement [[neuroplasticity]]. While neuromorphic engineering focuses on mimicking biological behavior, neuromemristive systems focus on abstraction.&amp;lt;ref&amp;gt;{{Cite web|url=https://digitalops.sandia.gov/Mediasite/Play/a10cf6ceb55d47608bb8326dd00e46611d|title=002.08 N.I.C.E. Workshop 2014: Towards Intelligent Computing with Neuromemristive Circuits and Systems - Feb. 2014|website=digitalops.sandia.gov|access-date=2019-08-26}}&amp;lt;/ref&amp;gt; For example, a neuromemristive system may replace the details of a [[Cerebral cortex|cortical]] microcircuit's behavior with an abstract neural network model.&amp;lt;ref&amp;gt;C. Merkel and D. Kudithipudi, &amp;quot;Neuromemristive extreme learning machines for pattern classification,&amp;quot; ISVLSI, 2014.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Neuromemristive systems are a subclass of neuromorphic computing systems that focus on the use of memristors to implement neuroplasticity. While neuromorphic engineering focuses on mimicking biological behavior, neuromemristive systems focus on abstraction. For example, a neuromemristive system may replace the details of a cortical microcircuit's behavior with an abstract neural network model.C. Merkel and D. Kudithipudi, &amp;quot;Neuromemristive extreme learning machines for pattern classification,&amp;quot; ISVLSI, 2014.&lt;br /&gt;
&lt;br /&gt;
神经记忆电阻系统是神经形态计算系统的一个亚类，主要研究利用记忆电阻器实现神经可塑性。神经形态工程的重点是模拟生物行为，而神经记忆电阻系统的重点是提取。例如，一个神经记忆系统可以用一个抽象的神经网络模型取代皮层微电路的行为细节。默克尔和 d. Kudithipudi，“用于模式分类的神经记忆极端学习机器”，ISVLSI，2014。&lt;br /&gt;
&lt;br /&gt;
There exist several neuron inspired threshold logic functions&amp;lt;ref name=&amp;quot;Maan 1–13&amp;quot;/&amp;gt; implemented with memristors that have applications in high level [[pattern recognition]] applications. Some of the applications reported recently include [[speech recognition]],&amp;lt;ref&amp;gt;{{Cite journal|title = Memristor pattern recogniser: isolated speech word recognition|journal = Electronics Letters|pages = 1370–1372|volume = 51|issue = 17|doi = 10.1049/el.2015.1428|first1 = A.K.|last1 = Maan|first2 = A.P.|last2 = James|first3 = S.|last3 = Dimitrijev|year = 2015|bibcode = 2015ElL....51.1370M|hdl = 10072/140989|s2cid = 61454815|url = https://semanticscholar.org/paper/48d3ab11ec6e213b62f11eedcfb7b7febb058674|hdl-access = free}}&amp;lt;/ref&amp;gt; [[face recognition]]&amp;lt;ref&amp;gt;{{Cite journal|title = Memristive Threshold Logic Face Recognition|journal = Procedia Computer Science|date = 2014-01-01|pages = 98–103|volume = 41|series = 5th Annual International Conference on Biologically Inspired Cognitive Architectures, 2014 BICA|doi = 10.1016/j.procs.2014.11.090|first1 = Akshay Kumar|last1 = Maan|first2 = Dinesh S.|last2 = Kumar|first3 = Alex Pappachen|last3 = James|doi-access = free}}&amp;lt;/ref&amp;gt; and [[object recognition]].&amp;lt;ref&amp;gt;{{Cite journal|title = Memristive Threshold Logic Circuit Design of Fast Moving Object Detection|journal = IEEE Transactions on Very Large Scale Integration (VLSI) Systems|date = 2015-10-01|issn = 1063-8210|pages = 2337–2341|volume = 23|issue = 10|doi = 10.1109/TVLSI.2014.2359801|first1 = A.K.|last1 = Maan|first2 = D.S.|last2 = Kumar|first3 = S.|last3 = Sugathan|first4 = A.P.|last4 = James|arxiv = 1410.1267|s2cid = 9647290}}&amp;lt;/ref&amp;gt; They also find applications in replacing conventional digital logic gates.&amp;lt;ref&amp;gt;{{Cite journal|title = Resistive Threshold Logic|journal = IEEE Transactions on Very Large Scale Integration (VLSI) Systems|date = 2014-01-01|issn = 1063-8210|pages = 190–195|volume = 22|issue = 1|doi = 10.1109/TVLSI.2012.2232946|first1 = A.P.|last1 = James|first2 = L.R.V.J.|last2 = Francis|first3 = D.S.|last3 = Kumar|arxiv = 1308.0090|s2cid = 7357110}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Cite journal|title = Threshold Logic Computing: Memristive-CMOS Circuits for Fast Fourier Transform and Vedic Multiplication|journal = IEEE Transactions on Very Large Scale Integration (VLSI) Systems|date = 2015-11-01|issn = 1063-8210|pages = 2690–2694|volume = 23|issue = 11|doi = 10.1109/TVLSI.2014.2371857|first1 = A.P.|last1 = James|first2 = D.S.|last2 = Kumar|first3 = A.|last3 = Ajayan|arxiv = 1411.5255|s2cid = 6076956}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
There exist several neuron inspired threshold logic functions implemented with memristors that have applications in high level pattern recognition applications. Some of the applications reported recently include speech recognition, face recognition and object recognition. They also find applications in replacing conventional digital logic gates.&lt;br /&gt;
&lt;br /&gt;
利用记忆电阻器实现的神经元启发阈值逻辑函数在高级模式识别中有着广泛的应用。最近报道的一些应用包括语音识别、人脸识别和物体识别。它们还可以用来取代传统的数字逻辑门。&lt;br /&gt;
&lt;br /&gt;
For ideal passive memristive circuits there is an exact equation (Caravelli-Traversa-[[Di Ventra]] equation) for the internal memory of the circuit:&amp;lt;ref&amp;gt;{{cite journal |last=Caravelli  |display-authors=etal|arxiv=1608.08651 |title=The complex dynamics of memristive circuits: analytical results and universal slow relaxation |year=2017 |doi=10.1103/PhysRevE.95.022140 |pmid= 28297937 |volume=95 |issue= 2 |pages= 022140 |journal=Physical Review E|bibcode=2017PhRvE..95b2140C |s2cid=6758362}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For ideal passive memristive circuits there is an exact equation (Caravelli-Traversa-Di Ventra equation) for the internal memory of the circuit:&lt;br /&gt;
&lt;br /&gt;
对于理想的无源记忆电路，电路的内部记忆有一个精确的方程(Caravelli-Traversa-Di Ventra 方程) :&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt; \frac{d}{dt} \vec{W} = \alpha \vec{W}-\frac{1}{\beta} (I+\xi \Omega W)^{-1} \Omega \vec S &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: \frac{d}{dt} \vec{W} = \alpha \vec{W}-\frac{1}{\beta} (I+\xi \Omega W)^{-1} \Omega \vec S &lt;br /&gt;
&lt;br /&gt;
: \frac{d}{dt} \vec{W} = \alpha \vec{W}-\frac{1}{\beta} (I+\xi \Omega W)^{-1} \Omega \vec S&lt;br /&gt;
&lt;br /&gt;
as a function of the properties of the physical memristive network and the external sources. In the equation above, &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; is the &amp;quot;forgetting&amp;quot; time scale constant, &amp;lt;math&amp;gt; \xi=r-1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;r=\frac{R_\text{off}}{R_\text{on}}&amp;lt;/math&amp;gt; is the ratio of ''off'' and ''on'' values of the limit resistances of the memristors, &amp;lt;math&amp;gt; \vec S &amp;lt;/math&amp;gt; is the vector of the sources of the circuit and &amp;lt;math&amp;gt;\Omega&amp;lt;/math&amp;gt; is a projector on the fundamental loops of the circuit. The constant &amp;lt;math&amp;gt;\beta&amp;lt;/math&amp;gt; has the dimension of a voltage and is associated to the properties of the [[memristor]]; its physical origin is the charge mobility in the conductor. The diagonal matrix and vector &amp;lt;math&amp;gt;W=\operatorname{diag}(\vec W)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\vec W&amp;lt;/math&amp;gt; respectively, are instead the internal value of the memristors, with values between 0 and 1. This equation thus requires adding extra constraints on the memory values in order to be reliable.&lt;br /&gt;
&lt;br /&gt;
as a function of the properties of the physical memristive network and the external sources. In the equation above, \alpha is the &amp;quot;forgetting&amp;quot; time scale constant,  \xi=r-1 and r=\frac{R_\text{off}}{R_\text{on}} is the ratio of off and on values of the limit resistances of the memristors,  \vec S  is the vector of the sources of the circuit and \Omega is a projector on the fundamental loops of the circuit. The constant \beta has the dimension of a voltage and is associated to the properties of the memristor; its physical origin is the charge mobility in the conductor. The diagonal matrix and vector W=\operatorname{diag}(\vec W) and \vec W respectively, are instead the internal value of the memristors, with values between 0 and 1. This equation thus requires adding extra constraints on the memory values in order to be reliable.&lt;br /&gt;
&lt;br /&gt;
作为物理记忆网络和外部源的性质的函数。在上述方程中，α 是“遗忘”时间尺度常数，xi = r-1，r = frac { r _ text { off }{ on }{ r _ text { on }}是记忆电阻器极限电阻的开关和开关值之比，vec s 是电路源的矢量，Omega 是电路基本环路的投影仪。常数 β 具有电压的尺寸，与记忆电阻器的特性有关; 它的物理起源是导体中的电荷迁移率。对角矩阵和向量 w = 操作者名{ diag }(vec w)和 vec w 分别是记忆电阻器的内值，值在0到1之间。因此，这个等式需要在内存值上添加额外的约束，以保证可靠性。&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
{{Columns-list|colwidth=18em|&lt;br /&gt;
* [[AI accelerator (computer hardware)|AI accelerator]]&lt;br /&gt;
* [[Artificial brain]]&lt;br /&gt;
* [[Biomorphic]]&lt;br /&gt;
* [[Cognitive computer]]&lt;br /&gt;
* [[Computation and Neural Systems]]&lt;br /&gt;
* [[Differentiable programming]]&lt;br /&gt;
* [[Event camera]]&lt;br /&gt;
* [[Neurorobotics]]&lt;br /&gt;
* [[Optical flow sensor]]&lt;br /&gt;
* [[Physical neural network]]&lt;br /&gt;
* [[SpiNNaker]]&lt;br /&gt;
* [[SyNAPSE]]&lt;br /&gt;
* [[Retinomorphic sensor]]&lt;br /&gt;
* [[Vision chip]]&lt;br /&gt;
* [[Vision processing unit]]&lt;br /&gt;
* [[Zeroth (software)]]&lt;br /&gt;
* [[Hardware for artificial intelligence]]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{{Portal bar|Electronics}}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{Reflist|40em}}&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
&amp;lt;!--======================== {{No more links}} ============================&lt;br /&gt;
    | PLEASE BE CAUTIOUS IN ADDING MORE LINKS TO THIS ARTICLE. Wikipedia  |&lt;br /&gt;
    | is not a collection of links nor should it be used for advertising. |&lt;br /&gt;
    |                                                                     |&lt;br /&gt;
    |           Excessive or inappropriate links WILL BE DELETED.         |&lt;br /&gt;
    | See [[Wikipedia:External links]] &amp;amp; [[Wikipedia:Spam]] for details.  |&lt;br /&gt;
    |                                                                     |&lt;br /&gt;
    | If there are already plentiful links, please propose additions or   |&lt;br /&gt;
    | replacements on this article's discussion page, or submit your link |&lt;br /&gt;
    | to the relevant category at the Open Directory Project (dmoz.org)   |&lt;br /&gt;
    | and link back to that category using the {{dmoz}} template.         |&lt;br /&gt;
======================={{No more links}}=============================--&amp;gt;&lt;br /&gt;
{{Commons category|Neuromorphic Engineering}}&lt;br /&gt;
*[https://web.archive.org/web/20150727034331/http://ine-web.org/workshops/workshops-overview Telluride Neuromorphic Engineering Workshop]&lt;br /&gt;
*[https://archive.today/20130115190057/http://capocaccia.ethz.ch/ CapoCaccia Cognitive Neuromorphic Engineering Workshop]&lt;br /&gt;
*[https://web.archive.org/web/20190716132350/http://www.ine-web.org/ Institute of Neuromorphic Engineering]&lt;br /&gt;
*[http://www.ine-news.org/ INE news site].&lt;br /&gt;
*[http://www.frontiersin.org/neuromorphic_engineering Frontiers in Neuromorphic Engineering Journal]&lt;br /&gt;
*[http://www.cns.caltech.edu/ Computation and Neural Systems] department at the [[California Institute of Technology]].&lt;br /&gt;
*[http://www.humanbrainproject.eu/ Human Brain Project official site]&lt;br /&gt;
* [https://www.the-scientist.com/features/building-a-silicon-brain-65738 Building a Silicon Brain:] Computer chips based on biological neurons may help simulate larger and more-complex brain models. May 1, 2019. SANDEEP RAVINDRAN&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Telluride Neuromorphic Engineering Workshop&lt;br /&gt;
*CapoCaccia Cognitive Neuromorphic Engineering Workshop&lt;br /&gt;
*Institute of Neuromorphic Engineering&lt;br /&gt;
*INE news site.&lt;br /&gt;
*Frontiers in Neuromorphic Engineering Journal&lt;br /&gt;
*Computation and Neural Systems department at the California Institute of Technology.&lt;br /&gt;
*Human Brain Project official site&lt;br /&gt;
* Building a Silicon Brain: Computer chips based on biological neurons may help simulate larger and more-complex brain models. May 1, 2019. SANDEEP RAVINDRAN&lt;br /&gt;
&lt;br /&gt;
= = = 外部链接 = = &lt;br /&gt;
* 碲化物神经形态工程工作室 &lt;br /&gt;
* CapoCaccia 认知神经形态工程工作室 &lt;br /&gt;
* 神经形态工程研究所 &lt;br /&gt;
* INE 新闻站点。&lt;br /&gt;
* 《神经形态工程学前沿》 &lt;br /&gt;
* 加州理工学院计算与神经系统系。&lt;br /&gt;
* 人脑项目官方网站 &lt;br /&gt;
* 打造硅脑: 基于生物神经元的计算机芯片可能有助于模拟更大、更复杂的大脑模型。2019年5月1日。SANDEEP RAVINDRAN&lt;br /&gt;
&lt;br /&gt;
{{Differentiable computing}}&lt;br /&gt;
{{Authority control}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Electrical engineering]]&lt;br /&gt;
[[Category:Neuroscience]]&lt;br /&gt;
[[Category:AI accelerators|*]]&lt;br /&gt;
[[Category:Artificial intelligence]]&lt;br /&gt;
[[Category:Robotics]]&lt;br /&gt;
&lt;br /&gt;
Category:Electrical engineering&lt;br /&gt;
Category:Neuroscience&lt;br /&gt;
*&lt;br /&gt;
Category:Artificial intelligence&lt;br /&gt;
Category:Robotics&lt;br /&gt;
&lt;br /&gt;
类别: 电气工程类别: 神经科学 * 类别: 人工智能类别: 机器人&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;This page was moved from [[wikipedia:en:Neuromorphic engineering]]. Its edit history can be viewed at [[神经形态计算/edithistory]]&amp;lt;/small&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:待整理页面]]&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E7%AA%81%E8%A7%A6&amp;diff=29566</id>
		<title>突触</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E7%AA%81%E8%A7%A6&amp;diff=29566"/>
		<updated>2022-03-25T07:38:26Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：Moved page from wikipedia:en:Synapse (history)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;此词条暂由彩云小译翻译，翻译字数共1365，未经人工整理和审校，带来阅读不便，请见谅。&lt;br /&gt;
&lt;br /&gt;
{{Short description|Structure of neurons in the nervous system}}&lt;br /&gt;
{{About|synapses of the nervous system||3=Synapse (disambiguation)}}&lt;br /&gt;
{{Synapse map}}&lt;br /&gt;
{{Presynaptic_synapse}}&lt;br /&gt;
In the [[nervous system]], a '''synapse'''&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;{{cite book|last1=Foster|first1=M.|last2=Sherrington|first2=C.S.|title=Textbook of Physiology, volume 3|date=1897|publisher=Macmillan|location=London|page=929|edition=7th}}&amp;lt;/ref&amp;gt; is a structure that permits a [[neuron]] (or nerve cell) to pass an electrical or chemical signal to another neuron or to the target effector cell.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the nervous system, a synapse is a structure that permits a neuron (or nerve cell) to pass an electrical or chemical signal to another neuron or to the target effector cell.&lt;br /&gt;
&lt;br /&gt;
在神经系统中，突触是一种允许神经元(或神经细胞)将电信号或化学信号传递给另一个神经元或目标效应细胞的结构。&lt;br /&gt;
&lt;br /&gt;
Synapses are essential to the transmission of nervous impulses from one neuron to another. Neurons are specialized to pass signals to individual target cells, and synapses are the means by which they do so. At a synapse, the [[plasma membrane]] of the signal-passing neuron (the ''presynaptic'' neuron) comes into close apposition with the membrane of the target (''postsynaptic'') cell.  Both the presynaptic and postsynaptic sites contain extensive arrays of [[Molecular biology|molecular machinery]] that link the two membranes together and carry out the signaling process.  In many synapses, the presynaptic part is located on an [[axon]] and the postsynaptic part is located on a [[dendrite]] or [[soma (biology)|soma]]. [[Astrocyte]]s also exchange information with the synaptic neurons, responding to synaptic activity and, in turn, regulating [[neurotransmission]].&amp;lt;ref&amp;gt;{{cite journal |last1=Perea |first1=G. |last2=Navarrete |first2=M. |last3=Araque |first3=A. |date=August 2009 |title=Tripartite synapses: astrocytes process and control synaptic information |journal=[[Trends (journals)|Trends in Neurosciences]] |volume=32 |issue=8 |pages=421–431 |location=Cambridge, MA |publisher=[[Cell Press]] |pmid=19615761 |doi=10.1016/j.tins.2009.05.001 |s2cid=16355401 }}&amp;lt;/ref&amp;gt; Synapses (at least chemical synapses) are stabilized in position by synaptic adhesion molecules (SAMs) projecting from both the pre- and post-synaptic neuron and sticking together where they overlap; SAMs may also assist in the generation and functioning of synapses.&amp;lt;ref&amp;gt;{{cite journal | pmc = 3312681 | pmid=22278667 | doi=10.1101/cshperspect.a005694 | volume=4 | issue=4 | title=Synaptic cell adhesion | year=2012 | journal=Cold Spring Harb Perspect Biol | pages=a005694 | last1 = Missler | first1 = M | last2 = Südhof | first2 = TC | last3 = Biederer | first3 = T}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Synapses are essential to the transmission of nervous impulses from one neuron to another. Neurons are specialized to pass signals to individual target cells, and synapses are the means by which they do so. At a synapse, the plasma membrane of the signal-passing neuron (the presynaptic neuron) comes into close apposition with the membrane of the target (postsynaptic) cell.  Both the presynaptic and postsynaptic sites contain extensive arrays of molecular machinery that link the two membranes together and carry out the signaling process.  In many synapses, the presynaptic part is located on an axon and the postsynaptic part is located on a dendrite or soma. Astrocytes also exchange information with the synaptic neurons, responding to synaptic activity and, in turn, regulating neurotransmission. Synapses (at least chemical synapses) are stabilized in position by synaptic adhesion molecules (SAMs) projecting from both the pre- and post-synaptic neuron and sticking together where they overlap; SAMs may also assist in the generation and functioning of synapses.&lt;br /&gt;
&lt;br /&gt;
突触是神经冲动从一个神经元传递到另一个神经元的必要条件。神经元是专门向单个目标细胞传递信号的，神经突触是它们传递信号的手段。在突触处，信号传递神经元(突触前神经元)的质膜与目标细胞(突触后细胞)的质膜紧密相连。突触前和突触后位点都包含大量的分子结构阵列，这些分子结构连接两个膜并执行信号传导过程。在许多突触中，突触前部分位于轴突，突触后部分位于树突或胞体上。星形胶质细胞也与突触神经元交换信息，对突触活动做出反应，从而调节神经传导。突触(至少是化学突触)通过突触前和突触后神经元发出的突触粘附分子(SAMs)并在它们重叠的地方粘附在一起而稳定在位置上; SAMs 也可能有助于突触的产生和功能。&lt;br /&gt;
&lt;br /&gt;
Some authors generalize the concept of the synapse to include the communication from a neuron to any other cell type,&amp;lt;ref&amp;gt;{{cite book |last1=Schacter |first1=Daniel L. |author-link1=Daniel Schacter |last2=Gilbert |first2=Daniel T. |author-link2=Daniel Gilbert (psychologist) |last3=Wegner |first3=Daniel M. |author-link3=Daniel Wegner |title=Psychology |url=https://archive.org/details/psychology0000scha |url-access=registration |edition=2nd |year=2011 |publisher=Worth Publishers |location=New York |page=[https://archive.org/details/psychology0000scha/page/80 80] |isbn=978-1-4292-3719-2 |oclc=696604625 |lccn=2010940234}}&amp;lt;/ref&amp;gt; such as to a motor cell, although such non-neuronal contacts may be referred to as [[Neuromuscular Junction|junctions]] (a historically older term). A landmark study by [[Sanford Palay]] demonstrated the existence of synapses.&amp;lt;ref&amp;gt;{{Cite journal|last=Palay|first=Sanford|title=Synapses in the central nervous system|journal=J Biophys Biochem Cytol|volume=2|issue=4|pages=193–202|doi=10.1083/jcb.2.4.193|pmc=2229686|pmid=13357542|year=1956}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some authors generalize the concept of the synapse to include the communication from a neuron to any other cell type, such as to a motor cell, although such non-neuronal contacts may be referred to as junctions (a historically older term). A landmark study by Sanford Palay demonstrated the existence of synapses.&lt;br /&gt;
&lt;br /&gt;
一些作者概括了突触的概念，包括从神经元到任何其他细胞类型的通讯，比如到运动细胞，尽管这种非神经元的接触可能被称为连接(一个历史悠久的术语)。Sanford Palay 的一项具有里程碑意义的研究证明了突触的存在。&lt;br /&gt;
&lt;br /&gt;
==History of the concept==&lt;br /&gt;
[[Santiago Ramón y Cajal]] proposed that neurons are not continuous throughout the body, yet still communicate with each other, an idea known as the [[neuron doctrine]].&amp;lt;ref&amp;gt;{{cite book |last1=Elias |first1=Lorin J. |last2=Saucier |first2=Deborah M. |title=Neuropsychology: Clinical and Experimental Foundations |year=2006 |publisher=[[Pearson Education|Pearson/Allyn &amp;amp; Bacon]] |location=Boston |isbn=978-0-20534361-4 |oclc=61131869 |lccn=2005051341}}&amp;lt;/ref&amp;gt; The word &amp;quot;synapse&amp;quot; was introduced in 1897 by the English neurophysiologist [[Charles Scott Sherrington|Charles Sherrington]] in [[Michael Foster (physiologist)|Michael Foster]]'s ''Textbook of Physiology''.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; Sherrington struggled to find a good term that emphasized a union between two ''separate'' elements, and the actual term &amp;quot;synapse&amp;quot; was suggested by the English classical scholar [[Arthur Woollgar Verrall]], a friend of Foster.&amp;lt;ref&amp;gt;{{cite web|title=synapse|url=http://www.etymonline.com/index.php?term=synapse|publisher=[[Online Etymology Dictionary]]|access-date=2013-10-01|url-status=live|archive-url=https://web.archive.org/web/20131214051016/http://www.etymonline.com/index.php?term=synapse|archive-date=2013-12-14}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite journal |last=Tansey |first=E.M. |year=1997 |title=Not committing barbarisms: Sherrington and the synapse, 1897 |journal=[[Brain Research Bulletin]] |volume=44 |issue=3 |pages=211–212 |location=Amsterdam |publisher=[[Elsevier]] |pmid=9323432 |doi=10.1016/S0361-9230(97)00312-2 |s2cid=40333336 |quote=The word synapse first appeared in 1897, in the seventh edition of Michael Foster's ''Textbook of Physiology''.}}&amp;lt;/ref&amp;gt; The word was derived from the [[Ancient Greek|Greek]] ''synapsis'' ({{lang|grc|συνάψις}}), meaning &amp;quot;conjunction&amp;quot;, which in turn derives from {{lang|grc|συνάπτεὶν}} ({{lang|grc|συν}} (&amp;quot;together&amp;quot;)  and {{lang|grc|ἅπτειν}} (&amp;quot;to fasten&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
Santiago Ramón y Cajal proposed that neurons are not continuous throughout the body, yet still communicate with each other, an idea known as the neuron doctrine. The word &amp;quot;synapse&amp;quot; was introduced in 1897 by the English neurophysiologist Charles Sherrington in Michael Foster's Textbook of Physiology. Sherrington struggled to find a good term that emphasized a union between two separate elements, and the actual term &amp;quot;synapse&amp;quot; was suggested by the English classical scholar Arthur Woollgar Verrall, a friend of Foster. The word was derived from the Greek synapsis (), meaning &amp;quot;conjunction&amp;quot;, which in turn derives from  ( (&amp;quot;together&amp;quot;)  and  (&amp;quot;to fasten&amp;quot;))&lt;br /&gt;
&lt;br /&gt;
这个概念的历史提出了神经元并不是连续的在整个身体里，但仍然相互交流，这个想法被称为神经元学说。圣地亚哥·拉蒙-卡哈尔。“ synapse”一词是由英国神经生理学家查尔斯 · 谢林顿于1897年在迈克尔 · 福斯特的《生理学教科书》中提出的。谢林顿努力寻找一个好的术语，强调两个独立的元素之间的结合，而实际的术语“突触”是由福斯特的朋友、英国古典学者亚瑟 · 伍尔加 · 维拉尔提出的。这个词来源于希腊语 synapsis () ，意思是“连接”，它又来源于((“ together”)和(“ to fail”))&lt;br /&gt;
&lt;br /&gt;
However, while the synaptic gap remained a theoretical construct, and sometimes reported as a discontinuity between contiguous axonal terminations and dendrites or cell bodies, histological methods using the best light microscopes of the day could not visually resolve their separation which is now known to be about 20nm. It needed the electron microscope in the 1950s to show the finer structure of the synapse with its separate, parallel pre- and postsynaptic membranes and processes, and the cleft between the two.&amp;lt;ref&amp;gt;{{cite journal|last1=De Robertis|first=Eduardo D.P.|last2=Bennett|first2=H. Stanley|title=Some features of the submicroscopic morphology of synapses in frog and earthworm|journal=Journal of Biophysical and Biochemical Cytology|date=1955|volume=1|issue=1|pages=47-58|doi=10.1083/jcb.1.1.47|url=https://rupress.org/jcb/article-pdf/1/1/47/1050739/47.pdf|pmc=2223594}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite journal|last1=Palay|first1=Sanford L.|last2=Palade|first2=George E.|title=The fine structure of neurons|journal=Journal of Biophysical and Biochemical Cytology|date=1955|volume=1|issue=1|pages=69-88|doi=10.1083/jcb.1.1.69|url=https://rupress.org/jcb/article-pdf/1/1/69/1050737/69.pdf|pmc=2223597}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, while the synaptic gap remained a theoretical construct, and sometimes reported as a discontinuity between contiguous axonal terminations and dendrites or cell bodies, histological methods using the best light microscopes of the day could not visually resolve their separation which is now known to be about 20nm. It needed the electron microscope in the 1950s to show the finer structure of the synapse with its separate, parallel pre- and postsynaptic membranes and processes, and the cleft between the two.&lt;br /&gt;
&lt;br /&gt;
然而，虽然突触间隙仍然是一个理论上的构造，有时被报道为轴突末端与树突或细胞体之间的不连续性，但是使用当时最好的光学显微镜的组织学方法无法直观地解决它们的分离问题，现在我们知道它们大约在20纳米左右。它需要在20世纪50年代的电子显微镜显示突触的精细结构，它的独立的，平行的突触前和突触后膜和过程，以及两者之间的裂隙。&lt;br /&gt;
&lt;br /&gt;
==Chemical and electrical synapses==&lt;br /&gt;
[[File:Neuro Muscular Junction.png|thumb|An example of chemical synapse by the release of [[neurotransmitter]]s like [[acetylcholine]] or [[glutamic acid]].]]&lt;br /&gt;
There are two fundamentally different types of synapses:&lt;br /&gt;
* In a [[chemical synapse]], electrical activity in the presynaptic neuron is converted (via the activation of [[Voltage-dependent calcium channel|voltage-gated calcium channels]]) into the release of a chemical called a [[neurotransmitter]] that binds to [[neurotransmitter receptor|receptors]] located in the plasma membrane of the postsynaptic cell. The neurotransmitter may initiate an electrical response or a secondary messenger pathway that may either excite or inhibit the postsynaptic neuron. Chemical synapses can be classified according to the neurotransmitter released: [[Glutamic acid|glutamatergic]] (often excitatory), [[gamma-Aminobutyric acid|GABAergic]] (often inhibitory), [[cholinergic]] (e.g. vertebrate [[neuromuscular junction]]), and [[Adrenergic receptor|adrenergic]] (releasing [[norepinephrine]]). Because of the complexity of receptor [[signal transduction]], chemical synapses can have complex effects on the postsynaptic cell.&lt;br /&gt;
* In an [[electrical synapse]], the presynaptic and postsynaptic cell membranes are connected by special channels called [[gap junction]]s that are capable of passing an electric current, causing voltage changes in the presynaptic cell to induce voltage changes in the postsynaptic cell. The main advantage of an electrical synapse is the rapid transfer of signals from one cell to the next.&amp;lt;ref&amp;gt;{{cite book |last=Silverthorn |first=Dee Unglaub |others=Illustration coordinator William C. Ober; illustrations by Claire W. Garrison; clinical consultant Andrew C. Silverthorn; contributions by Bruce R. Johnson |title=Human Physiology: An Integrated Approach |edition=4th |year=2007 |publisher=[[Pearson Education|Pearson/Benjamin Cummings]] |location=San Francisco |page=271 |isbn=978-0-8053-6851-2 |oclc=62742632 |lccn=2005056517}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
There are two fundamentally different types of synapses:&lt;br /&gt;
* In a chemical synapse, electrical activity in the presynaptic neuron is converted (via the activation of voltage-gated calcium channels) into the release of a chemical called a neurotransmitter that binds to receptors located in the plasma membrane of the postsynaptic cell. The neurotransmitter may initiate an electrical response or a secondary messenger pathway that may either excite or inhibit the postsynaptic neuron. Chemical synapses can be classified according to the neurotransmitter released: glutamatergic (often excitatory), GABAergic (often inhibitory), cholinergic (e.g. vertebrate neuromuscular junction), and adrenergic (releasing norepinephrine). Because of the complexity of receptor signal transduction, chemical synapses can have complex effects on the postsynaptic cell.&lt;br /&gt;
* In an electrical synapse, the presynaptic and postsynaptic cell membranes are connected by special channels called gap junctions that are capable of passing an electric current, causing voltage changes in the presynaptic cell to induce voltage changes in the postsynaptic cell. The main advantage of an electrical synapse is the rapid transfer of signals from one cell to the next.&lt;br /&gt;
&lt;br /&gt;
= = 化学和电突触 = = 有两种基本不同类型的突触: &lt;br /&gt;
* 在突触前突触间隙，突触前神经元的电活动(通过激活电压门控钙通道)转化为释放一种叫做神经递质的化学物质，这种化学物质与位于突触后细胞质膜上的受体结合。神经递质可以启动电反应或次级信使通路，可以激发或抑制突触后神经元。化学突触可以根据释放的神经递质进行分类: 谷氨酸能(通常是兴奋性的)、 gaba 能(通常是抑制性的)、胆碱能(通常是抑制性的)。脊椎动物神经肌肉接点)和肾上腺素(释放去甲肾上腺素)。由于受体信号转导的复杂性，化学突触可以对突触后细胞产生复杂的影响。&lt;br /&gt;
* 在突触前细胞膜和突触后细胞膜通过特殊的通道连接，这种通道被称为缝隙连接，能够通过电流，导致突触前细胞的电压变化引起突触后细胞的电压变化。电突触的主要优点是信号可以从一个细胞快速传输到下一个细胞。&lt;br /&gt;
&lt;br /&gt;
Synaptic communication is distinct from an [[ephaptic coupling]], in which communication between neurons occurs via indirect electric fields.&lt;br /&gt;
&lt;br /&gt;
Synaptic communication is distinct from an ephaptic coupling, in which communication between neurons occurs via indirect electric fields.&lt;br /&gt;
&lt;br /&gt;
突触交流不同于触觉耦合，后者通过间接电场在神经元之间进行交流。&lt;br /&gt;
&lt;br /&gt;
An [[autapse]] is a chemical or electrical synapse that forms when the axon of one neuron synapses onto dendrites of the same neuron.&lt;br /&gt;
&lt;br /&gt;
An autapse is a chemical or electrical synapse that forms when the axon of one neuron synapses onto dendrites of the same neuron.&lt;br /&gt;
&lt;br /&gt;
自突触是一种化学物质或电突触，当一个神经元的轴突突触到同一个神经元的树突时形成。&lt;br /&gt;
&lt;br /&gt;
==Types of interfaces==&lt;br /&gt;
&lt;br /&gt;
==Types of interfaces==&lt;br /&gt;
&lt;br /&gt;
= = = 接口类型 = = &lt;br /&gt;
&lt;br /&gt;
Synapses can be classified by the type of cellular structures serving as the pre- and post-synaptic components. The vast majority of synapses in the mammalian nervous system are classical axo-dendritic synapses (axon synapsing upon a dendrite), however, a variety of other arrangements exist. These include but are not limited to [[Axo-axonic synapse|axo-axonic]], [[Dendrodendritic synapse|dendro-dendritic]], axo-secretory, somato-dendritic, dendro-somatic, and somato-somatic synapses.&lt;br /&gt;
&lt;br /&gt;
Synapses can be classified by the type of cellular structures serving as the pre- and post-synaptic components. The vast majority of synapses in the mammalian nervous system are classical axo-dendritic synapses (axon synapsing upon a dendrite), however, a variety of other arrangements exist. These include but are not limited to axo-axonic, dendro-dendritic, axo-secretory, somato-dendritic, dendro-somatic, and somato-somatic synapses.&lt;br /&gt;
&lt;br /&gt;
突触可以按照作为突触前和突触后成分的细胞结构类型进行分类。哺乳动物神经系统中的绝大多数突触是典型的轴突-树突突触(轴突与树突之间的突触) ，然而，还存在其他各种排列方式。这些突触包括但不限于轴-轴突突触、树突-树突突触、轴-分泌突触、体-树突触、树突-体突触和体-体突触。&lt;br /&gt;
&lt;br /&gt;
The axon can synapse onto a dendrite, onto a cell body, or onto another axon or axon terminal, as well as into the bloodstream or diffusely into the adjacent nervous tissue.&lt;br /&gt;
[[File:Blausen 0843 SynapseTypes.png|thumb|500px|center|Different types of synapses]]&lt;br /&gt;
&lt;br /&gt;
The axon can synapse onto a dendrite, onto a cell body, or onto another axon or axon terminal, as well as into the bloodstream or diffusely into the adjacent nervous tissue.&lt;br /&gt;
thumb|500px|center|Different types of synapses&lt;br /&gt;
&lt;br /&gt;
轴突可以与树突、细胞体、另一个轴突或轴突终末形成突触，也可以进入血液或扩散到邻近的神经组织。拇指 | 500px | 中心 | 不同类型的突触&lt;br /&gt;
&lt;br /&gt;
==Role in memory==&lt;br /&gt;
{{Main|Hebbian theory}}&lt;br /&gt;
It is widely accepted that the synapse plays a role in the formation of [[memory]]. As neurotransmitters activate receptors across the synaptic cleft, the connection between the two neurons is strengthened when both neurons are active at the same time, as a result of the receptor's signaling mechanisms. The strength of two connected neural pathways is thought to result in the storage of information, resulting in memory. This process of synaptic strengthening is known as [[long-term potentiation]].&amp;lt;ref&amp;gt;{{cite journal |last=Lynch |first=M. A. |date=January 1, 2004 |title=Long-Term Potentiation and Memory |journal=[[Physiological Reviews]] |volume=84 |issue=1 |pages=87–136 |pmid=14715912 |doi=10.1152/physrev.00014.2003 |url=https://zenodo.org/record/896261 }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is widely accepted that the synapse plays a role in the formation of memory. As neurotransmitters activate receptors across the synaptic cleft, the connection between the two neurons is strengthened when both neurons are active at the same time, as a result of the receptor's signaling mechanisms. The strength of two connected neural pathways is thought to result in the storage of information, resulting in memory. This process of synaptic strengthening is known as long-term potentiation.&lt;br /&gt;
&lt;br /&gt;
人们普遍认为突触在记忆的形成中起着重要作用。当神经递质激活跨突触间隙的受体时，作为受体信号机制的结果，当两个神经元同时活跃时，两个神经元之间的联系就会加强。人们认为，两条相互连接的神经通路的强度导致了信息的储存，从而产生了记忆。这种突触增强的过程被称为长时程增强作用。&lt;br /&gt;
&lt;br /&gt;
By altering the release of neurotransmitters, the plasticity of synapses can be controlled in the presynaptic cell. The postsynaptic cell can be regulated by altering the function and number of its receptors. Changes in postsynaptic signaling are most commonly associated with a [[NMDA|N-methyl-d-aspartic acid]] receptor (NMDAR)-dependent long-term potentiation (LTP) and [[long-term depression]] (LTD) due to the influx of calcium into the post-synaptic cell, which are the most analyzed forms of plasticity at excitatory synapses.&amp;lt;ref&amp;gt;{{cite journal |last1=Krugers |first1=Harm J. |last2=Zhou |first2=Ming |last3=Joëls |first3= Marian |last4=Kindt |first4=Merel |date=October 11, 2011 |title=Regulation of Excitatory Synapses and Fearful Memories by Stress Hormones |journal=Frontiers in Behavioral Neuroscience |volume=5 |pages=62 |location=Switzerland |publisher=[[Frontiers (publisher)|Frontiers Media SA]] |doi=10.3389/fnbeh.2011.00062 |pmc=3190121 |pmid=22013419|doi-access=free }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
By altering the release of neurotransmitters, the plasticity of synapses can be controlled in the presynaptic cell. The postsynaptic cell can be regulated by altering the function and number of its receptors. Changes in postsynaptic signaling are most commonly associated with a N-methyl-d-aspartic acid receptor (NMDAR)-dependent long-term potentiation (LTP) and long-term depression (LTD) due to the influx of calcium into the post-synaptic cell, which are the most analyzed forms of plasticity at excitatory synapses.&lt;br /&gt;
&lt;br /&gt;
通过改变神经递质的释放，突触的可塑性可以在突触前细胞中得到控制。突触后细胞可以通过改变其受体的数量和功能来调节。突触后信号通路的改变主要与依赖于 n- 甲基天冬氨酸受体(NMDAR)的突触后细胞(LTP)和长期抑郁(LTD)有关，后者是兴奋性突触可塑性的最常见分析形式。&lt;br /&gt;
&lt;br /&gt;
==Study models==&lt;br /&gt;
For technical reasons, synaptic structure and function have been historically studied at unusually large [[Model organism|model]] synapses, for example:&lt;br /&gt;
* [[Squid giant synapse]]&lt;br /&gt;
* [[Neuromuscular junction]] (NMJ), a cholinergic synapse in vertebrates, glutamatergic in insects&lt;br /&gt;
* Ciliary calyx in the ciliary ganglion of chicks&amp;lt;ref&amp;gt;{{cite journal|last1=Stanley|first1=EF|title=The calyx-type synapse of the chick ciliary ganglion as a model of fast cholinergic transmission.|journal=Canadian Journal of Physiology and Pharmacology|date=1992|volume=70 Suppl|pages=S73-7|pmid=1338300|doi=10.1139/y92-246}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
* [[Calyx of Held]] in the brainstem&lt;br /&gt;
* [[Ribbon synapse]] in the retina&lt;br /&gt;
* [[Schaffer collateral]] synapse in the [[hippocampus]]&lt;br /&gt;
&lt;br /&gt;
For technical reasons, synaptic structure and function have been historically studied at unusually large model synapses, for example:&lt;br /&gt;
* Squid giant synapse&lt;br /&gt;
* Neuromuscular junction (NMJ), a cholinergic synapse in vertebrates, glutamatergic in insects&lt;br /&gt;
* Ciliary calyx in the ciliary ganglion of chicks&lt;br /&gt;
* Calyx of Held in the brainstem&lt;br /&gt;
* Ribbon synapse in the retina&lt;br /&gt;
* Schaffer collateral synapse in the hippocampus&lt;br /&gt;
&lt;br /&gt;
由于技术原因，历史上对突触结构和功能的研究都是在大型突触模型上进行的，例如: &lt;br /&gt;
* 乌贼巨大突触神经肌肉接点，脊椎动物的胆碱能突触，昆虫的谷氨酸能突触，小鸡睫状神经节的睫状体花萼，视网膜的掌侧突触，&lt;br /&gt;
* 海马的 Schaffer 突触&lt;br /&gt;
&lt;br /&gt;
==Synaptic polarization==&lt;br /&gt;
The function of neurons depends upon [[cell polarity]]. The distinctive structure of nerve cells allows [[action potential]]s to travel directionally (from dendrites to cell body down the axon), and for these signals to then be received and carried on by post-synaptic neurons or received by effector cells. Nerve cells have long been used as models for cellular polarization, and of particular interest are the mechanisms underlying the polarized localization of synaptic molecules. [[Phosphatidylinositol 4,5-bisphosphate|PIP2]] signaling regulated by [[Inositol monophosphatase|IMPase]] plays an integral role in synaptic polarity.&lt;br /&gt;
&lt;br /&gt;
The function of neurons depends upon cell polarity. The distinctive structure of nerve cells allows action potentials to travel directionally (from dendrites to cell body down the axon), and for these signals to then be received and carried on by post-synaptic neurons or received by effector cells. Nerve cells have long been used as models for cellular polarization, and of particular interest are the mechanisms underlying the polarized localization of synaptic molecules. PIP2 signaling regulated by IMPase plays an integral role in synaptic polarity.&lt;br /&gt;
&lt;br /&gt;
= = 突触极化 = = 神经元的功能取决于细胞极性。神经细胞独特的结构使得动作电位可以定向传递(从树突到细胞体再到轴突) ，这些信号可以被突触后神经元接收和传递，或者被效应细胞接收。长期以来，神经细胞一直被用作细胞极化的模型，特别感兴趣的是极化定位突触分子的机制。Pip2信号通路受 IMPase 调节，在突触极性中起着重要作用。&lt;br /&gt;
&lt;br /&gt;
[[Phosphatidylinositol#Phosphoinositides|Phosphoinositides]] ([[Phosphatidylinositol 4-phosphate|PIP]], PIP2, and [[Phosphatidylinositol (3,4,5)-trisphosphate|PIP3]]) are molecules that have been shown to affect neuronal polarity.&amp;lt;ref&amp;gt;{{cite journal |last1=Arimura |first1=Nariko |last2=Kaibuchi |first2=Kozo |date=December 22, 2005 |title=Key regulators in neuronal polarity |journal=[[Neuron (journal)|Neuron]] |volume=48 |issue=6 |pages=881–884 |location=Cambridge, MA |publisher=Cell Press |pmid=16364893 |doi=10.1016/j.neuron.2005.11.007 |doi-access=free }}&amp;lt;/ref&amp;gt; A gene (''ttx-7'') was identified in ''[[Caenorhabditis elegans]]'' that encodes ''myo''-inositol monophosphatase (IMPase), an enzyme that produces [[inositol]] by [[dephosphorylation|dephosphorylating]] [[inositol phosphate]]. Organisms with mutant ''ttx-7'' genes demonstrated behavioral and localization defects, which were rescued by expression of IMPase. This led to the conclusion that IMPase is required for the correct localization of synaptic protein components.&amp;lt;ref name=&amp;quot;SynapticPolarity&amp;quot;&amp;gt;{{cite journal |last1=Kimata |first1=Tsubasa |last2=Tanizawa |first2=Yoshinori |last3=Can |first3=Yoko |last4=Ikeda |first4=Shingo |last5=Kuhara |first5=Atsushi |last6=Mori |first6=Ikue |date=June 1, 2012 |title=Synaptic Polarity Depends on Phosphatidylinositol Signaling Regulated by myo-Inositol Monophosphatase in Caenorhabditis elegans |journal=[[Genetics (journal)|Genetics]] |volume=191 |issue=2 |pages=509–521 |location=Bethesda, MD |publisher=[[Genetics Society of America]] |pmid=22446320 |doi=10.1534/genetics.111.137844 |display-authors=3 |pmc=3374314}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite journal |last1=Tanizawa |first1=Yoshinori |last2=Kuhara |first2=Atsushi |last3=Inada |first3=Hitoshi |last4=Kodama |first4=Eiji |last5=Mizuno |first5=Takafumi |last6=Mori |first6=Ikue |date=December 1, 2006 |title=Inositol monophosphatase regulates localization of synaptic components and behavior in the mature nervous system of C. elegans |journal=[[Genes &amp;amp; Development]] |volume=20 |issue=23 |pages=3296–3310 |location=Cold Spring Harbor, NY |publisher=[[Cold Spring Harbor Laboratory Press]] |pmid=17158747 |pmc=1686606 |doi=10.1101/gad.1497806 |display-authors=3}}&amp;lt;/ref&amp;gt; The ''egl-8'' gene encodes a homolog of [[phospholipase C]]β (PLCβ), an enzyme that cleaves PIP2. When ''ttx-7'' mutants also had a mutant ''egl-8'' gene, the defects caused by the faulty ''ttx-7'' gene were largely reversed. These results suggest that PIP2 signaling establishes polarized localization of synaptic components in living neurons.&amp;lt;ref name=&amp;quot;SynapticPolarity&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Phosphoinositides (PIP, PIP2, and PIP3) are molecules that have been shown to affect neuronal polarity. A gene (ttx-7) was identified in Caenorhabditis elegans that encodes myo-inositol monophosphatase (IMPase), an enzyme that produces inositol by dephosphorylating inositol phosphate. Organisms with mutant ttx-7 genes demonstrated behavioral and localization defects, which were rescued by expression of IMPase. This led to the conclusion that IMPase is required for the correct localization of synaptic protein components. The egl-8 gene encodes a homolog of phospholipase Cβ (PLCβ), an enzyme that cleaves PIP2. When ttx-7 mutants also had a mutant egl-8 gene, the defects caused by the faulty ttx-7 gene were largely reversed. These results suggest that PIP2 signaling establishes polarized localization of synaptic components in living neurons.&lt;br /&gt;
&lt;br /&gt;
磷脂酰肌醇(PIP、 pip2和 PIP3)是已被证明影响神经元极性的分子。一个基因(ttx-7)在秀丽隐桿线虫中被鉴定，它编码肌醇单磷酸酶(IMPase) ，一种通过磷酸肌醇脱磷酸化产生肌醇的酶。有 ttx-7基因突变的生物表现出行为和定位缺陷，这些缺陷是由 IMPase 的表达所拯救的。这导致了结论，IMPase 是必要的正确定位突触蛋白质成分。Egl-8基因编码磷脂酶 Cβ (PLCβ)的同源基因。当 ttx-7突变体也有一个突变的 egl-8基因时，由 ttx-7基因缺陷引起的缺陷大部分被逆转。这些结果表明，pip2信号通路建立了活体神经元突触成分的极化定位。&lt;br /&gt;
&lt;br /&gt;
== Presynaptic modulation ==&lt;br /&gt;
Modulation of neurotransmitter release by [[G protein-coupled receptor|G-protein-coupled receptors]] (GPCRs) is a prominent presynaptic mechanism for regulation of [[Neurotransmission|synaptic transmission]]. The activation of GPCRs located at the presynaptic terminal, can decrease the probability of neurotransmitter release. This presynaptic depression involves activation of [[Gi alpha subunit|Gi/o]]-type [[G protein|G-proteins]] that mediate different inhibitory mechanisms, including inhibition of [[voltage-gated calcium channel]]s, activation of [[potassium channel]]s, and direct inhibition of the [[vesicle fusion]] process. [[Cannabinoid#Endocannabinoids|Endocannabinoids]], synthesized in and released from postsynaptic [[neuron]]al elements, and their cognate [[Receptor (biochemistry)|receptors]], including the (GPCR) [[Cannabinoid receptor type 1|CB1 receptor]], located at the presynaptic terminal, are involved in this modulation by an [[retrograde signaling]] process, in which these compounds are synthesized in and released from postsynaptic neuronal elements, and travel back to the presynaptic terminal to act on the CB1 receptor for short-term (STD) or long-term synaptic depression (LTD), that cause a short or long lasting decrease in neurotransmitter release.&amp;lt;ref&amp;gt;{{Citation|last=Lovinger|first=David M.|chapter=Presynaptic Modulation by Endocannabinoids|date=2008|pages=435–477|editor-last=Südhof|editor-first=Thomas C.|series=Handbook of Experimental Pharmacology|publisher=Springer Berlin Heidelberg|language=en|doi=10.1007/978-3-540-74805-2_14|pmid=18064422|isbn=9783540748052|editor2-last=Starke|editor2-first=Klaus|title=Pharmacology of Neurotransmitter Release|volume=184|issue=184}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Modulation of neurotransmitter release by G-protein-coupled receptors (GPCRs) is a prominent presynaptic mechanism for regulation of synaptic transmission. The activation of GPCRs located at the presynaptic terminal, can decrease the probability of neurotransmitter release. This presynaptic depression involves activation of Gi/o-type G-proteins that mediate different inhibitory mechanisms, including inhibition of voltage-gated calcium channels, activation of potassium channels, and direct inhibition of the vesicle fusion process. Endocannabinoids, synthesized in and released from postsynaptic neuronal elements, and their cognate receptors, including the (GPCR) CB1 receptor, located at the presynaptic terminal, are involved in this modulation by an retrograde signaling process, in which these compounds are synthesized in and released from postsynaptic neuronal elements, and travel back to the presynaptic terminal to act on the CB1 receptor for short-term (STD) or long-term synaptic depression (LTD), that cause a short or long lasting decrease in neurotransmitter release.&lt;br /&gt;
&lt;br /&gt;
G 蛋白偶联受体对神经递质释放的调节是突触前调节突触传递的重要机制。GPCRs 位于突触前末端，激活 GPCRs 可以降低神经递质释放的概率。这种突触前抑制涉及 Gi/o 型 g 蛋白的激活，介导不同的抑制机制，包括抑制电压门控性钙通道，激活钾通道，直接抑制囊泡融合过程。突触后神经元合成和释放的内源性大麻素及其同源受体，包括位于突触前端的(GPCR) cb1受体，通过逆行信号传导过程参与了这种调节，这些化合物在突触后神经元合成和释放，然后回到突触前端作用于短期(STD)或长期突触抑制(LTD) ，导致短期或长期神经递质释放减少。&lt;br /&gt;
&lt;br /&gt;
==Additional images==&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
 Image:Neuron synapse.svg|A typical central nervous system synapse&lt;br /&gt;
 Image:Active zone3.JPG|The synapse and synaptic vesicle cycle&lt;br /&gt;
 Image:Chemical synapse schema cropped.jpg|Major elements in chemical synaptic transmission&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 Image:Neuron synapse.svg|A typical central nervous system synapse&lt;br /&gt;
 Image:Active zone3.JPG|The synapse and synaptic vesicle cycle&lt;br /&gt;
 Image:Chemical synapse schema cropped.jpg|Major elements in chemical synaptic transmission&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
神经元突触 | 典型的中枢神经系统突触图像: Active zone3. jpg | The synapse and synaptic vesicle cycle 图像: 突触间隙模式 cropped.jpg | 化学突触传递的主要元素&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
= = 参见 = =&lt;br /&gt;
&lt;br /&gt;
{{col div|colwidth=30em}}&lt;br /&gt;
* [[Active zone]]&lt;br /&gt;
* [[Autapse]]&lt;br /&gt;
* [[Exocytosis]]&lt;br /&gt;
* [[Immunological synapse]]&lt;br /&gt;
* [[Neurotransmitter vesicle]]&lt;br /&gt;
* [[Postsynaptic density]]&lt;br /&gt;
* [[Synaptopathy]]&lt;br /&gt;
{{colend}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Active zone&lt;br /&gt;
* Autapse&lt;br /&gt;
* Exocytosis&lt;br /&gt;
* Immunological synapse&lt;br /&gt;
* Neurotransmitter vesicle&lt;br /&gt;
* Postsynaptic density&lt;br /&gt;
* Synaptopathy&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 活动区 &lt;br /&gt;
* Autapse &lt;br /&gt;
* 胞吐作用 &lt;br /&gt;
* 免疫突触 &lt;br /&gt;
* 神经递质小泡 &lt;br /&gt;
* 突触后密度 &lt;br /&gt;
* 突触病变&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{Reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
{{Nervous tissue}}&lt;br /&gt;
{{Authority control}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Signal transduction]]&lt;br /&gt;
[[Category:Neural synapse| ]]&lt;br /&gt;
&lt;br /&gt;
Category:Signal transduction&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
类别: 信号转导&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;This page was moved from [[wikipedia:en:Synapse]]. Its edit history can be viewed at [[突触/edithistory]]&amp;lt;/small&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:待整理页面]]&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E7%A5%9E%E7%BB%8F%E5%BD%A2%E6%80%81%E8%AE%A1%E7%AE%97&amp;diff=29558</id>
		<title>神经形态计算</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E7%A5%9E%E7%BB%8F%E5%BD%A2%E6%80%81%E8%AE%A1%E7%AE%97&amp;diff=29558"/>
		<updated>2022-03-25T07:28:18Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：Moved page from wikipedia:en:Neuromorphic computing (history)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;此词条暂由彩云小译翻译，翻译字数共3，未经人工整理和审校，带来阅读不便，请见谅。&lt;br /&gt;
&lt;br /&gt;
#REDIRECT [[Neuromorphic engineering]]&lt;br /&gt;
&lt;br /&gt;
#REDIRECT Neuromorphic engineering&lt;br /&gt;
&lt;br /&gt;
# 神经形态工程学&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;This page was moved from [[wikipedia:en:Neuromorphic computing]]. Its edit history can be viewed at [[神经形态计算/edithistory]]&amp;lt;/small&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:待整理页面]]&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E6%B7%B1%E9%83%A8%E8%84%91%E5%88%BA%E6%BF%80&amp;diff=29556</id>
		<title>深部脑刺激</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E6%B7%B1%E9%83%A8%E8%84%91%E5%88%BA%E6%BF%80&amp;diff=29556"/>
		<updated>2022-03-25T07:27:24Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：Moved page from wikipedia:en:Deep brain stimulation (history)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;此词条暂由彩云小译翻译，翻译字数共2470，未经人工整理和审校，带来阅读不便，请见谅。&lt;br /&gt;
&lt;br /&gt;
{{short description|Neurosurgical treatment involving implantation of a 'brain pacemaker'}}&lt;br /&gt;
&lt;br /&gt;
{{Update|date=January 2022}}&lt;br /&gt;
&lt;br /&gt;
{{Infobox medical intervention&lt;br /&gt;
| name         = Deep brain stimulation&lt;br /&gt;
| synonym      = &lt;br /&gt;
| image        = Tiefe Hirnstimulation - Sonden RoeSchaedel ap.jpg&lt;br /&gt;
| caption      = DBS-probes shown in X-ray of the skull (white areas around [[maxilla]] and [[mandible]] represent metal [[dentures]] and are unrelated to DBS devices)&lt;br /&gt;
| alt          = &lt;br /&gt;
| pronounce    = &lt;br /&gt;
| specialty    = &amp;lt;!-- from Wikidata, can be overwritten --&amp;gt;&lt;br /&gt;
| ICD10        = &lt;br /&gt;
| ICD9         = &lt;br /&gt;
| ICD9unlinked = &lt;br /&gt;
| CPT          = &lt;br /&gt;
| MeshID       = D046690 &lt;br /&gt;
| LOINC        = &lt;br /&gt;
| other_codes  = &lt;br /&gt;
| MedlinePlus  = 007453 &lt;br /&gt;
| eMedicine    = &lt;br /&gt;
| Outcome      = &lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
'''Deep brain stimulation''' ('''DBS''') is a [[neurosurgery|neurosurgical]] procedure involving the placement of a medical device called a [[neurostimulator]], which sends electrical impulses, through implanted [[electrode]]s, to specific targets in the [[brain]] (the [[Nucleus (neuroanatomy)|brain nucleus]]) for the treatment of movement disorders, including [[Parkinson's disease]], [[essential tremor]], [[dystonia]],&amp;lt;ref name=Kringelbach&amp;gt;{{cite journal|vauthors = Kringelbach ML, Jenkinson N, Owen SL, Aziz TZ|title = Translational principles of deep brain stimulation|journal = Nature Reviews. Neuroscience|volume = 8|issue = 8 |pages = 623–35 |date = August 2007|pmid = 17637800|doi = 10.1038/nrn2196|s2cid = 147427108}}&amp;lt;/ref&amp;gt; and other conditions such as [[Obsessive–compulsive disorder|obsessive-compulsive disorder]] (OCD) and [[epilepsy]]. While its underlying principles and mechanisms are not fully understood, DBS directly changes brain activity in a controlled manner.&amp;lt;ref name=Hammond&amp;gt;{{cite journal|vauthors = Hammond C, Ammari R, Bioulac B, Garcia L|s2cid = 14905206|title = Latest view on the mechanism of action of deep brain stimulation|journal = Movement Disorders|volume = 23|issue = 15|pages = 2111–21|date = November 2008|pmid = 18785230|doi = 10.1002/mds.22120|url = https://www.hal.inserm.fr/inserm-02950812/file/hammond%20mov%20disord-2.Envoy%C3%A902.01.08.pdf}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=garcia&amp;gt;{{cite journal|vauthors = García MR, Pearlmutter BA, Wellstead PE, Middleton RH|title = A slow axon antidromic blockade hypothesis for tremor reduction via deep brain stimulation|journal = PLOS ONE|volume = 8|issue = 9|pages = e73456|year = 2013|pmid = 24066049|pmc = 3774723|doi = 10.1371/journal.pone.0073456|bibcode = 2013PLoSO...873456G|doi-access = free}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Deep brain stimulation (DBS) is a neurosurgical procedure involving the placement of a medical device called a neurostimulator, which sends electrical impulses, through implanted electrodes, to specific targets in the brain (the brain nucleus) for the treatment of movement disorders, including Parkinson's disease, essential tremor, dystonia, and other conditions such as obsessive-compulsive disorder (OCD) and epilepsy. While its underlying principles and mechanisms are not fully understood, DBS directly changes brain activity in a controlled manner.&lt;br /&gt;
&lt;br /&gt;
脑深部电刺激(DBS)是一种神经外科手术，包括放置一种叫做神经刺激器的医疗设备，通过植入的电极将电脉冲发送到大脑中的特定目标(脑核) ，用于治疗运动障碍，包括帕金森病、原发性震颤、肌张力障碍和其他疾病，如强迫症和癫痫。虽然其基本原理和机制尚不完全清楚，DBS 直接改变大脑活动在一个可控的方式。&lt;br /&gt;
&lt;br /&gt;
DBS has been approved by the [[Food and Drug Administration]] as a treatment for essential tremor and [[Parkinson's disease]] (PD) since 1997.&amp;lt;ref&amp;gt;{{Cite web|url=https://www.fda.gov/NewsEvents/Newsroom/PressAnnouncements/ucm451152.htm|title= FDA approves brain implant to help reduce Parkinson's disease and essential tremor symptoms|website=FDA|access-date=May 23, 2016|quote=The first device, Medtronic’s Activa Deep Brain Stimulation Therapy System, was approved in 1997 for tremor associated with essential tremor and Parkinson’s disease.}}&amp;lt;/ref&amp;gt; DBS was approved for [[dystonia]] in 2003,&amp;lt;ref&amp;gt;[http://knbc-tvhealth.ip2m.com/index.cfm?pt=itemDetail&amp;amp;item_id=97349&amp;amp;site_cat_id=470 'Brain pacemaker' treats dystonia.] KNBC TV, April 22, 2003. Retrieved October 18, 2006.&amp;lt;/ref&amp;gt; Obsessive–compulsive disorder (OCD) in 2009, and [[epilepsy]] in 2018.&amp;lt;ref&amp;gt;{{Cite web|url=http://newsroom.medtronic.com/phoenix.zhtml?c=251324&amp;amp;p=irol-newsArticle&amp;amp;ID=2345882|title= Medtronic Receives FDA Approval for Deep Brain Stimulation Therapy for Medically Refractory Epilepsy|website=newsroom.medtronic.com|access-date=2018-12-18}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite web|url=https://www.fda.gov/NewsEvents/Newsroom/PressAnnouncements/ucm149529.htm|title=FDA Approves Humanitarian Device Exemption for Deep Brain Stimulator for Severe Obsessive-Compulsive Disorder|work=FDA}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=gildenberg&amp;gt;{{cite journal|vauthors = Gildenberg PL|title = Evolution of neuromodulation|journal = Stereotactic and Functional Neurosurgery|volume = 83|issue = 2–3|pages = 71–79|year = 2005|pmid = 16006778|doi = 10.1159/000086865|s2cid = 20234898}}&amp;lt;/ref&amp;gt; DBS has been studied in clinical trials as a potential treatment for [[chronic pain]] for various affective disorders, including [[major depressive disorder|major depression]]. It is one of few neurosurgical procedures that allow [[Blind experiment|blinded studies]].&amp;lt;ref name=&amp;quot;Kringelbach&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DBS has been approved by the Food and Drug Administration as a treatment for essential tremor and Parkinson's disease (PD) since 1997. DBS was approved for dystonia in 2003,'Brain pacemaker' treats dystonia. KNBC TV, April 22, 2003. Retrieved October 18, 2006. Obsessive–compulsive disorder (OCD) in 2009, and epilepsy in 2018. DBS has been studied in clinical trials as a potential treatment for chronic pain for various affective disorders, including major depression. It is one of few neurosurgical procedures that allow blinded studies.&lt;br /&gt;
&lt;br /&gt;
自1997年以来，DBS 已经被美国食品和药物管理局批准用于治疗原发性震颤和帕金森病。2003年 DBS 被批准用于肌张力障碍，脑起搏器治疗肌张力障碍。KNBC 电视台，2003年4月22日。18,2006.2009年是强迫症，2018年是癫痫。DBS 已经在临床试验中被研究用作各种情感障碍(包括重度抑郁症)的慢性疼痛的潜在治疗方法。这是少数允许盲法研究的神经外科手术之一。&lt;br /&gt;
&lt;br /&gt;
== Medical use ==&lt;br /&gt;
[[Image:Parkinson surgery.jpg|thumb|250px|Insertion of electrode during surgery using a [[Stereotactic surgery|stereotactic frame]]]]&lt;br /&gt;
&lt;br /&gt;
=== Parkinson's disease ===&lt;br /&gt;
DBS is used to manage some of the symptoms of Parkinson's disease that cannot be adequately controlled with medications.&amp;lt;ref name=NINDS/&amp;gt;&amp;lt;ref name=&amp;quot;USDHHS&amp;quot;&amp;gt;U.S. Department of Health and Human Services. [https://www.fda.gov/MedicalDevices/ProductsandMedicalProcedures/DeviceApprovalsandClearances/Recently-ApprovedDevices/ucm083894.htm FDA approves implanted brain stimulator to control tremors.] Retrieved February 10, 2015.&amp;lt;/ref&amp;gt; PD is treated by applying high-frequency (&amp;gt; 100 Hz) stimulation to three target structures namely to entrolateral thalamus, internal pallidum, and subthalamic nucleus (STN) to mimic the clinical effects of lesioning.&amp;lt;ref&amp;gt;Koller, W. and Melamed, E., 2007. Parkinson's disease and related disorders. 1st ed. Edinburgh: Elsevier.&amp;lt;/ref&amp;gt; It is recommended for people who have PD with motor fluctuations and tremor inadequately controlled by medication, or to those who are intolerant to medication, as long as they do not have severe [[wikt:neuropsychiatric|neuropsychiatric]] problems.&amp;lt;ref name=&amp;quot;pmid20937936&amp;quot;&amp;gt;{{cite journal |vauthors=Bronstein JM, Tagliati M, Alterman RL, Lozano AM, Volkmann J, Stefani A, Horak FB, Okun MS, Foote KD, Krack P, Pahwa R, Henderson JM, Hariz MI, Bakay RA, Rezai A, Marks WJ, Moro E, Vitek JL, Weaver FM, Gross RE, DeLong MR |title=Deep brain stimulation for Parkinson disease: an expert consensus and review of key issues |journal=Archives of Neurology |volume=68 |issue=2 |page=165 |date=February 2011 |pmid=20937936 |pmc=4523130 |doi=10.1001/archneurol.2010.260 |display-authors=1}}&amp;lt;/ref&amp;gt; Four areas of the brain have been treated with neural stimulators in PD. These are the [[globus pallidus internus]], [[thalamus]], [[subthalamic nucleus]] and the [[pedunculopontine nucleus]]. However, most DBS surgeries in routine practice target either the globus pallidus internus, or the Subthalamic nucleus.&lt;br /&gt;
* DBS of the globus pallidus internus reduces uncontrollable shaking movements called [[dyskinesia]]s. This enables a patient to take adequate quantities of medications (especially levodopa), thus leading to better control of symptoms.&lt;br /&gt;
* DBS of the subthalamic nucleus directly reduces symptoms of Parkinson's. This enables a decrease in the dose of anti-parkinsonian medications.&lt;br /&gt;
* DBS of the PPN may help with freezing of gait, while DBS of the thalamus may help with tremor. These targets are not routinely utilized.&lt;br /&gt;
&lt;br /&gt;
DBS is used to manage some of the symptoms of Parkinson's disease that cannot be adequately controlled with medications.U.S. Department of Health and Human Services. FDA approves implanted brain stimulator to control tremors. Retrieved February 10, 2015. PD is treated by applying high-frequency (&amp;gt; 100 Hz) stimulation to three target structures namely to entrolateral thalamus, internal pallidum, and subthalamic nucleus (STN) to mimic the clinical effects of lesioning.Koller, W. and Melamed, E., 2007. Parkinson's disease and related disorders. 1st ed. Edinburgh: Elsevier. It is recommended for people who have PD with motor fluctuations and tremor inadequately controlled by medication, or to those who are intolerant to medication, as long as they do not have severe neuropsychiatric problems. Four areas of the brain have been treated with neural stimulators in PD. These are the globus pallidus internus, thalamus, subthalamic nucleus and the pedunculopontine nucleus. However, most DBS surgeries in routine practice target either the globus pallidus internus, or the Subthalamic nucleus.&lt;br /&gt;
* DBS of the globus pallidus internus reduces uncontrollable shaking movements called dyskinesias. This enables a patient to take adequate quantities of medications (especially levodopa), thus leading to better control of symptoms.&lt;br /&gt;
* DBS of the subthalamic nucleus directly reduces symptoms of Parkinson's. This enables a decrease in the dose of anti-parkinsonian medications.&lt;br /&gt;
* DBS of the PPN may help with freezing of gait, while DBS of the thalamus may help with tremor. These targets are not routinely utilized.&lt;br /&gt;
&lt;br /&gt;
帕金森病用于治疗帕金森病的一些症状，而这些症状是药物治疗无法充分控制的。卫生及公众服务部。美国食品药品管理局批准植入大脑刺激器控制震颤。10,2015.应用高频(&amp;gt; 100hz)刺激丘脑内侧、苍白球和丘脑下核三个靶结构来模拟损伤的临床效果。和 Melamed，e，2007。帕金森病及相关疾病。第一版。爱丁堡: Elsevier。这是建议的人谁有帕金森病的运动波动和震颤不充分控制的药物，或对药物不耐受，只要他们没有严重的神经精神问题。大脑的四个区域已经用神经刺激器治疗帕金森病。这些是内苍白球、丘脑、丘脑下核和脚桥核。然而，大多数常规 DBS 手术的目标要么是内侧苍白球，要么是丘脑下核。&lt;br /&gt;
* 苍白球内侧的深部脑震荡减少称为运动障碍的无法控制的颤抖运动。这使病人能够服用足够数量的药物(尤其是左旋多巴) ，从而更好地控制症状。&lt;br /&gt;
* 丘脑下核的 DBS 可以直接减轻帕金森症的症状。这使得减少剂量的抗帕金森病药物。&lt;br /&gt;
* PPN 的 DBS 可能有助于防止步态冻结，丘脑 DBS 可能有助于防止震颤。这些目标没有经常使用。&lt;br /&gt;
&lt;br /&gt;
Selection of the correct DBS target is a complicated [https://epilepsyparkinsons.com/dbs-stn-versus-gpi/ process]. Multiple clinical characteristics are used to select the target including – identifying the most troublesome symptoms, the dose of levodopa that the patient is currently taking, the effects and side-effects of current medications and concurrent problems. For example, subthalamic nucleus DBS may worsen depression and hence is not preferred in patients with uncontrolled depression.&lt;br /&gt;
&lt;br /&gt;
Selection of the correct DBS target is a complicated process. Multiple clinical characteristics are used to select the target including – identifying the most troublesome symptoms, the dose of levodopa that the patient is currently taking, the effects and side-effects of current medications and concurrent problems. For example, subthalamic nucleus DBS may worsen depression and hence is not preferred in patients with uncontrolled depression.&lt;br /&gt;
&lt;br /&gt;
选择正确的 DBS 目标是一个复杂的过程。多种临床特征被用来选择目标，包括识别最棘手的症状、患者目前正在服用的左旋多巴的剂量、当前药物的作用和副作用以及同时出现的问题。例如，丘脑下核 DBS 可能会加重抑郁症，因此对于无法控制的抑郁症患者来说并不是首选。&lt;br /&gt;
&lt;br /&gt;
Generally DBS is associated with 30–60% improvement in motor score evaluations.&amp;lt;ref name=&amp;quot;Dallapiazza2018&amp;quot;&amp;gt;{{cite book |last1=Dallapiazza |first1=R. F. |last2=Vloo |first2=P. D. |last3=Fomenko |first3=A. |last4=Lee |first4=D. J. |last5=Hamani |first5=C. |last6=Munhoz |first6=R. P. |last7=Hodaie |first7=M. |last8=Lozano |first8=A. M. |last9=Fasano |first9=A. |last10=Kalia |year=2018 |chapter=Considerations for Patient and Target Selection in Deep Brain Stimulation surgery for Parkinson’s disease |editor-last=Stoker |editor-first=T. B. |editor2-last=Greenland |editor2-first=J. C. |title=Parkinson's disease: Pathogenesis and clinical aspects |location=Brisbane |publisher=Codon Publications |isbn=978-0-9944381-6-4 |doi=10.15586/codonpublications.parkinsonsdisease.2018.ch8 |pmid=30702838|s2cid=81155324 }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Generally DBS is associated with 30–60% improvement in motor score evaluations.&lt;br /&gt;
&lt;br /&gt;
一般来说，DBS 与运动成绩评定的30-60% 的改善有关。&lt;br /&gt;
&lt;br /&gt;
=== Tourette syndrome ===&lt;br /&gt;
{{further|Management of Tourette syndrome}}&lt;br /&gt;
&lt;br /&gt;
DBS has been used experimentally in treating adults with severe [[Tourette syndrome]] who do not respond to conventional treatment. Despite widely publicized early successes, DBS remains a highly [[Biomedical research|experimental]] procedure for the treatment of Tourette's, and more study is needed to determine whether long-term benefits outweigh the risks.&amp;lt;ref name=Singer2011&amp;gt;{{cite book|vauthors = Singer HS|title = Hyperkinetic Movement Disorders|chapter = Tourette syndrome and other tic disorders|journal = Handbook of Clinical Neurology|volume = 100|pages = 641–57|date = March 2005|pmid = 21496613|doi = 10.1016/B978-0-444-52014-2.00046-X|isbn = 9780444520142}} Also see {{cite journal|vauthors = Singer HS|title = Tourette's syndrome: from behaviour to biology|journal = The Lancet. Neurology|volume = 4|issue = 3|pages = 149–59|date = March 2005|pmid = 15721825|doi = 10.1016/S1474-4422(05)01012-4|s2cid = 20181150}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=Robertson2011&amp;gt;{{cite journal|vauthors = Robertson MM|title = Gilles de la Tourette syndrome: the complexities of phenotype and treatment|journal = British Journal of Hospital Medicine|volume = 72|issue = 2|pages = 100–07|date = February 2011|pmid = 21378617|doi = 10.12968/hmed.2011.72.2.100}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=Du2010&amp;gt;{{cite journal|vauthors = Du JC, Chiu TF, Lee KM, Wu HL, Yang YC, Hsu SY, Sun CS, Hwang B, Leckman JF|title = Tourette syndrome in children: an updated review|journal = Pediatrics and Neonatology|volume = 51|issue = 5|pages = 255–64|date = October 2010|pmid = 20951354|doi = 10.1016/S1875-9572(10)60050-2|doi-access = free}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;[[Tourette Association of America|Tourette Syndrome Association]]. [https://web.archive.org/web/20051122154536/http://tsa-usa.org/news/DBS-Statement.htm Statement: Deep Brain Stimulation and Tourette Syndrome.] Retrieved November 22, 2005.&amp;lt;/ref&amp;gt; The procedure is well tolerated, but complications include &amp;quot;short battery life, abrupt symptom worsening upon cessation of stimulation, hypomanic or manic conversion, and the significant time and effort involved in optimizing stimulation parameters&amp;quot;.&amp;lt;ref name=Malone&amp;gt;{{cite journal|vauthors = Malone DA, Pandya MM|title = Behavioral neurosurgery|journal = Advances in Neurology|volume = 99|pages = 241–47|year = 2006|pmid = 16536372}}&amp;lt;/ref&amp;gt; As of 2006, five people with TS had been reported on; all experienced reduction in tics and the disappearance of obsessive-compulsive behaviors.&amp;lt;ref name=Malone/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DBS has been used experimentally in treating adults with severe Tourette syndrome who do not respond to conventional treatment. Despite widely publicized early successes, DBS remains a highly experimental procedure for the treatment of Tourette's, and more study is needed to determine whether long-term benefits outweigh the risks. Also see Tourette Syndrome Association. Statement: Deep Brain Stimulation and Tourette Syndrome. Retrieved November 22, 2005. The procedure is well tolerated, but complications include &amp;quot;short battery life, abrupt symptom worsening upon cessation of stimulation, hypomanic or manic conversion, and the significant time and effort involved in optimizing stimulation parameters&amp;quot;. As of 2006, five people with TS had been reported on; all experienced reduction in tics and the disappearance of obsessive-compulsive behaviors.&lt;br /&gt;
&lt;br /&gt;
DBS 已经用于治疗成人重度图雷特氏综合症，常规治疗无效。尽管早期的成功被广泛宣传，DBS 对于图雷特综合症的治疗仍然是一个高度实验性的过程，并且需要更多的研究来确定长期的好处是否大于风险。也可以参考美国图雷特氏综合症协会。声明: 深部脑部刺激和图雷特氏综合症。22,2005.该手术耐受性良好，但并发症包括”电池寿命短、刺激停止后突然症状恶化、狂躁或躁狂转换，以及优化刺激参数所需的大量时间和精力”。截至2006年，已有5人报告患有 TS，他们的抽搐症状都有所减轻，强迫行为也都消失了。&lt;br /&gt;
&lt;br /&gt;
The procedure is invasive and expensive, and requires long-term expert care. Benefits for severe Tourette's are not conclusive, considering less robust effects of this surgery seen in the [[Netherlands]]. Tourette's is more common in [[pediatric]] populations, tending to remit in adulthood, so in general this would not be a recommended procedure for use on children. Because diagnosis of Tourette's is made based on a history of symptoms rather than analysis of neurological activity, it may not always be clear how to apply DBS for a particular person. Due to concern over the use of DBS in [[management of Tourette syndrome|Tourette syndrome treatment]], the [[Tourette Association of America]] convened a group of experts to develop recommendations guiding the use and potential [[clinical trials]] of DBS for TS.&amp;lt;ref&amp;gt;{{cite journal|vauthors = Mink JW, Walkup J, Frey KA, Como P, Cath D, Delong MR, Erenberg G, Jankovic J, Juncos J, Leckman JF, Swerdlow N, Visser-Vandewalle V, Vitek JL|title = Patient selection and assessment recommendations for deep brain stimulation in Tourette syndrome|journal = Movement Disorders|volume = 21|issue = 11|pages = 1831–38|date = November 2006|pmid = 16991144|doi = 10.1002/mds.21039|url = https://deepblue.lib.umich.edu/bitstream/2027.42/55891/1/21039_ftp.pdf|hdl = 2027.42/55891|s2cid = 16353255|hdl-access = free}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The procedure is invasive and expensive, and requires long-term expert care. Benefits for severe Tourette's are not conclusive, considering less robust effects of this surgery seen in the Netherlands. Tourette's is more common in pediatric populations, tending to remit in adulthood, so in general this would not be a recommended procedure for use on children. Because diagnosis of Tourette's is made based on a history of symptoms rather than analysis of neurological activity, it may not always be clear how to apply DBS for a particular person. Due to concern over the use of DBS in Tourette syndrome treatment, the Tourette Association of America convened a group of experts to develop recommendations guiding the use and potential clinical trials of DBS for TS.&lt;br /&gt;
&lt;br /&gt;
这种手术具有侵入性，费用昂贵，需要长期的专家护理。考虑到在荷兰进行的这种手术效果较差，重度抽动秽语综合症的益处还不能下结论。抽动秽语综合症在儿童群体中更为常见，成年后趋于缓解，所以一般不推荐在儿童身上使用这种疗法。因为妥瑞氏症的诊断是基于症状的历史而不是神经活动的分析，所以如何为特定的人应用 DBS 并不总是很清楚。出于对 DBS 用于图雷特氏综合症治疗的担忧，美国图雷特协会召集了一个专家小组，为 DBS 用于 TS 的使用和潜在的临床试验提出建议。&lt;br /&gt;
&lt;br /&gt;
Robertson reported that DBS had been used on 55 adults by 2011, remained an experimental treatment at that time, and recommended that the procedure &amp;quot;should only be conducted by experienced functional neurosurgeons operating in centres which also have a dedicated Tourette syndrome clinic&amp;quot;.&amp;lt;ref name=Robertson2011/&amp;gt; According to Malone ''et al.'' (2006), &amp;quot;Only patients with severe, debilitating, and treatment-refractory illness should be considered; while those with severe [[Personality disorder|personality disorders]] and substance-abuse problems should be excluded.&amp;quot;&amp;lt;ref name=Malone/&amp;gt; Du ''et al.'' (2010) say, &amp;quot;As an invasive therapy, DBS is currently only advisable for severely affected, treatment-refractory TS adults&amp;quot;.&amp;lt;ref name=Du2010/&amp;gt; Singer (2011) says, &amp;quot;pending determination of patient selection criteria and the outcome of carefully controlled clinical trials, a cautious approach is recommended&amp;quot;.&amp;lt;ref name=Singer2011/&amp;gt; Viswanathan ''et al.'' (2012) say DBS should be used for people with &amp;quot;severe functional impairment that cannot be managed medically&amp;quot;.&amp;lt;ref&amp;gt;{{cite journal|vauthors = Viswanathan A, Jimenez-Shahed J, Baizabal Carvallo JF, Jankovic J|title = Deep brain stimulation for Tourette syndrome: target selection|journal = Stereotactic and Functional Neurosurgery|volume = 90|issue = 4|pages = 213–24|year = 2012|pmid = 22699684|doi = 10.1159/000337776|doi-access = free}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Robertson reported that DBS had been used on 55 adults by 2011, remained an experimental treatment at that time, and recommended that the procedure &amp;quot;should only be conducted by experienced functional neurosurgeons operating in centres which also have a dedicated Tourette syndrome clinic&amp;quot;. According to Malone et al. (2006), &amp;quot;Only patients with severe, debilitating, and treatment-refractory illness should be considered; while those with severe personality disorders and substance-abuse problems should be excluded.&amp;quot; Du et al. (2010) say, &amp;quot;As an invasive therapy, DBS is currently only advisable for severely affected, treatment-refractory TS adults&amp;quot;. Singer (2011) says, &amp;quot;pending determination of patient selection criteria and the outcome of carefully controlled clinical trials, a cautious approach is recommended&amp;quot;. Viswanathan et al. (2012) say DBS should be used for people with &amp;quot;severe functional impairment that cannot be managed medically&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
据 Robertson 报道，到2011年，DBS 已经在55名成年人身上使用，在当时仍然是一种试验性的治疗方法，并且建议这种手术“应该只由有经验的功能性神经外科医生进行，这些医生所在的中心还有一个专门的图雷特氏综合症诊所”。根据马龙等人的说法。(2006年) ，“只有患有严重的、使人衰弱的和治疗难以治愈的疾病的患者才应该被考虑; 而那些有严重的人格障碍和物质滥用问题的患者应该被排除在外。”杜等人。(2010)说，“作为一种侵入性治疗，DBS 目前仅适用于严重受影响、治疗难治性 TS 的成年人”。Singer (2011年)说，“在确定患者选择标准和仔细控制的临床试验结果之前，建议采取谨慎的方法”。维斯瓦纳森等人。(2012)表示，DBS 应该用于“严重功能障碍且无法医学治疗”的患者。&lt;br /&gt;
&lt;br /&gt;
== Adverse effects ==&lt;br /&gt;
[[File:Mra1.jpg|thumb|left|Arteriogram of the arterial supply that can hemorrhage during DBS implantation.]]&lt;br /&gt;
&lt;br /&gt;
thumb|left|Arteriogram of the arterial supply that can hemorrhage during DBS implantation.&lt;br /&gt;
&lt;br /&gt;
动脉供血的不良影响 DBS 植入术中可能出血的动脉造影。&lt;br /&gt;
&lt;br /&gt;
DBS carries the risks of major surgery, with a complication rate related to the experience of the surgical team. The major complications include hemorrhage (1–2%) and infection (3–5%).&amp;lt;ref&amp;gt;{{cite journal|vauthors = Doshi PK|title = Long-term surgical and hardware-related complications of deep brain stimulation|journal = Stereotactic and Functional Neurosurgery|volume = 89|issue = 2|pages = 89–95|date = April 2011|pmid = 21293168|doi = 10.1159/000323372|s2cid = 10553177}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DBS carries the risks of major surgery, with a complication rate related to the experience of the surgical team. The major complications include hemorrhage (1–2%) and infection (3–5%).&lt;br /&gt;
&lt;br /&gt;
DBS 带有大手术的风险，并发症的发生率与手术团队的经验有关。主要并发症包括出血(1-2%)和感染(3-5%)。&lt;br /&gt;
&lt;br /&gt;
The potential exists for [[Neuropsychiatry|neuropsychiatric]] side effects after DBS, including [[apathy]], [[hallucinations]], [[hypersexuality]], [[cognitive dysfunction]], [[Clinical depression|depression]], and [[euphoria]]. However, these effects may be temporary and related to (1) correct placement of electrodes, (2) open-loop VS closed loop stimulation , meaning a constant stimulation or an [[A.I.]] monitoring delivery system&amp;lt;ref&amp;gt;{{cite journal|authors = Scangos, K.W., Makhoul, G.S., Sugrue, L.P.|title = State-dependent responses to intracranial brain stimulation in a patient with depression|journal = Nat Med|year = 2021|volume = 27|issue = 2|pages = 229–231|doi = 10.1038/s41591-020-01175-8|pmid = 33462446|issn=1078-8956|pmc = 8284979}}&amp;lt;/ref&amp;gt; and (3) calibration of the stimulator, so these side effects are potentially reversible.&amp;lt;ref&amp;gt;{{cite journal|vauthors = Burn DJ, Tröster AI|title = Neuropsychiatric complications of medical and surgical therapies for Parkinson's disease|journal = Journal of Geriatric Psychiatry and Neurology|volume = 17|issue = 3|pages = 172–80|date = September 2004|pmid = 15312281|doi = 10.1177/0891988704267466|doi-access = free}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The potential exists for neuropsychiatric side effects after DBS, including apathy, hallucinations, hypersexuality, cognitive dysfunction, depression, and euphoria. However, these effects may be temporary and related to (1) correct placement of electrodes, (2) open-loop VS closed loop stimulation , meaning a constant stimulation or an A.I. monitoring delivery system and (3) calibration of the stimulator, so these side effects are potentially reversible.&lt;br /&gt;
&lt;br /&gt;
DBS 有可能导致神经精神方面的副作用，包括冷漠、幻觉、性欲亢进、认知功能障碍、抑郁和欣快感。然而，这些影响可能是暂时的，并且与(1)正确放置电极，(2)开环 VS 闭环刺激有关，这意味着持续的刺激或人工智能。监测传输系统和(3)校准刺激器，所以这些副作用是潜在的可逆的。&lt;br /&gt;
&lt;br /&gt;
Because the brain can shift slightly during surgery, the electrodes can become displaced or dislodged from the specific location. This may cause more profound complications such as [[personality]] changes, but electrode misplacement is relatively easy to identify using [[CT scan]]. Also, complications of surgery may occur, such as bleeding within the brain. After surgery, swelling of the brain tissue, mild disorientation, and sleepiness are normal. After 2–4 weeks, a follow-up visit is used to remove [[Surgical suture|sutures]], turn on the neurostimulator, and program it.{{citation needed|date=November 2013}}&lt;br /&gt;
&lt;br /&gt;
Because the brain can shift slightly during surgery, the electrodes can become displaced or dislodged from the specific location. This may cause more profound complications such as personality changes, but electrode misplacement is relatively easy to identify using CT scan. Also, complications of surgery may occur, such as bleeding within the brain. After surgery, swelling of the brain tissue, mild disorientation, and sleepiness are normal. After 2–4 weeks, a follow-up visit is used to remove sutures, turn on the neurostimulator, and program it.&lt;br /&gt;
&lt;br /&gt;
因为在手术过程中大脑可能会轻微移动，电极可能会从特定位置移位或移位。这可能会导致更深刻的并发症，如个性的改变，但电极错位是相对容易识别使用 CT 扫描。此外，手术并发症也可能发生，如脑出血。手术后，脑组织肿胀，轻度迷失方向和嗜睡是正常的。2-4周后，随访取出缝线，打开神经刺激器，并对其进行编程。&lt;br /&gt;
&lt;br /&gt;
Impaired swimming skills surfaced as an unexpected risk of the procedure; several Parkinson's disease patients lost their ability to swim after receiving deep brain stimulation.&amp;lt;ref&amp;gt;{{Cite web|url=https://www.medpagetoday.com/geriatrics/parkinsonsdisease/83610|title=Deep Brain Stimulation May Put Parkinson's Patients at Risk for Drowning|date=2019-11-27|website=www.medpagetoday.com|language=en|access-date=2019-12-09}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Cite journal|last1=Bangash|first1=Omar K.|last2=Thorburn|first2=Megan|last3=Garcia-Vega|first3=Jimena|last4=Walters|first4=Susan|last5=Stell|first5=Rick|last6=Starkstein|first6=Sergio E.|last7=Lind|first7=Christopher R. P.|date=May 2016|title=Drowning hazard with deep brain stimulation: case report|journal=Journal of Neurosurgery|volume=124|issue=5|pages=1513–16|doi=10.3171/2015.5.JNS15589|issn=1933-0693|pmid=26566200|doi-access=free}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Impaired swimming skills surfaced as an unexpected risk of the procedure; several Parkinson's disease patients lost their ability to swim after receiving deep brain stimulation.&lt;br /&gt;
&lt;br /&gt;
游泳能力受损表现为一个意想不到的风险程序; 几个帕金森病患者失去了他们的能力，在接受深度脑刺激后游泳。&lt;br /&gt;
&lt;br /&gt;
== Mechanisms ==&lt;br /&gt;
The exact mechanism of action of DBS is not known.&amp;lt;ref&amp;gt;{{cite book |author1=Mogilner A.Y. |author2=Benabid A.L. |author3=Rezai A.R. |chapter=Chronic Therapeutic Brain Stimulation: History, Current Clinical Indications, and Future Prospects |editor1=Markov, Marko |editor2=Paul J. Rosch |title=Bioelectromagnetic medicine |publisher=Marcel Dekker |location=New York |year=2004 |pages=133–51 |isbn=978-0-8247-4700-8}}&amp;lt;/ref&amp;gt; A variety of hypotheses try to explain the mechanisms of DBS:&amp;lt;ref&amp;gt;{{cite journal|vauthors = McIntyre CC, Thakor NV|title = Uncovering the mechanisms of deep brain stimulation for Parkinson's disease through functional imaging, neural recording, and neural modeling|journal = Critical Reviews in Biomedical Engineering|volume = 30|issue = 4–6|pages = 249–81|year = 2002|pmid = 12739751|doi = 10.1615/critrevbiomedeng.v30.i456.20}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite journal|vauthors = Herrington TM, Cheng JJ, Eskandar EN|title = Mechanisms of deep brain stimulation|journal = Journal of Neurophysiology|volume = 115|issue = 1|pages = 19–38|date = January 2016|pmid = 26510756|pmc = 4760496|doi = 10.1152/jn.00281.2015}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The exact mechanism of action of DBS is not known. A variety of hypotheses try to explain the mechanisms of DBS:&lt;br /&gt;
&lt;br /&gt;
DBS 的确切作用机制尚不清楚。各种各样的假说试图解释 DBS 的机制:&lt;br /&gt;
&lt;br /&gt;
# Depolarization blockade: Electrical currents block the neuronal output at or near the electrode site.&lt;br /&gt;
# Synaptic inhibition: This causes an indirect regulation of the neuronal output by activating axon terminals with synaptic connections to neurons near the stimulating electrode.&lt;br /&gt;
# Desynchronization of abnormal oscillatory activity of neurons&lt;br /&gt;
# Antidromic activation either activating/blockading distant neurons or blockading slow axons&amp;lt;ref name=garcia/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Depolarization blockade: Electrical currents block the neuronal output at or near the electrode site.&lt;br /&gt;
# Synaptic inhibition: This causes an indirect regulation of the neuronal output by activating axon terminals with synaptic connections to neurons near the stimulating electrode.&lt;br /&gt;
# Desynchronization of abnormal oscillatory activity of neurons&lt;br /&gt;
# Antidromic activation either activating/blockading distant neurons or blockading slow axons&lt;br /&gt;
&lt;br /&gt;
# 去极化阻滞: 电流阻断电极附近的神经元输出。# 突触抑制: 通过激活与刺激电极附近的神经元有突触连接的轴突终末来间接调节神经元的输出。# 神经元异常振荡活动的去同步化 # 逆向激活或激活/阻塞远处的神经元或阻塞缓慢的轴突&lt;br /&gt;
&lt;br /&gt;
DBS represents an advance on previous treatments which involved [[pallidotomy]] (i.e., surgical ablation of the [[globus pallidus]]) or [[thalamotomy]] (i.e., surgical ablation of the thalamus).&amp;lt;ref&amp;gt;{{cite journal|vauthors = Machado A, Rezai AR, Kopell BH, Gross RE, Sharan AD, Benabid AL|s2cid = 18194178|title = Deep brain stimulation for Parkinson's disease: surgical technique and perioperative management|journal = Movement Disorders|volume = 21 Suppl 14|issue = Suppl 14|pages = S247–58|date = June 2006|pmid = 16810722|doi = 10.1002/mds.20959}}&amp;lt;/ref&amp;gt; Instead, a thin lead with multiple electrodes is implanted in the globus pallidus, [[nucleus ventralis intermedius thalami]], or  [[subthalamic nucleus]], and electric pulses are used therapeutically. The lead from the implant is extended to the [[implanted pulse generator|neurostimulator]] under the skin in the chest area.{{citation needed|date=January 2017}}&lt;br /&gt;
&lt;br /&gt;
DBS represents an advance on previous treatments which involved pallidotomy (i.e., surgical ablation of the globus pallidus) or thalamotomy (i.e., surgical ablation of the thalamus). Instead, a thin lead with multiple electrodes is implanted in the globus pallidus, nucleus ventralis intermedius thalami, or  subthalamic nucleus, and electric pulses are used therapeutically. The lead from the implant is extended to the neurostimulator under the skin in the chest area.&lt;br /&gt;
&lt;br /&gt;
DBS 代表了先前苍白球切开术(即手术切除苍白球)或丘脑切开术(即手术切除丘脑)治疗方法的进步。取而代之的是，在苍白球、中间丘脑腹侧核或丘脑下核内植入一个带有多个电极的薄导线，并用电脉冲进行治疗。植入物的导线延伸到胸部皮肤下的神经刺激器。&lt;br /&gt;
&lt;br /&gt;
Its direct effect on the physiology of brain cells and [[neurotransmitters]] is currently debated, but by sending high-frequency electrical impulses into specific areas of the brain, it can mitigate symptoms&amp;lt;ref&amp;gt;{{cite journal|vauthors = Moro E, Lang AE|title = Criteria for deep-brain stimulation in Parkinson's disease: review and analysis|journal = Expert Review of Neurotherapeutics|volume = 6|issue = 11|pages = 1695–705|date = November 2006|pmid = 17144783|doi = 10.1586/14737175.6.11.1695|s2cid = 20857769}}&amp;lt;/ref&amp;gt; and directly diminish the side effects induced by PD medications,&amp;lt;ref&amp;gt;{{cite journal|vauthors = Apetauerova D, Ryan RK, Ro SI, Arle J, Shils J, Papavassiliou E, Tarsy D|title = End of day dyskinesia in advanced Parkinson's disease can be eliminated by bilateral subthalamic nucleus or globus pallidus deep brain stimulation|journal = Movement Disorders|volume = 21|issue = 8|pages = 1277–79|date = August 2006|pmid = 16637040|doi = 10.1002/mds.20896|s2cid = 42122286}}&amp;lt;/ref&amp;gt; allowing a decrease in medications, or making a medication regimen more tolerable.{{citation needed|date=January 2017}}&lt;br /&gt;
&lt;br /&gt;
Its direct effect on the physiology of brain cells and neurotransmitters is currently debated, but by sending high-frequency electrical impulses into specific areas of the brain, it can mitigate symptoms and directly diminish the side effects induced by PD medications, allowing a decrease in medications, or making a medication regimen more tolerable.&lt;br /&gt;
&lt;br /&gt;
它对脑细胞和神经递质生理机能的直接影响目前还存在争议，但通过向大脑特定区域发送高频电脉冲，它可以缓解症状，直接减轻 PD 药物引起的副作用，减少药物治疗，或使药物治疗更能耐受。&lt;br /&gt;
&lt;br /&gt;
== Components and placement ==&lt;br /&gt;
The DBS system consists of three components: the implanted pulse generator (IPG), the lead, and an extension. The IPG is a [[battery (electricity)|battery]]-powered neurostimulator encased in a [[titanium]] housing, which sends electrical pulses to the brain that interfere with [[neural]] [[action potential|activity]] at the target site. The lead is a coiled wire insulated in [[polyurethane]] with four [[platinum-iridium alloy|platinum-iridium]] electrodes and is placed in one or two different nuclei of the brain. The lead is connected to the IPG by an extension, an insulated wire that runs below the skin, from the head, down the side of the neck, behind the ear, to the IPG, which is placed subcutaneously below the [[clavicle]], or in some cases, the [[Human abdomen|abdomen]].&amp;lt;ref name=NINDS&amp;gt;[[National Institute of Neurological Disorders and Stroke]]. [http://www.ninds.nih.gov/disorders/deep_brain_stimulation/deep_brain_stimulation.htm Deep brain stimulation for Parkinson's disease information page] {{Webarchive|url=https://web.archive.org/web/20161120064914/http://www.ninds.nih.gov/disorders/deep_brain_stimulation/deep_brain_stimulation.htm |date=2016-11-20}} Retrieved November 23, 2006.&amp;lt;/ref&amp;gt; The IPG can be calibrated by a [[neurology|neurologist]], [[nurse]], or trained [[technician]] to optimize symptom suppression and control side effects.&amp;lt;ref name=Volkmann&amp;gt;{{cite journal|vauthors = Volkmann J, Herzog J, Kopper F, Deuschl G|title = Introduction to the programming of deep brain stimulators|journal = Movement Disorders|volume = 17 Suppl 3|pages = S181–87|year = 2002|pmid = 11948775|doi = 10.1002/mds.10162|s2cid = 21988668}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The DBS system consists of three components: the implanted pulse generator (IPG), the lead, and an extension. The IPG is a battery-powered neurostimulator encased in a titanium housing, which sends electrical pulses to the brain that interfere with neural activity at the target site. The lead is a coiled wire insulated in polyurethane with four platinum-iridium electrodes and is placed in one or two different nuclei of the brain. The lead is connected to the IPG by an extension, an insulated wire that runs below the skin, from the head, down the side of the neck, behind the ear, to the IPG, which is placed subcutaneously below the clavicle, or in some cases, the abdomen.National Institute of Neurological Disorders and Stroke. Deep brain stimulation for Parkinson's disease information page  Retrieved November 23, 2006. The IPG can be calibrated by a neurologist, nurse, or trained technician to optimize symptom suppression and control side effects.&lt;br /&gt;
&lt;br /&gt;
= = 组件和放置 = = DBS 系统由三部分组成: 植入式脉冲发生器(IPG)、引线和扩展。IPG 是一种电池驱动的神经刺激器，安装在钛合金外壳内，向大脑发送电脉冲，干扰目标位置的神经活动。导线是一个由四个铂铱电极和聚氨酯绝缘的盘绕电线，被放置在大脑的一个或两个不同的细胞核中。导线通过延长连接到 IPG，这是一根绝缘导线，从皮肤下面，从头部，沿着脖子的一侧，在耳朵后面，连接到 IPG，这是放在锁骨下皮下，或在某些情况下，放在腹部。全国神经紊乱和中风研究院。脑深部电刺激治疗帕金森病信息检索页2006年11月23日。IPG 可以由神经科医生、护士或受过训练的技术人员进行校准，以优化症状抑制和控制副作用。&lt;br /&gt;
&lt;br /&gt;
DBS leads are placed in the brain according to the type of symptoms to be addressed. For non-Parkinsonian essential tremor, the lead is placed in either the ventrointermediate nucleus of the [[Human thalamus|thalamus]] or the [[zona incerta]];&amp;lt;ref&amp;gt;{{cite journal|vauthors = Lee JY, Deogaonkar M, Rezai A|title = Deep brain stimulation of globus pallidus internus for dystonia|journal = Parkinsonism &amp;amp; Related Disorders|volume = 13|issue = 5|pages = 261–65|date = July 2007|pmid = 17081796|doi = 10.1016/j.parkreldis.2006.07.020}}&amp;lt;/ref&amp;gt; for dystonia and symptoms associated with PD ([[Rigidity (neurology)|rigidity]], [[bradykinesia]]/[[akinesia]], and [[tremor]]), the lead may be placed in either the [[globus pallidus internus]] or the [[subthalamic nucleus]]; for OCD and depression to the [[nucleus accumbens]]; for incessant pain to the posterior thalamic region or [[periaqueductal gray]]; and for epilepsy treatment to the [[Anterior nuclei of thalamus|anterior thalamic nucleus]].&amp;lt;ref&amp;gt;[http://www.surgeryencyclopedia.com/Ce-Fi/Deep-Brain-Stimulation.html Deep brain stimulation.] Surgery Encyclopedia. Retrieved January 25, 2007.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DBS leads are placed in the brain according to the type of symptoms to be addressed. For non-Parkinsonian essential tremor, the lead is placed in either the ventrointermediate nucleus of the thalamus or the zona incerta; for dystonia and symptoms associated with PD (rigidity, bradykinesia/akinesia, and tremor), the lead may be placed in either the globus pallidus internus or the subthalamic nucleus; for OCD and depression to the nucleus accumbens; for incessant pain to the posterior thalamic region or periaqueductal gray; and for epilepsy treatment to the anterior thalamic nucleus.Deep brain stimulation. Surgery Encyclopedia. Retrieved January 25, 2007.&lt;br /&gt;
&lt;br /&gt;
根据需要处理的症状类型，DBS 导联被放置在大脑中。对于非帕金森病的原发性震颤，铅可以放在丘脑腹中间核或脑带; 对于肌张力障碍和与帕金森病(强直、运动迟缓/运动不能和震颤)相关的症状，铅可以放在丘脑下核内核或者脑伏隔核内核; 对于强迫症和抑郁症; 对于丘脑后部区域或中脑导水管周围灰质持续疼痛; 对于丘脑前部癫痫核治疗。脑深部刺激。外科百科全书。25,2007.&lt;br /&gt;
&lt;br /&gt;
All three components are surgically implanted inside the body. Lead implantation may take place under local anesthesia or under general anesthesia (&amp;quot;asleep DBS&amp;quot;) such as for dystonia. A hole about 14&amp;amp;nbsp;mm in diameter is drilled in the skull and the probe electrode is inserted [[Stereotactic surgery|stereotactically]], using either frame-based or frameless stereotaxis.&amp;lt;ref&amp;gt;{{cite journal|vauthors = Owen CM, Lindsey ME|title = Frame-based stereotaxy in a frameless era: current capabilities, relative role, and the positive- and negative predictive values of blood through the needle.|journal = Journal of Neuro-Oncology|volume = 93|issue = 1|pages = 139–49|date = May 2009|pmid = 19430891|doi = 10.1007/s11060-009-9871-y| doi-access = free}}&amp;lt;/ref&amp;gt; During the awake procedure with local anesthesia, feedback from the person is used to determine the optimal placement of the permanent electrode. During the asleep procedure, intraoperative MRI guidance is used for direct visualization of brain tissue and device.&amp;lt;ref&amp;gt;{{cite journal|vauthors = Starr PA, Martin AJ, Ostrem JL, Talke P, Levesque N, Larson PS|title = Subthalamic nucleus deep brain stimulator placement using high-field interventional magnetic resonance imaging and a skull-mounted aiming device: technique and application accuracy|journal = Journal of Neurosurgery|volume = 112|issue = 3|pages = 479–90|date = March 2010|pmid = 19681683|pmc = 2866526|doi = 10.3171/2009.6.JNS081161}}&amp;lt;/ref&amp;gt; The installation of the IPG and extension leads occurs under general anesthesia.&amp;lt;ref&amp;gt;[http://www.neurosurgery.pitt.edu/imageguided/movement/stimulation.html Deep Brain Stimulation], Department of Neurological Surgery, University of Pittsburgh. Retrieved May 13, 2008.&amp;lt;/ref&amp;gt; The right side of the brain is stimulated to address symptoms on the left side of the body and vice versa.{{citation needed|date=January 2017}}&lt;br /&gt;
&lt;br /&gt;
All three components are surgically implanted inside the body. Lead implantation may take place under local anesthesia or under general anesthesia (&amp;quot;asleep DBS&amp;quot;) such as for dystonia. A hole about 14 mm in diameter is drilled in the skull and the probe electrode is inserted stereotactically, using either frame-based or frameless stereotaxis. During the awake procedure with local anesthesia, feedback from the person is used to determine the optimal placement of the permanent electrode. During the asleep procedure, intraoperative MRI guidance is used for direct visualization of brain tissue and device. The installation of the IPG and extension leads occurs under general anesthesia.Deep Brain Stimulation, Department of Neurological Surgery, University of Pittsburgh. Retrieved May 13, 2008. The right side of the brain is stimulated to address symptoms on the left side of the body and vice versa.&lt;br /&gt;
&lt;br /&gt;
所有这三个组件都是通过手术植入体内的。植入铅可以在局部麻醉或全身麻醉(“睡眠 DBS”)下进行，如肌张力障碍。在颅骨上钻一个直径约14毫米的孔，并立体地插入探针电极，使用基于框架或无框架的立体定向。在局部麻醉下的清醒手术中，通过病人的反馈来确定永久电极的最佳位置。在睡眠过程中，术中 MRI 引导用于直接显示脑组织和设备。在全身麻醉下进行 IPG 和延长导联的安装。深部脑刺激，匹兹堡大学神经外科系。13,2008.大脑的右半球受到刺激来解决身体左半球的症状，反之亦然。&lt;br /&gt;
&lt;br /&gt;
== Research ==&lt;br /&gt;
=== Chronic pain ===&lt;br /&gt;
Stimulation of the [[periaqueductal gray]] and [[Periventricular nucleus|periventricular gray]] for [[Pain#Nociceptive|nociceptive pain]], and the [[internal capsule]], [[ventral posterolateral nucleus]], and [[ventral posteromedial nucleus]] for [[Pain#Nociceptive|neuropathic pain]] has produced impressive results with some people, but results vary. One study&amp;lt;ref name = Young&amp;gt;{{cite journal|authors = Young RF &amp;amp; Brechner T|title = Electrical stimulation of the brain for relief of intractable pain due to cancer|journal = Cancer|volume = 57|year = 1986|issue = 6|pages = 1266–72|pmid = 3484665|doi=10.1002/1097-0142(19860315)57:6&amp;lt;1266::aid-cncr2820570634&amp;gt;3.0.co;2-q| doi-access = free}}&amp;lt;/ref&amp;gt; of 17 people with intractable cancer pain found that 13 were virtually pain free and only four required opioid analgesics on release from hospital after the intervention. Most ultimately did resort to opioids, usually in the last few weeks of life.&amp;lt;ref name = Johnson&amp;gt;{{cite book|authors = Johnson MI, Oxberry SG &amp;amp; Robb K|chapter = Stimulation-induced analgesia|pages = 235–50|editor = Sykes N, Bennett MI &amp;amp; Yuan C-S|title = Clinical pain management: Cancer pain|edition = 2nd|isbn = 978-0-340-94007-5|publisher = Hodder Arnold|location = London|year = 2008}}&amp;lt;/ref&amp;gt; DBS has also been applied for [[phantom limb pain]].&amp;lt;ref&amp;gt;{{cite journal|vauthors = Kringelbach ML, Jenkinson N, Green AL, Owen SL, Hansen PC, Cornelissen PL, Holliday IE, Stein J, Aziz TZ|title = Deep brain stimulation for chronic pain investigated with magnetoencephalography|journal = NeuroReport|volume = 18|issue = 3|pages = 223–28|date = February 2007|pmid = 17314661|doi = 10.1097/wnr.0b013e328010dc3d|citeseerx = 10.1.1.511.2667|s2cid = 7091307}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Stimulation of the periaqueductal gray and periventricular gray for nociceptive pain, and the internal capsule, ventral posterolateral nucleus, and ventral posteromedial nucleus for neuropathic pain has produced impressive results with some people, but results vary. One study of 17 people with intractable cancer pain found that 13 were virtually pain free and only four required opioid analgesics on release from hospital after the intervention. Most ultimately did resort to opioids, usually in the last few weeks of life. DBS has also been applied for phantom limb pain.&lt;br /&gt;
&lt;br /&gt;
慢性疼痛刺激中脑导水管周围灰质和脑室周围灰质以治疗伤害性疼痛，内囊、腹外侧核和神经性疼痛内侧中央核对于一些人已经产生了令人印象深刻的结果，但是结果不一。一项对17名顽固性癌症疼痛患者的研究发现，其中13人几乎没有疼痛，只有4人在干预后出院时需要服用阿片类镇痛药。大多数人最终依靠阿片类药物，通常是在生命的最后几周。DBS 也用于治疗幻肢痛。&lt;br /&gt;
&lt;br /&gt;
=== Major depression and obsessive-compulsive disorder ===&lt;br /&gt;
[[File:X-ray of deep brain stimulation in OCD, L.png|thumb|Lateral X-ray of the head: Deep brain stimulation in [[Obsessive–compulsive disorder]] (OCD). 42 year old man, surgery in 2013.]]&lt;br /&gt;
&lt;br /&gt;
DBS has been used in a small number of clinical trials to treat people with severe [[treatment-resistant depression]] (TRD).&amp;lt;ref name=&amp;quot;Anderson&amp;quot;&amp;gt;{{cite journal|vauthors = Anderson RJ, Frye MA, Abulseoud OA, Lee KH, McGillivray JA, Berk M, Tye SJ|title = Deep brain stimulation for treatment-resistant depression: efficacy, safety and mechanisms of action|journal = Neuroscience and Biobehavioral Reviews|volume = 36|issue = 8|pages = 1920–33|date = September 2012|pmid = 22721950|doi = 10.1016/j.neubiorev.2012.06.001|s2cid = 207089716}}&amp;lt;/ref&amp;gt; A number of neuroanatomical targets have been used for DBS for TRD including the subgenual cingulate gyrus, posterior gyrus rectus,&amp;lt;ref&amp;gt;{{cite journal|vauthors = Accolla EA, Aust S, Merkl A, Schneider GH, Kühn AA, Bajbouj M, Draganski B|title = Deep brain stimulation of the posterior gyrus rectus region for treatment resistant depression|journal = Journal of Affective Disorders|volume = 194|pages = 33–37|date = April 2016|pmid = 26802505|doi = 10.1016/j.jad.2016.01.022|doi-access = free}}&amp;lt;/ref&amp;gt; [[nucleus accumbens]],&amp;lt;ref&amp;gt;{{cite journal|vauthors = Schlaepfer TE, Cohen MX, Frick C, Kosel M, Brodesser D, Axmacher N, Joe AY, Kreft M, Lenartz D, Sturm V|title = Deep brain stimulation to reward circuitry alleviates anhedonia in refractory major depression|journal = Neuropsychopharmacology|volume = 33|issue = 2|pages = 368–77|date = January 2008|pmid = 17429407|doi = 10.1038/sj.npp.1301408|doi-access = free}}&amp;lt;/ref&amp;gt; ventral capsule/ventral striatum, inferior thalamic peduncle, and the lateral habenula.&amp;lt;ref name=&amp;quot;Anderson&amp;quot;/&amp;gt; A recently proposed target of DBS intervention in depression is the superolateral branch of the [[medial forebrain bundle]]; its stimulation lead to surprisingly rapid antidepressant effects.&amp;lt;ref&amp;gt;{{cite journal|vauthors = Schlaepfer TE, Bewernick BH, Kayser S, Mädler B, Coenen VA|title = Rapid effects of deep brain stimulation for treatment-resistant major depression|journal = Biological Psychiatry|volume = 73|issue = 12|pages = 1204–12|date = June 2013|pmid = 23562618|doi = 10.1016/j.biopsych.2013.01.034|s2cid = 6374368}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DBS has been used in a small number of clinical trials to treat people with severe treatment-resistant depression (TRD). A number of neuroanatomical targets have been used for DBS for TRD including the subgenual cingulate gyrus, posterior gyrus rectus, nucleus accumbens, ventral capsule/ventral striatum, inferior thalamic peduncle, and the lateral habenula. A recently proposed target of DBS intervention in depression is the superolateral branch of the medial forebrain bundle; its stimulation lead to surprisingly rapid antidepressant effects.&lt;br /&gt;
&lt;br /&gt;
DBS 已经在少数临床试验中用于治疗严重难治性抑郁症(TRD)患者。目前已有多种神经解剖学靶点用于视网膜下区(DBS) TRD 的研究，包括扣带回下部、直回后部、伏隔核、腹侧囊/腹侧纹状体、丘脑下端和外侧缰核。最近提出的 DBS 干预抑郁症的目标是前脑内侧神经束的上外侧分支; 它的刺激导致了惊人的快速抗抑郁作用。&lt;br /&gt;
&lt;br /&gt;
The small numbers in the early trials of DBS for TRD currently limit the selection of an optimal neuroanatomical target.&amp;lt;ref name=&amp;quot;Anderson&amp;quot;/&amp;gt; Evidence is insufficient to support DBS as a therapeutic modality for depression; however, the procedure may be an effective [[treatment modality]] in the future.&amp;lt;ref&amp;gt;{{cite journal |last1=Murphy |first1=Destiny N. |last2=Boggio |first2=Paulo |last3=Fregni |first3=Felipe |title=Transcranial direct current stimulation as a therapeutic tool for the treatment of major depression: insights from past and recent clinical studies |journal=Curr Opin Psychiatry |year=2009 |volume=22 |issue=3 |pages=306–11 |doi=10.1097/YCO.0b013e32832a133f |pmid=19339889 |s2cid=11392351}}&amp;lt;/ref&amp;gt; In fact, beneficial results have been documented in the neurosurgical literature, including a few instances in which people who were deeply depressed were provided with portable stimulators for self treatment.&amp;lt;ref name=&amp;quot;Delgado 1986&amp;quot;&amp;gt;{{cite book|last=Delgado|first=Jose|title=Physical Control of the Mind: Toward a Psychocivilized Society|year=1986|publisher=Harper and Row|location=New York |isbn=0-06-131914-7}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;Faria 3&amp;quot;&amp;gt;{{cite journal|vauthors = Faria MA|title = Violence, mental illness, and the brain – A brief history of psychosurgery: Part 3 – From deep brain stimulation to amygdalotomy for violent behavior, seizures, and pathological aggression in humans|journal = Surgical Neurology International|volume = 4|issue = 1|pages = 91|year = 2013|pmid = 23956934|pmc = 3740620|doi = 10.4103/2152-7806.115162}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite journal|vauthors = Robison RA, Taghva A, Liu CY, Apuzzo ML|title = Surgery of the mind, mood, and conscious state: an idea in evolution|journal = World Neurosurgery|volume = 77|issue = 5–6|pages = 662–86|year = 2012|pmid = 22446082|doi = 10.1016/j.wneu.2012.03.005}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The small numbers in the early trials of DBS for TRD currently limit the selection of an optimal neuroanatomical target. Evidence is insufficient to support DBS as a therapeutic modality for depression; however, the procedure may be an effective treatment modality in the future. In fact, beneficial results have been documented in the neurosurgical literature, including a few instances in which people who were deeply depressed were provided with portable stimulators for self treatment.&lt;br /&gt;
&lt;br /&gt;
DBS 治疗 TRD 的早期试验数量较少，目前限制了最佳神经解剖靶点的选择。证据不足以支持 DBS 作为抑郁症的治疗方式，但是，该程序可能是一个有效的治疗方式在未来。事实上，神经外科文献已经记录了有益的结果，包括一些深度抑郁患者获得便携式刺激器进行自我治疗的例子。&lt;br /&gt;
&lt;br /&gt;
A systematic review of DBS for TRD and OCD identified 23 cases, nine for OCD, seven for TRD, and one for both.  &amp;quot;[A]bout half the patients did show dramatic improvement&amp;quot; and  adverse events were &amp;quot;generally trivial&amp;quot; given the younger age of the psychiatric  population relative to the age of people with movement disorders.&amp;lt;ref name=Lakhan&amp;gt;{{cite journal|vauthors = Lakhan SE, Callaway E|title = Deep brain stimulation for obsessive-compulsive disorder and treatment-resistant depression: systematic review|journal = BMC Research Notes|volume = 3|issue = 1|pages = 60|date = March 2010|pmid = 20202203|pmc = 2838907|doi = 10.1186/1756-0500-3-60}}&amp;lt;/ref&amp;gt; The first randomized, controlled study of DBS for the treatment of TRD targeting the ventral capsule/ventral striatum area did not demonstrate a significant difference in response rates between the active and sham groups at the end of a 16-week study.&amp;lt;ref&amp;gt;{{cite journal|vauthors = Dougherty DD, Rezai AR, Carpenter LL, Howland RH, Bhati MT, O'Reardon JP, Eskandar EN, Baltuch GH, Machado AD, Kondziolka D, Cusin C, Evans KC, Price LH, Jacobs K, Pandya M, Denko T, Tyrka AR, Brelje T, Deckersbach T, Kubu C, Malone DA|title = A Randomized Sham-Controlled Trial of Deep Brain Stimulation of the Ventral Capsule/Ventral Striatum for Chronic Treatment-Resistant Depression|journal = Biological Psychiatry|volume = 78|issue = 4|pages = 240–48|date = August 2015|pmid = 25726497|doi = 10.1016/j.biopsych.2014.11.023|s2cid = 22644265}}&amp;lt;/ref&amp;gt; However, a second randomized controlled study of ventral capsule DBS for TRD did demonstrate a significant difference in response rates between active DBS (44% responders) and sham DBS (0% responders).&amp;lt;ref&amp;gt;{{cite journal|vauthors = Bergfeld IO, Mantione M, Hoogendoorn ML, Ruhé HG, Notten P, van Laarhoven J, Visser I, Figee M, de Kwaasteniet BP, Horst F, Schene AH, van den Munckhof P, Beute G, Schuurman R, Denys D|display-authors = 6|title = Deep Brain Stimulation of the Ventral Anterior Limb of the Internal Capsule for Treatment-Resistant Depression: A Randomized Clinical Trial|journal = JAMA Psychiatry|volume = 73|issue = 5|pages = 456–64|date = May 2016|pmid = 27049915|doi = 10.1001/jamapsychiatry.2016.0152|doi-access = free}}&amp;lt;/ref&amp;gt; Efficacy of DBS is established for OCD, with on average 60% responders in severely ill and treatment-resistant patients.&amp;lt;ref&amp;gt;{{cite journal|vauthors = Alonso P, Cuadras D, Gabriëls L, Denys D, Goodman W, Greenberg BD, Jimenez-Ponce F, Kuhn J, Lenartz D, Mallet L, Nuttin B, Real E, Segalas C, Schuurman R, du Montcel ST, Menchon JM|display-authors = 6|title = Deep Brain Stimulation for Obsessive-Compulsive Disorder: A Meta-Analysis of Treatment Outcome and Predictors of Response|journal = PLOS ONE|volume = 10|issue = 7|pages = e0133591|date = 2015-07-24|pmid = 26208305|pmc = 4514753|doi = 10.1371/journal.pone.0133591|bibcode = 2015PLoSO..1033591A|doi-access = free}}&amp;lt;/ref&amp;gt; Based on these results the [[Food and Drug Administration]] (FDA) has approved DBS for treatment-resistant OCD under a Humanitarian Device Exemption (HDE), requiring that the procedure be performed only in a hospital with specialist qualifications to do so.&lt;br /&gt;
&lt;br /&gt;
A systematic review of DBS for TRD and OCD identified 23 cases, nine for OCD, seven for TRD, and one for both.  &amp;quot;[A]bout half the patients did show dramatic improvement&amp;quot; and  adverse events were &amp;quot;generally trivial&amp;quot; given the younger age of the psychiatric  population relative to the age of people with movement disorders. The first randomized, controlled study of DBS for the treatment of TRD targeting the ventral capsule/ventral striatum area did not demonstrate a significant difference in response rates between the active and sham groups at the end of a 16-week study. However, a second randomized controlled study of ventral capsule DBS for TRD did demonstrate a significant difference in response rates between active DBS (44% responders) and sham DBS (0% responders). Efficacy of DBS is established for OCD, with on average 60% responders in severely ill and treatment-resistant patients. Based on these results the Food and Drug Administration (FDA) has approved DBS for treatment-resistant OCD under a Humanitarian Device Exemption (HDE), requiring that the procedure be performed only in a hospital with specialist qualifications to do so.&lt;br /&gt;
&lt;br /&gt;
一项针对 TRD 和 OCD 的深部脑震荡系统综述确诊了23例，其中9例为强迫症，7例为 TRD，还有一例两者都有。“一半的病人确实显示出了显著的改善”，并且不良事件“通常是微不足道的”，因为相对于运动障碍患者的年龄来说，精神病患者的年龄更小。在一项为期16周的研究结束时，针对腹侧被膜/腹侧纹状体区域的 DBS 治疗 TRD 的首次随机对照研究并没有显示活跃组和假手术组的有效率有显著差异。然而，第二个随机对照研究腹腔胶囊 DBS 治疗 TRD 的结果显示，活动性 DBS (44% 有效者)和假 DBS (0% 有效者)的有效率有显著差异。DBS 对强迫症的疗效已经确立，在重症患者和难治性患者中平均有60% 的反应。基于这些结果，美国食品和药物管理局(FDA)根据人道主义器械豁免(HDE)批准 DBS 用于耐药性强迫症，要求只有在具有专家资格的医院才能进行这种手术。&lt;br /&gt;
&lt;br /&gt;
DBS for TRD can be as effective as antidepressants and can have good response and remission rates, but adverse effects and safety must be more fully evaluated. Common side effects include &amp;quot;wound infection, perioperative headache, and worsening/irritable mood [and] increased suicidality&amp;quot;.&amp;lt;ref name=Moreines&amp;gt;{{cite journal|vauthors = Moreines JL, McClintock SM, Holtzheimer PE|title = Neuropsychologic effects of neuromodulation techniques for treatment-resistant depression: a review|journal = Brain Stimulation|volume = 4|issue = 1|pages = 17–27|date = January 2011|pmid = 21255751|pmc = 3023999|doi = 10.1016/j.brs.2010.01.005}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DBS for TRD can be as effective as antidepressants and can have good response and remission rates, but adverse effects and safety must be more fully evaluated. Common side effects include &amp;quot;wound infection, perioperative headache, and worsening/irritable mood [and] increased suicidality&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
DBS 治疗 TRD 可以和抗抑郁药物一样有效，并且有良好的反应和缓解率，但是不良反应和安全性必须进行更充分的评估。常见的副作用包括“伤口感染、围手术期头痛、情绪恶化/易激情绪[和]自杀倾向增加”。&lt;br /&gt;
&lt;br /&gt;
=== Other clinical applications ===&lt;br /&gt;
Results of DBS in people with dystonia, where positive effects often appear gradually over a period of weeks to months, indicate a role of functional reorganization in at least some cases.&amp;lt;ref&amp;gt;{{cite journal|vauthors = Krauss JK|title = Deep brain stimulation for dystonia in adults. Overview and developments|journal = Stereotactic and Functional Neurosurgery|volume = 78|issue = 3–4|pages = 168–82|year = 2002|pmid = 12652041|doi = 10.1159/000068963|s2cid = 71888143}}&amp;lt;/ref&amp;gt; The procedure has been tested for effectiveness in people with [[epilepsy]] that is resistant to medication.&amp;lt;ref&amp;gt;{{cite journal|vauthors = Wu C, Sharan AD|title = Neurostimulation for the treatment of epilepsy: a review of current surgical interventions|journal = Neuromodulation|volume = 16|issue = 1|pages = 10–24; discussion 24|date = Jan–Feb 2013|pmid = 22947069|doi = 10.1111/j.1525-1403.2012.00501.x|s2cid = 1711587}}&amp;lt;/ref&amp;gt; DBS may reduce or eliminate epileptic seizures with programmed or responsive stimulation.{{citation needed|date=January 2017}}&lt;br /&gt;
&lt;br /&gt;
Results of DBS in people with dystonia, where positive effects often appear gradually over a period of weeks to months, indicate a role of functional reorganization in at least some cases. The procedure has been tested for effectiveness in people with epilepsy that is resistant to medication. DBS may reduce or eliminate epileptic seizures with programmed or responsive stimulation.&lt;br /&gt;
&lt;br /&gt;
在肌张力障碍患者中 DBS 的其他临床应用结果，其积极作用通常在数周至数月内逐渐显现，至少在某些情况下表明了功能重组的作用。这种方法已经在对药物耐药的癫痫患者身上进行了有效性测试。DBS 可以通过程序性或反应性刺激减少或消除癫痫发作。&lt;br /&gt;
&lt;br /&gt;
DBS of the [[Septal nuclei|septal areas]] of persons with [[schizophrenia]] have resulted in enhanced alertness, cooperation, and euphoria.&amp;lt;ref&amp;gt;{{cite journal|vauthors = Heath RG|title = Pleasure and brain activity in man. Deep and surface electroencephalograms during orgasm|journal = The Journal of Nervous and Mental Disease|volume = 154|issue = 1|pages = 3–18|date = January 1972|pmid = 5007439|doi = 10.1097/00005053-197201000-00002|s2cid = 136706}}&amp;lt;/ref&amp;gt; Persons with [[narcolepsy]] and [[complex-partial seizures]] also reported euphoria and sexual thoughts from self-elicited DBS of the septal nuclei.&amp;lt;ref name=&amp;quot;Faria 3&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DBS of the septal areas of persons with schizophrenia have resulted in enhanced alertness, cooperation, and euphoria. Persons with narcolepsy and complex-partial seizures also reported euphoria and sexual thoughts from self-elicited DBS of the septal nuclei.&lt;br /&gt;
&lt;br /&gt;
精神分裂症患者的房间隔区域的 DBS 导致了警觉性、合作性和欣快感的增强。嗜睡症和复杂部分癫痫患者也报告了自我诱发的隔核 DBS 所引起的欣快感和性想法。&lt;br /&gt;
&lt;br /&gt;
Orgasmic ecstasy was reported with the electrical stimulation of the brain with depth electrodes in the left [[hippocampus]] at 3mA, and the right [[hippocampus]] at 1 mA.&amp;lt;ref&amp;gt;{{cite journal|vauthors = Surbeck W, Bouthillier A, Nguyen DK|title = Bilateral cortical representation of orgasmic ecstasy localized by depth electrodes|journal = Epilepsy &amp;amp; Behavior Case Reports|volume = 1|pages = 62–65|pmid = 25667829|pmc = 4150648|doi = 10.1016/j.ebcr.2013.03.002|year = 2013}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Orgasmic ecstasy was reported with the electrical stimulation of the brain with depth electrodes in the left hippocampus at 3mA, and the right hippocampus at 1 mA.&lt;br /&gt;
&lt;br /&gt;
用深度电极电刺激大脑左侧海马3毫安，右侧海马1毫安。&lt;br /&gt;
&lt;br /&gt;
In 2015, a group of Brazilian researchers led by neurosurgeon {{ill|Erich Fonoff|pt|Erich Fonoff}} described a new technique that allows for simultaneous implants of electrodes called bilateral stereotactic procedure for DBS. The main benefits are less time spent on the procedure and greater accuracy.&amp;lt;ref&amp;gt;{{cite journal|vauthors = Fonoff ET, Azevedo A, Angelos JS, Martinez RC, Navarro J, Reis PR, Sepulveda ME, Cury RG, Ghilardi MG, Teixeira MJ, Lopez WO|title = Simultaneous bilateral stereotactic procedure for deep brain stimulation implants: a significant step for reducing operation time|journal = Journal of Neurosurgery|volume = 125|issue = 1|pages = 85–89|date = July 2016|pmid = 26684776|doi = 10.3171/2015.7.JNS151026|doi-access = free}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In 2015, a group of Brazilian researchers led by neurosurgeon  described a new technique that allows for simultaneous implants of electrodes called bilateral stereotactic procedure for DBS. The main benefits are less time spent on the procedure and greater accuracy.&lt;br /&gt;
&lt;br /&gt;
2015年，由神经外科医生领导的一组巴西研究人员描述了一种新技术，该技术允许同时植入电极，称为 DBS 的双侧立体定向手术。主要的好处是花在手术上的时间更少，而且更准确。&lt;br /&gt;
&lt;br /&gt;
In 2016, DBS was found to improve learning and memory in a mouse model of [[Rett syndrome]].&amp;lt;ref&amp;gt;{{cite journal|vauthors = Lu H, Ash RT, He L, Kee SE, Wang W, Yu D, Hao S, Meng X, Ure K, Ito-Ishida A, Tang B, Sun Y, Ji D, Tang J, Arenkiel BR, Smirnakis SM, Zoghbi HY|title = Loss and Gain of MeCP2 Cause Similar Hippocampal Circuit Dysfunction that Is Rescued by Deep Brain Stimulation in a Rett Syndrome Mouse Model|journal = Neuron|volume = 91|issue = 4|pages = 739–47|date = August 2016|pmid = 27499081|pmc = 5019177|doi = 10.1016/j.neuron.2016.07.018}}&amp;lt;/ref&amp;gt; More recent (2018) work showed, that forniceal DBS upregulates genes involved in synaptic function, cell survival, and neurogenesis,&amp;lt;ref&amp;gt;{{cite journal|vauthors = Pohodich AE, Yalamanchili H, Raman AT, Wan YW, Gundry M, Hao S, Jin H, Tang J, Liu Z, Zoghbi HY|title = Forniceal deep brain stimulation induces gene expression and splicing changes that promote neurogenesis and plasticity|journal = eLife|volume = 7|date = March 2018|pmid = 29570050|pmc = 5906096|doi = 10.7554/elife.34031}}&amp;lt;/ref&amp;gt; making some first steps at explaining the restoration of hippocampal circuit function.&lt;br /&gt;
&lt;br /&gt;
In 2016, DBS was found to improve learning and memory in a mouse model of Rett syndrome. More recent (2018) work showed, that forniceal DBS upregulates genes involved in synaptic function, cell survival, and neurogenesis, making some first steps at explaining the restoration of hippocampal circuit function.&lt;br /&gt;
&lt;br /&gt;
2016年，在一个瑞特综合征小鼠模型中，发现 DBS 能改善学习和记忆。最近(2018年)的研究表明，私通 DBS 上调了与突触功能、细胞存活和神经发生有关的基因，为解释海马回路功能的恢复迈出了第一步。&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
{{col div|colwidth=30em}}&lt;br /&gt;
&lt;br /&gt;
* [[Brain implant]]&lt;br /&gt;
* [[Electroconvulsive therapy]]&lt;br /&gt;
* [[Electroencephalography]]&lt;br /&gt;
* [[Neuromodulation (medicine)]]&lt;br /&gt;
* [[Neuroprosthetics]]&lt;br /&gt;
* [[Organization for Human Brain Mapping]]&lt;br /&gt;
* [[Responsive neurostimulation device]]&lt;br /&gt;
* [[Robert Galbraith Heath|Robert G. Heath]]&lt;br /&gt;
* {{Interlanguage link multi|Stimulation cérébrale profonde|fr}}&lt;br /&gt;
&lt;br /&gt;
* Brain implant&lt;br /&gt;
* Electroconvulsive therapy&lt;br /&gt;
* Electroencephalography&lt;br /&gt;
* Neuromodulation (medicine)&lt;br /&gt;
* Neuroprosthetics&lt;br /&gt;
* Organization for Human Brain Mapping&lt;br /&gt;
* Responsive neurostimulation device&lt;br /&gt;
* Robert G. Heath&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 植入大脑 &lt;br /&gt;
* 电痉挛疗法 &lt;br /&gt;
* 脑电图 &lt;br /&gt;
* 神经调节(医学) &lt;br /&gt;
* 神经修复 &lt;br /&gt;
* 人脑映射组织 &lt;br /&gt;
* 响应性神经刺激疗法设备 &lt;br /&gt;
* Robert g. Heath &lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
{{colend}}&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
{{reflist|32em}}&lt;br /&gt;
&lt;br /&gt;
== Further reading ==&lt;br /&gt;
{{Scholia|topic}}&lt;br /&gt;
&lt;br /&gt;
{{refbegin}}&lt;br /&gt;
&lt;br /&gt;
* {{cite journal|vauthors = Appleby BS, Duggan PS, Regenberg A, Rabins PV|s2cid = 22925963|title = Psychiatric and neuropsychiatric adverse events associated with deep brain stimulation: A meta-analysis of ten years' experience|journal = Movement Disorders|volume = 22|issue = 12|pages = 1722–8|date = September 2007|pmid = 17721929|doi = 10.1002/mds.21551}}&lt;br /&gt;
* {{cite journal|vauthors = Schlaepfer TE, Bewernick BH, Kayser S, Hurlemann R, Coenen VA|title = Deep brain stimulation of the human reward system for major depression--rationale, outcomes and outlook|journal = Neuropsychopharmacology|volume = 39|issue = 6|pages = 1303–14|date = May 2014|pmid = 24513970|pmc = 3988559|doi = 10.1038/npp.2014.28}}&lt;br /&gt;
* {{cite journal|vauthors = Diamond A, Shahed J, Azher S, Dat-Vuong K, Jankovic J|s2cid = 29677149|title = Globus pallidus deep brain stimulation in dystonia|journal = Movement Disorders|volume = 21|issue = 5|pages = 692–5|date = May 2006|pmid = 16342255|doi = 10.1002/mds.20767}}&lt;br /&gt;
* {{cite book|vauthors = Richter EO, Lozano AM |chapter=Deep Brain Stimulation for Parkinson's Disease in Movement Disorders|veditors = Markov M, Rosch PJ |title=Bioelectromagnetic medicine |publisher=Marcel Dekker |location=New York, N.Y |year=2004 |pages=265–76 |isbn=978-0-8247-4700-8}}&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
* &lt;br /&gt;
* &lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
{{refend}}&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
{{Commons category|Deep brain stimulation}}&lt;br /&gt;
&lt;br /&gt;
* '''Video:''' [https://www.youtube.com/watch?v=KDjWdtDyz5I Deep brain stimulation to treat Parkinson's disease]&lt;br /&gt;
* '''Video:''' [https://www.youtube.com/watch?v=9phXvB077Dw Deep brain stimulation therapy for Parkinson's disease]&lt;br /&gt;
* [http://www.madinamerica.com/2015/09/adverse-effects-perils-deep-brain-stimulation-depression/ The Perils of Deep Brain Stimulation for Depression. Author Danielle Egan. September 24, 2015.]&lt;br /&gt;
* [https://www.mountsinai.org/locations/center-neuromodulation/what-is/dbs/info Treatment center for Deep Brain Stimulation of movement disorders, OCD, Tourette or depression.]&lt;br /&gt;
* [https://www.mountsinai.org/care/behavioral-health/services/ocd-tics/dbs Treatment center for Deep Brain Stimulation for OCD]&lt;br /&gt;
&lt;br /&gt;
* Video: Deep brain stimulation to treat Parkinson's disease&lt;br /&gt;
* Video: Deep brain stimulation therapy for Parkinson's disease&lt;br /&gt;
* The Perils of Deep Brain Stimulation for Depression. Author Danielle Egan. September 24, 2015.&lt;br /&gt;
* Treatment center for Deep Brain Stimulation of movement disorders, OCD, Tourette or depression.&lt;br /&gt;
* Treatment center for Deep Brain Stimulation for OCD&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 视频: 脑深部电刺激治疗帕金森氏症 &lt;br /&gt;
* 视频: 脑深部电刺激治疗帕金森氏症 &lt;br /&gt;
* 脑深部电刺激治疗抑郁症的风险。作者丹妮尔 · 伊根。2015年9月24日。&lt;br /&gt;
* 脑深部电刺激治疗运动障碍、强迫症、抽动秽语综合症或抑郁症中心。&lt;br /&gt;
* 脑深部电刺激治疗强迫症中心&lt;br /&gt;
&lt;br /&gt;
{{DEFAULTSORT:Deep Brain Stimulation}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Electrotherapy]]&lt;br /&gt;
[[Category:Medical devices]]&lt;br /&gt;
[[Category:Neurology procedures]]&lt;br /&gt;
[[Category:Neuroprosthetics]]&lt;br /&gt;
[[Category:Neurosurgical procedures]]&lt;br /&gt;
[[Category:Neurotechnology]]&lt;br /&gt;
[[Category:Tourette syndrome]]&lt;br /&gt;
[[Category:1987 introductions]]&lt;br /&gt;
&lt;br /&gt;
Category:Electrotherapy&lt;br /&gt;
Category:Medical devices&lt;br /&gt;
Category:Neurology procedures&lt;br /&gt;
Category:Neuroprosthetics&lt;br /&gt;
Category:Neurosurgical procedures&lt;br /&gt;
Category:Neurotechnology&lt;br /&gt;
Category:Tourette syndrome&lt;br /&gt;
Category:1987 introductions&lt;br /&gt;
&lt;br /&gt;
类别: 电子疗法类别: 医疗设备类别: 神经内科手术类别: 神经修复类别: 神经外科手术类别: 神经技术类别: 神经图雷特氏综合症类别: 1987年引言&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;This page was moved from [[wikipedia:en:Deep brain stimulation]]. Its edit history can be viewed at [[深部脑刺激/edithistory]]&amp;lt;/small&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:待整理页面]]&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E5%8F%8C%E7%A8%B3%E6%80%A7&amp;diff=29554</id>
		<title>双稳性</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E5%8F%8C%E7%A8%B3%E6%80%A7&amp;diff=29554"/>
		<updated>2022-03-25T07:26:19Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：Moved page from wikipedia:en:Bistability (history)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;此词条暂由彩云小译翻译，翻译字数共1727，未经人工整理和审校，带来阅读不便，请见谅。&lt;br /&gt;
&lt;br /&gt;
{{for|electronics|Flip-flop (electronics)|Multivibrator}}&lt;br /&gt;
{{Use dmy dates|date=January 2021}}&lt;br /&gt;
&lt;br /&gt;
[[Image:Bistability graph.svg|thumb|upright=1.4|A graph of the [[potential energy]] of a bistable system; it has two local minima &amp;lt;math&amp;gt;x_1&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;x_2&amp;lt;/math&amp;gt;.  A surface shaped like this with two &amp;quot;low points&amp;quot; can act as a bistable system; a ball resting on the surface can only be stable at those two positions, such as balls marked &amp;quot;1&amp;quot; and &amp;quot;2&amp;quot;.  Between the two is a local maximum &amp;lt;math&amp;gt;x_3&amp;lt;/math&amp;gt;. A ball located at this point, ball 3, is in equilibrium but unstable; the slightest disturbance will cause it to move to one of the stable points.]]&lt;br /&gt;
&lt;br /&gt;
In a [[dynamical system]], '''bistability''' means the system has two [[stable equilibrium (disambiguation)|stable equilibrium states]].&amp;lt;ref name=&amp;quot;Morris&amp;quot;&amp;gt;{{cite book&lt;br /&gt;
 | last1  = Morris&lt;br /&gt;
 | first1 =  Christopher G. &lt;br /&gt;
 | title  = Academic Press Dictionary of Science and Technology&lt;br /&gt;
 | publisher = Gulf Professional publishing&lt;br /&gt;
 | date   = 1992&lt;br /&gt;
 | pages  = 267&lt;br /&gt;
 | url    = https://books.google.com/books?id=nauWlPTBcjIC&amp;amp;q=bistable+bistability&amp;amp;pg=PA267&lt;br /&gt;
 | isbn   = 978-0122004001&lt;br /&gt;
 }}&amp;lt;/ref&amp;gt; Something that is '''bistable''' can be resting in either of two states.   An example of a mechanical device which is bistable is a [[light switch]]. The switch lever is designed to rest in the &amp;quot;on&amp;quot; or &amp;quot;off&amp;quot; position, but not between the two.  Bistable behavior can occur in mechanical linkages, electronic circuits, nonlinear optical systems, chemical reactions, and physiological and biological systems.&lt;br /&gt;
&lt;br /&gt;
In a dynamical system, bistability means the system has two stable equilibrium states. Something that is bistable can be resting in either of two states.   An example of a mechanical device which is bistable is a light switch. The switch lever is designed to rest in the &amp;quot;on&amp;quot; or &amp;quot;off&amp;quot; position, but not between the two.  Bistable behavior can occur in mechanical linkages, electronic circuits, nonlinear optical systems, chemical reactions, and physiological and biological systems.&lt;br /&gt;
&lt;br /&gt;
在动力系统中，双稳态意味着系统有两个稳定的平衡态。双稳态的物体可以处于两种状态中的任意一种。双稳态机械装置的一个例子是电灯开关。开关杠杆的设计是为了休息在“开”或“关”的位置，但不是在两者之间。双稳态行为可以发生在机械连接、电子线路、非线性光学系统、化学反应和生理和生物系统中。&lt;br /&gt;
&lt;br /&gt;
In a [[conservative force]] field, bistability stems from the fact that the [[potential energy]] has two [[local minimum|local minima]], which are the stable equilibrium points.&amp;lt;ref name=&amp;quot;Nazarov&amp;quot;&amp;gt;{{cite book&lt;br /&gt;
 | last1  = Nazarov&lt;br /&gt;
 | first1 = Yuli V.&lt;br /&gt;
 | last2  = Danon&lt;br /&gt;
 | first2 = Jeroen&lt;br /&gt;
 | title  = Advanced Quantum Mechanics: A Practical Guide&lt;br /&gt;
 | publisher = Cambridge University Press&lt;br /&gt;
 | date   = 2013&lt;br /&gt;
 | pages  = 291&lt;br /&gt;
 | url    = https://books.google.com/books?id=w20gAwAAQBAJ&amp;amp;q=bistability+minimum&amp;amp;pg=PA291&lt;br /&gt;
 | isbn   = 978-1139619028&lt;br /&gt;
 }}&amp;lt;/ref&amp;gt; These rest states need not have equal potential energy.  By mathematical arguments, a [[local maximum]], an unstable equilibrium point, must lie between the two minima.  At rest, a particle will be in one of the minimum equilibrium positions, because that corresponds to the state of lowest energy. The maximum can be visualized as a barrier between them.&lt;br /&gt;
&lt;br /&gt;
In a conservative force field, bistability stems from the fact that the potential energy has two local minima, which are the stable equilibrium points. These rest states need not have equal potential energy.  By mathematical arguments, a local maximum, an unstable equilibrium point, must lie between the two minima.  At rest, a particle will be in one of the minimum equilibrium positions, because that corresponds to the state of lowest energy. The maximum can be visualized as a barrier between them.&lt;br /&gt;
&lt;br /&gt;
在保守力场中，双稳态是由势能存在两个局部极小点，这两个局部极小点是稳定的平衡点。这些静止态不一定有相等的势能。通过数学论证，一个局部极大值，一个不稳定的平衡点，一定位于两个极小值之间。在静止状态下，一个粒子将处于最小平衡位置之一，因为那对应于最低能量的状态。最大值可以视为它们之间的一道屏障。&lt;br /&gt;
&lt;br /&gt;
A system can transition from one state of minimal energy to the other if it is given enough activation energy to penetrate the barrier (compare [[activation energy]] and [[Arrhenius equation]] for the chemical case). After the barrier has been reached, the system will relax into the other minimum state in a time called the [[relaxation time]].&lt;br /&gt;
&lt;br /&gt;
A system can transition from one state of minimal energy to the other if it is given enough activation energy to penetrate the barrier (compare activation energy and Arrhenius equation for the chemical case). After the barrier has been reached, the system will relax into the other minimum state in a time called the relaxation time.&lt;br /&gt;
&lt;br /&gt;
一个系统可以从一个最小能量的状态过渡到另一个状态，如果它被给予足够的活化能穿透阻挡层(比较活化能和阿伦尼乌斯方程的化学情况)。达到屏障后，系统将在一个时间内放松到另一个最小状态，称为放松时间。&lt;br /&gt;
&lt;br /&gt;
Bistability is widely used in [[digital electronics]] devices to store [[binary number|binary]] data. It is the essential characteristic of the [[flip-flop (electronics)|flip-flop]], a circuit which is a fundamental building block of [[computer]]s and some types of [[semiconductor memory]].  A bistable device can store one [[binary digit|bit]] of binary data, with one state representing a &amp;quot;0&amp;quot; and the other state a &amp;quot;1&amp;quot;.  It is also used in [[relaxation oscillator]]s, [[multivibrator]]s, and the [[Schmitt trigger]].&lt;br /&gt;
[[Optical bistability]] is an attribute of certain optical devices where two resonant transmissions states are possible and stable, dependent on the input.&lt;br /&gt;
Bistability can also arise in biochemical systems, where it creates digital, switch-like outputs from the constituent chemical concentrations and activities. It is often associated with [[Hysteresis#In biology|hysteresis]] in such systems.&lt;br /&gt;
&lt;br /&gt;
Bistability is widely used in digital electronics devices to store binary data. It is the essential characteristic of the flip-flop, a circuit which is a fundamental building block of computers and some types of semiconductor memory.  A bistable device can store one bit of binary data, with one state representing a &amp;quot;0&amp;quot; and the other state a &amp;quot;1&amp;quot;.  It is also used in relaxation oscillators, multivibrators, and the Schmitt trigger.&lt;br /&gt;
Optical bistability is an attribute of certain optical devices where two resonant transmissions states are possible and stable, dependent on the input.&lt;br /&gt;
Bistability can also arise in biochemical systems, where it creates digital, switch-like outputs from the constituent chemical concentrations and activities. It is often associated with hysteresis in such systems.&lt;br /&gt;
&lt;br /&gt;
双稳态广泛应用于数字电子器件中存储二进制数据。这是触发器的基本特性，触发器是计算机和某些类型的半导体存储器的基本组成部分。双稳态设备可以存储一位二进制数据，其中一个状态表示“0”，另一个状态表示“1”。它也用于松弛振荡器、多振荡器和施密特触发器。光学双稳态是某些光学器件的一种属性，其中两个共振传输状态是可能的和稳定的，依赖于输入。生物化学系统中也可能出现双稳态，在这种系统中，它从化学成分的浓度和活动中产生数字化的、开关式的输出。在这种系统中，它通常与滞后有关。&lt;br /&gt;
&lt;br /&gt;
==Mathematical modelling==&lt;br /&gt;
&lt;br /&gt;
==Mathematical modelling==&lt;br /&gt;
&lt;br /&gt;
= = 数学模型 = = &lt;br /&gt;
&lt;br /&gt;
In the mathematical language of [[Dynamical systems theory|dynamic systems analysis]], one of the simplest bistable systems is&lt;br /&gt;
&lt;br /&gt;
In the mathematical language of dynamic systems analysis, one of the simplest bistable systems is&lt;br /&gt;
&lt;br /&gt;
在动态系统分析的数学语言中，最简单的双稳系统之一是&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{dy}{dt} = y (1-y^2).&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&lt;br /&gt;
\frac{dy}{dt} = y (1-y^2).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&lt;br /&gt;
\frac{dy}{dt} = y (1-y^2).&lt;br /&gt;
&lt;br /&gt;
This system describes a ball rolling down a curve with shape &amp;lt;math&amp;gt;\frac{y^4}{4} - \frac{y^2}{2}&amp;lt;/math&amp;gt;, and has three equilibrium points: &amp;lt;math&amp;gt; y = 1 &amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt; y = 0 &amp;lt;/math&amp;gt;, and &amp;lt;math&amp;gt; y = -1&amp;lt;/math&amp;gt;. The middle point &amp;lt;math&amp;gt;y=0&amp;lt;/math&amp;gt; is unstable, while the other two points are stable. The direction of change of &amp;lt;math&amp;gt;y(t)&amp;lt;/math&amp;gt; over time depends on the initial condition &amp;lt;math&amp;gt;y(0)&amp;lt;/math&amp;gt;.  If the initial condition is positive (&amp;lt;math&amp;gt;y(0)&amp;gt;0&amp;lt;/math&amp;gt;), then the solution &amp;lt;math&amp;gt;y(t)&amp;lt;/math&amp;gt; approaches 1 over time, but if the initial condition is negative (&amp;lt;math&amp;gt;y(0)&amp;lt; 0&amp;lt;/math&amp;gt;), then &amp;lt;math&amp;gt;y(t)&amp;lt;/math&amp;gt; approaches −1 over time. Thus, the dynamics are &amp;quot;bistable&amp;quot;. The final state of the system can be either &amp;lt;math&amp;gt; y = 1 &amp;lt;/math&amp;gt; or &amp;lt;math&amp;gt; y = -1 &amp;lt;/math&amp;gt;, depending on the initial conditions.&amp;lt;ref name=&amp;quot;Chong&amp;quot;&amp;gt;{{cite journal | author = Ket Hing Chong | author2 = Sandhya Samarasinghe | author3 = Don Kulasiri | author4 = Jie Zheng | name-list-style = amp | year = 2015| title = Computational techniques in mathematical modelling of biological switches | journal = Modsim2015 | pages =   578–584 }} For detailed techniques of mathematical modelling of bistability, see the tutorial by Chong et al. (2015) http://www.mssanz.org.au/modsim2015/C2/chong.pdf The tutorial provides a simple example illustration of bistability using a synthetic toggle switch proposed in {{cite journal |last1=Collins |first1=James J. |last2=Gardner |first2=Timothy S. |last3=Cantor |first3=Charles R. |title=Construction of a genetic toggle switch in Escherichia coli |journal=Nature |volume=403 |issue=6767 |pages=339–42 |year=2000 |pmid=10659857 |doi=10.1038/35002131 |bibcode=2000Natur.403..339G |s2cid=345059 }}. The tutorial also uses the dynamical system software XPPAUT http://www.math.pitt.edu/~bard/xpp/xpp.html to show practically how to see bistability captured by a saddle-node bifurcation diagram and the hysteresis behaviours when the bifurcation parameter is increased or decreased slowly over the tipping points and a protein gets turned 'On' or turned 'Off'.&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This system describes a ball rolling down a curve with shape \frac{y^4}{4} - \frac{y^2}{2}, and has three equilibrium points:  y = 1 ,  y = 0 , and  y = -1. The middle point y=0 is unstable, while the other two points are stable. The direction of change of y(t) over time depends on the initial condition y(0).  If the initial condition is positive (y(0)&amp;gt;0), then the solution y(t) approaches 1 over time, but if the initial condition is negative (y(0)&amp;lt; 0), then y(t) approaches −1 over time. Thus, the dynamics are &amp;quot;bistable&amp;quot;. The final state of the system can be either  y = 1  or  y = -1 , depending on the initial conditions. For detailed techniques of mathematical modelling of bistability, see the tutorial by Chong et al. (2015) http://www.mssanz.org.au/modsim2015/C2/chong.pdf The tutorial provides a simple example illustration of bistability using a synthetic toggle switch proposed in . The tutorial also uses the dynamical system software XPPAUT http://www.math.pitt.edu/~bard/xpp/xpp.html to show practically how to see bistability captured by a saddle-node bifurcation diagram and the hysteresis behaviours when the bifurcation parameter is increased or decreased slowly over the tipping points and a protein gets turned 'On' or turned 'Off'.&lt;br /&gt;
&lt;br /&gt;
这个系统描述了一个球沿曲线滚动的形状为 y ^ 4}{4}-frac { y ^ 2}{2} ，有三个平衡点: y = 1，y = 0，y =-1。中点 y = 0是不稳定的，而其他两点是稳定的。Y (t)随时间的变化方向取决于初始条件 y (0)。如果初始条件是正的(y (0) &amp;gt; 0) ，那么解 y (t)随时间接近1，但如果初始条件是负的(y (0) &amp;lt; 0) ，那么 y (t)随时间接近 -1。因此，动力学是“双稳态”的。系统的最终状态可以是 y = 1或 y =-1，这取决于初始条件。有关双稳态数学建模的详细技术，请参阅 Chong 等人的教程。(2015) http://www.mssanz.org.au/modsim2015/c2/chong.pdf 教程提供了一个简单的双稳态示例，使用了一个合成切换开关建议在。本教程还使用动力系统的软件 XPPAUT  http://www.math.pitt.edu/~bard/xpp/xpp.html 来实际展示如何看到双稳态捕获的鞍结分岔图和滞后行为当分叉参数增加或减少的临界点和蛋白质得到打开或关闭。&lt;br /&gt;
&lt;br /&gt;
The appearance of a bistable region can be understood for the model system &lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{dy}{dt} = y (r-y^2)&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
which undergoes a supercritical [[pitchfork bifurcation]] with [[Bifurcation theory|bifurcation parameter]] &amp;lt;math&amp;gt; r &amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The appearance of a bistable region can be understood for the model system &lt;br /&gt;
&lt;br /&gt;
\frac{dy}{dt} = y (r-y^2)&lt;br /&gt;
&lt;br /&gt;
which undergoes a supercritical pitchfork bifurcation with bifurcation parameter  r .&lt;br /&gt;
&lt;br /&gt;
模型系统 frac { dy }{ dt } = y (r-y ^ 2)经历具有参数 r 的超临界叉式分岔时，可以理解双稳区的出现。&lt;br /&gt;
&lt;br /&gt;
==In biological and chemical systems==&lt;br /&gt;
[[File:Stimuli.pdf|thumb|Three-dimensional invariant measure for cellular-differentiation featuring a two-stable mode.&lt;br /&gt;
The axes denote cell counts for three types of cells: progenitor (&amp;lt;math&amp;gt;z&amp;lt;/math&amp;gt;), osteoblast (&amp;lt;math&amp;gt;y&amp;lt;/math&amp;gt;), and chondrocyte (&amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;). Pro-osteoblast stimulus promotes P→O transition.&amp;lt;ref name=CME&amp;gt;{{cite journal | last1       = Kryven| first1     = I.| last2       = Röblitz| first2      = S.| last3       = Schütte| first3      =  Ch.| year       =2015| title      = Solution of the chemical master equation by radial basis functions approximation with interface tracking| journal  = BMC Systems Biology | volume = 9| issue = 1| pages = 67| doi = 10.1186/s12918-015-0210-y| pmid = 26449665| pmc= 4599742}} {{open access}}&amp;lt;/ref&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
thumb|Three-dimensional invariant measure for cellular-differentiation featuring a two-stable mode.&lt;br /&gt;
The axes denote cell counts for three types of cells: progenitor (z), osteoblast (y), and chondrocyte (x). Pro-osteoblast stimulus promotes P→O transition. &lt;br /&gt;
&lt;br /&gt;
= = 在生物和化学系统中用于细胞分化的三维不变测度具有双稳态模式。轴表示三种类型细胞的细胞计数: 祖细胞(z)、成骨细胞(y)和软骨细胞(x)。Pro-osteoblast stimulus promotes P→O transition.&lt;br /&gt;
&lt;br /&gt;
Bistability is key for understanding basic phenomena of cellular functioning, such as decision-making processes in [[cell cycle]] progression, [[cellular differentiation]],&amp;lt;ref name=Ghaffarizadeh&amp;gt;{{cite journal |vauthors=Ghaffarizadeh A, Flann NS, Podgorski GJ |year = 2014 |title = Multistable switches and their role in cellular differentiation networks |journal = BMC Bioinformatics |volume = 15 |pages = S7+ |doi = 10.1186/1471-2105-15-s7-s7 |pmid = 25078021 |pmc = 4110729}}&amp;lt;/ref&amp;gt; and [[apoptosis]]. It is also involved in loss of cellular homeostasis associated with early events in [[cancer]] onset and in [[prion]] diseases as well as in the origin of new species ([[speciation]]).&amp;lt;ref name=Wilhelm&amp;gt;{{cite journal |author = Wilhelm, T |year = 2009 |title = The smallest chemical reaction system with bistability |journal = BMC Systems Biology |volume = 3 |pages = 90 |doi = 10.1186/1752-0509-3-90 |pmid = 19737387 |pmc = 2749052}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bistability is key for understanding basic phenomena of cellular functioning, such as decision-making processes in cell cycle progression, cellular differentiation, and apoptosis. It is also involved in loss of cellular homeostasis associated with early events in cancer onset and in prion diseases as well as in the origin of new species (speciation).&lt;br /&gt;
&lt;br /&gt;
双稳态是理解细胞功能基本现象的关键，例如细胞周期进程中的决策过程、细胞分化和凋亡。它还参与了与癌症发病早期事件、朊病毒疾病以及新物种起源(物种形成)有关的细胞内稳态的丧失。&lt;br /&gt;
&lt;br /&gt;
Bistability can be generated by a positive feedback loop with an ultrasensitive regulatory step.  Positive feedback loops, such as the simple X activates Y and Y activates X motif, essentially links output signals to their input signals and have been noted to be an important regulatory motif in cellular signal transduction because positive feedback loops can create switches with an all-or-nothing decision.&amp;lt;ref name=&amp;quot;O. Brandman, J. E 2005&amp;quot;&amp;gt;O. Brandman, J. E. Ferrell Jr., R. Li, T. Meyer, Science 310, 496 (2005)&amp;lt;/ref&amp;gt; Studies have shown that numerous biological systems, such as ''Xenopus'' oocyte maturation,&amp;lt;ref&amp;gt;{{cite journal|author1=Ferrell JE Jr. |author2=Machleder EM |s2cid=34863795 |title=The biochemical basis of an all-or-none cell fate switch in Xenopus oocytes.|journal=Science|date=1998|volume=280|issue=5365|pages=895–8|pmid=9572732|doi=10.1126/science.280.5365.895|bibcode=1998Sci...280..895F }}&amp;lt;!--|accessdate=20 March 2015--&amp;gt;&amp;lt;/ref&amp;gt; mammalian calcium signal transduction, and polarity in budding yeast, incorporate temporal (slow and fast) positive feedback loops, or more than one feedback loop that occurs at different times.&amp;lt;ref name=&amp;quot;O. Brandman, J. E 2005&amp;quot;/&amp;gt; Having two different temporal positive feedback loops or &amp;quot;dual-time switches&amp;quot; allows for (a) increased regulation: two switches that have independent changeable activation and deactivation times; and (b) linked feedback loops on multiple timescales can filter noise.&amp;lt;ref name=&amp;quot;O. Brandman, J. E 2005&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bistability can be generated by a positive feedback loop with an ultrasensitive regulatory step.  Positive feedback loops, such as the simple X activates Y and Y activates X motif, essentially links output signals to their input signals and have been noted to be an important regulatory motif in cellular signal transduction because positive feedback loops can create switches with an all-or-nothing decision.O. Brandman, J. E. Ferrell Jr., R. Li, T. Meyer, Science 310, 496 (2005) Studies have shown that numerous biological systems, such as Xenopus oocyte maturation, mammalian calcium signal transduction, and polarity in budding yeast, incorporate temporal (slow and fast) positive feedback loops, or more than one feedback loop that occurs at different times. Having two different temporal positive feedback loops or &amp;quot;dual-time switches&amp;quot; allows for (a) increased regulation: two switches that have independent changeable activation and deactivation times; and (b) linked feedback loops on multiple timescales can filter noise.&lt;br /&gt;
&lt;br /&gt;
通过正反馈环路和超灵敏的调节步骤可以产生双稳态。正反馈回路，比如简单的 x 激活 y 和 y 激活 x 基序，本质上将输出信号与输入信号联系起来，并且已经被认为是细胞信号转导中一个重要的调节基序，因为正反馈回路可以创造出一个全有或全无的决定的开关。研究表明，许多生物系统，如非洲爪蟾卵母细胞成熟、哺乳动物的钙信号转导和芽殖酵母的极性，都包含时间(慢和快)正反馈回路，或者不止一个在不同时间发生的反馈回路。具有两个不同的时间正反馈回路或”双时间开关”允许(a)增加调节: 两个开关具有独立的可变激活和失活时间; (b)多时间尺度上的链接反馈回路可以过滤噪声。&lt;br /&gt;
&lt;br /&gt;
Bistability can also arise in a biochemical system only for a particular range of parameter values, where the parameter can often be interpreted as the strength of the feedback. In several typical examples, the system has only one stable fixed point at low values of the parameter. A [[saddle-node bifurcation]] gives rise to a pair of new fixed points emerging, one stable and the other unstable, at a critical value of the parameter. The unstable solution can then form another saddle-node bifurcation with the initial stable solution at a higher value of the parameter, leaving only the higher fixed solution. Thus, at values of the parameter between the two critical values, the system has two stable solutions. An example of a dynamical system that demonstrates similar features is&lt;br /&gt;
&lt;br /&gt;
Bistability can also arise in a biochemical system only for a particular range of parameter values, where the parameter can often be interpreted as the strength of the feedback. In several typical examples, the system has only one stable fixed point at low values of the parameter. A saddle-node bifurcation gives rise to a pair of new fixed points emerging, one stable and the other unstable, at a critical value of the parameter. The unstable solution can then form another saddle-node bifurcation with the initial stable solution at a higher value of the parameter, leaving only the higher fixed solution. Thus, at values of the parameter between the two critical values, the system has two stable solutions. An example of a dynamical system that demonstrates similar features is&lt;br /&gt;
&lt;br /&gt;
在生物化学系统中，只有在特定的参数值范围内才会出现双稳态，在这种情况下，参数往往可以被解释为反馈的强度。在几个典型例子中，系统只有一个稳定不动点，且参数值很低。在参数的临界值处，一个鞍结分岔引起一对新的不动点出现，一个是稳定的，一个是不稳定的。然后，不稳定解与初始稳定解在参数的较高值形成另一个鞍结分岔，只留下较高的固定解。因此，在两个临界值之间的参数值，系统有两个稳定的解。一个展示了类似功能的动力系统的例子是&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\frac{\mathrm{d}x}{\mathrm{d}t} = r + \frac{x^5}{1+x^5} - x&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&lt;br /&gt;
\frac{\mathrm{d}x}{\mathrm{d}t} = r + \frac{x^5}{1+x^5} - x&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:&lt;br /&gt;
\frac{\mathrm{d}x}{\mathrm{d}t} = r + \frac{x^5}{1+x^5} - x&lt;br /&gt;
&lt;br /&gt;
where &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; is the output, and &amp;lt;math&amp;gt;r&amp;lt;/math&amp;gt; is the parameter, acting as the input.&amp;lt;ref name=&amp;quot;Angeli 2003&amp;quot;&amp;gt;{{cite journal| author1 = Angeli, David| author2=Ferrell, JE| author3=Sontag, Eduardo D| title=Detection of multistability, bifurcations, and hysteresis in a large calss of biological positive-feedback systems| journal=PNAS| year=2003| volume=101| issue=7| doi=10.1073/pnas.0308265100| pmid=14766974| pmc=357011| pages=1822–7| bibcode=2004PNAS..101.1822A| doi-access=free}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
where x is the output, and r is the parameter, acting as the input.&lt;br /&gt;
&lt;br /&gt;
其中 x 是输出，r 是参数，作为输入。&lt;br /&gt;
&lt;br /&gt;
Bistability can be modified to be more robust and to tolerate significant changes in concentrations of reactants, while still maintaining its &amp;quot;switch-like&amp;quot; character.  Feedback on both the activator of a system and inhibitor make the system able to tolerate a wide range of concentrations.  An example of this in cell biology is that activated CDK1 (Cyclin Dependent Kinase 1) activates its activator Cdc25 while at the same time inactivating its inactivator, Wee1, thus allowing for progression of a cell into mitosis.  Without this double feedback, the system would still be bistable, but would not be able to tolerate such a wide range of concentrations.&amp;lt;ref&amp;gt;{{cite journal|author=Ferrell JE Jr.|title=Feedback regulation of opposing enzymes generates robust, all-or-none bistable responses|journal=Current Biology|year=2008|volume=18|issue=6|doi=10.1016/j.cub.2008.02.035|pages=R244–R245|pmid=18364225|pmc=2832910}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bistability can be modified to be more robust and to tolerate significant changes in concentrations of reactants, while still maintaining its &amp;quot;switch-like&amp;quot; character.  Feedback on both the activator of a system and inhibitor make the system able to tolerate a wide range of concentrations.  An example of this in cell biology is that activated CDK1 (Cyclin Dependent Kinase 1) activates its activator Cdc25 while at the same time inactivating its inactivator, Wee1, thus allowing for progression of a cell into mitosis.  Without this double feedback, the system would still be bistable, but would not be able to tolerate such a wide range of concentrations.&lt;br /&gt;
&lt;br /&gt;
可以对双稳态进行修改，使其更加稳定，能够容忍反应物浓度的显著变化，同时仍然保持其“开关式”特性。系统的激活剂和抑制剂的反馈使系统能够容忍广泛的浓度范围。细胞生物学中的一个例子是，激活的 CDK1(细胞周期蛋白依赖性激酶1)激活其激活因子 Cdc25，同时使其失活因子 wee1失活，从而允许细胞进入有丝分裂。如果没有这种双重反馈，系统仍然是双稳态的，但是不能容忍如此广泛的浓度范围。&lt;br /&gt;
&lt;br /&gt;
Bistability has also been described in the embryonic development of ''Drosophila melanogaster'' (the fruit fly). Examples are anterior-posterior&amp;lt;ref&amp;gt;{{cite journal|last=Lopes|first=Francisco J. P.|author2=Vieira, Fernando M. C.|author3=Holloway, David M.|author4=Bisch, Paulo M.|author5=Spirov, Alexander V.|author6=Ohler, Uwe|title=Spatial Bistability Generates hunchback Expression Sharpness in the Drosophila Embryo|journal=PLOS Computational Biology|date=26 September 2008|volume=4|issue=9|pages=e1000184|doi=10.1371/journal.pcbi.1000184|pmid=18818726|pmc=2527687|bibcode=2008PLSCB...4E0184L}}&amp;lt;/ref&amp;gt; and dorso-ventral&amp;lt;ref&amp;gt;{{cite journal|last=Wang|first=Yu-Chiun|author2=Ferguson, Edwin L.|title=Spatial bistability of Dpp–receptor interactions during Drosophila dorsal–ventral patterning|journal=Nature|date=10 March 2005|volume=434|issue=7030|pages=229–234|doi=10.1038/nature03318|pmid=15759004|bibcode=2005Natur.434..229W|s2cid=4415152}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite journal|last=Umulis|first=D. M. |author2=Mihaela Serpe |author3=Michael B. O’Connor |author4=Hans G. Othmer|title=Robust, bistable patterning of the dorsal surface of the Drosophila embryo|journal=Proceedings of the National Academy of Sciences|date=1 August 2006|volume=103|issue=31|pages=11613–11618|doi=10.1073/pnas.0510398103 |pmid=16864795 |pmc=1544218|bibcode=2006PNAS..10311613U |doi-access=free }}&amp;lt;/ref&amp;gt; axis formation and eye development.&amp;lt;ref&amp;gt;{{cite journal|last=Graham|first=T. G. W.|author2=Tabei, S. M. A.|author3=Dinner, A. R.|author4=Rebay, I.|title=Modeling bistable cell-fate choices in the Drosophila eye: qualitative and quantitative perspectives|journal=Development|date=22 June 2010|volume=137|issue=14|pages=2265–2278|doi=10.1242/dev.044826|pmid=20570936|pmc=2889600}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bistability has also been described in the embryonic development of Drosophila melanogaster (the fruit fly). Examples are anterior-posterior and dorso-ventral axis formation and eye development.&lt;br /&gt;
&lt;br /&gt;
双稳态在黑腹果蝇(果蝇)的胚胎发育中也被描述过。例如前后轴和背腹轴的形成和眼睛的发育。&lt;br /&gt;
&lt;br /&gt;
A prime example of bistability in biological systems is that of [[Sonic hedgehog]] (Shh), a secreted signaling molecule, which plays a critical role in development. Shh functions in diverse processes in development, including patterning limb bud tissue differentiation. The Shh signaling network behaves as a bistable switch, allowing the cell to abruptly switch states at precise Shh concentrations. ''gli1'' and ''gli2'' transcription is activated by Shh, and their gene products act as transcriptional activators for their own expression and for targets downstream of Shh signaling.&amp;lt;ref&amp;gt;Lai, K., M.J. Robertson, and D.V. Schaffer, The sonic hedgehog signaling system as a bistable genetic switch. Biophys J, 2004. 86(5): pp. 2748–57.&amp;lt;/ref&amp;gt; Simultaneously, the Shh signaling network is controlled by a negative feedback loop wherein the Gli transcription factors activate the enhanced transcription of a repressor (Ptc). This signaling network illustrates the simultaneous positive and negative feedback loops whose exquisite sensitivity helps create a bistable switch.&lt;br /&gt;
&lt;br /&gt;
A prime example of bistability in biological systems is that of Sonic hedgehog (Shh), a secreted signaling molecule, which plays a critical role in development. Shh functions in diverse processes in development, including patterning limb bud tissue differentiation. The Shh signaling network behaves as a bistable switch, allowing the cell to abruptly switch states at precise Shh concentrations. gli1 and gli2 transcription is activated by Shh, and their gene products act as transcriptional activators for their own expression and for targets downstream of Shh signaling.Lai, K., M.J. Robertson, and D.V. Schaffer, The sonic hedgehog signaling system as a bistable genetic switch. Biophys J, 2004. 86(5): pp. 2748–57. Simultaneously, the Shh signaling network is controlled by a negative feedback loop wherein the Gli transcription factors activate the enhanced transcription of a repressor (Ptc). This signaling network illustrates the simultaneous positive and negative feedback loops whose exquisite sensitivity helps create a bistable switch.&lt;br /&gt;
&lt;br /&gt;
生物系统双稳态的一个典型例子是音速猬，一种分泌型信号分子，在生物系统的发展中起着关键作用。Shh 在不同的发育过程中起作用，包括模式化的肢芽组织分化。Shh 信号网络就像一个双稳态开关，允许细胞在精确的 Shh 浓度下突然切换状态。Gli1和 gli2的转录被 Shh 激活，它们的基因产物作为转录激活因子，用于自身的表达和 Shh 信号的下游目标。赖、 k、 m.j. Robertson 及 d.v。作为双稳态遗传开关的音猬信号系统。2004.86(5) : pp.2748–57.同时，Shh 信号网络由一个负反馈环控制，其中 Gli 转录因子激活一个抑制因子(Ptc)的增强转录。这种信令网络说明了同时存在的正反馈环路和负反馈环路，其灵敏度极高，有助于产生双稳态开关。&lt;br /&gt;
&lt;br /&gt;
Bistability can only arise in biological and chemical systems if three necessary conditions are fulfilled: positive [[feedback]], a mechanism to filter out small stimuli and a mechanism to prevent increase without bound.&amp;lt;ref name=Wilhelm/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bistability can only arise in biological and chemical systems if three necessary conditions are fulfilled: positive feedback, a mechanism to filter out small stimuli and a mechanism to prevent increase without bound.&lt;br /&gt;
&lt;br /&gt;
生物和化学系统中只有满足以下三个必要条件才会出现双稳性: 正反馈、过滤小刺激的机制和无约束增长的防止机制。&lt;br /&gt;
&lt;br /&gt;
Bistable chemical systems have been studied extensively to analyze relaxation kinetics, [[non-equilibrium thermodynamics]], [[stochastic resonance]], as well as [[climate variability and change|climate change]].&amp;lt;ref name=Wilhelm/&amp;gt; In bistable spatially extended systems the onset of local correlations and propagation of traveling waves have been analyzed.&amp;lt;ref name=Elf&amp;gt;{{cite journal |last1 = Elf |first1 = J. | last2 = Ehrenberg| first2 = M. |s2cid = 17770042 |year = 2004 |title = Spontaneous separation of bi-stable biochemical systems into spatial domains of opposite phases |journal = Systems Biology|volume = 1 |number = 2| pages = 230–236 |pmid = 17051695 | doi=10.1049/sb:20045021}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=Kochanzyck&amp;gt;{{cite journal |last1 = Kochanczyk |first1 = M. |last2 = Jaruszewicz |first2 = J. |last3 = Lipniacki |first3 = T. |title = Stochastic transitions in a bistable reaction system on the membrane |journal = Journal of the Royal Society Interface |volume = 10 |number = 84 |pages = 20130151 |pmid = 23635492 |pmc = 3673150 |doi =  10.1098/rsif.2013.0151 |date=Jul 2013}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bistable chemical systems have been studied extensively to analyze relaxation kinetics, non-equilibrium thermodynamics, stochastic resonance, as well as climate change. In bistable spatially extended systems the onset of local correlations and propagation of traveling waves have been analyzed.&lt;br /&gt;
&lt;br /&gt;
双稳态化学体系已经被广泛研究以分析弛豫动力学，非平衡态热力学，随机共振，以及气候变化。在双稳态空间扩展系统中，分析了局域相关性和行波传播的开始。&lt;br /&gt;
&lt;br /&gt;
Bistability is often accompanied by [[hysteresis]]. On a population level, if many realisations of a bistable system are considered (e.g. many bistable cells ([[speciation]])&amp;lt;ref name=Nielsen&amp;gt;{{cite journal |author = Nielsen |last2 = Dolganov |first2 = Nadia A. |last3 = Rasmussen |first3 = Thomas |last4 = Otto |first4 = Glen |last5 = Miller |first5 = Michael C. |last6 = Felt |first6 = Stephen A. |last7 = Torreilles |first7 = Stéphanie |last8 = Schoolnik |first8 = Gary K. |editor1-last = Isberg |year = 2010 |editor1-first = Ralph R. |title = A Bistable Switch and Anatomical Site Control Vibrio cholerae Virulence Gene Expression in the Intestine |journal = PLOS Pathogens |volume = 6 |issue = 9 |pages = 1 |doi=10.1371/journal.ppat.1001102&lt;br /&gt;
|pmid = 20862321 |pmc = 2940755|display-authors=etal}}&amp;lt;/ref&amp;gt;), one typically observes [[bimodal distribution]]s. In an ensemble average over the population, the result may simply look like a smooth transition, thus showing the value of single-cell resolution.&lt;br /&gt;
&lt;br /&gt;
Bistability is often accompanied by hysteresis. On a population level, if many realisations of a bistable system are considered (e.g. many bistable cells (speciation)), one typically observes bimodal distributions. In an ensemble average over the population, the result may simply look like a smooth transition, thus showing the value of single-cell resolution.&lt;br /&gt;
&lt;br /&gt;
双稳态常伴有滞后现象。在人口水平上，如果考虑一个双稳态系统的许多现实(例如:。许多双稳态细胞(物种形成) ，人们通常观察双峰分布。在人口的总体均值上，结果可能看起来就像是一个平滑的过渡，从而显示了单细胞分辨率的价值。&lt;br /&gt;
&lt;br /&gt;
A specific type of instability is known as ''modehopping'', which is bi-stability in the frequency space. Here trajectories can shoot between two stable limit cycles, and thus show similar characteristics as normal bi-stability when measured inside a Poincare section.&lt;br /&gt;
&lt;br /&gt;
A specific type of instability is known as modehopping, which is bi-stability in the frequency space. Here trajectories can shoot between two stable limit cycles, and thus show similar characteristics as normal bi-stability when measured inside a Poincare section.&lt;br /&gt;
&lt;br /&gt;
一种特殊类型的不稳定性被称为调制解调器跳变，它是频率空间中的双稳定性。这里的轨迹可以在两个稳定极限环之间发射，因此当在庞加莱截面内测量时，显示出与正常双稳态相似的特性。&lt;br /&gt;
&lt;br /&gt;
== In mechanical systems ==&lt;br /&gt;
Bistability as applied in the design of mechanical systems is more commonly said to be &amp;quot;over centre&amp;quot;—that is, work is done on the system to move it just past the peak, at which point the mechanism goes &amp;quot;over centre&amp;quot; to its secondary stable position. The result is a toggle-type action- work applied to the system below a threshold sufficient to send it 'over center' results in no change to the mechanism's state.&lt;br /&gt;
&lt;br /&gt;
Bistability as applied in the design of mechanical systems is more commonly said to be &amp;quot;over centre&amp;quot;—that is, work is done on the system to move it just past the peak, at which point the mechanism goes &amp;quot;over centre&amp;quot; to its secondary stable position. The result is a toggle-type action- work applied to the system below a threshold sufficient to send it 'over center' results in no change to the mechanism's state.&lt;br /&gt;
&lt;br /&gt;
在机械系统中应用于机械系统设计中的双稳态通常被称为“过中心”ーー也就是说，系统所做的工作使其刚刚超过峰值，在峰值处，机构“过中心”到次稳定位置。结果是一个切换类型的动作-工作应用于系统低于一个阈值足以发送它“过中心”的结果没有改变机制的状态。&lt;br /&gt;
&lt;br /&gt;
[[spring (device)|Springs]] are a common method of achieving an &amp;quot;over centre&amp;quot; action. A spring attached to a simple two position ratchet-type mechanism can create a button or plunger that is clicked or toggled between two mechanical states. Many [[Ballpoint Pen|ballpoint]] and [[Rollerball Pen|rollerball]] retractable pens employ this type of bistable mechanism.&lt;br /&gt;
&lt;br /&gt;
Springs are a common method of achieving an &amp;quot;over centre&amp;quot; action. A spring attached to a simple two position ratchet-type mechanism can create a button or plunger that is clicked or toggled between two mechanical states. Many ballpoint and rollerball retractable pens employ this type of bistable mechanism.&lt;br /&gt;
&lt;br /&gt;
弹簧是实现“过中心”动作的常用方法。一个弹簧连接到一个简单的两个位置棘轮式机构，可以创造一个按钮或柱塞点击或切换在两个机械状态。许多圆珠笔和滚珠笔都采用这种双稳态机构。&lt;br /&gt;
&lt;br /&gt;
An even more common example of an over-center device is an ordinary electric wall switch.  These switches are often designed to snap firmly into the &amp;quot;on&amp;quot; or &amp;quot;off&amp;quot; position once the toggle handle has been moved a certain distance past the center-point.&lt;br /&gt;
&lt;br /&gt;
An even more common example of an over-center device is an ordinary electric wall switch.  These switches are often designed to snap firmly into the &amp;quot;on&amp;quot; or &amp;quot;off&amp;quot; position once the toggle handle has been moved a certain distance past the center-point.&lt;br /&gt;
&lt;br /&gt;
一个更常见的过中心装置的例子是一个普通的电动墙开关。这些开关的设计通常是，一旦切换手柄已经移动了一定距离，超过中心点，就可以牢固地扣入“开”或“关”位置。&lt;br /&gt;
&lt;br /&gt;
A [[ratchet (device)|ratchet-and-pawl]] is an elaboration—a multi-stable &amp;quot;over center&amp;quot; system used to create irreversible motion.  The pawl goes over center as it is turned in the forward direction. In this case, &amp;quot;over center&amp;quot; refers to the ratchet being stable and &amp;quot;locked&amp;quot; in a given position until clicked forward again; it has nothing to do with the ratchet being unable to turn in the reverse direction.&lt;br /&gt;
&lt;br /&gt;
A ratchet-and-pawl is an elaboration—a multi-stable &amp;quot;over center&amp;quot; system used to create irreversible motion.  The pawl goes over center as it is turned in the forward direction. In this case, &amp;quot;over center&amp;quot; refers to the ratchet being stable and &amp;quot;locked&amp;quot; in a given position until clicked forward again; it has nothing to do with the ratchet being unable to turn in the reverse direction.&lt;br /&gt;
&lt;br /&gt;
棘轮棘爪是一种精心设计的工具ーー一种多重稳定的“过中心”系统，用来产生不可逆的运动。当棘爪向前方转动时，它会越过中心。在这种情况下，“过中心”是指棘轮是稳定的，“锁定”在一个给定的位置，直到再次点击向前，这与棘轮无法在反方向转动无关。&lt;br /&gt;
&lt;br /&gt;
[[File:Ratchet example.gif|thumbnail|A ratchet in action. Each tooth in the ratchet together with the regions to either side of it constitutes a simple bistable mechanism.]]&lt;br /&gt;
&lt;br /&gt;
thumbnail|A ratchet in action. Each tooth in the ratchet together with the regions to either side of it constitutes a simple bistable mechanism.&lt;br /&gt;
&lt;br /&gt;
一个行动中的棘轮。棘轮中的每个齿以及棘轮两侧的区域构成一个简单的双稳态机构。&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*In [[Reversal theory#Bistability|psychology]]&lt;br /&gt;
*[[ferroelectric]], [[ferromagnetic]], [[hysteresis]], [[bistable perception]]&lt;br /&gt;
*[[astable]] multivibrator, [[monostable]] multivibrator.&lt;br /&gt;
*[[Schmitt trigger]]&lt;br /&gt;
*[[Allee effect|strong Allee effect]]&lt;br /&gt;
*[[Multistable perception]] describes the spontaneous or exogenous alternation of different [[percept]]s in face of the same physical [[Stimulus (physiology)|stimulus]].&lt;br /&gt;
*[[Interferometric modulator display]], a bistable reflective display technology found in mirasol displays by [[Qualcomm]]&lt;br /&gt;
&lt;br /&gt;
*In psychology&lt;br /&gt;
*ferroelectric, ferromagnetic, hysteresis, bistable perception&lt;br /&gt;
*astable multivibrator, monostable multivibrator.&lt;br /&gt;
*Schmitt trigger&lt;br /&gt;
*strong Allee effect&lt;br /&gt;
*Multistable perception describes the spontaneous or exogenous alternation of different percepts in face of the same physical stimulus.&lt;br /&gt;
*Interferometric modulator display, a bistable reflective display technology found in mirasol displays by Qualcomm&lt;br /&gt;
&lt;br /&gt;
在心理学上，铁电的，铁磁的，滞后的，双稳态知觉的，不稳定的多谐振荡器，单稳态多谐振荡器。多稳态知觉描述了面对同样的物理刺激，不同感知的自发或外源交互作用。&lt;br /&gt;
* 干涉测量调制器显示器，Qualcomm 公司在 mirasol 显示器中发现的双稳态反射显示技术&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
*http://www.answers.com/topic/optical-bistability&lt;br /&gt;
*[https://web.archive.org/web/20111008004330/http://www.innovision.us/LatchingReed.htm BiStable Reed Sensor]&lt;br /&gt;
&lt;br /&gt;
*http://www.answers.com/topic/optical-bistability&lt;br /&gt;
*BiStable Reed Sensor&lt;br /&gt;
&lt;br /&gt;
= = = 外部链接 = = &lt;br /&gt;
*  http://www.answers.com/topic/optical-bistability /双稳态簧片传感器&lt;br /&gt;
&lt;br /&gt;
[[Category:Digital electronics]]&lt;br /&gt;
[[Category:2 (number)]]&lt;br /&gt;
&lt;br /&gt;
Category:Digital electronics&lt;br /&gt;
Category:2 (number)&lt;br /&gt;
&lt;br /&gt;
类别: 数码电子类别: 2(数字)&lt;br /&gt;
&lt;br /&gt;
[[es:Biestable]]&lt;br /&gt;
&lt;br /&gt;
es:Biestable&lt;br /&gt;
&lt;br /&gt;
4. Biestable&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;This page was moved from [[wikipedia:en:Bistability]]. Its edit history can be viewed at [[双稳性/edithistory]]&amp;lt;/small&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:待整理页面]]&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E7%99%AB%E7%97%AB%E7%9A%84%E8%AE%A1%E7%AE%97%E6%A8%A1%E5%9E%8B&amp;diff=29553</id>
		<title>癫痫的计算模型</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E7%99%AB%E7%97%AB%E7%9A%84%E8%AE%A1%E7%AE%97%E6%A8%A1%E5%9E%8B&amp;diff=29553"/>
		<updated>2022-03-25T07:25:26Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：Moved page from wikipedia:en:Computational models in epilepsy (history)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;此词条暂由彩云小译翻译，翻译字数共306，未经人工整理和审校，带来阅读不便，请见谅。&lt;br /&gt;
&lt;br /&gt;
'''Computational models in epilepsy''' mainly focus on describing an [[Electrophysiology|electrophysiological]] manifestation associated with [[epilepsy]] called [[seizure]]s. For this purpose, [[computational neuroscience]]s use [[differential equation]]s to reproduce the temporal evolution of the signals recorded experimentally. A book published in 2008, ''Computational Neuroscience in Epilepsy'',.&amp;lt;ref&amp;gt;{{Cite book|url=https://www.worldcat.org/oclc/281558250|title=Computational neuroscience in epilepsy|date=2008|publisher=Academic|others=Ivan Soltesz, Kevin Staley|isbn=978-0-12-373649-9|edition=1st|location=Amsterdam|oclc=281558250}}&amp;lt;/ref&amp;gt; summarizes different works done up to this time. The goals of using its models are diverse, from prediction to comprehension of underlying mechanisms.&amp;lt;ref&amp;gt;{{Cite journal|last=Lytton|first=William W.|date=August 2008|title=Computer modelling of epilepsy|url=https://www.nature.com/articles/nrn2416|journal=Nature Reviews Neuroscience|language=en|volume=9|issue=8|pages=626–637|doi=10.1038/nrn2416|issn=1471-0048|pmc=2739976|pmid=18594562}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Computational models in epilepsy mainly focus on describing an electrophysiological manifestation associated with epilepsy called seizures. For this purpose, computational neurosciences use differential equations to reproduce the temporal evolution of the signals recorded experimentally. A book published in 2008, Computational Neuroscience in Epilepsy,. summarizes different works done up to this time. The goals of using its models are diverse, from prediction to comprehension of underlying mechanisms.&lt;br /&gt;
&lt;br /&gt;
癫痫的计算模型主要集中在描述与癫痫发作有关的电生理表现。为此，计算神经科学使用微分方程来重现实验记录的信号的时间演变。2008年出版的一本书，《癫痫的计算神经科学》 ,。总结了到目前为止所做的不同工作。使用它的模型的目的是多种多样的，从预测到理解潜在的机制。&lt;br /&gt;
&lt;br /&gt;
The crisis phenomenon (seizure) exists and shares certain dynamical properties across different scales&amp;lt;ref&amp;gt;{{Cite web|last1=Depannemaecker|first1=Damien|last2=Destexhe|first2=Alain|last3=Jirsa|first3=Viktor|last4=Bernard|first4=Christophe|date=2021-02-22|title=Modeling Seizures: From Single Neurons to Networks|url=https://www.preprints.org/manuscript/202102.0478/v1|doi=10.20944/preprints202102.0478.v1}}&amp;lt;/ref&amp;gt; and different organisms.&amp;lt;ref&amp;gt;{{Cite journal|last1=Jirsa|first1=Viktor K.|last2=Stacey|first2=William C.|last3=Quilichini|first3=Pascale P.|last4=Ivanov|first4=Anton I.|last5=Bernard|first5=Christophe|date=2014-06-10|title=On the nature of seizure dynamics|url=https://doi.org/10.1093/brain/awu133|journal=Brain|volume=137|issue=8|pages=2210–2230|doi=10.1093/brain/awu133|issn=1460-2156|pmc=4107736|pmid=24919973}}&amp;lt;/ref&amp;gt; It is possible to distinguish different approaches: the phenomenological models focus on the dynamics observed, generally reduced to few dimension it facilitates the study from the point of view of the [[Dynamical systems theory|theory of dynamical systems]]&amp;lt;ref&amp;gt;{{Cite journal|last1=Saggio|first1=Maria Luisa|last2=Spiegler|first2=Andreas|last3=Bernard|first3=Christophe|last4=Jirsa|first4=Viktor K.|date=2017-07-25|title=Fast–Slow Bursters in the Unfolding of a High Codimension Singularity and the Ultra-slow Transitions of Classes|url=https://doi.org/10.1186/s13408-017-0050-8|journal=The Journal of Mathematical Neuroscience|volume=7|issue=1|pages=7|doi=10.1186/s13408-017-0050-8|issn=2190-8567|pmc=5526832|pmid=28744735}}&amp;lt;/ref&amp;gt; and more mechanistic models that explain the biophysical interactions underlying seizures. It is also possible to use these approaches to model and analyse the interactions between different regions of the brain&amp;lt;ref&amp;gt;{{Cite journal|last1=Breakspear|first1=M.|last2=Roberts|first2=J. A.|last3=Terry|first3=J. R.|last4=Rodrigues|first4=S.|last5=Mahant|first5=N.|last6=Robinson|first6=P. A.|date=2005-11-09|title=A Unifying Explanation of Primary Generalized Seizures Through Nonlinear Brain Modeling and Bifurcation Analysis|url=https://doi.org/10.1093/cercor/bhj072|journal=Cerebral Cortex|volume=16|issue=9|pages=1296–1313|doi=10.1093/cercor/bhj072|pmid=16280462|issn=1460-2199}}&amp;lt;/ref&amp;gt; (In this case the notion of [[Large-scale brain networks|network]] plays an important role&amp;lt;ref&amp;gt;{{Cite journal|last1=Terry|first1=John R.|last2=Benjamin|first2=Oscar|last3=Richardson|first3=Mark P.|date=2012|title=Seizure generation: The role of nodes and networks|url=https://onlinelibrary.wiley.com/doi/abs/10.1111/j.1528-1167.2012.03560.x|journal=Epilepsia|language=en|volume=53|issue=9|pages=e166–e169|doi=10.1111/j.1528-1167.2012.03560.x|pmid=22709380|s2cid=25085531|issn=1528-1167}}&amp;lt;/ref&amp;gt;) and the transition to ictal state.&amp;lt;ref&amp;gt;{{Cite journal|last1=Wendling|first1=Fabrice|last2=Hernandez|first2=Alfredo|last3=Bellanger|first3=Jean-Jacques|last4=Chauvel|first4=Patrick|last5=Bartolomei|first5=Fabrice|date=October 2005|title=Interictal to ictal transition in human temporal lobe epilepsy: insights from a computational model of intracerebral EEG|journal=Journal of Clinical Neurophysiology|volume=22|issue=5|pages=343–356|issn=0736-0258|pmc=2443706|pmid=16357638}}&amp;lt;/ref&amp;gt; These large-scale approaches have the advantage of being able to be related to the recordings made in humans thanks to [[Electroencephalography|electroencephalography (EEG)]]. It offers new directions for clinical research, particularly as an additional tool in the treatment of refractory epilepsy &amp;lt;ref&amp;gt;{{Cite journal|date=2017-01-15|title=The Virtual Epileptic Patient: Individualized whole-brain models of epilepsy spread|url=https://www.sciencedirect.com/science/article/pii/S1053811916300891|journal=NeuroImage|language=en|volume=145|pages=377–388|doi=10.1016/j.neuroimage.2016.04.049|issn=1053-8119|last1=Jirsa|first1=V.K.|last2=Proix|first2=T.|last3=Perdikis|first3=D.|last4=Woodman|first4=M.M.|last5=Wang|first5=H.|last6=Gonzalez-Martinez|first6=J.|last7=Bernard|first7=C.|last8=Bénar|first8=C.|last9=Guye|first9=M.|last10=Chauvel|first10=P.|last11=Bartolomei|first11=F.|issue=Pt B|pmid=27477535|s2cid=36510741}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Cite journal|last1=Khambhati|first1=Ankit N.|last2=Davis|first2=Kathryn A.|last3=Lucas|first3=Timothy H.|last4=Litt|first4=Brian|last5=Bassett|first5=Danielle S.|date=September 2016|title=Virtual Cortical Resection Reveals Push-Pull Network Control Preceding Seizure Evolution|url=https://linkinghub.elsevier.com/retrieve/pii/S089662731630424X|journal=Neuron|language=en|volume=91|issue=5|pages=1170–1182|doi=10.1016/j.neuron.2016.07.039|pmc=5017915|pmid=27568515}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The crisis phenomenon (seizure) exists and shares certain dynamical properties across different scales and different organisms. It is possible to distinguish different approaches: the phenomenological models focus on the dynamics observed, generally reduced to few dimension it facilitates the study from the point of view of the theory of dynamical systems and more mechanistic models that explain the biophysical interactions underlying seizures. It is also possible to use these approaches to model and analyse the interactions between different regions of the brain (In this case the notion of network plays an important role) and the transition to ictal state. These large-scale approaches have the advantage of being able to be related to the recordings made in humans thanks to electroencephalography (EEG). It offers new directions for clinical research, particularly as an additional tool in the treatment of refractory epilepsy &lt;br /&gt;
&lt;br /&gt;
危机现象(癫痫)存在于不同尺度和不同生物体之间，并具有一定的动力学特性。可以区分不同的方法: 现象学模型侧重于观察到的动力学，一般降低到很少的维度，这有利于从动力系统理论的角度进行研究和更多的解释癫痫发作的生物物理学相互作用的机制模型。也可以用这些方法来模拟和分析大脑不同区域之间的相互作用(在这种情况下，网络的概念起着重要作用)和向发作状态的过渡。这些大规模的方法有一个优势，那就是可以通过脑电图与人类的记录相关联。这多亏了脑电图。它为临床研究提供了新的方向，特别是作为治疗难治性癫痫的补充手段&lt;br /&gt;
&lt;br /&gt;
Other approaches are to use the models to try to understand the mechanisms underlying these seizures using biophysical descriptions from the neuron scale.&amp;lt;ref&amp;gt;{{Cite bioRxiv|last1=Depannemaecker|first1=Damien|last2=Ivanov|first2=Anton|last3=Lillo|first3=Davide|last4=Spek|first4=Len|last5=Bernard|first5=Christophe|last6=Jirsa|first6=Viktor|date=2020-10-23|title=A unified physiological framework of transitions between seizures, sustained ictal activity and depolarization block at the single neuron level|language=en|biorxiv=10.1101/2020.10.23.352021}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Cite journal|last1=Cressman|first1=John R.|last2=Ullah|first2=Ghanim|last3=Ziburkus|first3=Jokubas|last4=Schiff|first4=Steven J.|last5=Barreto|first5=Ernest|date=April 2009|title=The influence of sodium and potassium dynamics on excitability, seizures, and the stability of persistent states: I. Single neuron dynamics|url=http://link.springer.com/10.1007/s10827-008-0132-4|journal=Journal of Computational Neuroscience|language=en|volume=26|issue=2|pages=159–170|doi=10.1007/s10827-008-0132-4|issn=0929-5313|pmc=2704057|pmid=19169801}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Cite journal|last1=Destexhe|first1=A.|last2=Bal|first2=T.|last3=McCormick|first3=D. A.|last4=Sejnowski|first4=T. J.|date=1996-09-01|title=Ionic mechanisms underlying synchronized oscillations and propagating waves in a model of ferret thalamic slices|url=https://www.physiology.org/doi/10.1152/jn.1996.76.3.2049|journal=Journal of Neurophysiology|language=en|volume=76|issue=3|pages=2049–2070|doi=10.1152/jn.1996.76.3.2049|issn=0022-3077}}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{Cite journal|last1=Almeida|first1=Antônio-Carlos G. De|last2=Rodrigues|first2=Antônio M.|last3=Scorza|first3=Fúlvio A.|last4=Cavalheiro|first4=Esper A.|last5=Teixeira|first5=Hewerson Z.|last6=Duarte|first6=Mário A.|last7=Silveira|first7=Gilcélio A.|last8=Arruda|first8=Emerson Z.|date=2008|title=Mechanistic hypotheses for nonsynaptic epileptiform activity induction and its transition from the interictal to ictal state—Computational simulation|url=https://onlinelibrary.wiley.com/doi/abs/10.1111/j.1528-1167.2008.01686.x|journal=Epilepsia|language=en|volume=49|issue=11|pages=1908–1924|doi=10.1111/j.1528-1167.2008.01686.x|pmid=18513350|s2cid=12024463|issn=1528-1167}}&amp;lt;/ref&amp;gt; This makes it possible to understand the role of homeostasis and to understand the link between physical quantities (such as the concentration of potassium for example) and the pathological dynamics observed.{{citation needed|date=July 2021}}&lt;br /&gt;
&lt;br /&gt;
Other approaches are to use the models to try to understand the mechanisms underlying these seizures using biophysical descriptions from the neuron scale. This makes it possible to understand the role of homeostasis and to understand the link between physical quantities (such as the concentration of potassium for example) and the pathological dynamics observed.&lt;br /&gt;
&lt;br /&gt;
其他的方法是使用模型试图理解这些癫痫发作的机制，使用神经元尺度的生物物理描述。这使得理解稳态的作用和理解物理量(例如钾的浓度)和观察到的病理动力学之间的联系成为可能。&lt;br /&gt;
&lt;br /&gt;
This area of research has evolved rapidly in recent years and continues to show promise for our understanding and treatment of epilepsies for either for direct clinical application in the case of refractory epilepsy or fundamental research to guide experimental works.{{citation needed|date=July 2021}}&lt;br /&gt;
&lt;br /&gt;
This area of research has evolved rapidly in recent years and continues to show promise for our understanding and treatment of epilepsies for either for direct clinical application in the case of refractory epilepsy or fundamental research to guide experimental works.&lt;br /&gt;
&lt;br /&gt;
这一研究领域近年来发展迅速，并继续为我们理解和治疗癫痫显示出希望，无论是在难治性癫痫病例中的直接临床应用，还是指导实验工作的基础研究。&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
= = 参考文献 = =&lt;br /&gt;
&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Computational biology]]&lt;br /&gt;
[[Category:Epilepsy]]&lt;br /&gt;
&lt;br /&gt;
Category:Computational biology&lt;br /&gt;
Category:Epilepsy&lt;br /&gt;
&lt;br /&gt;
类别: 计算生物学类别: 癫痫&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;This page was moved from [[wikipedia:en:Computational models in epilepsy]]. Its edit history can be viewed at [[癫痫的计算模型/edithistory]]&amp;lt;/small&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:待整理页面]]&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E5%8A%A8%E5%8A%9B%E5%AD%A6%E5%B9%B3%E5%9D%87%E5%9C%BA%E7%90%86%E8%AE%BA&amp;diff=29551</id>
		<title>动力学平均场理论</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E5%8A%A8%E5%8A%9B%E5%AD%A6%E5%B9%B3%E5%9D%87%E5%9C%BA%E7%90%86%E8%AE%BA&amp;diff=29551"/>
		<updated>2022-03-25T07:24:23Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：Moved page from wikipedia:en:Dynamical mean-field theory (history)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;此词条暂由彩云小译翻译，翻译字数共1580，未经人工整理和审校，带来阅读不便，请见谅。&lt;br /&gt;
&lt;br /&gt;
'''Dynamical mean-field theory''' ('''DMFT''') is a method to determine the electronic structure of [[strongly correlated materials]]. In such materials, the approximation of independent electrons, which is used in [[density functional theory]] and usual [[band structure]] calculations, breaks down. Dynamical mean-field theory, a non-perturbative treatment of local interactions between electrons, bridges the gap between the [[Nearly free electron model|nearly free electron]] gas limit and the atomic limit of [[condensed-matter physics]].&amp;lt;ref name=Georges&amp;gt;{{cite journal |title=Dynamical mean-field theory of strongly correlated fermion systems and the limit of infinite dimensions |author=A. Georges |author2=G. Kotliar |author3=W. Krauth |author4=M. Rozenberg |journal=[[Reviews of Modern Physics]] |pages=13 |volume=68 |issue=1 |year=1996 |doi=10.1103/RevModPhys.68.13 |bibcode = 1996RvMP...68...13G }}&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dynamical mean-field theory (DMFT) is a method to determine the electronic structure of strongly correlated materials. In such materials, the approximation of independent electrons, which is used in density functional theory and usual band structure calculations, breaks down. Dynamical mean-field theory, a non-perturbative treatment of local interactions between electrons, bridges the gap between the nearly free electron gas limit and the atomic limit of condensed-matter physics.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
动力学平均场理论(DMFT)是一种确定强关联材料电子结构的方法。在这种材料中，用于密度泛函理论和通常的能带结构计算的独立电子近似失效了。动力学平均场理论是对电子之间局部相互作用的非微扰处理，它在近自由电子气极限和凝聚态物理学的原子极限之间架起了桥梁。&lt;br /&gt;
&lt;br /&gt;
DMFT consists in mapping a [[many-body problem|many-body]] lattice problem to a many-body ''local'' problem, called an impurity model.&amp;lt;ref name=Georges_Kotliar&amp;gt;{{cite journal |title=Hubbard model in infinite dimensions |author=A. Georges and G.Kotliar |journal=[[Physical Review B]] |volume=45 |issue=12 |pages=6479–6483 |year=1992 |doi=10.1103/PhysRevB.45.6479|bibcode = 1992PhRvB..45.6479G |pmid=10000408 }}&amp;lt;/ref&amp;gt; While the lattice problem is in general intractable, the impurity model is usually solvable through various schemes. The mapping in itself does not constitute an approximation. The only approximation made in ordinary DMFT schemes is to assume the lattice [[self-energy]] to be a momentum-independent (local) quantity. This approximation becomes exact in the limit of lattices with an infinite [[coordination number|coordination]].&amp;lt;ref name=Metzner&amp;gt;{{cite journal |title=Correlated Lattice Fermions in d = ∞ Dimensions |author1=W. Metzner |author2=D. Vollhardt |journal=[[Physical Review Letters]] |pages=324–327 |volume=62 |issue=3 |year=1989 |doi=10.1103/PhysRevLett.62.324|bibcode = 1989PhRvL..62..324M |pmid=10040203 }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DMFT consists in mapping a many-body lattice problem to a many-body local problem, called an impurity model. While the lattice problem is in general intractable, the impurity model is usually solvable through various schemes. The mapping in itself does not constitute an approximation. The only approximation made in ordinary DMFT schemes is to assume the lattice self-energy to be a momentum-independent (local) quantity. This approximation becomes exact in the limit of lattices with an infinite coordination.&lt;br /&gt;
&lt;br /&gt;
DMFT 是将一个多体晶格问题映射到一个多体局部问题，即杂质模型。杂质模型通常可以通过各种方案求解，而晶格问题通常是难以解决的。映射本身并不构成近似值。在一般的 DMFT 格式中，唯一的近似是假设晶格自能是一个与动量无关的(局部)量。这种近似在具有无限协调的格的极限下变得精确。&lt;br /&gt;
&lt;br /&gt;
One of DMFT's main successes is to describe the [[phase transition]] between a metal and a [[Mott insulator]] when the strength of [[electronic correlation]]s is increased. It has been successfully applied to real materials, in combination with the [[local density approximation]] of density functional theory.&amp;lt;ref name=LDA_DMFT&amp;gt;&lt;br /&gt;
{{cite journal |title=Electronic structure calculations with dynamical mean-field theory |author=G. Kotliar |author2=S. Y. Savrasov |author3=K. Haule |author4=V. S. Oudovenko |author5=O. Parcollet |author6=C. A. Marianetti |journal=[[Reviews of Modern Physics]] |pages=865 |volume=78 |issue=3 |year=2006 |doi=10.1103/RevModPhys.78.865 |arxiv = cond-mat/0511085 |bibcode = 2006RvMP...78..865K }}&amp;lt;/ref&amp;gt;&amp;lt;ref name=Vollhardt&amp;gt;{{cite journal | title=Dynamical mean-field theory for correlated electrons | author=D. Vollhardt | journal = [[Annalen der Physik]] | volume=524 | issue=1 | pages=1–19 | year=2012 | doi=10.1002/andp.201100250 | bibcode=2012AnP...524....1V| doi-access=free }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
One of DMFT's main successes is to describe the phase transition between a metal and a Mott insulator when the strength of electronic correlations is increased. It has been successfully applied to real materials, in combination with the local density approximation of density functional theory.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
DMFT 的主要成果之一是描述了当电子关联强度增加时金属和莫特绝缘体之间的相变。它与密度泛函理论的局域密度近似相结合，已成功地应用于实际材料。&lt;br /&gt;
&lt;br /&gt;
==Relation to mean-field theory==&lt;br /&gt;
The DMFT treatment of lattice quantum models is similar to the [[mean-field theory]] (MFT) treatment of classical models such as the [[Ising model]].&amp;lt;ref name=Georges_2&amp;gt;{{cite conference |book-title=AIP Conference Proceedings |author=Antoine Georges |year=2004 |doi=10.1063/1.1800733 |title=Strongly Correlated Electron Materials: Dynamical Mean-Field Theory and Electronic Structure |volume=715 |pages=3–74 |issue=1 |conference=Lectures on the Physics of Highly Correlated Electron Systems VIII |publisher=American Institute of Physics |arxiv=cond-mat/0403123}}&amp;lt;/ref&amp;gt; In the Ising model, the lattice problem is mapped onto an effective single site problem, whose magnetization is to reproduce the lattice magnetization through an effective &amp;quot;mean-field&amp;quot;. This condition is called the self-consistency condition. It stipulates that the single-site observables should reproduce the lattice &amp;quot;local&amp;quot; observables by means of an effective field. While the N-site Ising Hamiltonian is hard to solve analytically (to date, analytical solutions exist only for the 1D and 2D case), the single-site problem is easily solved.&lt;br /&gt;
&lt;br /&gt;
The DMFT treatment of lattice quantum models is similar to the mean-field theory (MFT) treatment of classical models such as the Ising model. In the Ising model, the lattice problem is mapped onto an effective single site problem, whose magnetization is to reproduce the lattice magnetization through an effective &amp;quot;mean-field&amp;quot;. This condition is called the self-consistency condition. It stipulates that the single-site observables should reproduce the lattice &amp;quot;local&amp;quot; observables by means of an effective field. While the N-site Ising Hamiltonian is hard to solve analytically (to date, analytical solutions exist only for the 1D and 2D case), the single-site problem is easily solved.&lt;br /&gt;
&lt;br /&gt;
= = 与平均场理论的关系 = = 晶格量子模型的 DMFT 处理类似于经典模型如伊辛模型的平均场理论(MFT)处理。在伊辛模型中，晶格问题被映射到一个有效单位问题，其磁化是通过一个有效的“平均场”再现晶格的磁化。这种情况称为自我一致性条件。它规定，单点观测应再现格子“局部”观测通过一个有效的领域。虽然 n 位伊辛哈密顿量很难解析求解(迄今为止，解析解只存在于一维和二维情况下) ，但单位点问题很容易解决。&lt;br /&gt;
&lt;br /&gt;
Likewise, DMFT maps a lattice problem (''e.g.'' the [[Hubbard model]]) onto a single-site problem. In DMFT, the local observable is the local [[Green's function (many-body theory)|Green's function]]. Thus, the self-consistency condition for DMFT is for the impurity Green's function to reproduce the lattice local Green's function through an effective mean-field which, in DMFT, is the hybridization function &amp;lt;math&amp;gt;\Delta(\tau)&amp;lt;/math&amp;gt; of the impurity model. DMFT owes its name to the fact that the mean-field &amp;lt;math&amp;gt;\Delta(\tau)&amp;lt;/math&amp;gt; is time-dependent, or dynamical. This also points to the major difference between the Ising MFT and DMFT: Ising MFT maps the N-spin problem into a single-site, single-spin problem. DMFT maps the lattice problem onto a single-site problem, but the latter fundamentally remains a N-body problem which captures the temporal fluctuations due to electron-electron correlations.&lt;br /&gt;
&lt;br /&gt;
Likewise, DMFT maps a lattice problem (e.g. the Hubbard model) onto a single-site problem. In DMFT, the local observable is the local Green's function. Thus, the self-consistency condition for DMFT is for the impurity Green's function to reproduce the lattice local Green's function through an effective mean-field which, in DMFT, is the hybridization function \Delta(\tau) of the impurity model. DMFT owes its name to the fact that the mean-field \Delta(\tau) is time-dependent, or dynamical. This also points to the major difference between the Ising MFT and DMFT: Ising MFT maps the N-spin problem into a single-site, single-spin problem. DMFT maps the lattice problem onto a single-site problem, but the latter fundamentally remains a N-body problem which captures the temporal fluctuations due to electron-electron correlations.&lt;br /&gt;
&lt;br /&gt;
类似地，DMFT 映射一个格子问题(例如:。哈伯德模型)到一个单站点的问题。在 DMFT 中，局部可观测量是局部格林函数。因此，DMFT 的自洽条件是杂质格林函数通过一个有效的平均场复现格林函数，在 DMFT 中，这个平均场是杂质模型的杂化函数 Delta (tau)。DMFT 之所以得名，是因为它的平均场增量(tau)具有时间依赖性或动力学特性。这也指出了 Ising MFT 和 DMFT 之间的主要区别: Ising MFT 将 n 自旋问题映射为一个单点单自旋问题。DMFT 将晶格问题映射到一个单位点问题上，但后者从根本上仍然是一个 n 体问题，它捕获了由于电子-电子关联而引起的时间波动。&lt;br /&gt;
&lt;br /&gt;
==Description of DMFT for the Hubbard model==&lt;br /&gt;
&lt;br /&gt;
==Description of DMFT for the Hubbard model==&lt;br /&gt;
&lt;br /&gt;
= = 哈伯德模型的 DMFT 描述 = = &lt;br /&gt;
&lt;br /&gt;
=== The DMFT mapping===&lt;br /&gt;
&lt;br /&gt;
=== The DMFT mapping===&lt;br /&gt;
&lt;br /&gt;
= = = DMFT 映射 = = = &lt;br /&gt;
&lt;br /&gt;
====Single-orbital Hubbard model====&lt;br /&gt;
The Hubbard model &amp;lt;ref name=Hubbard&amp;gt;&lt;br /&gt;
{{cite journal |title=Electron Correlations in Narrow Energy Bands|author=John Hubbard |journal=[[Proceedings of the Royal Society A]] |pages=238–257 |volume=276 |year=1963 |doi=10.1098/rspa.1963.0204 |issue=1365|bibcode = 1963RSPSA.276..238H }}&amp;lt;/ref&amp;gt; describes the onsite interaction between electrons of opposite spin by a single parameter, &amp;lt;math&amp;gt;U&amp;lt;/math&amp;gt;. The Hubbard Hamiltonian may take the following form:&lt;br /&gt;
:&amp;lt;math&amp;gt; H_{\text{Hubbard}}=t \sum_{\langle ij \rangle \sigma}  c_{i\sigma}^{\dagger}c_{j\sigma} + U\sum_{i}n_{i \uparrow} n_{i\downarrow}&amp;lt;/math&amp;gt;&lt;br /&gt;
where, on suppressing the spin 1/2 indices &amp;lt;math&amp;gt;\sigma&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;c_i^{\dagger},c_i&amp;lt;/math&amp;gt; denote the creation and annihilation operators of an electron on a localized orbital on site &amp;lt;math&amp;gt;i&amp;lt;/math&amp;gt;, and &amp;lt;math&amp;gt;n_i=c_i^{\dagger}c_i&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The Hubbard model &lt;br /&gt;
 describes the onsite interaction between electrons of opposite spin by a single parameter, U. The Hubbard Hamiltonian may take the following form:&lt;br /&gt;
: H_{\text{Hubbard}}=t \sum_{\langle ij \rangle \sigma}  c_{i\sigma}^{\dagger}c_{j\sigma} + U\sum_{i}n_{i \uparrow} n_{i\downarrow}&lt;br /&gt;
where, on suppressing the spin 1/2 indices \sigma, c_i^{\dagger},c_i denote the creation and annihilation operators of an electron on a localized orbital on site i, and n_i=c_i^{\dagger}c_i.&lt;br /&gt;
&lt;br /&gt;
= = = = 单轨道哈伯德模型 = = = = 哈伯德模型通过单参数描述了反自旋电子之间的现场相互作用。哈密顿函数可以采用下列形式: h { text { Hubbard } = t sum { langle ij rangle sigma } c { i sigma } ^ { dagger } c { j sigma } + u sum { i } n { i uparrow } n { i downarrow }其中，在抑制自旋1/2指数时，c i ^ dagger { dagger } ，c i 表示位于 i 上的局部电子的创生及消灭算符，n i = c i ^ { dagger c i。&lt;br /&gt;
&lt;br /&gt;
The following assumptions have been made:&lt;br /&gt;
* only one orbital contributes to the electronic properties (as might be the case of copper atoms in superconducting [[High-temperature superconductivity#Cuprates|cuprates]], whose &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt;-bands are non-degenerate),&lt;br /&gt;
* the orbitals are so localized that only nearest-neighbor hopping &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; is taken into account&lt;br /&gt;
&lt;br /&gt;
The following assumptions have been made:&lt;br /&gt;
* only one orbital contributes to the electronic properties (as might be the case of copper atoms in superconducting cuprates, whose d-bands are non-degenerate),&lt;br /&gt;
* the orbitals are so localized that only nearest-neighbor hopping t is taken into account&lt;br /&gt;
&lt;br /&gt;
提出了以下假设: &lt;br /&gt;
* 只有一个轨道对电子性质有贡献(如超导铜氧化物中铜原子的情况，其 d 带是非简并的) &lt;br /&gt;
* 轨道局域化，只考虑了最近邻的跳跃 t&lt;br /&gt;
&lt;br /&gt;
====The auxiliary problem: the Anderson impurity model====&lt;br /&gt;
The Hubbard model is in general intractable under usual perturbation expansion techniques. DMFT maps this lattice model onto the so-called [[Anderson impurity model]] (AIM). This model describes the interaction of one site (the impurity) with a &amp;quot;bath&amp;quot; of electronic levels (described by the annihilation and creation operators &amp;lt;math&amp;gt;a_{p\sigma}&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;a_{p\sigma}^{\dagger}&amp;lt;/math&amp;gt;) through a hybridization function. The Anderson model corresponding to our single-site model is a single-orbital Anderson impurity model, whose hamiltonian formulation, on suppressing some spin 1/2 indices &amp;lt;math&amp;gt;\sigma&amp;lt;/math&amp;gt;, is:&lt;br /&gt;
:&amp;lt;math&amp;gt;H_{\text{AIM}}=\underbrace{\sum_{p}\epsilon_p a_p^{\dagger}a_p}_{H_{\text{bath}}} + \underbrace{\sum_{p\sigma}\left(V_{p}^{\sigma}c_{\sigma}^{\dagger}a_{p\sigma}+h.c.\right)}_{H_{\text{mix}}}+\underbrace{U n_{\uparrow} n_{\downarrow}-\mu \left(n_{\uparrow}+n_{\downarrow}\right)}_{H_{\text{loc}}}&amp;lt;/math&amp;gt;&lt;br /&gt;
where&lt;br /&gt;
* &amp;lt;math&amp;gt;H_{\text{bath}} &amp;lt;/math&amp;gt; describes the non-correlated electronic levels &amp;lt;math&amp;gt;\epsilon_p&amp;lt;/math&amp;gt; of the bath&lt;br /&gt;
* &amp;lt;math&amp;gt;H_{\text{loc}}&amp;lt;/math&amp;gt; describes the impurity, where two electrons interact with the energetical cost &amp;lt;math&amp;gt;U&amp;lt;/math&amp;gt;&lt;br /&gt;
*&amp;lt;math&amp;gt; H_{\text{mix}}&amp;lt;/math&amp;gt; describes the hybridization (or coupling) between the impurity and the bath through hybridization terms &amp;lt;math&amp;gt;V_p^{\sigma}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Hubbard model is in general intractable under usual perturbation expansion techniques. DMFT maps this lattice model onto the so-called Anderson impurity model (AIM). This model describes the interaction of one site (the impurity) with a &amp;quot;bath&amp;quot; of electronic levels (described by the annihilation and creation operators a_{p\sigma} and a_{p\sigma}^{\dagger}) through a hybridization function. The Anderson model corresponding to our single-site model is a single-orbital Anderson impurity model, whose hamiltonian formulation, on suppressing some spin 1/2 indices \sigma, is:&lt;br /&gt;
:H_{\text{AIM}}=\underbrace{\sum_{p}\epsilon_p a_p^{\dagger}a_p}_{H_{\text{bath}}} + \underbrace{\sum_{p\sigma}\left(V_{p}^{\sigma}c_{\sigma}^{\dagger}a_{p\sigma}+h.c.\right)}_{H_{\text{mix}}}+\underbrace{U n_{\uparrow} n_{\downarrow}-\mu \left(n_{\uparrow}+n_{\downarrow}\right)}_{H_{\text{loc}}}&lt;br /&gt;
where&lt;br /&gt;
* H_{\text{bath}}  describes the non-correlated electronic levels \epsilon_p of the bath&lt;br /&gt;
* H_{\text{loc}} describes the impurity, where two electrons interact with the energetical cost U&lt;br /&gt;
* H_{\text{mix}} describes the hybridization (or coupling) between the impurity and the bath through hybridization terms V_p^{\sigma}&lt;br /&gt;
&lt;br /&gt;
= = = = 辅助问题: 安德森模型模型在通常的扰动展开技术下通常是难以处理的。DMFT 将这个格子模型映射到所谓的安德森模型(AIM)上。这个模型通过一个杂化函数描述了一个位置(杂质)与电子能级的“浴”(用湮灭和创造算符 a _ { p sigma }和 a _ { p sigma } ^ { dagger }描述)的相互作用。与我们的单点模型对应的 Anderson 模型是一个单轨道安德森模型，其哈密顿公式是: h _ { text { AIM } = underbrace { sum { p } epsilon _ p a _ p ^ { dagka _ p }{ h _ { text { bath }} + underbrace { sum _ { p sigma } left (v _ { p } ^ { sigma } ^ { dagger } a _ { p sigma } + h.C.右)} _ { h _ { text { mix } + underbrace { u n _ { uparrow } n _ { downarrow }-mu left (n _ { uparrow } + n _ { downarrow } right)} _ { h _ { text { text { loc }}}}}其中 &lt;br /&gt;
* h _ { text { text { bath }}描述了浴 &lt;br /&gt;
* h _ { text { loc }的非关联电子能级 epsilon _ p 描述了杂质,当两个电子与能量成本 u &lt;br /&gt;
* h { text { mix }相互作用时，用杂化项 v _ p ^ { sigma }描述了杂化(或耦合)现象{ sigma }&lt;br /&gt;
&lt;br /&gt;
The Matsubara Green's function of this model, defined by &amp;lt;math&amp;gt; G_{\text{imp}}(\tau) = - \langle T c(\tau) c^{\dagger}(0)\rangle &amp;lt;/math&amp;gt;, is entirely determined by the parameters &amp;lt;math&amp;gt;U,\mu&amp;lt;/math&amp;gt; and the so-called hybridization function &amp;lt;math&amp;gt; \Delta_\sigma(i\omega_n) = \sum_{p}\frac{|V_p^\sigma|^2}{i\omega_n-\epsilon_p}&amp;lt;/math&amp;gt;, which is the imaginary-time Fourier-transform of &amp;lt;math&amp;gt;\Delta_{\sigma}(\tau)&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The Matsubara Green's function of this model, defined by  G_{\text{imp}}(\tau) = - \langle T c(\tau) c^{\dagger}(0)\rangle , is entirely determined by the parameters U,\mu and the so-called hybridization function  \Delta_\sigma(i\omega_n) = \sum_{p}\frac{|V_p^\sigma|^2}{i\omega_n-\epsilon_p}, which is the imaginary-time Fourier-transform of \Delta_{\sigma}(\tau).&lt;br /&gt;
&lt;br /&gt;
这个模型的 Matsubara Green 函数，定义为 g { text { imp }(tau) =-langle tc (tau) c ^ { dagger }(0) rangle，完全由参数 u，mu 和所谓的杂交函数 Delta _ sigma (i omega _ n) = sum { p } frac { | v _ p ^ | ^ 2}{ i omega _ n-epsilon _ p }确定，它是 Delta { sigma }(tau)的虚时间傅里叶变换。&lt;br /&gt;
&lt;br /&gt;
This hybridization function describes the dynamics of electrons hopping in and out of the bath. It should reproduce the lattice dynamics such that the impurity Green's function is the same as the local lattice Green's function. It is related to the non-interacting Green's function by the relation:&lt;br /&gt;
:&amp;lt;math&amp;gt;(\mathcal{G}_0)^{-1}(i\omega_n)=i\omega_n+\mu-\Delta(i\omega_n)&amp;lt;/math&amp;gt; (1)&lt;br /&gt;
&lt;br /&gt;
This hybridization function describes the dynamics of electrons hopping in and out of the bath. It should reproduce the lattice dynamics such that the impurity Green's function is the same as the local lattice Green's function. It is related to the non-interacting Green's function by the relation:&lt;br /&gt;
:(\mathcal{G}_0)^{-1}(i\omega_n)=i\omega_n+\mu-\Delta(i\omega_n) (1)&lt;br /&gt;
&lt;br /&gt;
这个杂化函数描述了电子跳进跳出浴室的动力学。它必须再现晶格动力学，使杂质格林函数与局域晶格格林函数相同。它与非相互作用格林函数有关: (数学{ g } _ 0) ^ {-1}(i omega _ n) = i omega _ n + mu-Delta (i omega _ n)(1)&lt;br /&gt;
&lt;br /&gt;
Solving the Anderson impurity model consists in computing observables such as the interacting Green's function &amp;lt;math&amp;gt;G(i\omega_n)&amp;lt;/math&amp;gt; for a given hybridization function &amp;lt;math&amp;gt;\Delta(i\omega_n)&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt; U,\mu&amp;lt;/math&amp;gt;. It is a difficult but not intractable problem. There exists a number of ways to solve the AIM, such as&lt;br /&gt;
* [[Numerical renormalization group]]&lt;br /&gt;
* [[Exact diagonalization]]&lt;br /&gt;
* [[Iterative perturbation theory]]&lt;br /&gt;
* [[Non-crossing approximation]]&lt;br /&gt;
* [[Continuous-time quantum Monte Carlo]] algorithms&lt;br /&gt;
&lt;br /&gt;
Solving the Anderson impurity model consists in computing observables such as the interacting Green's function G(i\omega_n) for a given hybridization function \Delta(i\omega_n) and  U,\mu. It is a difficult but not intractable problem. There exists a number of ways to solve the AIM, such as&lt;br /&gt;
* Numerical renormalization group&lt;br /&gt;
* Exact diagonalization&lt;br /&gt;
* Iterative perturbation theory&lt;br /&gt;
* Non-crossing approximation&lt;br /&gt;
* Continuous-time quantum Monte Carlo algorithms&lt;br /&gt;
&lt;br /&gt;
解决安德森模型的关键在于计算可观测量，比如给定杂交函数 Delta (i omega n)和 u，mu 的相互作用格林函数 g (i omega n)。这是一个困难但并非难以解决的问题。有许多方法可以解决这个问题，例如 &lt;br /&gt;
* 数值重整化群 &lt;br /&gt;
* 精确对角化 &lt;br /&gt;
* 迭代摄动理论 &lt;br /&gt;
* 非交叉近似 &lt;br /&gt;
* 连续时间量子蒙特卡罗法算法&lt;br /&gt;
&lt;br /&gt;
===Self-consistency equations===&lt;br /&gt;
The self-consistency condition requires the impurity Green's function &amp;lt;math&amp;gt;G_\mathrm{imp}(\tau)&amp;lt;/math&amp;gt; to coincide with the local lattice Green's function &amp;lt;math&amp;gt;G_{ii}(\tau) = -\langle T c_i(\tau)c_i^{\dagger}(0)\rangle &amp;lt;/math&amp;gt;:&lt;br /&gt;
:&amp;lt;math&amp;gt; G_\mathrm{imp}(i\omega_n) = G_{ii}(i\omega_n) = \sum_k \frac {1}{i\omega_n +\mu - \epsilon(k) - \Sigma(k,i\omega_n)}&amp;lt;/math&amp;gt;&lt;br /&gt;
where &amp;lt;math&amp;gt;\Sigma(k,i\omega_n)&amp;lt;/math&amp;gt; denotes the lattice self-energy.&lt;br /&gt;
&lt;br /&gt;
The self-consistency condition requires the impurity Green's function G_\mathrm{imp}(\tau) to coincide with the local lattice Green's function G_{ii}(\tau) = -\langle T c_i(\tau)c_i^{\dagger}(0)\rangle :&lt;br /&gt;
: G_\mathrm{imp}(i\omega_n) = G_{ii}(i\omega_n) = \sum_k \frac {1}{i\omega_n +\mu - \epsilon(k) - \Sigma(k,i\omega_n)}&lt;br /&gt;
where \Sigma(k,i\omega_n) denotes the lattice self-energy.&lt;br /&gt;
&lt;br /&gt;
= = = = 自洽性方程 = = = 自洽性条件要求杂质格林函数 gmathrm { imp }(tau)与局域格林函数 g { ii }(tau) =-langle tci (tau) c i ^ { dagger }(0) rangle:(i omega _ n) = g { ii }(i omega _ n) = sum _ k frac {1}{ i omega _ n + mu-epsilon (k)-Sigma (k，i omega _ n)}其中 Sigma (k，i omega _ n)表示晶格自能。&lt;br /&gt;
&lt;br /&gt;
===DMFT approximation: locality of the lattice self-energy===&lt;br /&gt;
The only DMFT approximations (apart from the approximation that can be made in order to solve the Anderson model) consists in neglecting the spatial fluctuations of the lattice [[self-energy]], by equating it to the impurity self-energy:&lt;br /&gt;
:&amp;lt;math&amp;gt; \Sigma(k,i\omega_n) \approx \Sigma_{imp}(i\omega_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The only DMFT approximations (apart from the approximation that can be made in order to solve the Anderson model) consists in neglecting the spatial fluctuations of the lattice self-energy, by equating it to the impurity self-energy:&lt;br /&gt;
: \Sigma(k,i\omega_n) \approx \Sigma_{imp}(i\omega_n) &lt;br /&gt;
&lt;br /&gt;
= = DMFT 近似: 晶格自能的局域性 = = = 唯一的 DMFT 近似(除了可以用来解决 Anderson 模型的近似之外)在于忽略晶格自能的空间涨落，将其等同于杂质自能: : Sigma (k，i _ n) approx _ _ { imp }(i _ n)&lt;br /&gt;
&lt;br /&gt;
This approximation becomes exact in the limit of lattices with infinite coordination, that is when the number of neighbors of each site is infinite. Indeed, one can show that in the diagrammatic expansion of the lattice self-energy, only local diagrams survive when one goes into the infinite coordination limit.&lt;br /&gt;
&lt;br /&gt;
This approximation becomes exact in the limit of lattices with infinite coordination, that is when the number of neighbors of each site is infinite. Indeed, one can show that in the diagrammatic expansion of the lattice self-energy, only local diagrams survive when one goes into the infinite coordination limit.&lt;br /&gt;
&lt;br /&gt;
这种近似在具有无限协调的格子的极限下变得精确，也就是当每个格子的邻域数目是无限的时候。事实上，我们可以证明，在晶格自能的图解展开中，当进入无限协调极限时，只有局域图存在。&lt;br /&gt;
&lt;br /&gt;
Thus, as in classical mean-field theories, DMFT is supposed to get more accurate as the dimensionality (and thus the number of neighbors) increases. Put differently, for low dimensions, spatial fluctuations will render the DMFT approximation less reliable. &lt;br /&gt;
&lt;br /&gt;
Thus, as in classical mean-field theories, DMFT is supposed to get more accurate as the dimensionality (and thus the number of neighbors) increases. Put differently, for low dimensions, spatial fluctuations will render the DMFT approximation less reliable. &lt;br /&gt;
&lt;br /&gt;
因此，就像经典的平均场理论一样，随着维数(以及邻域的数量)的增加，DMFT 应该得到更精确的结果。换句话说，对于低维度，空间波动将使 DMFT 近似不那么可靠。&lt;br /&gt;
&lt;br /&gt;
Spatial fluctuations also become relevant in the vicinity of [[phase transitions]]. Here, DMFT and classical mean-field theories result in mean-field [[critical exponents]], the pronounced changes before the phase transition are not reflected in the DMFT self-energy.&lt;br /&gt;
&lt;br /&gt;
Spatial fluctuations also become relevant in the vicinity of phase transitions. Here, DMFT and classical mean-field theories result in mean-field critical exponents, the pronounced changes before the phase transition are not reflected in the DMFT self-energy.&lt;br /&gt;
&lt;br /&gt;
空间波动也变得相关的附近的相变。在这里，DMFT 和经典的平均场理论导致了平均场临界指数，相变前的明显变化并没有反映在 DMFT 的自能中。&lt;br /&gt;
&lt;br /&gt;
===The DMFT loop===&lt;br /&gt;
In order to find the local lattice Green's function, one has to determine the hybridization function such that the corresponding impurity Green's function will coincide with the sought-after local lattice Green's function.&lt;br /&gt;
The most widespread way of solving this problem is by using a forward recursion method, namely, for a given &amp;lt;math&amp;gt; U&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt; and temperature &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt;:&lt;br /&gt;
# Start with a guess for &amp;lt;math&amp;gt;\Sigma(k,i\omega_n)&amp;lt;/math&amp;gt; (typically, &amp;lt;math&amp;gt;\Sigma(k,i\omega_n)=0&amp;lt;/math&amp;gt;)&lt;br /&gt;
# Make the DMFT approximation:  &amp;lt;math&amp;gt; \Sigma(k,i\omega_n) \approx \Sigma_\mathrm{imp}(i\omega_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
# Compute the local Green's function &amp;lt;math&amp;gt;G_\mathrm{loc}(i\omega_n)&amp;lt;/math&amp;gt;&lt;br /&gt;
# Compute the dynamical mean field &amp;lt;math&amp;gt;\Delta(i\omega) = i\omega_n + \mu - G^{-1}_\mathrm{loc}(i\omega_n) - \Sigma_\mathrm{imp}(i\omega_n) &amp;lt;/math&amp;gt;&lt;br /&gt;
# Solve the AIM for a new impurity Green's function &amp;lt;math&amp;gt;G_\mathrm{imp}(i\omega_n)&amp;lt;/math&amp;gt;, extract its self-energy: &amp;lt;math&amp;gt;\Sigma_\mathrm{imp}(i\omega_n) = (\mathcal{G}_0)^{-1}(i\omega_n) - (G_\mathrm{imp})^{-1}(i\omega_n)  &amp;lt;/math&amp;gt;&lt;br /&gt;
# Go back to step 2 until convergence, namely when &amp;lt;math&amp;gt;G_\mathrm{imp}^n = G_\mathrm{imp}^{n+1}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In order to find the local lattice Green's function, one has to determine the hybridization function such that the corresponding impurity Green's function will coincide with the sought-after local lattice Green's function.&lt;br /&gt;
The most widespread way of solving this problem is by using a forward recursion method, namely, for a given  U, \mu and temperature T:&lt;br /&gt;
# Start with a guess for \Sigma(k,i\omega_n) (typically, \Sigma(k,i\omega_n)=0)&lt;br /&gt;
# Make the DMFT approximation:   \Sigma(k,i\omega_n) \approx \Sigma_\mathrm{imp}(i\omega_n) &lt;br /&gt;
# Compute the local Green's function G_\mathrm{loc}(i\omega_n)&lt;br /&gt;
# Compute the dynamical mean field \Delta(i\omega) = i\omega_n + \mu - G^{-1}_\mathrm{loc}(i\omega_n) - \Sigma_\mathrm{imp}(i\omega_n) &lt;br /&gt;
# Solve the AIM for a new impurity Green's function G_\mathrm{imp}(i\omega_n), extract its self-energy: \Sigma_\mathrm{imp}(i\omega_n) = (\mathcal{G}_0)^{-1}(i\omega_n) - (G_\mathrm{imp})^{-1}(i\omega_n)  &lt;br /&gt;
# Go back to step 2 until convergence, namely when G_\mathrm{imp}^n = G_\mathrm{imp}^{n+1}.&lt;br /&gt;
&lt;br /&gt;
= = = DMFT 循环 = = = 为了找到局域晶格格林函数，必须确定杂化函数，使相应的杂质格林函数与备受追捧的局域晶格格林函数一致。解决这个问题最普遍的方法是使用一种正向递归方法，即对于给定的 u,mu 和温度 t: # 从 Sigma (k，i omega _ n)的猜测开始(通常，Sigma (k，i omega _ n) = 0) # 使 DMFT 近似: Sigma (k，i omega _ n)接近 Sigma _ mathrm { imp }(i omega _ n) # 计算本地 Green 函数 g _ mathrm { loc }(i _ n) # 计算动力平均场Δ (i omega) = i omega _ n + mu-g ^ {-1} _ mathrm { loc }(i omega _ n)-Sigma _ mathrm { imp }(i omega _ n) # 求一个新杂质格林函数 g _ mathrm { imp }(i omega _ n)的目标,提取它的自身能量: Sigma _ mathrm { imp }(i omega _ n) = (cal { g } _ 0) ^ {-1}(i omega _ n)-(g _ mathrm {}) ^ {-1}(i omega _ n) # 回到第二步，直到收敛,即当 g mathrm { imp } ^ n = g mathrm { imp } ^ { n + 1}。&lt;br /&gt;
&lt;br /&gt;
==Applications==&lt;br /&gt;
The local lattice Green's function and other impurity observables can be used to calculate a number of physical quantities as a function of correlations &amp;lt;math&amp;gt;U&amp;lt;/math&amp;gt;, bandwidth, filling (chemical potential &amp;lt;math&amp;gt;\mu&amp;lt;/math&amp;gt;), and temperature &amp;lt;math&amp;gt;T&amp;lt;/math&amp;gt;:&lt;br /&gt;
* the [[spectral function]] (which gives the band structure)&lt;br /&gt;
* the [[kinetic energy]]&lt;br /&gt;
* the double occupancy of a site&lt;br /&gt;
* [[Linear response|response functions]] (compressibility, optical conductivity, specific heat)&lt;br /&gt;
&lt;br /&gt;
The local lattice Green's function and other impurity observables can be used to calculate a number of physical quantities as a function of correlations U, bandwidth, filling (chemical potential \mu), and temperature T:&lt;br /&gt;
* the spectral function (which gives the band structure)&lt;br /&gt;
* the kinetic energy&lt;br /&gt;
* the double occupancy of a site&lt;br /&gt;
* response functions (compressibility, optical conductivity, specific heat)&lt;br /&gt;
&lt;br /&gt;
= = = 应用 = = 局域格林函数和其他杂质可观测量可用来计算一些物理量，作为关联 u，带宽，填充(化学势 μ)和温度 t 的函数: &lt;br /&gt;
* 谱函数(给出能带结构) &lt;br /&gt;
* 动能 &lt;br /&gt;
* 一个位点的双占有率响应函数(压缩率，光导率，比热)&lt;br /&gt;
&lt;br /&gt;
In particular, the drop of the double-occupancy as &amp;lt;math&amp;gt;U&amp;lt;/math&amp;gt; increases is a signature of the Mott transition.&lt;br /&gt;
&lt;br /&gt;
In particular, the drop of the double-occupancy as U increases is a signature of the Mott transition.&lt;br /&gt;
&lt;br /&gt;
特别是，随着 u 的增加，双人占有率下降，这是莫特过渡的一个标志。&lt;br /&gt;
&lt;br /&gt;
==Extensions of DMFT==&lt;br /&gt;
DMFT has several extensions, extending the above formalism to multi-orbital, multi-site problems, long-range correlations and non-equilibrium.&lt;br /&gt;
&lt;br /&gt;
DMFT has several extensions, extending the above formalism to multi-orbital, multi-site problems, long-range correlations and non-equilibrium.&lt;br /&gt;
&lt;br /&gt;
= = DMFT = DMFT 的扩展有几个扩展，将上述公式扩展到多轨道、多站点问题、长程相关性和非平衡性。&lt;br /&gt;
&lt;br /&gt;
=== Multi-orbital extension===&lt;br /&gt;
DMFT can be extended to Hubbard models with multiple orbitals, namely with electron-electron interactions of the form &amp;lt;math&amp;gt;U_{\alpha \beta} n_{\alpha}n_{\beta}&amp;lt;/math&amp;gt; where &amp;lt;math&amp;gt;\alpha&amp;lt;/math&amp;gt; and &amp;lt;math&amp;gt;\beta&amp;lt;/math&amp;gt; denote different orbitals. The combination with [[density functional theory]] (DFT+DMFT)&amp;lt;ref name=&amp;quot;LDA_DMFT&amp;quot; /&amp;gt;&amp;lt;ref name=Held&amp;gt;{{cite journal |title=Electronic Structure Calculations using Dynamical Mean Field Theory |author=K. Held |journal=[[Adv. Phys.]] |volume=56 |issue=6 |pages=829–926 |year=2007 |doi=10.1080/00018730701619647|arxiv = cond-mat/0511293| bibcode =  2007AdPhy..56..829H }}&amp;lt;/ref&amp;gt;     then allows for a realistic calculation of correlated materials.&amp;lt;ref&amp;gt;{{Cite web|url=http://hauleweb.rutgers.edu/tutorials/|title=Embedded Dynamical Mean Field Theory, an electronic structure package implementing DFT+DMFT}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
DMFT can be extended to Hubbard models with multiple orbitals, namely with electron-electron interactions of the form U_{\alpha \beta} n_{\alpha}n_{\beta} where \alpha and \beta denote different orbitals. The combination with density functional theory (DFT+DMFT)     then allows for a realistic calculation of correlated materials.&lt;br /&gt;
&lt;br /&gt;
= = = 多轨道延伸 = = DMFT 可以推广到具有多个轨道的 Hubbard 模型，即具有 u _ { alpha beta } n _ { alpha } n _ { beta }形式的电子-电子相互作用，其中 α 和 β 表示不同的轨道。结合密度泛函理论(dft + dmft) ，然后允许一个现实的计算相关材料。&lt;br /&gt;
&lt;br /&gt;
=== Extended DMFT ===&lt;br /&gt;
Extended DMFT yields a local impurity self energy for non-local interactions and hence allows us to apply DMFT for more  general models such as the [[t-J model]].&lt;br /&gt;
&lt;br /&gt;
Extended DMFT yields a local impurity self energy for non-local interactions and hence allows us to apply DMFT for more  general models such as the t-J model.&lt;br /&gt;
&lt;br /&gt;
= = = 扩展 DMFT = = = 扩展 DMFT 产生局部杂质自能的非局部相互作用，因此允许我们应用 DMFT 更一般的模型，如 t-J 模型。&lt;br /&gt;
&lt;br /&gt;
=== Cluster DMFT ===&lt;br /&gt;
In order to improve on the DMFT approximation, the Hubbard model can be mapped on a multi-site impurity (cluster) problem, which allows one to add some spatial dependence to the impurity  self-energy. Clusters contain 4 to 8 sites at low temperature and up to 100 sites at high temperature.&lt;br /&gt;
&lt;br /&gt;
In order to improve on the DMFT approximation, the Hubbard model can be mapped on a multi-site impurity (cluster) problem, which allows one to add some spatial dependence to the impurity  self-energy. Clusters contain 4 to 8 sites at low temperature and up to 100 sites at high temperature.&lt;br /&gt;
&lt;br /&gt;
= = = 团簇 DMFT = = = = = 为了改进 DMFT 近似，Hubbard 模型可以映射到一个多位点杂质(团簇)问题上，这使得人们可以对杂质自能增加一些空间依赖性。团簇包含4至8个低温位点和多达100个高温位点。&lt;br /&gt;
&lt;br /&gt;
=== Diagrammatic extensions ===&lt;br /&gt;
Spatial dependencies of the self energy beyond DMFT, including long-range correlations in the vicinity of a [[phase transition]], can be obtained also through diagrammatic extensions of DMFT&amp;lt;ref name=Rohringer&amp;gt;{{cite journal |title=Diagrammatic routes to nonlocal correlations beyond dynamical mean field theory |author1=G. Rohringer |author2= H. Hafermann| author3=A. Toschi |author4=A. Katanin | author5= A. E. Antipov| author6= M. I. Katsnelson|author7= A. I. Lichtenstein|author8= A. N. Rubtsov|author9=K. Held |journal=[[Reviews of Modern Physics]] |volume=90 |issue=4 |pages= 025003  |year=2018|doi=10.1103/RevModPhys.90.025003|arxiv = 1705.00024 }}&amp;lt;/ref&amp;gt;  using a combination of analytical and numerical techniques. The starting point of the dynamical vertex approximation&amp;lt;ref name=Toschi&amp;gt;{{cite journal |title=Dynamical vertex approximation: A step beyond dynamical mean-field theory |author1=A. Toschi |author2=A. Katanin |author3=K. Held |journal=[[Physical Review B]] |volume=75 |issue=4 |pages=045118 |year=2007 |doi=10.1103/PhysRevB.75.045118|arxiv = cond-mat/0603100| bibcode = 2007PhRvB..75d5118T }}&amp;lt;/ref&amp;gt;  and of the dual fermion approach is the local [[Vertex function|two-particle vertex]].&lt;br /&gt;
&lt;br /&gt;
Spatial dependencies of the self energy beyond DMFT, including long-range correlations in the vicinity of a phase transition, can be obtained also through diagrammatic extensions of DMFT  using a combination of analytical and numerical techniques. The starting point of the dynamical vertex approximation  and of the dual fermion approach is the local two-particle vertex.&lt;br /&gt;
&lt;br /&gt;
= = = 图解扩展 = = = DMFT 之外自能的空间依赖性，包括相变附近的长程关联，也可以通过使用解析和数值技术相结合的 DMFT 图解扩展来获得。动态顶点近似和对偶费米子近似的出发点是局部两粒子顶点。&lt;br /&gt;
&lt;br /&gt;
=== Non-equilibrium ===&lt;br /&gt;
DMFT has been employed to study non-equilibrium transport and optical excitations. Here, the reliable calculation of the AIM's [[Keldysh formalism|Green function out of equilibrium]] remains a big challenge.&lt;br /&gt;
&lt;br /&gt;
DMFT has been employed to study non-equilibrium transport and optical excitations. Here, the reliable calculation of the AIM's Green function out of equilibrium remains a big challenge.&lt;br /&gt;
&lt;br /&gt;
= = = 非平衡态 = = = DMFT 被用来研究非平衡态输运和光激发。在这里，如何可靠地计算 AIM 平衡外的格林函数仍然是一个很大的挑战。&lt;br /&gt;
&lt;br /&gt;
==References and notes==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Strongly correlated material]]&lt;br /&gt;
&lt;br /&gt;
*Strongly correlated material&lt;br /&gt;
&lt;br /&gt;
= = = = = = = &lt;br /&gt;
* 强相关材料&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
* [http://www.physics.rutgers.edu/~kotliar/papers/PT-Kotliar_57_53.pdf Strongly Correlated Materials: Insights From Dynamical Mean-Field Theory] G. Kotliar and D. Vollhardt&lt;br /&gt;
* [http://www.cond-mat.de/events/correl11/manuscript Lecture notes on the LDA+DMFT approach to strongly correlated materials] Eva Pavarini, Erik Koch, Dieter Vollhardt, and Alexander Lichtenstein (eds.)&lt;br /&gt;
* [http://www.cond-mat.de/events/correl14/manuscripts/ Lecture notes DMFT at 25: Infinite Dimensions] Eva Pavarini, Erik Koch, Dieter Vollhardt, and Alexander Lichtenstein (eds.)&lt;br /&gt;
* [http://www.cond-mat.de/events/correl18/manuscripts/ Lecture notes DMFT – From Infinite Dimensions to Real Materials] Eva Pavarini, Erik Koch, Dieter Vollhardt, and Alexander Lichtenstein (eds.)&lt;br /&gt;
&lt;br /&gt;
* Strongly Correlated Materials: Insights From Dynamical Mean-Field Theory G. Kotliar and D. Vollhardt&lt;br /&gt;
* Lecture notes on the LDA+DMFT approach to strongly correlated materials Eva Pavarini, Erik Koch, Dieter Vollhardt, and Alexander Lichtenstein (eds.)&lt;br /&gt;
* Lecture notes DMFT at 25: Infinite Dimensions Eva Pavarini, Erik Koch, Dieter Vollhardt, and Alexander Lichtenstein (eds.)&lt;br /&gt;
* Lecture notes DMFT – From Infinite Dimensions to Real Materials Eva Pavarini, Erik Koch, Dieter Vollhardt, and Alexander Lichtenstein (eds.)&lt;br /&gt;
&lt;br /&gt;
= = = 外部链接 = = &lt;br /&gt;
* 强相关材料: 来自动态平均场理论的见解 g. Kotliar 和 d. Vollhardt &lt;br /&gt;
* 对强相关材料 lda + dmft 方法的讲义 Eva Pavarini，Erik Koch，Dieter Vollhardt 和 Alexander Lichtenstein (合编)&lt;br /&gt;
* 讲稿 DMFT 在25: 无限维度伊娃帕瓦里尼，埃里克科赫，迪特沃尔哈特，和亚历山大利希滕斯坦(编。)&lt;br /&gt;
* 讲稿 DMFT-从无限维度到真正的材料伊娃帕瓦里尼，埃里克科赫，迪特沃尔哈特，和亚历山大利希滕斯坦(编。)&lt;br /&gt;
&lt;br /&gt;
[[Category:Correlated electrons]]&lt;br /&gt;
[[Category:Materials science]]&lt;br /&gt;
[[Category:Condensed matter physics]]&lt;br /&gt;
[[Category:Quantum mechanics]]&lt;br /&gt;
&lt;br /&gt;
Category:Correlated electrons&lt;br /&gt;
Category:Materials science&lt;br /&gt;
Category:Condensed matter physics&lt;br /&gt;
Category:Quantum mechanics&lt;br /&gt;
&lt;br /&gt;
类别: 相关电子类别: 材料科学类别: 凝聚态物理学科学类别: 量子力学&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;This page was moved from [[wikipedia:en:Dynamical mean-field theory]]. Its edit history can be viewed at [[动力学平均场理论/edithistory]]&amp;lt;/small&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:待整理页面]]&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E7%BB%9F%E8%AE%A1%E5%9C%BA%E8%AE%BA&amp;diff=29550</id>
		<title>统计场论</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E7%BB%9F%E8%AE%A1%E5%9C%BA%E8%AE%BA&amp;diff=29550"/>
		<updated>2022-03-25T07:24:13Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：Moved page from wikipedia:en:Statistical field theory (history)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;此词条暂由彩云小译翻译，翻译字数共209，未经人工整理和审校，带来阅读不便，请见谅。&lt;br /&gt;
&lt;br /&gt;
In [[theoretical physics]], '''statistical field theory''' ('''SFT''') is a theoretical framework that describes [[phase transitions]].&amp;lt;ref&amp;gt;{{cite book |last1=Le Bellac |first1=Michel |title=Quantum and Statistical Field Theory |date=1991 |publisher=Clarendon Press |location=Oxford |isbn=978-0198539643}}&amp;lt;/ref&amp;gt; It does not denote a single theory but encompasses many models, including for [[magnetism]], [[superconductivity]], [[superfluidity]],&amp;lt;ref&amp;gt;{{cite book |last1=Altland |first1=Alexander |last2=Simons |first2=Ben |title=Condensed Matter Field Theory |date=2010 |publisher=Cambridge University Press |location=Cambridge |isbn=978-0-521-76975-4 |edition=2nd}}&amp;lt;/ref&amp;gt; [[topological phase transition]], [[wetting]]&amp;lt;ref&amp;gt;{{cite journal |last1=Rejmer |first1=K. |last2=Dietrich |first2=S. |last3=Napiórkowski |first3=M. |title=Filling transition for a wedge |journal=Phys. Rev. E |date=1999 |volume=60 |issue=4 |pages=4027–4042 |doi=10.1103/PhysRevE.60.4027|pmid=11970240 |arxiv=cond-mat/9812115 |bibcode=1999PhRvE..60.4027R |s2cid=23431707 }}&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;{{cite journal |last1=Parry |first1=A.O. |last2=Rascon |first2=C. |last3=Wood |first3=A.J. |title=Universality for 2D Wedge Wetting |journal=Phys. Rev. Lett. |date=1999 |volume=83 |issue=26 |pages=5535–5538 |doi=10.1103/PhysRevLett.83.5535|arxiv=cond-mat/9912388 |bibcode=1999PhRvL..83.5535P |s2cid=119364261 }}&amp;lt;/ref&amp;gt; as well as non-equilibrium phase transitions.&amp;lt;ref&amp;gt;{{cite book |last1=Täuber |first1=Uwe |title=Critical Dynamics |date=2014 |publisher=Cambridge University Press |location=Cambridge |isbn=978-0-521-84223-5}}&amp;lt;/ref&amp;gt; A SFT is any model in [[statistical mechanics]] where the [[Degrees of freedom (physics and chemistry)|degrees of freedom]] comprise a [[Field (physics)|field]] or fields. In other words, the [[Microstate (statistical mechanics)|microstates]] of the system are expressed through field configurations. It is closely related to [[quantum field theory]], which describes the [[quantum mechanics]] of fields, and shares with it many techniques, such as the [[path integral formulation]] and [[renormalization]].&lt;br /&gt;
If the system involves polymers, it is also known as [[polymer field theory]].&lt;br /&gt;
&lt;br /&gt;
In theoretical physics, statistical field theory (SFT) is a theoretical framework that describes phase transitions. It does not denote a single theory but encompasses many models, including for magnetism, superconductivity, superfluidity, topological phase transition, wetting as well as non-equilibrium phase transitions. A SFT is any model in statistical mechanics where the degrees of freedom comprise a field or fields. In other words, the microstates of the system are expressed through field configurations. It is closely related to quantum field theory, which describes the quantum mechanics of fields, and shares with it many techniques, such as the path integral formulation and renormalization.&lt;br /&gt;
If the system involves polymers, it is also known as polymer field theory.&lt;br /&gt;
&lt;br /&gt;
在理论物理学中，统计场论是描述相变的理论框架。它不表示一个单一的理论，但包括许多模型，包括磁性，超导现象，超流体，拓扑相变，润湿以及非平衡相变。一个 SFT 是任何一个统计力学的模型，其中自由度包含一个或多个领域。换句话说，系统的微观状态是通过场构型来表示的。它与量子场论密切相关，量子场论描述了场的量子力学，并与量子场论共享许多技术，如路径积分表述和重整化。如果这个系统包含聚合物，它也被称为高分子场论。&lt;br /&gt;
&lt;br /&gt;
In fact, by performing a [[Wick rotation]] from [[Minkowski space]] to [[Euclidean space]], many results of statistical field theory can be applied directly to its quantum equivalent.{{citation needed|date=November 2018}} The [[Correlation function (quantum field theory)|correlation function]]s of a statistical field theory are called [[Schwinger function]]s, and their properties are described by the [[Osterwalder–Schrader axioms]].&lt;br /&gt;
&lt;br /&gt;
In fact, by performing a Wick rotation from Minkowski space to Euclidean space, many results of statistical field theory can be applied directly to its quantum equivalent. The correlation functions of a statistical field theory are called Schwinger functions, and their properties are described by the Osterwalder–Schrader axioms.&lt;br /&gt;
&lt;br /&gt;
实际上，通过执行从闵可夫斯基空间到欧氏空间的 Wick 旋转，统计场论的许多结果可以直接应用到它的量子等价物上。统计场论的相关函数称为 Schwinger 函数，其性质用 Osterwalder-Schrader 公理来描述。&lt;br /&gt;
&lt;br /&gt;
Statistical field theories are widely used to describe systems in [[polymer physics]] or [[biophysics]], such as [[polymer]] films, nanostructured block [[copolymers]]&amp;lt;ref&amp;gt;{{cite journal |vauthors=Baeurle SA, Usami T, Gusev AA | title= A new multiscale modeling approach for the prediction of mechanical properties of [[polymer-based nanomaterials]] | journal=Polymer | year=2006 | volume=47 | pages=8604–8617 | doi=10.1016/j.polymer.2006.10.017 | issue= 26}}&amp;lt;/ref&amp;gt; or [[polyelectrolyte]]s.&amp;lt;ref&amp;gt;{{cite journal |vauthors=Baeurle SA, Nogovitsin EA | title= Challenging scaling laws of flexible polyelectrolyte solutions with effective renormalization concepts | journal=Polymer | year=2007 | volume=48 | pages=4883–4899 | doi=10.1016/j.polymer.2007.05.080 | issue= 16}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Statistical field theories are widely used to describe systems in polymer physics or biophysics, such as polymer films, nanostructured block copolymers or polyelectrolytes.&lt;br /&gt;
&lt;br /&gt;
统计场理论广泛用于描述聚合物物理或生物物理体系，如聚合物薄膜、纳米结构嵌段共聚物或聚电解质。&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
{{reflist}}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*{{cite book |title=Statistical Field Theory |volume=I, II |series=Cambridge Monographs on Mathematical Physics |first1=Claude |last1=Itzykson  |first2=Jean-Michel |last2=Drouffe |publisher=Cambridge University Press |date=1991 |isbn=0-521-40806-7}} {{ISBN|0-521-40805-9}}&lt;br /&gt;
*{{cite book |first=Giorgio |last=Parisi |title=Statistical Field Theory |url=https://books.google.com/books?id=bivTswEACAAJ |date=1998 |publisher=Perseus Books |isbn=978-0-7382-0051-4 |series=Advanced Book Classics}}&lt;br /&gt;
*{{cite book |title=The P(φ)&amp;lt;sub&amp;gt;2&amp;lt;/sub&amp;gt; Euclidean (quantum) field theory |first=Barry |last=Simon |publisher=Princeton University Press |date=1974 |isbn=0-691-08144-1}}&lt;br /&gt;
*{{cite book |title=Quantum Physics: A Functional Integral Point of View |first1=James |last1=Glimm |first2=Arthur |last2=Jaffe |publisher=Springer |edition=2nd |date=1987 |isbn=0-387-96477-0}}&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
*[https://web.archive.org/web/20060925105340/http://www.gursey.gov.tr/~mgh/rg2006/problemsets.html Problems in Statistical Field Theory]&lt;br /&gt;
*[https://web.archive.org/web/20090107204013/http://www-dick.chemie.uni-regensburg.de/group/stephan_baeurle/ Particle and Polymer Field Theory Group]&lt;br /&gt;
{{Statistical mechanics topics}}&lt;br /&gt;
{{Industrial and applied mathematics}}&lt;br /&gt;
&lt;br /&gt;
*Problems in Statistical Field Theory&lt;br /&gt;
*Particle and Polymer Field Theory Group&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= = = 外部链接 = = &lt;br /&gt;
* 统计场论中的问题 &lt;br /&gt;
* 粒子和高分子场论群&lt;br /&gt;
&lt;br /&gt;
[[Category:Applied mathematics]]&lt;br /&gt;
[[Category:Mathematical physics]]&lt;br /&gt;
[[Category:Statistical field theories|*]]&lt;br /&gt;
&lt;br /&gt;
Category:Applied mathematics&lt;br /&gt;
Category:Mathematical physics&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
类别: 应用数学类别: 数学物理 * &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{physics-stub}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;This page was moved from [[wikipedia:en:Statistical field theory]]. Its edit history can be viewed at [[统计场论/edithistory]]&amp;lt;/small&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:待整理页面]]&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
	<entry>
		<id>https://wiki.swarma.org/index.php?title=%E5%A4%A7%E8%A7%84%E6%A8%A1%E8%84%91%E7%BD%91%E7%BB%9C&amp;diff=29543</id>
		<title>大规模脑网络</title>
		<link rel="alternate" type="text/html" href="https://wiki.swarma.org/index.php?title=%E5%A4%A7%E8%A7%84%E6%A8%A1%E8%84%91%E7%BD%91%E7%BB%9C&amp;diff=29543"/>
		<updated>2022-03-25T07:21:06Z</updated>

		<summary type="html">&lt;p&gt;Moonscar：Moved page from wikipedia:en:Large-scale brain network (history)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;此词条暂由彩云小译翻译，翻译字数共800，未经人工整理和审校，带来阅读不便，请见谅。&lt;br /&gt;
&lt;br /&gt;
{{Short description|Collections of brain regions}}&lt;br /&gt;
'''Large-scale brain networks''' (also known as '''intrinsic brain networks''') are collections of widespread [[brain regions]] showing [[Resting state fMRI#Functional|functional connectivity]] by statistical analysis of the [[Functional magnetic resonance imaging|fMRI]] [[BOLD signal]]&amp;lt;ref name=Riedl&amp;gt;{{cite journal|last1=Riedl|first1=Valentin|last2=Utz|first2=Lukas|last3=Castrillón|first3=Gabriel|last4=Grimmer|first4=Timo|last5=Rauschecker|first5=Josef P.|last6=Ploner|first6=Markus|last7=Friston|first7=Karl J.|last8=Drzezga|first8=Alexander|last9=Sorg|first9=Christian|title=Metabolic connectivity mapping reveals effective connectivity in the resting human brain|journal=PNAS|date=January 12, 2016|volume=113|issue=2|pages=428–433|doi=10.1073/pnas.1513752113|pmid=26712010|pmc=4720331|bibcode=2016PNAS..113..428R|doi-access=free}}&amp;lt;/ref&amp;gt; or other recording methods such as [[Electroencephalography|EEG]],&amp;lt;ref&amp;gt;{{Cite journal|last1=Foster|first1=Brett L.|last2=Parvizi|first2=Josef|date=2012-03-01|title=Resting oscillations and cross-frequency coupling in the human posteromedial cortex|journal=NeuroImage|volume=60|issue=1|pages=384–391|doi=10.1016/j.neuroimage.2011.12.019|pmid=22227048|issn=1053-8119|pmc=3596417}}&amp;lt;/ref&amp;gt; [[Positron emission tomography|PET]]&amp;lt;ref&amp;gt;{{Cite journal|last1=Buckner|first1=Randy L.|last2=Andrews‐Hanna|first2=Jessica R.|last3=Schacter|first3=Daniel L.|date=2008|title=The Brain's Default Network|journal=Annals of the New York Academy of Sciences|language=en|volume=1124|issue=1|pages=1–38|doi=10.1196/annals.1440.011|pmid=18400922|issn=1749-6632|bibcode=2008NYASA1124....1B|s2cid=3167595}}&amp;lt;/ref&amp;gt; and [[Magnetoencephalography|MEG]].&amp;lt;ref&amp;gt;{{Cite journal|last1=Morris|first1=Peter G.|last2=Smith|first2=Stephen M.|last3=Barnes|first3=Gareth R.|last4=Stephenson|first4=Mary C.|last5=Hale|first5=Joanne R.|last6=Price|first6=Darren|last7=Luckhoo|first7=Henry|last8=Woolrich|first8=Mark|last9=Brookes|first9=Matthew J.|date=2011-10-04|title=Investigating the electrophysiological basis of resting state networks using magnetoencephalography|journal=Proceedings of the National Academy of Sciences|language=en|volume=108|issue=40|pages=16783–16788|doi=10.1073/pnas.1112685108|issn=0027-8424|pmid=21930901|pmc=3189080|bibcode=2011PNAS..10816783B|doi-access=free}}&amp;lt;/ref&amp;gt; An emerging paradigm in neuroscience is that cognitive tasks are performed not by individual brain regions working in isolation but by networks consisting of several discrete brain regions that are said to be &amp;quot;functionally connected&amp;quot;. Functional connectivity networks may be found using algorithms such as [[cluster analysis]], spatial [[independent component analysis]] (ICA), seed based, and others.&amp;lt;ref name=&amp;quot;Petersen&amp;quot;&amp;gt;{{cite journal|last1=Petersen|first1=Steven|last2=Sporns|first2=Olaf|title=Brain Networks and Cognitive Architectures|journal=Neuron|date=October 2015|volume=88|issue=1|pages=207–219|doi=10.1016/j.neuron.2015.09.027|pmid=26447582|pmc=4598639 }}&amp;lt;/ref&amp;gt; Synchronized brain regions may also be identified using long-range synchronization of the EEG, MEG, or other dynamic brain signals.&amp;lt;ref name=Bressler&amp;gt;{{cite journal|last1=Bressler|first1=Steven L.|last2=Menon|first2=Vinod|s2cid=5967761|title=Large scale brain networks in cognition: emerging methods and principles|journal=Trends in Cognitive Sciences|date=June 2010|volume=14|issue=6|pages=233–290|doi=10.1016/j.tics.2010.04.004|url=http://www.cell.com/trends/cognitive-sciences/issue?pii=S1364-6613(10)X0005-5|accessdate=24 January 2016|pmid=20493761}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Large-scale brain networks (also known as intrinsic brain networks) are collections of widespread brain regions showing functional connectivity by statistical analysis of the fMRI BOLD signal or other recording methods such as EEG, PET and MEG. An emerging paradigm in neuroscience is that cognitive tasks are performed not by individual brain regions working in isolation but by networks consisting of several discrete brain regions that are said to be &amp;quot;functionally connected&amp;quot;. Functional connectivity networks may be found using algorithms such as cluster analysis, spatial independent component analysis (ICA), seed based, and others. Synchronized brain regions may also be identified using long-range synchronization of the EEG, MEG, or other dynamic brain signals.&lt;br /&gt;
&lt;br /&gt;
大规模的大脑网络(也称为内在大脑网络)是通过功能性磁共振成像 BOLD 信号的统计分析或其他记录方法(如 EEG、 PET 和 MEG)显示功能连接的广泛的大脑区域的集合。神经科学中一个新出现的范式是，认知任务不是由独立工作的单个大脑区域执行的，而是由几个被称为“功能连接”的离散大脑区域组成的网络执行的。功能连接网络可以通过算法来发现，比如数据聚类、空间独立元素分析、种子等等。同步的大脑区域也可以用脑电图、脑磁图或其他动态大脑信号的远程同步来识别。&lt;br /&gt;
&lt;br /&gt;
The set of identified brain areas that are linked together in a large-scale network varies with cognitive function.&amp;lt;ref name=&amp;quot;Bressler2&amp;quot;&amp;gt;{{cite journal|last1=Bressler|first1=Steven L.|title=Neurocognitive networks|journal=Scholarpedia|volume=3|issue=2|pages=1567|doi=10.4249/scholarpedia.1567|year=2008|bibcode=2008SchpJ...3.1567B|doi-access=free}}&amp;lt;/ref&amp;gt; When the cognitive state is not explicit (i.e., the subject is at &amp;quot;rest&amp;quot;), the large-scale brain network is a [[Resting state fMRI|resting state]] network (RSN). As a physical system with graph-like properties,&amp;lt;ref name=&amp;quot;Bressler&amp;quot; /&amp;gt; a large-scale brain network has both nodes and edges and cannot be identified simply by the co-activation of brain areas. In recent decades, the analysis of brain networks was made feasible by advances in imaging techniques as well as new tools from [[graph theory]] and [[Dynamical systems theory|dynamical systems]].&lt;br /&gt;
&lt;br /&gt;
The set of identified brain areas that are linked together in a large-scale network varies with cognitive function. When the cognitive state is not explicit (i.e., the subject is at &amp;quot;rest&amp;quot;), the large-scale brain network is a resting state network (RSN). As a physical system with graph-like properties, a large-scale brain network has both nodes and edges and cannot be identified simply by the co-activation of brain areas. In recent decades, the analysis of brain networks was made feasible by advances in imaging techniques as well as new tools from graph theory and dynamical systems.&lt;br /&gt;
&lt;br /&gt;
在一个大规模的网络中，连接在一起的大脑区域的集合因认知功能的不同而不同。当认知状态不明确(即主体处于“静止”状态)时，大规模的脑网络是一个静息状态网络(RSN)。作为一个具有图形特征的物理系统，大规模的脑网络既有节点又有边，不能简单地通过脑区的共同激活来识别。近几十年来，由于成像技术的进步以及图论和动力学系统的新工具，脑网络的分析变得可行。&lt;br /&gt;
&lt;br /&gt;
Large-scale brain networks are identified by their function and provide a coherent framework for understanding [[cognition]] by offering a neural model of how different cognitive functions emerge when different sets of brain regions join together as self-organized coalitions. The number and composition of the coalitions will vary with the algorithm and parameters used to identify them.&amp;lt;ref name=&amp;quot;Yeo&amp;quot; /&amp;gt;&amp;lt;ref&amp;gt;{{cite journal|last1=Abou Elseoud|first1=Ahmed|last2=Littow|first2=Harri|last3=Remes|first3=Jukka|last4=Starck|first4=Tuomo|last5=Nikkinen|first5=Juha|last6=Nissilä|first6=Juuso|last7=Timonen|first7=Markku|last8=Tervonen|first8=Osmo|last9=Kiviniemi1|first9=Vesa|title=Group-ICA Model Order Highlights Patterns of Functional Brain Connectivity|journal= Frontiers in Systems Neuroscience|date=2011-06-03|volume=5|pages=37|doi=10.3389/fnsys.2011.00037|pmid=21687724|pmc=3109774 |doi-access=free}}&amp;lt;/ref&amp;gt; In one model, there is only the [[default mode network]] and the [[task-positive network]], but most current analyses show several networks, from a small handful to 17.&amp;lt;ref name=&amp;quot;Yeo&amp;quot; /&amp;gt; The most common  and stable networks are enumerated below. The regions participating in a functional network may be dynamically reconfigured.&amp;lt;ref name=&amp;quot;Petersen&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;Bassett&amp;quot;&amp;gt;{{cite journal|last1=Bassett|first1=Daniella|last2=Bertolero|first2=Max|title=How Matter Becomes Mind|journal=Scientific American|date=July 2019|volume=321|issue=1|page=32|url=https://www.scientificamerican.com/|accessdate=23 June 2019 }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Large-scale brain networks are identified by their function and provide a coherent framework for understanding cognition by offering a neural model of how different cognitive functions emerge when different sets of brain regions join together as self-organized coalitions. The number and composition of the coalitions will vary with the algorithm and parameters used to identify them. In one model, there is only the default mode network and the task-positive network, but most current analyses show several networks, from a small handful to 17. The most common  and stable networks are enumerated below. The regions participating in a functional network may be dynamically reconfigured.&lt;br /&gt;
&lt;br /&gt;
大规模的大脑网络是通过其功能识别的，并通过提供一个神经模型，说明当不同的大脑区域组合在一起形成自组织的联盟时，不同的认知功能是如何产生的，从而为理解认知提供了一个连贯的框架。联盟的数量和组成将根据识别联盟的算法和参数而有所不同。在一个模型中，只有默认模式网络和任务正向网络，但目前大多数分析显示，从少数到17个网络。下面列举了最常见和最稳定的网络。可以动态地重新配置参与功能网络的区域。&lt;br /&gt;
&lt;br /&gt;
Disruptions in activity in various networks have been implicated in neuropsychiatric disorders such as [[Depression (mood)|depression]], [[Alzheimer's disease|Alzheimer's]], [[Autism-spectrum disorder|autism spectrum disorder]], [[schizophrenia]], [[ADHD]]&amp;lt;ref&amp;gt;{{cite journal |last1=Griffiths |first1=Kristi R. |last2=Braund |first2=Taylor A. |last3=Kohn |first3=Michael R. |last4=Clarke |first4=Simon |last5=Williams |first5=Leanne M. |last6=Korgaonkar |first6=Mayuresh S. |title=Structural brain network topology underpinning ADHD and response to methylphenidate treatment |journal=Translational Psychiatry |date=2 March 2021 |volume=11 |issue=1 |pages=1–9 |doi=10.1038/s41398-021-01278-x | pmc=7925571 |pmid=33654073 |url=https://www.nature.com/articles/s41398-021-01278-x#citeas |access-date=16 November 2021}}&amp;lt;/ref&amp;gt; and [[bipolar disorder]].&amp;lt;ref&amp;gt;{{Cite journal|url=https://www.researchgate.net/publication/51639686|title=Large-scale brain networks and psychopathology: A unifying triple network model|last=Menon|first=Vinod|s2cid=26653572|journal=Trends in Cognitive Sciences|date=2011-09-09|volume=15|issue=10|pages=483–506|doi=10.1016/j.tics.2011.08.003|pmid=21908230}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Disruptions in activity in various networks have been implicated in neuropsychiatric disorders such as depression, Alzheimer's, autism spectrum disorder, schizophrenia, ADHD and bipolar disorder.&lt;br /&gt;
&lt;br /&gt;
各种网络活动的中断牵连到神经精神疾病，如抑郁症、老年痴呆症、自闭症光谱、精神分裂症、多动症和躁郁症。&lt;br /&gt;
&lt;br /&gt;
== Core networks ==&lt;br /&gt;
[[File:Heine2012x3010.png|thumb|An example that identified 10 large-scale brain networks from [[resting state fMRI]] activity through [[independent component analysis]].&amp;lt;ref name=&amp;quot;Heine&amp;quot; /&amp;gt;]]&lt;br /&gt;
Because brain networks can be identified at various different resolutions and with various different neurobiological properties, there is no such thing as a universal atlas of brain networks that fits all circumstances.&amp;lt;ref&amp;gt;{{cite journal|last1=Eickhoff|first1=SB|last2=Yeo|first2=BTT|last3=Genon|first3=S|title=Imaging-based parcellations of the human brain.|journal=Nature Reviews. Neuroscience|date=November 2018|volume=19|issue=11|pages=672–686|doi=10.1038/s41583-018-0071-7|pmid=30305712|s2cid=52954265|url=http://juser.fz-juelich.de/record/856633/files/Eickhoff_Yeo_Genon_NRN_MainManuscriptInclFigures.pdf}}&amp;lt;/ref&amp;gt; While acknowledging this problem, Uddin, Yeo, and Spreng proposed in 2019&amp;lt;ref name=&amp;quot;Uddin2019&amp;quot;&amp;gt;{{cite journal|last1=Uddin|first1=LQ|last2=Yeo|first2=BTT|last3=Spreng|first3=RN|title=Towards a Universal Taxonomy of Macro-scale Functional Human Brain Networks.|journal=Brain Topography|date=November 2019|volume=32|issue=6|pages=926–942|doi=10.1007/s10548-019-00744-6|pmid=31707621|pmc=7325607}}&amp;lt;/ref&amp;gt; that the following six networks should be defined as core networks based on converging evidences from multiple studies&amp;lt;ref&amp;gt;{{cite journal|last1=Doucet|first1=GE|last2=Lee|first2=WH|last3=Frangou|first3=S|title=Evaluation of the spatial variability in the major resting-state networks across human brain functional atlases.|journal=Human Brain Mapping|date=2019-10-15|volume=40|issue=15|pages=4577–4587|doi=10.1002/hbm.24722|pmid=31322303|pmc=6771873}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;Yeo&amp;quot; /&amp;gt;&amp;lt;ref&amp;gt;{{cite journal|last1=Smith|first1=SM|last2=Fox|first2=PT|last3=Miller|first3=KL|last4=Glahn|first4=DC|last5=Fox|first5=PM|last6=Mackay|first6=CE|last7=Filippini|first7=N|last8=Watkins|first8=KE|last9=Toro|first9=R|last10=Laird|first10=AR|last11=Beckmann|first11=CF|title=Correspondence of the brain's functional architecture during activation and rest.|journal=Proceedings of the National Academy of Sciences of the United States of America|date=2009-08-04|volume=106|issue=31|pages=13040–5|doi=10.1073/pnas.0905267106|pmid=19620724|pmc=2722273|bibcode=2009PNAS..10613040S|doi-access=free}}&amp;lt;/ref&amp;gt; to facilitate communication between researchers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Because brain networks can be identified at various different resolutions and with various different neurobiological properties, there is no such thing as a universal atlas of brain networks that fits all circumstances. While acknowledging this problem, Uddin, Yeo, and Spreng proposed in 2019 that the following six networks should be defined as core networks based on converging evidences from multiple studies to facilitate communication between researchers.&lt;br /&gt;
&lt;br /&gt;
因为大脑网络可以用不同的分辨率和不同的神经生物学特性来识别，所以没有适合所有情况的通用大脑网络图谱。在承认这个问题的同时，Uddin，Yeo，和 Spreng 在2019年提出，以下六个网络应该被定义为核心网络，基于来自多个研究的聚合证据，以促进研究人员之间的交流。&lt;br /&gt;
&lt;br /&gt;
=== Default Mode (Medial frontoparietal) ===&lt;br /&gt;
{{Main|Default mode network}}&lt;br /&gt;
*The default mode network is active when an individual is awake and at rest. It preferentially activates when individuals focus on internally-oriented tasks such as daydreaming, envisioning the future, retrieving memories, and [[theory of mind]]. It is negatively correlated with brain systems that focus on external visual signals. It is the most widely researched network.&amp;lt;ref name=&amp;quot;Bressler&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;Bassett&amp;quot; /&amp;gt;&amp;lt;ref&amp;gt;{{Cite journal|date=2012-08-15|title=The serendipitous discovery of the brain's default network|journal=NeuroImage|language=en|volume=62|issue=2|pages=1137–1145|doi=10.1016/j.neuroimage.2011.10.035|pmid=22037421|issn=1053-8119|last1=Buckner|first1=Randy L.|s2cid=9880586}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;Riedl&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;Yuan&amp;quot;&amp;gt;&lt;br /&gt;
{{cite journal|last1=Yuan|first1=Rui|last2=Di|first2=Xin|last3=Taylor|first3=Paul A.|last4=Gohel|first4=Suril|last5=Tsai|first5=Yuan-Hsiung|last6=Biswal|first6=Bharat B.|title=Functional topography of the thalamocortical system in human|journal=Brain Structure and Function|date=30 April 2015|doi=10.1007/s00429-015-1018-7|pmid=25924563|pmc=6363530|volume=221|issue=4|pages=1971–1984}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;Bell&amp;quot;&amp;gt;{{cite journal|last1=Bell|first1=Peter T.|last2=Shine|first2=James M.|title=Estimating Large-Scale Network Convergence in the Human Functional Connectome|journal=Brain Connectivity|date=2015-11-09|volume=5|issue=9|doi=10.1089/brain.2015.0348|pmid=26005099|pages=565–74}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;Heine&amp;quot;&amp;gt;{{cite journal|last1=Heine|first1=Lizette|last2=Soddu|first2=Andrea|last3=Gomez|first3=Francisco|last4=Vanhaudenhuyse|first4=Audrey|last5=Tshibanda|first5=Luaba|last6=Thonnard|first6=Marie|last7=Charland-Verville|first7=Vanessa|last8=Kirsch|first8=Murielle|last9=Laureys|first9=Steven|last10=Demertzi|first10=Athena|title=Resting state networks and consciousness. Alterations of multiple resting state network connectivity in physiological, pharmacological and pathological consciousness states.|journal=Frontiers in Psychology|date=2012|volume=3|pages=295|doi=10.3389/fpsyg.2012.00295|pmid=22969735|pmc=3427917|doi-access=free}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;Yeo&amp;quot;&amp;gt;{{cite journal|last1=Yeo|first1=B. T. Thomas|last2=Krienen|first2=Fenna M.|last3=Sepulcre|first3=Jorge|last4=Sabuncu|first4=Mert R.|last5=Lashkari|first5=Danial|last6=Hollinshead|first6=Marisa|last7=Roffman|first7=Joshua L.|last8=Smoller|first8=Jordan W.|last9=Zöllei|first9=Lilla|last10=Polimeni|first10=Jonathan R.|last11=Fischl|first11=Bruce|last12=Liu|first12=Hesheng|last13=Buckner|first13=Randy L.|title=The organization of the human cerebral cortex estimated by intrinsic functional connectivity|journal=Journal of Neurophysiology|date=2011-09-01|volume=106|issue=3|pages=1125–1165|doi=10.1152/jn.00338.2011|pmid=21653723|pmc=3174820|bibcode=2011NatSD...2E0031H }}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;Shafiei&amp;quot;&amp;gt;{{cite journal|last1=Shafiei|first1=Golia|last2=Zeighami|first2=Yashar|last3=Clark|first3=Crystal A.|last4=Coull|first4=Jennifer T.|last5=Nagano-Saito|first5=Atsuko|last6=Leyton|first6=Marco|last7=Dagher|first7=Alain|last8=Mišić|first8=Bratislav|title=Dopamine Signaling Modulates the Stability and Integration of Intrinsic Brain Networks|journal=Cerebral Cortex|date=2018-10-01|volume=29|issue=1|pages=397–409|doi=10.1093/cercor/bhy264|pmid=30357316|pmc=6294404 }}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;Bailey&amp;quot;&amp;gt;{{cite journal|last1=Bailey|first1=Stephen K.|last2=Aboud|first2=Katherine S.|last3=Nguyen|first3=Tin Q.|last4=Cutting|first4=Laurie E.|title=Applying a network framework to the neurobiology of reading and dyslexia|journal=Journal of Neurodevelopmental Disorders|date=13 December 2018|volume=10|issue=1|page=37|doi=10.1186/s11689-018-9251-z|pmid=30541433|pmc=6291929 }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*The default mode network is active when an individual is awake and at rest. It preferentially activates when individuals focus on internally-oriented tasks such as daydreaming, envisioning the future, retrieving memories, and theory of mind. It is negatively correlated with brain systems that focus on external visual signals. It is the most widely researched network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= = = 默认模式(Medial frontoparietal) = = = &lt;br /&gt;
* 默认模式网络在个人清醒和休息时处于活动状态。当个体专注于面向内部的任务时，比如做白日梦、展望未来、回忆和心理理论，它就会优先激活。它与专注于外部视觉信号的大脑系统负相关。它是研究最广泛的网络。&lt;br /&gt;
&lt;br /&gt;
=== Salience (Midcingulo-Insular) ===&lt;br /&gt;
{{Main|Salience network}}&lt;br /&gt;
*The salience network consists of several structures, including the anterior (bilateral) insula, dorsal anterior cingulate cortex, and three subcortical structures which are the ventral striatum, substantia nigra/ventral tegmental region.&amp;lt;ref&amp;gt;{{Cite journal|last1=Steimke|first1=Rosa|last2=Nomi|first2=Jason S.|last3=Calhoun|first3=Vince D.|last4=Stelzel|first4=Christine|last5=Paschke|first5=Lena M.|last6=Gaschler|first6=Robert|last7=Goschke|first7=Thomas|last8=Walter|first8=Henrik|last9=Uddin|first9=Lucina Q.|date=2017-12-01|title=Salience network dynamics underlying successful resistance of temptation|journal=Social Cognitive and Affective Neuroscience|language=en|volume=12|issue=12|pages=1928–1939|doi=10.1093/scan/nsx123|pmid=29048582|pmc=5716209|issn=1749-5016|doi-access=free}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;{{Citation|last=Menon|first=V.|title=Brain Mapping|chapter=Salience Network|date=2015-01-01|chapter-url=http://www.sciencedirect.com/science/article/pii/B978012397025100052X|pages=597–611|editor-last=Toga|editor-first=Arthur W.|publisher=Academic Press|isbn=978-0-12-397316-0|access-date=2019-12-08|doi=10.1016/B978-0-12-397025-1.00052-X}}&amp;lt;/ref&amp;gt; It plays the key role of monitoring the [[Salience (neuroscience)|salience]] of external inputs and internal brain events.&amp;lt;ref name=&amp;quot;Riedl&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;Bressler&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;Bassett&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;Yuan&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;Heine&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;Yeo&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;Shafiei&amp;quot; /&amp;gt; Specifically, it aids in directing attention by identifying important biological and cognitive events.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;Bailey&amp;quot; /&amp;gt;&lt;br /&gt;
*This network includes the ventral attention network, which primarily includes the [[temporoparietal junction]] and the ventral [[frontal cortex]] of the right hemisphere.&amp;lt;ref name=&amp;quot;Uddin2019&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;Vossel&amp;quot; /&amp;gt; These areas respond when behaviorally relevant stimuli occur unexpectedly.&amp;lt;ref name=&amp;quot;Vossel&amp;quot; /&amp;gt; The ventral attention network is inhibited during focused attention in which top-down processing is being used, such as when visually searching for something. This response may prevent goal-driven attention from being distracted by non-relevant stimuli. It becomes active again when the target or relevant information about the target is found.&amp;lt;ref name=&amp;quot;Vossel&amp;quot; /&amp;gt;&amp;lt;ref&amp;gt;{{Cite journal|last1=Shulman|first1=Gordon L.|last2=McAvoy|first2=Mark P.|last3=Cowan|first3=Melanie C.|last4=Astafiev|first4=Serguei V.|last5=Tansy|first5=Aaron P.|last6=d'Avossa|first6=Giovanni|last7=Corbetta|first7=Maurizio|date=2003-11-01|title=Quantitative Analysis of Attention and Detection Signals During Visual Search|journal=Journal of Neurophysiology|volume=90|issue=5|pages=3384–3397|doi=10.1152/jn.00343.2003|pmid=12917383|issn=0022-3077}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*The salience network consists of several structures, including the anterior (bilateral) insula, dorsal anterior cingulate cortex, and three subcortical structures which are the ventral striatum, substantia nigra/ventral tegmental region. It plays the key role of monitoring the salience of external inputs and internal brain events. Specifically, it aids in directing attention by identifying important biological and cognitive events.&lt;br /&gt;
*This network includes the ventral attention network, which primarily includes the temporoparietal junction and the ventral frontal cortex of the right hemisphere. These areas respond when behaviorally relevant stimuli occur unexpectedly. The ventral attention network is inhibited during focused attention in which top-down processing is being used, such as when visually searching for something. This response may prevent goal-driven attention from being distracted by non-relevant stimuli. It becomes active again when the target or relevant information about the target is found.&lt;br /&gt;
&lt;br /&gt;
突显网络由前(双)岛、前扣带回皮层和腹侧纹状体、黑质/腹侧被盖区3个皮层下结构组成。它起着监测外部输入和内部脑事件的显著性的关键作用。具体来说，它通过识别重要的生物学和认知事件来帮助引导注意力。&lt;br /&gt;
* 这个网络包括腹侧注意网络，主要包括右半球的颞顶联合区和腹侧额叶皮层。当行为相关的刺激意外发生时，这些区域会做出反应。腹侧注意网络在使用自上而下加工的集中注意过程中被抑制，例如在视觉搜索某物时。这种反应可以防止目标驱动的注意力被非相关的刺激分散。当找到目标或关于目标的相关信息时，它再次激活。&lt;br /&gt;
&lt;br /&gt;
=== Attention (Dorsal frontoparietal) ===&lt;br /&gt;
{{Main|Dorsal attention network}}&lt;br /&gt;
*This network is involved in the voluntary, top-down deployment of attention.&amp;lt;ref name=&amp;quot;Riedl&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;Yuan&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;Bell&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;Yeo&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;Shafiei&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;Vossel&amp;quot;&amp;gt;{{cite journal|last1=Vossel|first1=Simone|last2=Geng|first2=Joy J.|last3=Fink|first3=Gereon R.|title=Dorsal and Ventral Attention Systems: Distinct Neural Circuits but Collaborative Roles|journal=The Neuroscientist|date=2014|volume=20|issue=2|pages=150–159|doi=10.1177/1073858413494269|pmid=23835449|pmc=4107817}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;Hutton&amp;quot;&amp;gt;{{cite journal|last1=Hutton|first1=John S.|last2=Dudley|first2=Jonathan|last3=Horowitz-Kraus|first3=Tzipi|last4=DeWitt|first4=Tom|last5=Holland|first5=Scott K.|title=Functional Connectivity of Attention, Visual, and Language Networks During Audio, Illustrated, and Animated Stories in Preschool-Age Children|journal=Brain Connectivity|date=1 September 2019|volume=9|issue=7|pages=580–592|doi=10.1089/brain.2019.0679|pmid=31144523|pmc=6775495|ref=Hutton}}&amp;lt;/ref&amp;gt; Within the dorsal attention network, the intraparietal sulcus and frontal eye fields influence the visual areas of the brain. These influencing factors allow for the orientation of attention.&amp;lt;ref&amp;gt;{{Cite journal|last1=Fox|first1=Michael D.|last2=Corbetta|first2=Maurizio|last3=Snyder|first3=Abraham Z.|last4=Vincent|first4=Justin L.|last5=Raichle|first5=Marcus E.|date=2006-06-27|title=Spontaneous neuronal activity distinguishes human dorsal and ventral attention systems|journal=Proceedings of the National Academy of Sciences|language=en|volume=103|issue=26|pages=10046–10051|doi=10.1073/pnas.0604187103|issn=0027-8424|pmid=16788060|pmc=1480402|bibcode=2006PNAS..10310046F|doi-access=free}}&amp;lt;/ref&amp;gt;&amp;lt;ref name=&amp;quot;Vossel&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;Bailey&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*This network is involved in the voluntary, top-down deployment of attention. Within the dorsal attention network, the intraparietal sulcus and frontal eye fields influence the visual areas of the brain. These influencing factors allow for the orientation of attention.&lt;br /&gt;
&lt;br /&gt;
= = = 注意力(背侧额顶骨) = = = &lt;br /&gt;
* 这个网络参与了自发的、自上而下的注意力分配。在背侧注意网络中，顶内沟和额眼影响大脑的视觉区域。这些影响因素决定了注意力的方向。&lt;br /&gt;
&lt;br /&gt;
=== Control (Lateral frontoparietal) ===&lt;br /&gt;
{{Main|Frontoparietal network}}&lt;br /&gt;
*This network initiates and modulates cognitive control and comprises 18 sub-regions of the brain.&amp;lt;ref&amp;gt;{{Cite journal|last1=Scolari|first1=Miranda|last2=Seidl-Rathkopf|first2=Katharina N|last3=Kastner|first3=Sabine|date=2015-02-01|title=Functions of the human frontoparietal attention network: Evidence from neuroimaging|journal=Current Opinion in Behavioral Sciences|series=Cognitive control|volume=1|pages=32–39|doi=10.1016/j.cobeha.2014.08.003|issn=2352-1546|pmid=27398396|pmc=4936532}}&amp;lt;/ref&amp;gt; There is a strong correlation between fluid intelligence and the involvement of the fronto-parietal network with other networks.&amp;lt;ref&amp;gt;{{Cite journal|last1=Marek|first1=Scott|last2=Dosenbach|first2=Nico U. F.|date=June 2018|title=The frontoparietal network: function, electrophysiology, and importance of individual precision mapping|journal=Dialogues in Clinical Neuroscience|volume=20|issue=2|pages=133–140|doi=10.31887/DCNS.2018.20.2/smarek|issn=1294-8322|pmc=6136121|pmid=30250390}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*This network initiates and modulates cognitive control and comprises 18 sub-regions of the brain. There is a strong correlation between fluid intelligence and the involvement of the fronto-parietal network with other networks.&lt;br /&gt;
&lt;br /&gt;
= = = 控制(侧额顶骨) = = = &lt;br /&gt;
* 这个网络启动和调节认知控制，包括大脑的18个亚区。在流体智力和额顶网络与其他网络的参与之间有很强的相关性。&lt;br /&gt;
&lt;br /&gt;
*Versions of this network have also been called the central executive (or executive control) network and the cognitive control network.&amp;lt;ref name=&amp;quot;Uddin2019&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Versions of this network have also been called the central executive (or executive control) network and the cognitive control network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* 这种网络的版本也被称为中央执行(或执行控制)网络和认知控制网络。&lt;br /&gt;
&lt;br /&gt;
=== Sensorimotor or Somatomotor (Pericentral) ===&lt;br /&gt;
{{Main|Sensorimotor network}}&lt;br /&gt;
*This network processes somatosensory information and coordinates motion.&amp;lt;ref name=Heine /&amp;gt;&amp;lt;ref name=Yeo /&amp;gt;&amp;lt;ref name =Shafiei /&amp;gt;&amp;lt;ref name=Bassett /&amp;gt;&amp;lt;ref name=Yuan /&amp;gt; The [[auditory cortex]] may be included.&amp;lt;ref name=&amp;quot;Uddin2019&amp;quot; /&amp;gt;&amp;lt;ref name=Yeo /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*This network processes somatosensory information and coordinates motion. The auditory cortex may be included.&lt;br /&gt;
&lt;br /&gt;
=== Sensorimotor or Somatomotor (Pericentral) ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*This network processes somatosensory information and coordinates motion.听觉皮层可能也包括在内。&lt;br /&gt;
&lt;br /&gt;
=== Visual (Occipital) ===&lt;br /&gt;
{{See|Visual cortex}}&lt;br /&gt;
*This network handles visual information processing.&amp;lt;ref name=&amp;quot;Yang&amp;quot;&amp;gt;{{cite journal|last1=Yang|first1=Yan-li|last2=Deng|first2=Hong-xia|last3=Xing|first3=Gui-yang|last4=Xia|first4=Xiao-luan|last5=Li|first5=Hai-fang|title=Brain functional network connectivity based on a visual task: visual information processing-related brain regions are significantly activated in the task state|journal=Neural Regeneration Research|date=2015|volume=10|issue=2|pages=298–307|doi=10.4103/1673-5374.152386|pmid=25883631|pmc=4392680 }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*This network handles visual information processing.&lt;br /&gt;
&lt;br /&gt;
= = = = = = = = = = = = = 这个网络处理视觉信息。&lt;br /&gt;
&lt;br /&gt;
== Other networks ==&lt;br /&gt;
Different methods and data have identified several other brain networks, many of which greatly overlap or are subsets of more well-characterized core networks.&amp;lt;ref name=&amp;quot;Uddin2019&amp;quot; /&amp;gt;&lt;br /&gt;
* Limbic&amp;lt;ref name=Bassett /&amp;gt;&amp;lt;ref name=Yeo /&amp;gt;&amp;lt;ref name=&amp;quot;Bailey&amp;quot; /&amp;gt;&lt;br /&gt;
* Auditory&amp;lt;ref name=Yuan /&amp;gt;&amp;lt;ref name=Heine /&amp;gt;&lt;br /&gt;
* Right/left executive&amp;lt;ref name=Yuan /&amp;gt;&amp;lt;ref name=Heine /&amp;gt;&lt;br /&gt;
* Cerebellar&amp;lt;ref name=Bell /&amp;gt;&amp;lt;ref name=Heine /&amp;gt;&lt;br /&gt;
* Spatial attention&amp;lt;ref name= Riedl /&amp;gt;&amp;lt;ref name=Bressler /&amp;gt;&lt;br /&gt;
* Language&amp;lt;ref name=Bressler /&amp;gt;&amp;lt;ref name =Hutton /&amp;gt;&lt;br /&gt;
* Lateral visual&amp;lt;ref name=&amp;quot;Yuan&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;Bell&amp;quot; /&amp;gt;&amp;lt;ref name=&amp;quot;Heine&amp;quot; /&amp;gt;&lt;br /&gt;
* Temporal&amp;lt;ref name=Yeo /&amp;gt;&amp;lt;ref name =Shafiei /&amp;gt;&lt;br /&gt;
* Visual perception/imagery&amp;lt;ref name =Hutton /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Different methods and data have identified several other brain networks, many of which greatly overlap or are subsets of more well-characterized core networks.&lt;br /&gt;
* Limbic&lt;br /&gt;
* Auditory&lt;br /&gt;
* Right/left executive&lt;br /&gt;
* Cerebellar&lt;br /&gt;
* Spatial attention&lt;br /&gt;
* Language&lt;br /&gt;
* Lateral visual&lt;br /&gt;
* Temporal&lt;br /&gt;
* Visual perception/imagery&lt;br /&gt;
&lt;br /&gt;
其他网络不同的方法和数据已经确定了其他几个大脑网络，其中许多网络极大地重叠或者是更具特色的核心网络的子集。&lt;br /&gt;
* 边缘 &lt;br /&gt;
* 听觉 &lt;br /&gt;
* 右/左执行 &lt;br /&gt;
* 小脑 &lt;br /&gt;
* 空间注意 &lt;br /&gt;
* 语言 &lt;br /&gt;
* 外侧视觉 &lt;br /&gt;
* 颞视知觉/图像&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Complex network]]&lt;br /&gt;
*[[Neural network]]&lt;br /&gt;
&lt;br /&gt;
*Complex network&lt;br /&gt;
*Neural network&lt;br /&gt;
&lt;br /&gt;
= = = = = &lt;br /&gt;
* 复杂网络 &lt;br /&gt;
* &lt;br /&gt;
* 神经网络 &lt;br /&gt;
* &lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
{{reflist|30em}}&lt;br /&gt;
&lt;br /&gt;
{{Human connectomics}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Neuroscience]]&lt;br /&gt;
[[Category:Neural coding]]&lt;br /&gt;
[[Category:Neural circuits]]&lt;br /&gt;
[[Category:Neurophysiology]]&lt;br /&gt;
&lt;br /&gt;
Category:Neuroscience&lt;br /&gt;
Category:Neural coding&lt;br /&gt;
Category:Neural circuits&lt;br /&gt;
Category:Neurophysiology&lt;br /&gt;
&lt;br /&gt;
类别: 神经科学类别: 神经编码类别: 神经回路类别: 神经生理学&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;small&amp;gt;This page was moved from [[wikipedia:en:Large-scale brain network]]. Its edit history can be viewed at [[大规模脑网络/edithistory]]&amp;lt;/small&amp;gt;&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:待整理页面]]&lt;/div&gt;</summary>
		<author><name>Moonscar</name></author>
	</entry>
</feed>