@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 = 'simulator-sir-penyebaran-wabah';
5
+ const title = 'Simulator SIR Wabah Penyakit';
6
+ const description = 'Jelajahi penyebaran patogen dengan model SIR interaktif yang menyesuaikan R0, tingkat kematian, vaksinasi, periode infeksi, beban puncak, dan kurva transmisi secara real time.';
7
+
8
+ const howTo = [
9
+ {
10
+ name: 'Atur angka reproduksi',
11
+ text: 'Geser penggeser R0 untuk menentukan berapa banyak infeksi sekunder yang disebabkan oleh satu orang terinfeksi dalam populasi yang sepenuhnya rentan.',
12
+ },
13
+ {
14
+ name: 'Tambahkan vaksinasi dan efektivitas vaksin',
15
+ text: 'Tingkatkan cakupan vaksinasi atau efektivitasnya untuk mengeluarkan orang yang terlindungi dari kelompok rentan dan menurunkan angka reproduksi efektif.',
16
+ },
17
+ {
18
+ name: 'Sesuaikan tingkat kematian dan durasi infeksi',
19
+ text: 'Ubah persentase kematian dan jumlah hari infeksi untuk melihat bagaimana dampak keparahan dan waktu kurva merespons.',
20
+ },
21
+ {
22
+ name: 'Baca kurva SIR',
23
+ text: 'Gunakan grafik dan pemeriksa hari untuk membandingkan kurva rentan, terinfeksi, sembuh, dan perkiraan kematian selama simulasi wabah berlangsung.',
24
+ },
25
+ ];
26
+
27
+ const faq = [
28
+ {
29
+ question: 'Apa yang ditunjukkan oleh model SIR?',
30
+ answer: 'Model SIR membagi populasi menjadi kelompok rentan, terinfeksi, dan sembuh. Model ini memperkirakan bagaimana pergerakan orang antar kelompok tersebut seiring waktu saat transmisi dan pemulihan terjadi.',
31
+ },
32
+ {
33
+ question: 'Bagaimana vaksinasi mengubah kurva?',
34
+ answer: 'Vaksinasi mengurangi populasi rentan ketika mencegah infeksi. Dalam simulator ini, vaksinasi efektif menurunkan angka reproduksi efektif dan dapat mengecilkan atau menunda puncak infeksi.',
35
+ },
36
+ {
37
+ question: 'Apakah R0 sama dengan Re?',
38
+ answer: 'Tidak. R0 menggambarkan penyebaran pada populasi yang sepenuhnya rentan. Re adalah angka reproduksi efektif setelah kekebalan, vaksinasi, atau perubahan perilaku mengurangi jumlah orang yang dapat terinfeksi.',
39
+ },
40
+ {
41
+ question: 'Mengapa kurva terinfeksi mencapai puncak lalu turun?',
42
+ answer: 'Kurva terinfeksi turun ketika setiap orang yang terinfeksi menghasilkan lebih sedikit infeksi baru dibandingkan jumlah orang yang meninggalkan kelompok terinfeksi melalui kesembuhan atau kematian. Penurunan jumlah rentan adalah pendorong utama dalam model SIR dasar.',
43
+ },
44
+ {
45
+ question: 'Dapatkah simulator ini memprediksi wabah nyata?',
46
+ answer: 'Ini adalah alat pengajaran dan skenario, bukan peramal. Wabah nyata membutuhkan struktur usia, jaringan kontak, geografi, keterlambatan pelaporan, perubahan perilaku, varian, kekebalan yang berkurang, dan data yang terkalibrasi.',
47
+ },
48
+ {
49
+ question: 'Apa perbedaan antara attack rate dan puncak terinfeksi?',
50
+ answer: 'Attack rate mengukur total proporsi populasi yang pernah terinfeksi pada akhir wabah. Puncak terinfeksi mengukur jumlah maksimum orang yang terinfeksi secara bersamaan pada satu waktu. Puncak yang rendah tidak menjamin attack rate yang rendah, dan sebaliknya.',
51
+ },
52
+ {
53
+ question: 'Apa artinya Re di bawah 1 secara visual?',
54
+ answer: 'Ketika Re turun di bawah 1, setiap orang terinfeksi menghasilkan rata-rata kurang dari satu infeksi baru. Pada grafik, kurva terinfeksi tidak pernah naik tajam dan mungkin langsung menurun dari awal infeksi, yang berarti wabah tidak dapat bertahan.',
55
+ },
56
+ {
57
+ question: 'Bagaimana periode infeksi memengaruhi wabah?',
58
+ answer: 'Periode infeksi yang lebih panjang memperpanjang waktu di mana setiap orang terinfeksi dapat menularkan patogen. Ini meregangkan garis waktu wabah, menunda puncak, dan untuk R0 yang sama, dapat menghasilkan kurva yang lebih lebar dengan tinggi puncak yang lebih rendah.',
59
+ },
60
+ {
61
+ question: 'Mengapa tingkat kematian tidak mengubah kurva terinfeksi?',
62
+ answer: 'Dalam model SIR ini, tingkat kematian hanya memengaruhi jumlah kematian yang bercabang dari kelompok sembuh. Ini tidak memengaruhi transmisi karena kematian dan kesembuhan sama-sama mengeluarkan orang dari kelompok menular dengan laju yang sama.',
63
+ },
64
+ {
65
+ question: 'Apa itu ambang kekebalan kelompok?',
66
+ answer: 'Ambang kekebalan kelompok adalah fraksi populasi yang harus kebal agar Re turun di bawah 1. Ini diperkirakan sebagai 1 - 1/R0. Untuk campak dengan R0 sekitar 12, ambangnya di atas 91%. Untuk flu musiman dengan R0 sekitar 1,3, ambangnya mendekati 23%.',
67
+ },
68
+ ];
69
+
70
+ export const content: ToolLocaleContent = {
71
+ slug,
72
+ title,
73
+ description,
74
+ ui: {
75
+ liveScenario: 'Skenario wabah langsung',
76
+ curveChart: 'Kurva transmisi SIR',
77
+ inspectDay: 'Periksa hari simulasi',
78
+ legend: 'Legenda kurva',
79
+ susceptible: 'Rentan',
80
+ infected: 'Terinfeksi',
81
+ recovered: 'Sembuh atau kebal',
82
+ deaths: 'Kematian',
83
+ controls: 'Kendali wabah',
84
+ modelName: 'Model kompartemen',
85
+ peakInfected: 'Puncak terinfeksi',
86
+ peakDay: 'Hari puncak',
87
+ attackRate: 'Attack rate',
88
+ estimatedDeaths: 'Perkiraan kematian',
89
+ r0: 'Angka reproduksi dasar R0',
90
+ lethality: 'Tingkat kematian',
91
+ vaccination: 'Cakupan vaksinasi',
92
+ vaccineEffectiveness: 'Efektivitas vaksin',
93
+ infectiousDays: 'Periode infeksi',
94
+ initialInfected: 'Awal terinfeksi',
95
+ dayLabel: 'Hari',
96
+ daysUnit: 'hari',
97
+ infectiousLabel: 'menular',
98
+ reLabel: 'Re',
99
+ },
100
+ seo: [
101
+ {
102
+ type: 'title',
103
+ text: 'Simulator SIR wabah untuk R0, vaksinasi, tingkat kematian, dan kurva transmisi',
104
+ level: 2,
105
+ },
106
+ {
107
+ type: 'paragraph',
108
+ html: 'Simulator SIR wabah ini memungkinkan Anda menjelajahi bagaimana patogen menyebar dalam populasi ketika orang rentan terinfeksi dan kemudian meninggalkan kelompok menular melalui kesembuhan atau kematian. Dirancang untuk mahasiswa, komunikator sains, pelajar kesehatan masyarakat, dan siapa pun yang ingin penjelasan visual cepat tentang mengapa perubahan kecil dalam transmisi atau kekebalan dapat mengubah bentuk wabah.',
109
+ },
110
+ {
111
+ type: 'paragraph',
112
+ html: 'Kendali interaktif berfokus pada variabel yang paling sering ingin diuji orang: <strong>R0</strong>, tingkat kematian, cakupan vaksinasi, efektivitas vaksin, durasi infeksi, dan proporsi awal terinfeksi. Grafik diperbarui secara langsung sehingga kurva rentan, terinfeksi, sembuh, kebal, dan kematian dapat dibandingkan sebagai satu sistem wabah yang terhubung.',
113
+ },
114
+ {
115
+ type: 'title',
116
+ text: 'Bagaimana model SIR bekerja',
117
+ level: 3,
118
+ },
119
+ {
120
+ type: 'paragraph',
121
+ html: 'Model SIR dasar membagi populasi menjadi tiga kompartemen utama. <strong>S</strong> adalah orang rentan yang masih bisa terinfeksi. <strong>I</strong> adalah orang yang saat ini menular dan dapat menularkan patogen. <strong>R</strong> adalah orang yang sudah tidak menular karena sembuh, mendapatkan kekebalan, atau meninggalkan rantai transmisi. Simulator ini juga melacak perkiraan kematian sebagai cabang hasil parah dari kelompok yang meninggalkan infeksi.',
122
+ },
123
+ {
124
+ type: 'paragraph',
125
+ html: 'Laju transmisi terkait dengan R0 dan periode infeksi. Jika R0 tinggi atau orang tetap menular lebih lama, lebih banyak infeksi baru yang dihasilkan sebelum kelompok terinfeksi menyusut. Jika vaksinasi mengeluarkan cukup banyak orang dari kelompok rentan, angka reproduksi efektif turun dan puncak wabah bisa menjadi jauh lebih kecil.',
126
+ },
127
+ {
128
+ type: 'table',
129
+ headers: ['Kendali', 'Apa yang diubah', 'Efek tipikal pada kurva'],
130
+ rows: [
131
+ ['R0', 'Potensi transmisi sebelum kekebalan dipertimbangkan', 'R0 yang lebih tinggi membuat kurva terinfeksi naik lebih cepat dan puncak lebih tinggi.'],
132
+ ['Cakupan vaksinasi', 'Proporsi orang yang dipindahkan dari kelompok rentan ketika terlindungi', 'Cakupan yang lebih tinggi menurunkan Re dan dapat meratakan wabah.'],
133
+ ['Efektivitas vaksin', 'Seberapa banyak vaksinasi mencegah infeksi dalam model sederhana ini', 'Efektivitas yang lebih tinggi membuat cakupan yang sama lebih protektif.'],
134
+ ['Periode infeksi', 'Rata-rata waktu orang tetap menular', 'Infeksi yang lebih panjang mengubah waktu dan dapat memperpanjang wabah.'],
135
+ ['Tingkat kematian', 'Proporsi orang yang meninggalkan infeksi yang dihitung sebagai kematian', 'Tingkat kematian yang lebih tinggi menaikkan kurva kematian tanpa secara langsung meningkatkan transmisi.'],
136
+ ],
137
+ },
138
+ {
139
+ type: 'title',
140
+ text: 'Intuisi R0, Re, dan kekebalan kelompok',
141
+ level: 3,
142
+ },
143
+ {
144
+ type: 'paragraph',
145
+ html: 'R0 adalah rata-rata jumlah kasus sekunder yang disebabkan oleh satu orang terinfeksi dalam populasi yang sepenuhnya rentan. Re, angka reproduksi efektif, lebih rendah ketika beberapa orang sudah kebal, divaksinasi, diisolasi, atau tidak tersedia untuk infeksi. Dalam simulator ini, vaksinasi efektif secara langsung mengurangi kerentanan, sehingga Re yang ditampilkan turun seiring dengan meningkatnya cakupan perlindungan.',
146
+ },
147
+ {
148
+ type: 'paragraph',
149
+ html: 'Perkiraan kekebalan kelompok yang umum adalah <strong>1 - 1 / R0</strong>. Untuk R0 sebesar 3, ambangnya sekitar 66,7% kekebalan efektif. Simulator membantu membuat ambang ini terasa nyata: ketika vaksinasi efektif berada di bawah ambang, wabah masih bisa tumbuh; ketika di atas ambang, transmisi kesulitan untuk bertahan.',
150
+ },
151
+ {
152
+ type: 'title',
153
+ text: 'Apa arti angka puncak terinfeksi',
154
+ level: 3,
155
+ },
156
+ {
157
+ type: 'paragraph',
158
+ html: 'Puncak terinfeksi adalah jumlah maksimum orang yang terinfeksi secara bersamaan dalam populasi simulasi. Ini seringkali lebih penting secara operasional daripada total infeksi karena rumah sakit, laboratorium, program isolasi, dan tim pelacakan kontak mengalami tekanan dari kasus aktif bersamaan. Menurunkan puncak bisa menjadi penting meskipun attack rate akhir tidak turun menjadi nol.',
159
+ },
160
+ {
161
+ type: 'paragraph',
162
+ html: 'Attack rate memperkirakan proporsi seluruh populasi yang terinfeksi pada akhir simulasi. Attack rate yang tinggi berarti patogen mencapai banyak orang sebelum kerentanan habis atau terkendali. Attack rate yang rendah berarti kekebalan, vaksinasi, atau transmisi yang lemah mencegah penyebaran luas.',
163
+ },
164
+ {
165
+ type: 'title',
166
+ text: 'Nilai R0 di dunia nyata dan implikasinya terhadap kekebalan kelompok',
167
+ level: 3,
168
+ },
169
+ {
170
+ type: 'paragraph',
171
+ html: 'Angka reproduksi dasar R0 bukanlah konstanta biologis tetap untuk suatu patogen. Ini tergantung pada pola kontak, kepadatan populasi, kebiasaan budaya, dan faktor lingkungan. Virus yang sama dapat memiliki nilai R0 yang berbeda di kota padat versus daerah pedesaan, atau di musim dengan lebih banyak kerumunan di dalam ruangan. Nilai-nilai di bawah ini adalah kisaran referensi ilustratif dari studi yang dipublikasikan.',
172
+ },
173
+ {
174
+ type: 'table',
175
+ headers: ['Patogen', 'Kisaran R0 tipikal', 'Ambang kekebalan kelompok (1 - 1/R0)', 'Fitur transmisi utama'],
176
+ rows: [
177
+ ['Influenza musiman', '1,2 - 1,4', '17% - 29%', 'Periode infeksi pendek, variasi musiman'],
178
+ ['SARS-CoV-2 (leluhur)', '2,0 - 3,0', '50% - 67%', 'Transmisi pra-gejala, jalur aerosol'],
179
+ ['SARS-CoV-2 (Delta)', '5,0 - 8,0', '80% - 87%', 'Peningkatan viral load, penyebaran lebih cepat'],
180
+ ['SARS-CoV-2 (Omicron)', '8,0 - 12,0', '87% - 92%', 'Evasi kekebalan, tropisme saluran napas atas'],
181
+ ['Polio', '5,0 - 7,0', '80% - 86%', 'Rute fekal-oral, penumpahan asimtomatik panjang'],
182
+ ['Cacar', '5,0 - 7,0', '80% - 86%', 'Diberantas melalui kampanye vaksinasi global'],
183
+ ['Campak', '12,0 - 18,0', '92% - 94%', 'Sangat menular, airborne, periode infeksi panjang'],
184
+ ['Batuk rejan (pertusis)', '12,0 - 17,0', '92% - 94%', 'Kekebalan yang berkurang memungkinkan infeksi ulang'],
185
+ ],
186
+ },
187
+ {
188
+ type: 'paragraph',
189
+ html: 'Ambang kekebalan kelompok yang tinggi tidak berarti vaksinasi sia-sia ketika cakupan di bawah ambang. Bahkan kekebalan parsial memperlambat transmisi, menurunkan puncak, mengurangi hasil parah, dan memberi waktu bagi sistem kesehatan. Simulator mendemonstrasikan efek ini ketika Anda menggerakkan penggeser vaksinasi melalui nilai-nilai menengah.',
190
+ },
191
+ {
192
+ type: 'title',
193
+ text: 'Bagaimana angka reproduksi efektif Re berubah selama wabah',
194
+ level: 3,
195
+ },
196
+ {
197
+ type: 'paragraph',
198
+ html: 'Re adalah angka reproduksi efektif pada titik tertentu dalam wabah. Tidak seperti R0 yang mengasumsikan populasi sepenuhnya rentan, Re memperhitungkan kekebalan, vaksinasi, dan faktor lain yang mengurangi kerentanan. Dalam simulator ini, Re dihitung sebagai <strong>R0 x (1 - fraksi terlindungi)</strong>, di mana fraksi terlindungi adalah proporsi populasi yang secara efektif kebal melalui vaksinasi.',
199
+ },
200
+ {
201
+ type: 'paragraph',
202
+ html: 'Nilai Re yang ditampilkan di header simulator diperbarui saat Anda menggerakkan kendali. Ketika Re tetap di atas 1, wabah tumbuh. Ketika turun di bawah 1, setiap orang terinfeksi menghasilkan rata-rata kurang dari satu infeksi baru, dan epidemi tidak dapat bertahan. Ini adalah wawasan inti di balik pengendalian epidemi: membawa dan menjaga Re di bawah 1 melalui kekebalan, perilaku, atau intervensi.',
203
+ },
204
+ {
205
+ type: 'title',
206
+ text: 'Attack rate, beban puncak, dan apa yang diungkapkan tentang keparahan wabah',
207
+ level: 3,
208
+ },
209
+ {
210
+ type: 'paragraph',
211
+ html: 'Attack rate adalah fraksi dari total populasi yang terinfeksi selama simulasi wabah berlangsung. Ini adalah ringkasan metrik yang paling sering dikutip setelah gelombang epidemi. Attack rate yang tinggi berarti patogen menginfeksi sebagian besar orang rentan sebelum penurunan atau pengendalian menghentikan transmisi. Attack rate yang rendah berarti kekebalan, vaksinasi, atau transmisi yang lemah mencegah infeksi luas.',
212
+ },
213
+ {
214
+ type: 'paragraph',
215
+ html: 'Puncak terinfeksi - jumlah maksimum orang yang terinfeksi secara bersamaan - lebih penting untuk tekanan perawatan kesehatan jangka pendek. Gelombang dengan attack rate sedang tetapi puncak yang sangat tinggi dan tajam dapat membanjiri rumah sakit meskipun total kasus tidak ekstrem. Sebaliknya, kurva yang lambat dan datar dapat memiliki attack rate yang sama tersebar selama berminggu-minggu, memberi sistem waktu untuk menangani kasus. Inilah mengapa pejabat kesehatan masyarakat menekankan <strong>meratakan kurva</strong> sebagai tujuan operasional yang berbeda dari mencegah semua infeksi.',
216
+ },
217
+ {
218
+ type: 'title',
219
+ text: 'Meratakan kurva dan kapasitas perawatan kesehatan dalam model SIR',
220
+ level: 3,
221
+ },
222
+ {
223
+ type: 'paragraph',
224
+ html: 'Kurva terinfeksi dalam model SIR dapat diartikan sebagai jumlah orang yang membutuhkan perawatan secara bersamaan. Dalam wabah nyata, setiap orang yang membutuhkan tempat tidur rumah sakit, dukungan oksigen, atau perawatan intensif menggunakan sumber daya yang terbatas. Ketika kurva terinfeksi naik lebih tinggi dari kapasitas yang tersedia, angka kematian dari semua penyebab meningkat karena sistem tidak dapat memberikan perawatan yang memadai.',
225
+ },
226
+ {
227
+ type: 'paragraph',
228
+ html: 'Vaksinasi, dalam model ini, meratakan kurva dengan mengeluarkan orang dari kelompok rentan sebelum mereka dapat terinfeksi. Mengurangi R0 melalui tindakan lain - masker, ventilasi, jarak fisik, pengujian, isolasi - juga akan menurunkan puncak dalam model yang lebih lengkap. Simulasi membuat mekanismenya terlihat: seiring meningkatnya cakupan vaksinasi efektif, puncak menyusut, bergeser lebih lambat, atau hilang sama sekali.',
229
+ },
230
+ {
231
+ type: 'title',
232
+ text: 'Matematika di balik model SIR yang divisualisasikan',
233
+ level: 3,
234
+ },
235
+ {
236
+ type: 'paragraph',
237
+ html: 'Dalam model SIR, laju infeksi baru per langkah waktu tergantung pada tiga besaran: laju transmisi <strong>beta</strong>, jumlah orang yang saat ini menular <strong>I</strong>, dan fraksi populasi efektif yang masih rentan <strong>S / N</strong>. Produk <strong>beta x I x S / N</strong> disebut kekuatan infeksi. Setiap hari, kekuatan ini menentukan berapa banyak orang rentan yang pindah ke kompartemen terinfeksi.',
238
+ },
239
+ {
240
+ type: 'paragraph',
241
+ html: 'Orang meninggalkan kompartemen terinfeksi pada laju pemulihan <strong>gamma = 1 / periode infeksi</strong>. Keseimbangan antara kekuatan infeksi dan laju pemulihan menentukan apakah epidemi tumbuh atau menyusut. Ketika beta x S / N melebihi gamma, infeksi baru melebihi pemulihan dan wabah meluas. Ketika fraksi rentan S / N telah cukup turun, gamma mendominasi dan wabah menyusut.',
242
+ },
243
+ {
244
+ type: 'paragraph',
245
+ html: 'Parameter <strong>beta</strong> tidak terlihat langsung di antarmuka. Sebaliknya, ini diturunkan dari R0 dan periode infeksi melalui hubungan <strong>beta = R0 x gamma</strong>. Inilah mengapa mengubah R0 atau periode infeksi menghasilkan bentuk kurva yang serupa tetapi tidak identik. Kedua parameter memengaruhi kekuatan infeksi, tetapi periode infeksi juga meregangkan sumbu waktu wabah.',
246
+ },
247
+ {
248
+ type: 'title',
249
+ text: 'Cara menggunakan simulator ini untuk pembelajaran dan pengajaran',
250
+ level: 3,
251
+ },
252
+ {
253
+ type: 'list',
254
+ items: [
255
+ '<strong>Bandingkan skenario R0 tinggi vs. rendah:</strong> atur R0 ke 1,5 (kisaran flu musiman) lalu ke 6,0 (kisaran polio pra-vaksinasi). Perhatikan bagaimana tinggi puncak, waktu puncak, dan attack rate berubah meskipun semua kendali lainnya identik.',
256
+ '<strong>Jelajahi ambang kekebalan kelompok:</strong> mulai dengan R0 di 3,0 tanpa vaksinasi. Catat attack rate. Kemudian tambahkan cakupan vaksinasi hingga Re turun di bawah 1. Bandingkan puncak dan attack rate pada cakupan tepat di bawah dan di atas ambang.',
257
+ '<strong>Uji efek respons lambat vs. cepat:</strong> atur cakupan vaksinasi pada berbagai tingkat dan amati kapan puncak terjadi. Cakupan yang lebih tinggi tidak hanya mengurangi tinggi puncak tetapi biasanya menundanya, memberi waktu untuk persiapan perawatan kesehatan.',
258
+ '<strong>Pisahkan tingkat kematian dari transmisi:</strong> atur tingkat kematian ke 0% dan amati kurva terinfeksi. Kemudian atur tingkat kematian ke 10% tanpa mengubah pengaturan lainnya. Kurva terinfeksi tidak berubah, tetapi jumlah kematian meningkat. Ini menunjukkan mengapa tingkat kematian kasus dan kecepatan transmisi adalah dimensi epidemiologis yang berbeda.',
259
+ '<strong>Periksa efek periode infeksi:</strong> bandingkan periode infeksi 4 hari dengan periode 18 hari pada R0 yang sama. Periode yang lebih panjang meregangkan kurva, menunda puncak, dan menghasilkan gelombang yang lebih panjang tetapi lebih rendah.',
260
+ '<strong>Latihan kelas - temukan ambangnya:</strong> minta siswa menemukan cakupan vaksinasi minimum yang membawa Re di bawah 1 untuk R0 tertentu, lalu bandingkan hasilnya dengan rumus 1 - 1/R0.',
261
+ ],
262
+ },
263
+ {
264
+ type: 'title',
265
+ text: 'Kapan dan mengapa menggunakan simulator ini',
266
+ level: 3,
267
+ },
268
+ {
269
+ type: 'list',
270
+ items: [
271
+ '<strong>Mahasiswa epidemiologi:</strong> hubungkan kerangka SIR matematis dengan bentuk kurva interaktif sebelum bekerja dengan persamaan diferensial atau memprogram model mereka sendiri.',
272
+ '<strong>Komunikator sains dan jurnalis:</strong> hasilkan plot, tangkapan layar, atau penjelasan langsung yang menunjukkan mengapa R0, vaksinasi, dan periode infeksi penting untuk lintasan wabah.',
273
+ '<strong>Pelajar kesehatan masyarakat:</strong> uji bagaimana kombinasi intervensi yang berbeda menggeser puncak epidemi dan attack rate untuk mengembangkan intuisi tentang trade-off dalam respons wabah.',
274
+ '<strong>Siapa pun yang penasaran dengan matematika epidemi:</strong> jelajahi model SIR tanpa perlu menulis kode atau menginstal perangkat lunak. Setiap kendali memperbarui grafik secara real time.',
275
+ ],
276
+ },
277
+ {
278
+ type: 'title',
279
+ text: 'Ekstensi model: SEIR, SIRS, dan seterusnya',
280
+ level: 3,
281
+ },
282
+ {
283
+ type: 'paragraph',
284
+ html: 'Simulator ini menggunakan struktur SIR dasar. Beberapa ekstensi umum menambahkan realisme. <strong>Model SEIR</strong> menambahkan kompartemen terpapar (E) untuk orang yang terinfeksi tetapi belum menular, yang mewakili masa inkubasi. Kelompok terpapar menunda puncak epidemi keluar dibandingkan dengan model SIR karena infeksi menghabiskan waktu dalam fase laten sebelum berkontribusi pada transmisi.',
285
+ },
286
+ {
287
+ type: 'paragraph',
288
+ html: '<strong>Model SIRS</strong> memungkinkan individu yang sembuh kehilangan kekebalan seiring waktu dan masuk kembali ke kompartemen rentan. Ini memodelkan patogen seperti pertusis atau SARS-CoV-2 dengan kekebalan yang berkurang dan menghasilkan gelombang wabah yang berkelanjutan atau berulang. <strong>Model terstruktur usia</strong> membagi populasi ke dalam kelompok usia dengan matriks kontak dan profil keparahan yang berbeda, yang penting untuk penyakit di mana anak-anak dan lansia memiliki hasil yang sangat berbeda.',
289
+ },
290
+ {
291
+ type: 'paragraph',
292
+ html: 'Ekstensi lainnya menambahkan penyebaran geografis (model metapopulasi), perubahan perilaku (laju kontak adaptif), kebisingan stokastik (untuk populasi kecil di mana kepunahan acak penting), dan waktu intervensi (penutupan sekolah, lockdown, pembatasan perjalanan yang menyala dan mati). Setiap ekstensi menambahkan kompleksitas yang penting untuk peramalan tetapi dapat mengaburkan dinamika transmisi inti yang diilustrasikan dengan bersih oleh model SIR dasar.',
293
+ },
294
+ {
295
+ type: 'title',
296
+ text: 'Keterbatasan simulator wabah ini',
297
+ level: 3,
298
+ },
299
+ {
300
+ type: 'paragraph',
301
+ html: 'Ini adalah model SIR deterministik yang ringkas. Tidak termasuk kelompok usia, struktur rumah tangga, sekolah, perjalanan, superspreading, masa inkubasi, transmisi asimtomatik, musiman, varian, kekebalan yang berkurang, perubahan perilaku, keterlambatan pengujian, atau intervensi kesehatan masyarakat yang menyala dan mati seiring waktu. Detail-detail tersebut penting untuk peramalan nyata.',
302
+ },
303
+ {
304
+ type: 'paragraph',
305
+ html: 'Model mengasumsikan populasi yang tercampur merata di mana setiap orang rentan memiliki probabilitas kontak yang sama dengan setiap orang menular. Populasi nyata memiliki jaringan kontak dengan pengelompokan kuat, asortativitas usia, struktur geografis, dan variasi individu dalam penularan. Fitur-fitur ini dapat menciptakan pertumbuhan awal yang lebih lambat, peristiwa superspreading, dan pola wabah heterogen yang tidak ditangkap oleh model homogen.',
306
+ },
307
+ {
308
+ type: 'paragraph',
309
+ html: 'Gunakan simulator untuk memahami mekanisme dan membandingkan skenario, bukan untuk membuat keputusan medis, kebijakan, atau darurat. Penilaian wabah dunia nyata membutuhkan data surveilans, konteks lokal, analisis ketidakpastian, dan pemodelan epidemiologis spesialis.',
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
+ };