@jjlmoya/utils-science 1.51.0 → 1.53.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 (339) hide show
  1. package/package.json +2 -2
  2. package/scripts/crystal-lattice-catalog-translations.mjs +1 -0
  3. package/src/category/i18n/es.ts +3 -4
  4. package/src/category/i18n/fr.ts +2 -2
  5. package/src/category/i18n/it.ts +2 -2
  6. package/src/category/i18n/pt.ts +2 -2
  7. package/src/category/index.ts +25 -25
  8. package/src/components/PreviewNavSidebar.astro +1 -1
  9. package/src/components/PreviewToolbar.astro +1 -1
  10. package/src/data.ts +1 -1
  11. package/src/env.d.ts +1 -1
  12. package/src/layouts/PreviewLayout.astro +1 -1
  13. package/src/pages/index.astro +1 -1
  14. package/src/tests/bibliography_wellformed_export.test.ts +46 -0
  15. package/src/tests/category_seo_quality.test.ts +76 -0
  16. package/src/tests/faq_count.test.ts +19 -19
  17. package/src/tests/i18n_coverage.test.ts +36 -36
  18. package/src/tests/mocks/astro_mock.js +1 -1
  19. package/src/tests/no_h1_in_components.test.ts +1 -1
  20. package/src/tests/script_density.test.ts +94 -94
  21. package/src/tests/seo_length.test.ts +24 -24
  22. package/src/tests/seo_parity.test.ts +5 -5
  23. package/src/tests/seo_translation_completeness.test.ts +76 -0
  24. package/src/tests/seo_wellformed_export.test.ts +65 -0
  25. package/src/tests/spanish_leakage.test.ts +175 -175
  26. package/src/tool/asteroid-impact/component.astro +251 -251
  27. package/src/tool/asteroid-impact/helpers.ts +17 -17
  28. package/src/tool/asteroid-impact/i18n/de.ts +2 -2
  29. package/src/tool/asteroid-impact/i18n/en.ts +2 -2
  30. package/src/tool/asteroid-impact/i18n/es.ts +2 -2
  31. package/src/tool/asteroid-impact/i18n/fr.ts +2 -2
  32. package/src/tool/asteroid-impact/i18n/id.ts +2 -2
  33. package/src/tool/asteroid-impact/i18n/it.ts +2 -2
  34. package/src/tool/asteroid-impact/i18n/ja.ts +2 -2
  35. package/src/tool/asteroid-impact/i18n/ko.ts +2 -2
  36. package/src/tool/asteroid-impact/i18n/nl.ts +2 -2
  37. package/src/tool/asteroid-impact/i18n/pl.ts +2 -2
  38. package/src/tool/asteroid-impact/i18n/pt.ts +2 -2
  39. package/src/tool/asteroid-impact/i18n/ru.ts +2 -2
  40. package/src/tool/asteroid-impact/i18n/sv.ts +2 -2
  41. package/src/tool/asteroid-impact/i18n/tr.ts +2 -2
  42. package/src/tool/asteroid-impact/i18n/zh.ts +2 -2
  43. package/src/tool/asteroid-impact/script.ts +262 -262
  44. package/src/tool/asteroid-impact/seo.astro +15 -15
  45. package/src/tool/asteroid-impact/ui.ts +69 -69
  46. package/src/tool/black-hole-event-horizon-simulator/i18n/de.ts +249 -241
  47. package/src/tool/black-hole-event-horizon-simulator/i18n/fr.ts +252 -247
  48. package/src/tool/black-hole-event-horizon-simulator/i18n/id.ts +259 -259
  49. package/src/tool/black-hole-event-horizon-simulator/i18n/it.ts +255 -252
  50. package/src/tool/black-hole-event-horizon-simulator/i18n/ja.ts +254 -252
  51. package/src/tool/black-hole-event-horizon-simulator/i18n/ko.ts +258 -258
  52. package/src/tool/black-hole-event-horizon-simulator/i18n/nl.ts +256 -252
  53. package/src/tool/black-hole-event-horizon-simulator/i18n/pl.ts +258 -258
  54. package/src/tool/black-hole-event-horizon-simulator/i18n/pt.ts +256 -252
  55. package/src/tool/black-hole-event-horizon-simulator/i18n/ru.ts +258 -258
  56. package/src/tool/black-hole-event-horizon-simulator/i18n/sv.ts +257 -252
  57. package/src/tool/black-hole-event-horizon-simulator/i18n/tr.ts +256 -251
  58. package/src/tool/black-hole-event-horizon-simulator/i18n/zh.ts +261 -252
  59. package/src/tool/cellular-renewal/component.astro +126 -126
  60. package/src/tool/cellular-renewal/i18n/de.ts +1 -1
  61. package/src/tool/cellular-renewal/i18n/en.ts +1 -1
  62. package/src/tool/cellular-renewal/i18n/es.ts +1 -1
  63. package/src/tool/cellular-renewal/i18n/fr.ts +1 -1
  64. package/src/tool/cellular-renewal/i18n/id.ts +1 -1
  65. package/src/tool/cellular-renewal/i18n/it.ts +1 -1
  66. package/src/tool/cellular-renewal/i18n/ja.ts +1 -1
  67. package/src/tool/cellular-renewal/i18n/ko.ts +1 -1
  68. package/src/tool/cellular-renewal/i18n/nl.ts +1 -1
  69. package/src/tool/cellular-renewal/i18n/pl.ts +1 -1
  70. package/src/tool/cellular-renewal/i18n/pt.ts +1 -1
  71. package/src/tool/cellular-renewal/i18n/ru.ts +1 -1
  72. package/src/tool/cellular-renewal/i18n/sv.ts +1 -1
  73. package/src/tool/cellular-renewal/i18n/tr.ts +1 -1
  74. package/src/tool/cellular-renewal/i18n/zh.ts +1 -1
  75. package/src/tool/cellular-renewal/seo.astro +15 -15
  76. package/src/tool/colony-counter/i18n/de.ts +1 -1
  77. package/src/tool/colony-counter/i18n/en.ts +1 -1
  78. package/src/tool/colony-counter/i18n/es.ts +1 -1
  79. package/src/tool/colony-counter/i18n/fr.ts +1 -1
  80. package/src/tool/colony-counter/i18n/id.ts +1 -1
  81. package/src/tool/colony-counter/i18n/it.ts +1 -1
  82. package/src/tool/colony-counter/i18n/ja.ts +1 -1
  83. package/src/tool/colony-counter/i18n/ko.ts +1 -1
  84. package/src/tool/colony-counter/i18n/nl.ts +1 -1
  85. package/src/tool/colony-counter/i18n/pl.ts +1 -1
  86. package/src/tool/colony-counter/i18n/pt.ts +1 -1
  87. package/src/tool/colony-counter/i18n/ru.ts +1 -1
  88. package/src/tool/colony-counter/i18n/sv.ts +1 -1
  89. package/src/tool/colony-counter/i18n/tr.ts +1 -1
  90. package/src/tool/colony-counter/i18n/zh.ts +1 -1
  91. package/src/tool/colony-counter/seo.astro +15 -15
  92. package/src/tool/conway-life-rule-lab/component.astro +1 -1
  93. package/src/tool/conway-life-rule-lab/i18n/de.ts +145 -141
  94. package/src/tool/conway-life-rule-lab/i18n/es.ts +146 -142
  95. package/src/tool/conway-life-rule-lab/i18n/fr.ts +146 -142
  96. package/src/tool/conway-life-rule-lab/i18n/id.ts +146 -145
  97. package/src/tool/conway-life-rule-lab/i18n/it.ts +146 -145
  98. package/src/tool/conway-life-rule-lab/i18n/ja.ts +146 -145
  99. package/src/tool/conway-life-rule-lab/i18n/ko.ts +146 -145
  100. package/src/tool/conway-life-rule-lab/i18n/nl.ts +147 -145
  101. package/src/tool/conway-life-rule-lab/i18n/pl.ts +147 -145
  102. package/src/tool/conway-life-rule-lab/i18n/pt.ts +147 -145
  103. package/src/tool/conway-life-rule-lab/i18n/ru.ts +147 -145
  104. package/src/tool/conway-life-rule-lab/i18n/sv.ts +147 -145
  105. package/src/tool/conway-life-rule-lab/i18n/tr.ts +147 -145
  106. package/src/tool/conway-life-rule-lab/i18n/zh.ts +147 -145
  107. package/src/tool/conway-life-rule-lab/logic/LifeLabRuntime.ts +2 -2
  108. package/src/tool/cosmic-inflation/i18n/ru.ts +105 -105
  109. package/src/tool/crystal-lattice-structure-finder/i18n/de.ts +217 -217
  110. package/src/tool/crystal-lattice-structure-finder/i18n/en.ts +1 -1
  111. package/src/tool/crystal-lattice-structure-finder/i18n/es.ts +217 -217
  112. package/src/tool/crystal-lattice-structure-finder/i18n/fr.ts +217 -217
  113. package/src/tool/crystal-lattice-structure-finder/i18n/id.ts +217 -217
  114. package/src/tool/crystal-lattice-structure-finder/i18n/it.ts +217 -217
  115. package/src/tool/crystal-lattice-structure-finder/i18n/ja.ts +217 -217
  116. package/src/tool/crystal-lattice-structure-finder/i18n/ko.ts +217 -217
  117. package/src/tool/crystal-lattice-structure-finder/i18n/nl.ts +217 -217
  118. package/src/tool/crystal-lattice-structure-finder/i18n/pl.ts +217 -217
  119. package/src/tool/crystal-lattice-structure-finder/i18n/pt.ts +217 -217
  120. package/src/tool/crystal-lattice-structure-finder/i18n/ru.ts +217 -217
  121. package/src/tool/crystal-lattice-structure-finder/i18n/sv.ts +217 -217
  122. package/src/tool/crystal-lattice-structure-finder/i18n/tr.ts +217 -217
  123. package/src/tool/crystal-lattice-structure-finder/i18n/zh.ts +217 -217
  124. package/src/tool/double-slit-decoherence/i18n/de.ts +181 -181
  125. package/src/tool/double-slit-decoherence/i18n/fr.ts +180 -180
  126. package/src/tool/double-slit-decoherence/i18n/id.ts +181 -181
  127. package/src/tool/double-slit-decoherence/i18n/it.ts +180 -180
  128. package/src/tool/double-slit-decoherence/i18n/ja.ts +181 -181
  129. package/src/tool/double-slit-decoherence/i18n/ko.ts +181 -181
  130. package/src/tool/double-slit-decoherence/i18n/nl.ts +181 -181
  131. package/src/tool/double-slit-decoherence/i18n/pl.ts +181 -181
  132. package/src/tool/double-slit-decoherence/i18n/pt.ts +178 -174
  133. package/src/tool/double-slit-decoherence/i18n/ru.ts +180 -180
  134. package/src/tool/double-slit-decoherence/i18n/sv.ts +176 -172
  135. package/src/tool/double-slit-decoherence/i18n/tr.ts +180 -180
  136. package/src/tool/double-slit-decoherence/i18n/zh.ts +181 -181
  137. package/src/tool/dyson-sphere-energy-capture/component.astro +253 -253
  138. package/src/tool/dyson-sphere-energy-capture/i18n/de.ts +194 -194
  139. package/src/tool/dyson-sphere-energy-capture/i18n/en.ts +6 -6
  140. package/src/tool/dyson-sphere-energy-capture/i18n/es.ts +6 -6
  141. package/src/tool/dyson-sphere-energy-capture/i18n/fr.ts +194 -194
  142. package/src/tool/dyson-sphere-energy-capture/i18n/id.ts +195 -195
  143. package/src/tool/dyson-sphere-energy-capture/i18n/it.ts +194 -194
  144. package/src/tool/dyson-sphere-energy-capture/i18n/ja.ts +194 -190
  145. package/src/tool/dyson-sphere-energy-capture/i18n/ko.ts +194 -193
  146. package/src/tool/dyson-sphere-energy-capture/i18n/nl.ts +197 -197
  147. package/src/tool/dyson-sphere-energy-capture/i18n/pl.ts +168 -166
  148. package/src/tool/dyson-sphere-energy-capture/i18n/pt.ts +194 -193
  149. package/src/tool/dyson-sphere-energy-capture/i18n/ru.ts +195 -193
  150. package/src/tool/dyson-sphere-energy-capture/i18n/sv.ts +195 -193
  151. package/src/tool/dyson-sphere-energy-capture/i18n/tr.ts +168 -166
  152. package/src/tool/dyson-sphere-energy-capture/i18n/zh.ts +194 -193
  153. package/src/tool/epidemic-sir-simulator/i18n/de.ts +347 -347
  154. package/src/tool/epidemic-sir-simulator/i18n/es.ts +347 -347
  155. package/src/tool/epidemic-sir-simulator/i18n/fr.ts +347 -347
  156. package/src/tool/epidemic-sir-simulator/i18n/it.ts +346 -346
  157. package/src/tool/epidemic-sir-simulator/i18n/nl.ts +347 -347
  158. package/src/tool/epidemic-sir-simulator/i18n/ru.ts +347 -347
  159. package/src/tool/epidemic-sir-simulator/i18n/sv.ts +347 -347
  160. package/src/tool/epidemic-sir-simulator/i18n/zh.ts +347 -347
  161. package/src/tool/exoplanet-biosignature-detector/i18n/de.ts +186 -186
  162. package/src/tool/exoplanet-biosignature-detector/i18n/en.ts +195 -195
  163. package/src/tool/exoplanet-biosignature-detector/i18n/es.ts +194 -194
  164. package/src/tool/exoplanet-biosignature-detector/i18n/fr.ts +183 -183
  165. package/src/tool/exoplanet-biosignature-detector/i18n/id.ts +193 -193
  166. package/src/tool/exoplanet-biosignature-detector/i18n/it.ts +194 -194
  167. package/src/tool/exoplanet-biosignature-detector/i18n/ja.ts +194 -194
  168. package/src/tool/exoplanet-biosignature-detector/i18n/ko.ts +194 -194
  169. package/src/tool/exoplanet-biosignature-detector/i18n/nl.ts +194 -194
  170. package/src/tool/exoplanet-biosignature-detector/i18n/pl.ts +144 -144
  171. package/src/tool/exoplanet-biosignature-detector/i18n/pt.ts +146 -146
  172. package/src/tool/exoplanet-biosignature-detector/i18n/ru.ts +143 -143
  173. package/src/tool/exoplanet-biosignature-detector/i18n/sv.ts +144 -144
  174. package/src/tool/exoplanet-biosignature-detector/i18n/tr.ts +145 -145
  175. package/src/tool/exoplanet-biosignature-detector/i18n/zh.ts +194 -194
  176. package/src/tool/global-albedo-snowball-simulator/component.astro +1 -1
  177. package/src/tool/global-albedo-snowball-simulator/i18n/de.ts +169 -169
  178. package/src/tool/global-albedo-snowball-simulator/i18n/fr.ts +169 -169
  179. package/src/tool/global-albedo-snowball-simulator/i18n/id.ts +169 -169
  180. package/src/tool/global-albedo-snowball-simulator/i18n/it.ts +87 -87
  181. package/src/tool/global-albedo-snowball-simulator/i18n/ja.ts +87 -87
  182. package/src/tool/global-albedo-snowball-simulator/i18n/ko.ts +169 -169
  183. package/src/tool/global-albedo-snowball-simulator/i18n/nl.ts +169 -169
  184. package/src/tool/global-albedo-snowball-simulator/i18n/pl.ts +169 -169
  185. package/src/tool/global-albedo-snowball-simulator/i18n/pt.ts +169 -169
  186. package/src/tool/global-albedo-snowball-simulator/i18n/ru.ts +165 -161
  187. package/src/tool/global-albedo-snowball-simulator/i18n/sv.ts +169 -169
  188. package/src/tool/global-albedo-snowball-simulator/i18n/tr.ts +169 -169
  189. package/src/tool/global-albedo-snowball-simulator/i18n/zh.ts +169 -169
  190. package/src/tool/lorenz-attractor/i18n/de.ts +144 -143
  191. package/src/tool/lorenz-attractor/i18n/fr.ts +144 -144
  192. package/src/tool/lorenz-attractor/i18n/id.ts +149 -149
  193. package/src/tool/lorenz-attractor/i18n/it.ts +149 -149
  194. package/src/tool/lorenz-attractor/i18n/ja.ts +149 -149
  195. package/src/tool/lorenz-attractor/i18n/ko.ts +149 -149
  196. package/src/tool/lorenz-attractor/i18n/nl.ts +149 -149
  197. package/src/tool/lorenz-attractor/i18n/pl.ts +149 -149
  198. package/src/tool/lorenz-attractor/i18n/pt.ts +142 -141
  199. package/src/tool/lorenz-attractor/i18n/ru.ts +149 -149
  200. package/src/tool/lorenz-attractor/i18n/sv.ts +149 -149
  201. package/src/tool/lorenz-attractor/i18n/tr.ts +149 -149
  202. package/src/tool/lorenz-attractor/i18n/zh.ts +149 -149
  203. package/src/tool/mandelbrot-fractal/i18n/de.ts +158 -158
  204. package/src/tool/mandelbrot-fractal/i18n/fr.ts +158 -158
  205. package/src/tool/mandelbrot-fractal/i18n/id.ts +159 -159
  206. package/src/tool/mandelbrot-fractal/i18n/it.ts +155 -151
  207. package/src/tool/mandelbrot-fractal/i18n/ja.ts +159 -159
  208. package/src/tool/mandelbrot-fractal/i18n/ko.ts +159 -159
  209. package/src/tool/mandelbrot-fractal/i18n/nl.ts +159 -159
  210. package/src/tool/mandelbrot-fractal/i18n/pl.ts +157 -153
  211. package/src/tool/mandelbrot-fractal/i18n/pt.ts +158 -158
  212. package/src/tool/mandelbrot-fractal/i18n/ru.ts +159 -159
  213. package/src/tool/mandelbrot-fractal/i18n/sv.ts +159 -150
  214. package/src/tool/mandelbrot-fractal/i18n/tr.ts +159 -159
  215. package/src/tool/mandelbrot-fractal/i18n/zh.ts +159 -159
  216. package/src/tool/microwave-detector/component.astro +238 -238
  217. package/src/tool/microwave-detector/i18n/de.ts +1 -1
  218. package/src/tool/microwave-detector/i18n/en.ts +1 -1
  219. package/src/tool/microwave-detector/i18n/es.ts +1 -1
  220. package/src/tool/microwave-detector/i18n/fr.ts +1 -1
  221. package/src/tool/microwave-detector/i18n/id.ts +1 -1
  222. package/src/tool/microwave-detector/i18n/it.ts +1 -1
  223. package/src/tool/microwave-detector/i18n/ja.ts +1 -1
  224. package/src/tool/microwave-detector/i18n/ko.ts +1 -1
  225. package/src/tool/microwave-detector/i18n/nl.ts +1 -1
  226. package/src/tool/microwave-detector/i18n/pl.ts +1 -1
  227. package/src/tool/microwave-detector/i18n/pt.ts +1 -1
  228. package/src/tool/microwave-detector/i18n/ru.ts +1 -1
  229. package/src/tool/microwave-detector/i18n/sv.ts +1 -1
  230. package/src/tool/microwave-detector/i18n/tr.ts +1 -1
  231. package/src/tool/microwave-detector/i18n/zh.ts +1 -1
  232. package/src/tool/microwave-detector/seo.astro +15 -15
  233. package/src/tool/natural-selection-drift/component.astro +135 -135
  234. package/src/tool/natural-selection-drift/i18n/de.ts +164 -160
  235. package/src/tool/natural-selection-drift/i18n/fr.ts +204 -204
  236. package/src/tool/natural-selection-drift/i18n/id.ts +156 -154
  237. package/src/tool/natural-selection-drift/i18n/it.ts +197 -193
  238. package/src/tool/natural-selection-drift/i18n/ja.ts +155 -154
  239. package/src/tool/natural-selection-drift/i18n/ko.ts +155 -154
  240. package/src/tool/natural-selection-drift/i18n/nl.ts +164 -163
  241. package/src/tool/natural-selection-drift/i18n/pl.ts +168 -166
  242. package/src/tool/natural-selection-drift/i18n/pt.ts +200 -195
  243. package/src/tool/natural-selection-drift/i18n/ru.ts +186 -184
  244. package/src/tool/natural-selection-drift/i18n/sv.ts +157 -154
  245. package/src/tool/natural-selection-drift/i18n/tr.ts +186 -184
  246. package/src/tool/natural-selection-drift/i18n/zh.ts +160 -154
  247. package/src/tool/natural-selection-drift/natural-selection-drift.css +563 -563
  248. package/src/tool/phase-diagram-critical-points/i18n/de.ts +178 -178
  249. package/src/tool/phase-diagram-critical-points/i18n/fr.ts +178 -178
  250. package/src/tool/phase-diagram-critical-points/i18n/id.ts +179 -179
  251. package/src/tool/phase-diagram-critical-points/i18n/it.ts +179 -179
  252. package/src/tool/phase-diagram-critical-points/i18n/ja.ts +179 -179
  253. package/src/tool/phase-diagram-critical-points/i18n/ko.ts +179 -179
  254. package/src/tool/phase-diagram-critical-points/i18n/nl.ts +179 -179
  255. package/src/tool/phase-diagram-critical-points/i18n/pl.ts +179 -179
  256. package/src/tool/phase-diagram-critical-points/i18n/pt.ts +179 -179
  257. package/src/tool/phase-diagram-critical-points/i18n/ru.ts +179 -179
  258. package/src/tool/phase-diagram-critical-points/i18n/sv.ts +179 -179
  259. package/src/tool/phase-diagram-critical-points/i18n/tr.ts +179 -179
  260. package/src/tool/phase-diagram-critical-points/i18n/zh.ts +179 -179
  261. package/src/tool/planet-atmosphere-survival/i18n/de.ts +255 -255
  262. package/src/tool/planet-atmosphere-survival/i18n/fr.ts +255 -255
  263. package/src/tool/planet-atmosphere-survival/i18n/id.ts +255 -255
  264. package/src/tool/planet-atmosphere-survival/i18n/it.ts +255 -255
  265. package/src/tool/planet-atmosphere-survival/i18n/ja.ts +255 -255
  266. package/src/tool/planet-atmosphere-survival/i18n/ko.ts +255 -255
  267. package/src/tool/planet-atmosphere-survival/i18n/nl.ts +255 -255
  268. package/src/tool/planet-atmosphere-survival/i18n/pl.ts +255 -255
  269. package/src/tool/planet-atmosphere-survival/i18n/pt.ts +255 -255
  270. package/src/tool/planet-atmosphere-survival/i18n/ru.ts +227 -223
  271. package/src/tool/planet-atmosphere-survival/i18n/sv.ts +255 -255
  272. package/src/tool/planet-atmosphere-survival/i18n/tr.ts +255 -255
  273. package/src/tool/planet-atmosphere-survival/i18n/zh.ts +255 -255
  274. package/src/tool/radioactive-decay/i18n/de.ts +168 -164
  275. package/src/tool/radioactive-decay/i18n/fr.ts +76 -75
  276. package/src/tool/radioactive-decay/i18n/id.ts +169 -165
  277. package/src/tool/radioactive-decay/i18n/it.ts +76 -74
  278. package/src/tool/radioactive-decay/i18n/ja.ts +168 -167
  279. package/src/tool/radioactive-decay/i18n/ko.ts +168 -167
  280. package/src/tool/radioactive-decay/i18n/nl.ts +170 -168
  281. package/src/tool/radioactive-decay/i18n/pl.ts +170 -168
  282. package/src/tool/radioactive-decay/i18n/pt.ts +169 -167
  283. package/src/tool/radioactive-decay/i18n/ru.ts +170 -168
  284. package/src/tool/radioactive-decay/i18n/sv.ts +170 -168
  285. package/src/tool/radioactive-decay/i18n/tr.ts +171 -168
  286. package/src/tool/radioactive-decay/i18n/zh.ts +171 -167
  287. package/src/tool/roche-limit-satellite-disruption/i18n/de.ts +241 -241
  288. package/src/tool/roche-limit-satellite-disruption/i18n/fr.ts +241 -241
  289. package/src/tool/roche-limit-satellite-disruption/i18n/id.ts +241 -241
  290. package/src/tool/roche-limit-satellite-disruption/i18n/it.ts +241 -241
  291. package/src/tool/roche-limit-satellite-disruption/i18n/ja.ts +241 -241
  292. package/src/tool/roche-limit-satellite-disruption/i18n/ko.ts +241 -241
  293. package/src/tool/roche-limit-satellite-disruption/i18n/nl.ts +241 -241
  294. package/src/tool/roche-limit-satellite-disruption/i18n/pl.ts +237 -229
  295. package/src/tool/roche-limit-satellite-disruption/i18n/pt.ts +241 -241
  296. package/src/tool/roche-limit-satellite-disruption/i18n/ru.ts +241 -241
  297. package/src/tool/roche-limit-satellite-disruption/i18n/sv.ts +241 -241
  298. package/src/tool/roche-limit-satellite-disruption/i18n/tr.ts +241 -241
  299. package/src/tool/roche-limit-satellite-disruption/i18n/zh.ts +241 -241
  300. package/src/tool/simulation-probability/component.astro +138 -138
  301. package/src/tool/simulation-probability/i18n/de.ts +1 -1
  302. package/src/tool/simulation-probability/i18n/en.ts +1 -1
  303. package/src/tool/simulation-probability/i18n/es.ts +1 -1
  304. package/src/tool/simulation-probability/i18n/fr.ts +1 -1
  305. package/src/tool/simulation-probability/i18n/id.ts +1 -1
  306. package/src/tool/simulation-probability/i18n/it.ts +1 -1
  307. package/src/tool/simulation-probability/i18n/ja.ts +1 -1
  308. package/src/tool/simulation-probability/i18n/ko.ts +1 -1
  309. package/src/tool/simulation-probability/i18n/nl.ts +1 -1
  310. package/src/tool/simulation-probability/i18n/pl.ts +1 -1
  311. package/src/tool/simulation-probability/i18n/pt.ts +1 -1
  312. package/src/tool/simulation-probability/i18n/ru.ts +1 -1
  313. package/src/tool/simulation-probability/i18n/sv.ts +1 -1
  314. package/src/tool/simulation-probability/i18n/tr.ts +1 -1
  315. package/src/tool/simulation-probability/i18n/zh.ts +1 -1
  316. package/src/tool/simulation-probability/seo.astro +15 -15
  317. package/src/tool/stellar-habitability-zone/i18n/ru.ts +189 -189
  318. package/src/tool/temperature-timeline/i18n/de.ts +2 -1
  319. package/src/tool/temperature-timeline/i18n/fr.ts +177 -177
  320. package/src/tool/temperature-timeline/i18n/it.ts +142 -141
  321. package/src/tool/temperature-timeline/i18n/pt.ts +3 -1
  322. package/src/tool/temperature-timeline/i18n/ru.ts +116 -114
  323. package/src/tool/three-body-problem/app.ts +4 -4
  324. package/src/tool/three-body-problem/component.astro +6 -6
  325. package/src/tool/twin-paradox-visualizer/i18n/de.ts +168 -168
  326. package/src/tool/twin-paradox-visualizer/i18n/es.ts +165 -165
  327. package/src/tool/twin-paradox-visualizer/i18n/fr.ts +168 -168
  328. package/src/tool/twin-paradox-visualizer/i18n/id.ts +168 -168
  329. package/src/tool/twin-paradox-visualizer/i18n/it.ts +168 -168
  330. package/src/tool/twin-paradox-visualizer/i18n/ja.ts +168 -168
  331. package/src/tool/twin-paradox-visualizer/i18n/ko.ts +168 -168
  332. package/src/tool/twin-paradox-visualizer/i18n/nl.ts +168 -168
  333. package/src/tool/twin-paradox-visualizer/i18n/pl.ts +168 -168
  334. package/src/tool/twin-paradox-visualizer/i18n/pt.ts +164 -160
  335. package/src/tool/twin-paradox-visualizer/i18n/ru.ts +168 -168
  336. package/src/tool/twin-paradox-visualizer/i18n/sv.ts +168 -168
  337. package/src/tool/twin-paradox-visualizer/i18n/tr.ts +168 -168
  338. package/src/tool/twin-paradox-visualizer/i18n/zh.ts +168 -168
  339. package/src/types.ts +1 -1
