@jjlmoya/utils-science 1.41.0 → 1.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/package.json +1 -1
  2. package/scripts/crystal-lattice-catalog-translations.mjs +459 -0
  3. package/scripts/sync-crystal-lattice-i18n.mjs +50 -0
  4. package/src/category/index.ts +3 -1
  5. package/src/entries.ts +5 -1
  6. package/src/index.ts +2 -0
  7. package/src/tests/diacritics_density.test.ts +140 -0
  8. package/src/tests/inverted_punctuation.test.ts +84 -0
  9. package/src/tests/locale_completeness.test.ts +2 -2
  10. package/src/tests/script_density.test.ts +94 -0
  11. package/src/tests/tool_validation.test.ts +2 -3
  12. package/src/tool/conway-life-rule-lab/i18n/de.ts +62 -5
  13. package/src/tool/conway-life-rule-lab/i18n/es.ts +62 -5
  14. package/src/tool/conway-life-rule-lab/i18n/fr.ts +62 -5
  15. package/src/tool/conway-life-rule-lab/i18n/id.ts +102 -45
  16. package/src/tool/conway-life-rule-lab/i18n/it.ts +62 -5
  17. package/src/tool/conway-life-rule-lab/i18n/ja.ts +62 -5
  18. package/src/tool/conway-life-rule-lab/i18n/ko.ts +62 -5
  19. package/src/tool/conway-life-rule-lab/i18n/nl.ts +102 -45
  20. package/src/tool/conway-life-rule-lab/i18n/pl.ts +62 -5
  21. package/src/tool/conway-life-rule-lab/i18n/pt.ts +62 -5
  22. package/src/tool/conway-life-rule-lab/i18n/ru.ts +62 -5
  23. package/src/tool/conway-life-rule-lab/i18n/sv.ts +62 -5
  24. package/src/tool/conway-life-rule-lab/i18n/tr.ts +62 -5
  25. package/src/tool/conway-life-rule-lab/i18n/zh.ts +62 -5
  26. package/src/tool/cosmic-inflation/i18n/es.ts +5 -5
  27. package/src/tool/cosmic-inflation/i18n/it.ts +51 -51
  28. package/src/tool/cosmic-inflation/i18n/ru.ts +42 -150
  29. package/src/tool/crystal-lattice-structure-finder/component.astro +120 -39
  30. package/src/tool/crystal-lattice-structure-finder/crystal-lattice-structure-finder.css +204 -56
  31. package/src/tool/crystal-lattice-structure-finder/data.ts +107 -133
  32. package/src/tool/crystal-lattice-structure-finder/i18n/de.ts +39 -0
  33. package/src/tool/crystal-lattice-structure-finder/i18n/en.ts +45 -6
  34. package/src/tool/crystal-lattice-structure-finder/i18n/es.ts +39 -0
  35. package/src/tool/crystal-lattice-structure-finder/i18n/fr.ts +39 -0
  36. package/src/tool/crystal-lattice-structure-finder/i18n/id.ts +39 -0
  37. package/src/tool/crystal-lattice-structure-finder/i18n/it.ts +39 -0
  38. package/src/tool/crystal-lattice-structure-finder/i18n/ja.ts +39 -0
  39. package/src/tool/crystal-lattice-structure-finder/i18n/ko.ts +39 -0
  40. package/src/tool/crystal-lattice-structure-finder/i18n/nl.ts +39 -0
  41. package/src/tool/crystal-lattice-structure-finder/i18n/pl.ts +39 -0
  42. package/src/tool/crystal-lattice-structure-finder/i18n/pt.ts +39 -0
  43. package/src/tool/crystal-lattice-structure-finder/i18n/ru.ts +39 -0
  44. package/src/tool/crystal-lattice-structure-finder/i18n/sv.ts +39 -0
  45. package/src/tool/crystal-lattice-structure-finder/i18n/tr.ts +39 -0
  46. package/src/tool/crystal-lattice-structure-finder/i18n/zh.ts +39 -0
  47. package/src/tool/crystal-lattice-structure-finder/logic.ts +7 -3
  48. package/src/tool/crystal-lattice-structure-finder/structures/README.md +26 -0
  49. package/src/tool/crystal-lattice-structure-finder/structures/body-centered-cubic.ts +19 -0
  50. package/src/tool/crystal-lattice-structure-finder/structures/cesium-chloride.ts +19 -0
  51. package/src/tool/crystal-lattice-structure-finder/structures/diamond-cubic.ts +23 -0
  52. package/src/tool/crystal-lattice-structure-finder/structures/face-centered-cubic.ts +16 -0
  53. package/src/tool/crystal-lattice-structure-finder/structures/hexagonal-close-packed.ts +30 -0
  54. package/src/tool/crystal-lattice-structure-finder/structures/index.ts +25 -0
  55. package/src/tool/crystal-lattice-structure-finder/structures/perovskite.ts +20 -0
  56. package/src/tool/crystal-lattice-structure-finder/structures/rock-salt.ts +23 -0
  57. package/src/tool/crystal-lattice-structure-finder/structures/rutile.ts +25 -0
  58. package/src/tool/crystal-lattice-structure-finder/structures/shared.ts +86 -0
  59. package/src/tool/crystal-lattice-structure-finder/structures/simple-cubic.ts +16 -0
  60. package/src/tool/crystal-lattice-structure-finder/structures/wurtzite.ts +22 -0
  61. package/src/tool/crystal-lattice-structure-finder/structures/zinc-blende.ts +23 -0
  62. package/src/tool/double-slit-decoherence/i18n/fr.ts +42 -86
  63. package/src/tool/double-slit-decoherence/i18n/it.ts +28 -72
  64. package/src/tool/double-slit-decoherence/i18n/pt.ts +35 -79
  65. package/src/tool/double-slit-decoherence/i18n/ru.ts +59 -59
  66. package/src/tool/double-slit-decoherence/i18n/sv.ts +33 -81
  67. package/src/tool/double-slit-decoherence/i18n/tr.ts +55 -55
  68. package/src/tool/dyson-sphere-energy-capture/i18n/de.ts +42 -123
  69. package/src/tool/dyson-sphere-energy-capture/i18n/es.ts +6 -6
  70. package/src/tool/dyson-sphere-energy-capture/i18n/fr.ts +63 -131
  71. package/src/tool/dyson-sphere-energy-capture/i18n/it.ts +36 -113
  72. package/src/tool/dyson-sphere-energy-capture/i18n/ja.ts +66 -42
  73. package/src/tool/dyson-sphere-energy-capture/i18n/ko.ts +66 -42
  74. package/src/tool/dyson-sphere-energy-capture/i18n/pl.ts +50 -133
  75. package/src/tool/dyson-sphere-energy-capture/i18n/pt.ts +51 -132
  76. package/src/tool/dyson-sphere-energy-capture/i18n/ru.ts +61 -98
  77. package/src/tool/dyson-sphere-energy-capture/i18n/sv.ts +56 -137
  78. package/src/tool/dyson-sphere-energy-capture/i18n/tr.ts +61 -142
  79. package/src/tool/dyson-sphere-energy-capture/i18n/zh.ts +67 -43
  80. package/src/tool/epidemic-sir-simulator/bibliography.astro +15 -0
  81. package/src/tool/epidemic-sir-simulator/bibliography.ts +37 -0
  82. package/src/tool/epidemic-sir-simulator/component.astro +384 -0
  83. package/src/tool/epidemic-sir-simulator/entry.ts +30 -0
  84. package/src/tool/epidemic-sir-simulator/epidemic-sir-simulator.css +624 -0
  85. package/src/tool/epidemic-sir-simulator/i18n/de.ts +347 -0
  86. package/src/tool/epidemic-sir-simulator/i18n/en.ts +347 -0
  87. package/src/tool/epidemic-sir-simulator/i18n/es.ts +347 -0
  88. package/src/tool/epidemic-sir-simulator/i18n/fr.ts +347 -0
  89. package/src/tool/epidemic-sir-simulator/i18n/id.ts +347 -0
  90. package/src/tool/epidemic-sir-simulator/i18n/it.ts +347 -0
  91. package/src/tool/epidemic-sir-simulator/i18n/ja.ts +347 -0
  92. package/src/tool/epidemic-sir-simulator/i18n/ko.ts +347 -0
  93. package/src/tool/epidemic-sir-simulator/i18n/nl.ts +347 -0
  94. package/src/tool/epidemic-sir-simulator/i18n/pl.ts +347 -0
  95. package/src/tool/epidemic-sir-simulator/i18n/pt.ts +347 -0
  96. package/src/tool/epidemic-sir-simulator/i18n/ru.ts +347 -0
  97. package/src/tool/epidemic-sir-simulator/i18n/sv.ts +347 -0
  98. package/src/tool/epidemic-sir-simulator/i18n/tr.ts +347 -0
  99. package/src/tool/epidemic-sir-simulator/i18n/zh.ts +347 -0
  100. package/src/tool/epidemic-sir-simulator/index.ts +12 -0
  101. package/src/tool/epidemic-sir-simulator/logic.ts +163 -0
  102. package/src/tool/epidemic-sir-simulator/seo.astro +16 -0
  103. package/src/tool/fermi-paradox-filter-lab/bibliography.astro +14 -0
  104. package/src/tool/fermi-paradox-filter-lab/bibliography.ts +24 -0
  105. package/src/tool/fermi-paradox-filter-lab/component.astro +257 -0
  106. package/src/tool/fermi-paradox-filter-lab/entry.ts +26 -0
  107. package/src/tool/fermi-paradox-filter-lab/fermi-paradox-filter-lab.css +228 -0
  108. package/src/tool/fermi-paradox-filter-lab/i18n/de.ts +192 -0
  109. package/src/tool/fermi-paradox-filter-lab/i18n/en.ts +192 -0
  110. package/src/tool/fermi-paradox-filter-lab/i18n/es.ts +193 -0
  111. package/src/tool/fermi-paradox-filter-lab/i18n/fr.ts +192 -0
  112. package/src/tool/fermi-paradox-filter-lab/i18n/id.ts +192 -0
  113. package/src/tool/fermi-paradox-filter-lab/i18n/it.ts +192 -0
  114. package/src/tool/fermi-paradox-filter-lab/i18n/ja.ts +192 -0
  115. package/src/tool/fermi-paradox-filter-lab/i18n/ko.ts +192 -0
  116. package/src/tool/fermi-paradox-filter-lab/i18n/nl.ts +192 -0
  117. package/src/tool/fermi-paradox-filter-lab/i18n/pl.ts +193 -0
  118. package/src/tool/fermi-paradox-filter-lab/i18n/pt.ts +192 -0
  119. package/src/tool/fermi-paradox-filter-lab/i18n/ru.ts +192 -0
  120. package/src/tool/fermi-paradox-filter-lab/i18n/sv.ts +192 -0
  121. package/src/tool/fermi-paradox-filter-lab/i18n/tr.ts +192 -0
  122. package/src/tool/fermi-paradox-filter-lab/i18n/zh.ts +192 -0
  123. package/src/tool/fermi-paradox-filter-lab/index.ts +11 -0
  124. package/src/tool/fermi-paradox-filter-lab/logic.ts +125 -0
  125. package/src/tool/fermi-paradox-filter-lab/seo.astro +15 -0
  126. package/src/tool/global-albedo-snowball-simulator/i18n/ru.ts +50 -63
  127. package/src/tool/lorenz-attractor/i18n/de.ts +52 -78
  128. package/src/tool/lorenz-attractor/i18n/es.ts +5 -5
  129. package/src/tool/lorenz-attractor/i18n/fr.ts +51 -77
  130. package/src/tool/lorenz-attractor/i18n/it.ts +36 -36
  131. package/src/tool/lorenz-attractor/i18n/pt.ts +51 -75
  132. package/src/tool/mandelbrot-fractal/i18n/de.ts +31 -58
  133. package/src/tool/mandelbrot-fractal/i18n/es.ts +5 -5
  134. package/src/tool/mandelbrot-fractal/i18n/fr.ts +39 -57
  135. package/src/tool/mandelbrot-fractal/i18n/it.ts +30 -48
  136. package/src/tool/mandelbrot-fractal/i18n/pl.ts +34 -52
  137. package/src/tool/mandelbrot-fractal/i18n/pt.ts +30 -30
  138. package/src/tool/mandelbrot-fractal/i18n/ru.ts +42 -60
  139. package/src/tool/mandelbrot-fractal/i18n/sv.ts +38 -65
  140. package/src/tool/natural-selection-drift/i18n/it.ts +18 -95
  141. package/src/tool/natural-selection-drift/i18n/pt.ts +76 -19
  142. package/src/tool/natural-selection-drift/i18n/ru.ts +27 -24
  143. package/src/tool/natural-selection-drift/i18n/sv.ts +9 -6
  144. package/src/tool/phase-diagram-critical-points/i18n/de.ts +30 -68
  145. package/src/tool/phase-diagram-critical-points/i18n/es.ts +4 -4
  146. package/src/tool/phase-diagram-critical-points/i18n/fr.ts +37 -75
  147. package/src/tool/phase-diagram-critical-points/i18n/it.ts +8 -8
  148. package/src/tool/planet-atmosphere-survival/i18n/ru.ts +49 -192
  149. package/src/tool/radioactive-decay/i18n/de.ts +16 -32
  150. package/src/tool/radioactive-decay/i18n/es.ts +5 -5
  151. package/src/tool/radioactive-decay/i18n/fr.ts +24 -40
  152. package/src/tool/radioactive-decay/i18n/it.ts +18 -35
  153. package/src/tool/radioactive-decay/i18n/pt.ts +34 -34
  154. package/src/tool/roche-limit-satellite-disruption/i18n/pl.ts +52 -128
  155. package/src/tool/temperature-timeline/i18n/de.ts +46 -174
  156. package/src/tool/temperature-timeline/i18n/es.ts +5 -5
  157. package/src/tool/temperature-timeline/i18n/fr.ts +69 -144
  158. package/src/tool/temperature-timeline/i18n/it.ts +34 -133
  159. package/src/tool/temperature-timeline/i18n/pt.ts +35 -174
  160. package/src/tool/temperature-timeline/i18n/ru.ts +48 -174
  161. package/src/tool/twin-paradox-visualizer/i18n/es.ts +5 -5
  162. package/src/tool/twin-paradox-visualizer/i18n/fr.ts +34 -34
  163. package/src/tool/twin-paradox-visualizer/i18n/pt.ts +31 -71
  164. package/src/tools.ts +4 -0
@@ -0,0 +1,347 @@
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+
4
+ const slug = 'epidemic-sir-simulator';
5
+ const title = '疫学SIRシミュレーター';
6
+ const description = 'インタラクティブなSIRモデルを用いて、R0、致死率、ワクチン接種、感染期間、ピーク負荷、感染曲線をリアルタイムで調整しながら病原体の広がり方を探れます。';
7
+
8
+ const howTo = [
9
+ {
10
+ name: '基本再生産数を設定する',
11
+ text: 'R0スライダーを動かして、1人の感染者が全員が感受性のある集団で何人の二次感染者を生み出すかを設定します。',
12
+ },
13
+ {
14
+ name: 'ワクチン接種とワクチン効果を追加する',
15
+ text: 'ワクチン接種率または効果を上げると、感受性のある集団から保護された人が除かれ、実効再生産数が低下します。',
16
+ },
17
+ {
18
+ name: '致死率と感染期間を調整する',
19
+ text: '致死率と感染日数を変更して、重症者数や曲線のタイミングがどのように変化するかを確認します。',
20
+ },
21
+ {
22
+ name: 'SIR曲線を読み取る',
23
+ text: 'グラフと日付インスペクターを使って、シミュレーション期間中の感受性者、感染者、回復者、推定死亡者の曲線を比較します。',
24
+ },
25
+ ];
26
+
27
+ const faq = [
28
+ {
29
+ question: 'SIRモデルは何を示すのですか?',
30
+ answer: 'SIRモデルは集団を感受性者、感染者、回復者の3つのグループに分けます。感染と回復が進むにつれて人々がこれらのグループ間をどのように移動するかを推定します。',
31
+ },
32
+ {
33
+ question: 'ワクチン接種は曲線をどう変えるのですか?',
34
+ answer: 'ワクチン接種は感染を防ぐことで感受性者数を減らします。このシミュレーターでは、効果的なワクチン接種が実効再生産数を下げ、感染ピークを縮小または遅らせることができます。',
35
+ },
36
+ {
37
+ question: 'R0とReは同じですか?',
38
+ answer: 'いいえ。R0は全員が感受性のある集団での広がり方を示します。Reは免疫、ワクチン接種、行動変容などにより感染可能な人が減った後の実効再生産数です。',
39
+ },
40
+ {
41
+ question: 'なぜ感染者曲線はピークを迎えた後に下降するのですか?',
42
+ answer: '感染者が新たな感染を生み出す数が、回復または死亡により感染グループを離れる人数を下回ると、感染者曲線は下降します。基本SIRモデルでは、感受性者の枯渇が主な要因です。',
43
+ },
44
+ {
45
+ question: 'これは実際の感染症流行を予測できますか?',
46
+ answer: 'これは教育およびシナリオ検討用のツールであり、予報ではありません。実際の感染症流行には、年齢構造、接触ネットワーク、地理、報告遅延、行動変容、変異株、免疫減衰、および較正されたデータが必要です。',
47
+ },
48
+ {
49
+ question: '攻撃率とピーク感染者数の違いは何ですか?',
50
+ answer: '攻撃率は流行期間中に最終的に感染した人の総割合を測定します。ピーク感染者数は同時に感染状態にある最大人数を測定します。ピークが低くても攻撃率が低いとは限らず、その逆も同様です。',
51
+ },
52
+ {
53
+ question: 'Reが1を下回るとグラフ上でどう見えますか?',
54
+ answer: 'Reが1を下回ると、各感染者は平均して1人未満の新規感染者しか生み出しません。グラフでは、感染者曲線が急上昇せず、初期の種からすぐに減少するため、感染拡大が持続できないことを意味します。',
55
+ },
56
+ {
57
+ question: '感染期間は流行にどのような影響を与えますか?',
58
+ answer: '感染期間が長いほど、各感染者が病原体を伝播できる時間が延びます。これにより流行の時間軸が引き伸ばされ、ピークが遅れ、同じR0であればより広く低い山の曲線になります。',
59
+ },
60
+ {
61
+ question: 'なぜ致死率は感染者曲線を変えないのですか?',
62
+ answer: 'このSIRモデルでは、致死率は回復グループから分岐する死亡数のみに影響します。死亡も回復も同じ割合で感染者プールから人を除去するため、伝播には影響を与えません。',
63
+ },
64
+ {
65
+ question: '集団免疫閾値とは何ですか?',
66
+ answer: '集団免疫閾値とは、Reが1を下回るために免疫を持つ必要のある集団の割合です。1 - 1/R0で近似されます。R0が約12の麻疹では閾値は91%を超え、R0が約1.3の季節性インフルエンザでは約23%です。',
67
+ },
68
+ ];
69
+
70
+ export const content: ToolLocaleContent = {
71
+ slug,
72
+ title,
73
+ description,
74
+ ui: {
75
+ liveScenario: 'ライブ流行シナリオ',
76
+ curveChart: 'SIR感染曲線',
77
+ inspectDay: 'シミュレーション日の確認',
78
+ legend: '曲線凡例',
79
+ susceptible: '感受性者',
80
+ infected: '感染者',
81
+ recovered: '回復者または免疫保持者',
82
+ deaths: '死亡者',
83
+ controls: '流行制御パラメータ',
84
+ modelName: 'コンパートメントモデル',
85
+ peakInfected: 'ピーク感染者数',
86
+ peakDay: 'ピーク日',
87
+ attackRate: '攻撃率',
88
+ estimatedDeaths: '推定死亡者数',
89
+ r0: '基本再生産数 R0',
90
+ lethality: '致死率',
91
+ vaccination: 'ワクチン接種率',
92
+ vaccineEffectiveness: 'ワクチン効果',
93
+ infectiousDays: '感染期間',
94
+ initialInfected: '初期感染者数',
95
+ dayLabel: '日',
96
+ daysUnit: '日',
97
+ infectiousLabel: '感染中',
98
+ reLabel: 'Re',
99
+ },
100
+ seo: [
101
+ {
102
+ type: 'title',
103
+ text: '疫学SIRシミュレーター - R0、ワクチン接種、致死率、感染曲線',
104
+ level: 2,
105
+ },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'この疫学SIRシミュレーターを使えば、感受性者が感染し、回復または死亡により感染グループを離れる過程で、病原体がどのように集団内に広がるかを探索できます。学生、科学コミュニケーター、公衆衛生の学習者、そして感染や免疫の小さな変化がなぜ感染拡大を大きく変えるのかを素早く視覚的に理解したいすべての人向けに設計されています。',
109
+ },
110
+ {
111
+ type: 'paragraph',
112
+ html: 'インタラクティブな操作パネルは、多くの人がテストしたい変数に焦点を当てています。<strong>R0</strong>、致死率、ワクチン接種率、ワクチン効果、感染期間、初期感染者割合です。グラフは即座に更新され、感受性者、感染者、回復者、免疫保持者、死亡者の曲線を一つの感染症システムとして比較できます。',
113
+ },
114
+ {
115
+ type: 'title',
116
+ text: 'SIRモデルの仕組み',
117
+ level: 3,
118
+ },
119
+ {
120
+ type: 'paragraph',
121
+ html: '基本SIRモデルは集団を3つの主要なコンパートメントに分けます。<strong>S</strong>はまだ感染可能な感受性者です。<strong>I</strong>は病原体を伝播できる現在の感染者です。<strong>R</strong>は回復、免疫獲得、またはその他の理由で感染連鎖から外れた人々です。このシミュレーターは、感染グループを離れる人々からの重症転帰の枝として推定死亡者数も追跡します。',
122
+ },
123
+ {
124
+ type: 'paragraph',
125
+ html: '感染率はR0と感染期間に関連しています。R0が高いか、感染期間が長いほど、感染者グループが縮小する前に多くの新規感染が発生します。ワクチン接種が感受性プールから十分な人数を除去すれば、実効再生産数は低下し、流行のピークは大幅に小さくなります。',
126
+ },
127
+ {
128
+ type: 'table',
129
+ headers: ['操作項目', '変更する内容', '代表的な曲線への影響'],
130
+ rows: [
131
+ ['R0', '免疫を考慮する前の伝播可能性', 'R0が高いと感染者曲線が急上昇し、ピークも高くなる。'],
132
+ ['ワクチン接種率', '保護された感受性者が集団から除外される割合', '接種率が高いとReが低下し、流行を平坦化できる。'],
133
+ ['ワクチン効果', 'この簡略モデルでワクチンが感染を防ぐ程度', '効果が高いほど同じ接種率でより強い保護効果が得られる。'],
134
+ ['感染期間', '人が感染状態を維持する平均日数', '長期感染はタイミングを変え、流行を長引かせる可能性がある。'],
135
+ ['致死率', '感染グループを離れる人のうち死亡として計上される割合', '致死率が高いと死亡曲線が上昇するが、感染伝播には直接影響しない。'],
136
+ ],
137
+ },
138
+ {
139
+ type: 'title',
140
+ text: 'R0、Re、集団免疫の直感的理解',
141
+ level: 3,
142
+ },
143
+ {
144
+ type: 'paragraph',
145
+ html: 'R0は全員が感受性のある集団において、1人の感染者が生み出す平均二次感染者数です。実効再生産数であるReは、既に免疫がある人、ワクチン接種を受けた人、隔離されている人など、感染可能でない人がいる場合に低くなります。このシミュレーターでは、効果的なワクチン接種が直接的に感受性を低下させるため、保護率が上がるにつれて表示されるReは減少します。',
146
+ },
147
+ {
148
+ type: 'paragraph',
149
+ html: '一般的な集団免疫の近似式は<strong>1 - 1 / R0</strong>です。R0が3の場合、閾値は約66.7%の実効免疫です。このシミュレーターは閾値を実感させるのに役立ちます。実効ワクチン接種が閾値を下回ると流行は成長し、上回ると伝播は持続困難になります。',
150
+ },
151
+ {
152
+ type: 'title',
153
+ text: 'ピーク感染者数の意味',
154
+ level: 3,
155
+ },
156
+ {
157
+ type: 'paragraph',
158
+ html: 'ピーク感染者数は、シミュレーション集団内で同時に感染状態にある最大人数です。これは総感染者数よりも運用上重要なことがよくあります。なぜなら、病院、検査機関、隔離プログラム、接触者追跡チームは同時並行の活動症例から圧力を受けるからです。最終的な攻撃率がゼロにならなくても、ピークを下げることが重要になり得ます。',
159
+ },
160
+ {
161
+ type: 'paragraph',
162
+ html: '攻撃率はシミュレーション終了時までに全人口のうち感染した割合の推定値です。攻撃率が高いと、感受性が枯渇するか制御される前に病原体が多くの人に到達したことを意味します。攻撃率が低いと、免疫、ワクチン接種、または弱い伝播が広範な拡散を防いだことを意味します。',
163
+ },
164
+ {
165
+ type: 'title',
166
+ text: '実世界のR0値と集団免疫への示唆',
167
+ level: 3,
168
+ },
169
+ {
170
+ type: 'paragraph',
171
+ html: '基本再生産数R0は病原体の固定された生物学的定数ではありません。接触パターン、人口密度、文化的習慣、環境要因に依存します。同じウイルスでも、密集した都市と農村部、または屋内での密集が多い季節では異なるR0値を示します。以下の数値は公表された研究からの参考範囲です。',
172
+ },
173
+ {
174
+ type: 'table',
175
+ headers: ['病原体', '代表的なR0範囲', '集団免疫閾値 (1 - 1/R0)', '主な伝播特性'],
176
+ rows: [
177
+ ['季節性インフルエンザ', '1.2 - 1.4', '17% - 29%', '短い感染期間、季節変動あり'],
178
+ ['SARS-CoV-2 (祖先株)', '2.0 - 3.0', '50% - 67%', '発症前伝播、エアロゾル感染'],
179
+ ['SARS-CoV-2 (デルタ株)', '5.0 - 8.0', '80% - 87%', 'ウイルス量増加、急速な拡散'],
180
+ ['SARS-CoV-2 (オミクロン株)', '8.0 - 12.0', '87% - 92%', '免疫回避、上気道指向性'],
181
+ ['ポリオ', '5.0 - 7.0', '80% - 86%', '糞口経路、長期間の無症状排菌'],
182
+ ['天然痘', '5.0 - 7.0', '80% - 86%', '世界的なワクチン接種キャンペーンで根絶'],
183
+ ['麻疹', '12.0 - 18.0', '92% - 94%', '極めて高い感染力、空気感染、長い感染期間'],
184
+ ['百日咳', '12.0 - 17.0', '92% - 94%', '免疫減衰により再感染が発生'],
185
+ ],
186
+ },
187
+ {
188
+ type: 'paragraph',
189
+ html: '集団免疫閾値が高くても、接種率が閾値を下回る場合にワクチン接種が無意味であることを意味するわけではありません。部分的な免疫でも伝播を遅らせ、ピークを下げ、重症化を減らし、医療システムのための時間を稼ぐことができます。このシミュレーターは、ワクチンスライダーを中間値に動かすことでこの効果を示します。',
190
+ },
191
+ {
192
+ type: 'title',
193
+ text: '実効再生産数Reが流行中に変化する仕組み',
194
+ level: 3,
195
+ },
196
+ {
197
+ type: 'paragraph',
198
+ html: 'Reは流行のある時点での実効再生産数です。全員が感受性のある集団を想定するR0とは異なり、Reは免疫、ワクチン接種、その他感受性を減らす要因を考慮します。このシミュレーターでは、Reは<strong>R0 x (1 - 保護率)</strong>として計算されます。ここでの保護率は、ワクチン接種により実効免疫を持つ人口の割合です。',
199
+ },
200
+ {
201
+ type: 'paragraph',
202
+ html: 'シミュレーターのヘッダーに表示されるReの値は、操作パネルを動かすと更新されます。Reが1を上回っている間は流行は拡大します。Reが1を下回ると、各感染者は平均して1人未満の新規感染者しか生み出さず、感染症は持続できません。これが感染症制御の核心的な洞察です。免疫、行動、介入によりReを1未満に保つことです。',
203
+ },
204
+ {
205
+ type: 'title',
206
+ text: '攻撃率とピーク負荷が示す流行の重症度',
207
+ level: 3,
208
+ },
209
+ {
210
+ type: 'paragraph',
211
+ html: '攻撃率はシミュレーションされた流行全体で感染した人の総人口に対する割合です。これは感染症の波の後に最もよく引用される要約指標です。攻撃率が高いと、感受性の枯渇または制御によって伝播が止まる前に病原体がほとんどの感受性者に感染したことを意味します。攻撃率が低いと、免疫、ワクチン接種、または本質的に弱い伝播が広範な感染を防いだことを意味します。',
212
+ },
213
+ {
214
+ type: 'paragraph',
215
+ html: 'ピーク感染者数、つまり同時に感染している最大人数は、短期的な医療負荷にとってより重要です。攻撃率が中程度でもピークが非常に高く急峻な波は、総患者数が極端でなくても病院を圧倒する可能性があります。逆に、緩やかで平坦な曲線は、同様の攻撃率を数週間にわたって分散させ、医療システムに対応の時間を与えます。これが公衆衛生当局がすべての感染を防ぐこととは別の運用目標として<strong>曲線を平坦化する</strong>ことを強調する理由です。',
216
+ },
217
+ {
218
+ type: 'title',
219
+ text: 'SIRモデルにおける曲線の平坦化と医療容量',
220
+ level: 3,
221
+ },
222
+ {
223
+ type: 'paragraph',
224
+ html: 'SIRモデルの感染者曲線は、同時にケアを必要とする人数として解釈できます。実際の感染症流行では、病床、酸素供給、集中治療を必要とする各患者は有限のリソースプールを消費します。感染者曲線が利用可能な容量を超えて上昇すると、システムが適切なケアを提供できないため、すべての原因による死亡率が上昇します。',
225
+ },
226
+ {
227
+ type: 'paragraph',
228
+ html: 'このモデルにおけるワクチン接種は、感染する前に感受性プールから人を除去することで曲線を平坦化します。マスク、換気、社会的距離、検査、隔離などの他の対策によるR0の低下も、より完全なモデルではピークを下げるでしょう。このシミュレーションはそのメカニズムを可視化します。実効ワクチン接種率が上がるにつれて、ピークは縮小し、遅れ、または完全に消失します。',
229
+ },
230
+ {
231
+ type: 'title',
232
+ text: 'SIRモデルの背後にある数学の可視化',
233
+ level: 3,
234
+ },
235
+ {
236
+ type: 'paragraph',
237
+ html: 'SIRモデルでは、各時間ステップでの新規感染率は3つの量に依存します。伝達率<strong>beta</strong>、現在の感染者数<strong>I</strong>、そしてまだ感受性のある実効人口の割合<strong>S / N</strong>です。積<strong>beta x I x S / N</strong>は感染力と呼ばれます。毎日、この感染力が何人の感受性者が感染者コンパートメントに移動するかを決定します。',
238
+ },
239
+ {
240
+ type: 'paragraph',
241
+ html: '人々は回復率<strong>gamma = 1 / 感染期間</strong>で感染者コンパートメントを離れます。感染力と回復率のバランスが、感染症が拡大するか縮小するかを決定します。beta x S / N が gamma を上回ると、新規感染が回復を上回り、流行は拡大します。感受性割合S / Nが十分に低下すると、gammaが優勢になり流行は収束します。',
242
+ },
243
+ {
244
+ type: 'paragraph',
245
+ html: 'パラメータ<strong>beta</strong>はインターフェース上に直接表示されません。代わりに、R0と感染期間から<strong>beta = R0 x gamma</strong>の関係で導出されます。これがR0または感染期間を変更すると似ているが同一ではない曲線形状が生まれる理由です。両方のパラメータが感染力に影響しますが、感染期間は流行の時間軸も引き伸ばします。',
246
+ },
247
+ {
248
+ type: 'title',
249
+ text: '学習と教育のためのシミュレーター活用法',
250
+ level: 3,
251
+ },
252
+ {
253
+ type: 'list',
254
+ items: [
255
+ '<strong>高R0シナリオと低R0シナリオの比較:</strong> R0を1.5(季節性インフルエンザ相当)に設定し、次に6.0(ワクチン接種前のポリオ相当)に設定します。他の操作項目が全て同じでも、ピーク高さ、ピークタイミング、攻撃率がどう変わるかに注目してください。',
256
+ '<strong>集団免疫閾値の探索:</strong> R0を3.0、ワクチン接種なしで開始します。攻撃率を確認してください。次にReが1を下回るまでワクチン接種率を上げます。閾値直下と直上でのピークと攻撃率を比較してください。',
257
+ '<strong>遅い対応と速い対応の効果のテスト:</strong> ワクチン接種率を様々な水準に設定し、ピークがいつ発生するかを観察します。高い接種率はピーク高さを減らすだけでなく、通常はピークを遅らせ、医療準備のための時間を稼ぎます。',
258
+ '<strong>致死率と伝播の分離:</strong> 致死率を0%に設定し、感染者曲線を観察します。次に他の設定を変えずに致死率を10%に設定します。感染者曲線は変わりませんが、死亡者数は増加します。これは致死率と伝播速度が異なる疫学的次元であることを示しています。',
259
+ '<strong>感染期間の効果の検証:</strong> 同じR0で4日の感染期間と18日の感染期間を比較します。長い期間は曲線を引き伸ばし、ピークを遅らせ、より長く低い波を生み出します。',
260
+ '<strong>教室での演習 - 閾値を見つける:</strong> 学生に与えられたR0に対してReが1を下回る最小のワクチン接種率を見つけさせ、結果を式1 - 1/R0と比較させます。',
261
+ ],
262
+ },
263
+ {
264
+ type: 'title',
265
+ text: 'このシミュレーターを使うべき時と理由',
266
+ level: 3,
267
+ },
268
+ {
269
+ type: 'list',
270
+ items: [
271
+ '<strong>疫学を学ぶ学生:</strong> 微分方程式を扱ったり自分でモデルをプログラミングする前に、数学的なSIRフレームワークをインタラクティブな曲線形状と結びつけます。',
272
+ '<strong>科学コミュニケーターとジャーナリスト:</strong> R0、ワクチン接種、感染期間が流行の軌道に与える影響を示すグラフ、スクリーンショット、ライブ説明を生成します。',
273
+ '<strong>公衆衛生の学習者:</strong> 異なる介入の組み合わせが流行のピークと攻撃率をどう変えるかをテストし、感染症対応におけるトレードオフの直感を養います。',
274
+ '<strong>感染症の数理に興味があるすべての人:</strong> コードを書いたりソフトウェアをインストールする必要なくSIRモデルを探索できます。すべての操作項目がグラフをリアルタイムで更新します。',
275
+ ],
276
+ },
277
+ {
278
+ type: 'title',
279
+ text: 'モデルの拡張: SEIR、SIRS、そしてその先へ',
280
+ level: 3,
281
+ },
282
+ {
283
+ type: 'paragraph',
284
+ html: 'このシミュレーターは基本SIR構造を使用しています。いくつかの一般的な拡張がより現実的になります。<strong>SEIRモデル</strong>は、感染しているがまだ感染力を持たない人々のための曝露(E)コンパートメントを追加し、潜伏期間を表現します。曝露グループは、感染が潜伏期を経てから伝播に寄与するため、SIRモデルと比較して流行のピークを外側に遅らせます。',
285
+ },
286
+ {
287
+ type: 'paragraph',
288
+ html: '<strong>SIRSモデル</strong>は、回復した個人が時間とともに免疫を失い、再び感受性コンパートメントに戻ることを可能にします。これは百日咳やSARS-CoV-2のように免疫が減衰する病原体をモデル化し、持続的または再発性の流行波を生み出します。<strong>年齢構造化モデル</strong>は、集団を異なる接触行列と重症度プロファイルを持つ年齢グループに分割し、子供と高齢者で結果が大きく異なる疾患に不可欠です。',
289
+ },
290
+ {
291
+ type: 'paragraph',
292
+ html: 'その他の拡張には、地理的拡散(メタ個体群モデル)、行動変容(適応的接触率)、確率的ノイズ(ランダムな絶滅が重要な小規模集団用)、および介入タイミング(学校閉鎖、ロックダウン、旅行制限のオンオフ)があります。それぞれの拡張は予測に不可欠な複雑さを追加しますが、基本SIRモデルが明確に示す中核的な伝播ダイナミクスを覆い隠す可能性もあります。',
293
+ },
294
+ {
295
+ type: 'title',
296
+ text: 'この疫学シミュレーターの制限事項',
297
+ level: 3,
298
+ },
299
+ {
300
+ type: 'paragraph',
301
+ html: 'これはコンパクトな決定論的SIRモデルです。年齢グループ、世帯構造、学校、旅行、スーパースプレッディング、潜伏期間、無症状感染、季節性、変異株、免疫減衰、行動変容、検査遅延、時間とともにオンオフする公衆衛生介入は含まれていません。これらの詳細は実際の予測には不可欠です。',
302
+ },
303
+ {
304
+ type: 'paragraph',
305
+ html: 'このモデルは完全混合集団を仮定しており、すべての感受性者がすべての感染者と等しい接触確率を持ちます。実際の集団には、強いクラスタリング、年齢同類性、地理的構造、感染性の個人差を持つ接触ネットワークがあります。これらの特徴は、より緩やかな初期成長、スーパースプレッディングイベント、および均質モデルでは捕捉できない不均一な流行パターンを生み出す可能性があります。',
306
+ },
307
+ {
308
+ type: 'paragraph',
309
+ html: 'このシミュレーターはメカニズムの理解とシナリオ比較のために使用し、医学的判断、政策決定、緊急時の意思決定には使用しないでください。実際の感染症評価には、サーベイランスデータ、地域の状況、不確実性分析、専門的な疫学モデリングが必要です。',
310
+ },
311
+ ],
312
+ faq,
313
+ bibliography,
314
+ howTo,
315
+ schemas: [
316
+ {
317
+ '@context': 'https://schema.org',
318
+ '@type': 'SoftwareApplication',
319
+ name: title,
320
+ description,
321
+ applicationCategory: 'ScientificApplication',
322
+ operatingSystem: 'Any',
323
+ },
324
+ {
325
+ '@context': 'https://schema.org',
326
+ '@type': 'FAQPage',
327
+ mainEntity: faq.map((item) => ({
328
+ '@type': 'Question',
329
+ name: item.question,
330
+ acceptedAnswer: {
331
+ '@type': 'Answer',
332
+ text: item.answer,
333
+ },
334
+ })),
335
+ },
336
+ {
337
+ '@context': 'https://schema.org',
338
+ '@type': 'HowTo',
339
+ name: title,
340
+ step: howTo.map((step) => ({
341
+ '@type': 'HowToStep',
342
+ name: step.name,
343
+ text: step.text,
344
+ })),
345
+ },
346
+ ],
347
+ };