@@ -1,347 +1,347 @@
1
- import { bibliography } from '../bibliography';
2
- import type { ToolLocaleContent } from '../../../types';
3
-
4
- const slug = 'simuljator-sir-epidemii';
5
- const title = 'Симулятор SIR эпидемии';
6
- const description = 'Исследуйте распространение патогена с помощью интерактивной SIR модели, которая в реальном времени показывает влияние R0, летальности, вакцинации, длительности заразного периода, пиковой нагрузки и кривых передачи.';
7
-
8
- const howTo = [
9
- {
10
- name: 'Установите репродуктивное число',
11
- text: 'Передвигайте ползунок R0, чтобы задать, сколько вторичных заражений вызовет один заразный человек в полностью восприимчивой популяции.',
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 модель делит популяцию на восприимчивых, заражённых и выздоровевших. Она оценивает, как люди перемещаются между этими группами с течением времени по мере передачи и выздоровления.',
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: 'Атака (attack rate) измеряет общую долю популяции, заражённую за всю вспышку. Пик заражённых измеряет максимальное количество одновременно заразных людей в любой момент времени. Низкий пик не гарантирует низкую атаку, и наоборот.',
51
- },
52
- {
53
- question: 'Что означает Re ниже 1 визуально?',
54
- answer: 'Когда Re падает ниже 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: 'Атака (attack rate)',
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 модель делит популяцию на три основных компартмента. <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 - это среднее количество вторичных случаев, вызванных одним заразным человеком в полностью восприимчивой популяции. 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: 'Атака (attack rate) оценивает долю всей популяции, заражённую к концу симуляции. Высокая атака означает, что патоген достиг многих людей до того, как восприимчивость истощилась или была взята под контроль. Низкая атака означает, что иммунитет, вакцинация или слабая передача предотвратили широкое распространение.',
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, вспышка растёт. Когда оно падает ниже 1, каждый заражённый порождает в среднем меньше одного нового случая, и эпидемия не может поддерживать себя. Это ключевая идея эпидемического контроля: достижение и удержание Re ниже 1 с помощью иммунитета, поведения или вмешательств.',
203
- },
204
- {
205
- type: 'title',
206
- text: 'Атака, пиковая нагрузка и что они говорят о тяжести вспышки',
207
- level: 3,
208
- },
209
- {
210
- type: 'paragraph',
211
- html: 'Атака (attack rate) - это доля всей популяции, заражённая за всю симулированную вспышку. Это наиболее часто цитируемый обобщающий показатель после волны эпидемии. Высокая атака означает, что патоген заразил большинство восприимчивых людей до того, как истощение или контроль остановили передачу. Низкая атака означает, что иммунитет, вакцинация или изначально слабая передача предотвратили широкое распространение.',
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 модели скорость новых заражений за шаг времени зависит от трёх величин: скорости передачи <strong>beta</strong>, текущего количества заразных людей <strong>I</strong> и доли эффективной популяции, которая всё ещё восприимчива <strong>S / N</strong>. Произведение <strong>beta x I x S / N</strong> называется силой инфекции (force of infection). Каждый день эта сила определяет, сколько восприимчивых людей переходит в заражённый компартмент.',
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:</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> сравните 4-дневный заразный период с 18-дневным при одинаковом R0. Более длинный период растягивает кривую, сдвигает пик и даёт более длинную, но более низкую волну.',
260
- '<strong>Классное упражнение - найдите порог:</strong> предложите студентам найти минимальный охват вакцинации, который снижает Re ниже 1 для заданного R0, а затем сравнить результат с формулой 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
- };
1
+ import { bibliography } from '../bibliography';
2
+ import type { ToolLocaleContent } from '../../../types';
3
+
4
+ const slug = 'simuljator-sir-epidemii';
5
+ const title = 'Симулятор SIR эпидемии';
6
+ const description = 'Исследуйте распространение патогена с помощью интерактивной SIR модели, которая в реальном времени показывает влияние R0, летальности, вакцинации, длительности заразного периода, пиковой нагрузки и кривых передачи.';
7
+
8
+ const howTo = [
9
+ {
10
+ name: 'Установите репродуктивное число',
11
+ text: 'Передвигайте ползунок R0, чтобы задать, сколько вторичных заражений вызовет один заразный человек в полностью восприимчивой популяции.',
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 модель делит популяцию на восприимчивых, заражённых и выздоровевших. Она оценивает, как люди перемещаются между этими группами с течением времени по мере передачи и выздоровления.',
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: 'Атака (attack rate) измеряет общую долю популяции, заражённую за всю вспышку. Пик заражённых измеряет максимальное количество одновременно заразных людей в любой момент времени. Низкий пик не гарантирует низкую атаку, и наоборот.',
51
+ },
52
+ {
53
+ question: 'Что означает Re ниже 1 визуально?',
54
+ answer: 'Когда Re падает ниже 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: 'Атака (attack rate)',
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 модель делит популяцию на три основных компартмента. <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 - это среднее количество вторичных случаев, вызванных одним заразным человеком в полностью восприимчивой популяции. 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: 'Атака (attack rate) оценивает долю всей популяции, заражённую к концу симуляции. Высокая атака означает, что патоген достиг многих людей до того, как восприимчивость истощилась или была взята под контроль. Низкая атака означает, что иммунитет, вакцинация или слабая передача предотвратили широкое распространение.',
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, вспышка растёт. Когда оно падает ниже 1, каждый заражённый порождает в среднем меньше одного нового случая, и эпидемия не может поддерживать себя. Это ключевая идея эпидемического контроля: достижение и удержание Re ниже 1 с помощью иммунитета, поведения или вмешательств.',
203
+ },
204
+ {
205
+ type: 'title',
206
+ text: 'Атака, пиковая нагрузка и что они говорят о тяжести вспышки',
207
+ level: 3,
208
+ },
209
+ {
210
+ type: 'paragraph',
211
+ html: 'Атака (attack rate) - это доля всей популяции, заражённая за всю симулированную вспышку. Это наиболее часто цитируемый обобщающий показатель после волны эпидемии. Высокая атака означает, что патоген заразил большинство восприимчивых людей до того, как истощение или контроль остановили передачу. Низкая атака означает, что иммунитет, вакцинация или изначально слабая передача предотвратили широкое распространение.',
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 модели скорость новых заражений за шаг времени зависит от трёх величин: скорости передачи <strong>beta</strong>, текущего количества заразных людей <strong>I</strong> и доли эффективной популяции, которая всё ещё восприимчива <strong>S / N</strong>. Произведение <strong>beta x I x S / N</strong> называется силой инфекции (force of infection). Каждый день эта сила определяет, сколько восприимчивых людей переходит в заражённый компартмент.',
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:</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> сравните 4-дневный заразный период с 18-дневным при одинаковом R0. Более длинный период растягивает кривую, сдвигает пик и даёт более длинную, но более низкую волну.',
260
+ '<strong>Классное упражнение - найдите порог:</strong> предложите студентам найти минимальный охват вакцинации, который снижает Re ниже 1 для заданного R0, а затем сравнить результат с формулой 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
+ };