Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Worm Simülatör (Kurtçuk) 🪱🧠

C. elegans konnektomunun tarayıcıda çalışan, etkileşimli bir simülasyonu. Davranış taklidi değil: gerçek bağlantı şeması üzerinde akan kademeli potansiyellerin ürettiği yapay yaşam.

Lisans: MIT Backend: yok Bağımlılık: yok Nöron: 41 Sinaps: 98

Hızlı Başlangıç

git clone https://github.com/efealibozkurt/worm-simulator.git
cd worm-simulator
# index.html'i tarayıcıda aç — hepsi bu. Derleme yok, sunucu yok.

Caenorhabditis elegans'ın 302 nöronluk sinir sisteminden davranışsal olarak en belirleyici 41 nöron ve 98 sinapslık alt kümeyi, donanım gerektirmeden, tamamen tarayıcıda çalıştıran etkileşimli bir yapay yaşam simülasyonu.

Bu bir davranış taklidi değildir: görüntüdeki kurt, gerçek konnektom bağlantı şeması üzerinde akan kademeli potansiyellerin ürettiği çıktıyla hareket eder. Kodu açın, kurdun "kararlarını" nöron düzeyinde izleyin.

Çalıştırma

index.html  →  herhangi bir modern tarayıcıda açın (çift tıklama yeterli)

Backend, derleme adımı, paket kurulumu yoktur. Tüm dosyalar yereldir.

v1.1 Yenilikleri

  • Kemotaksi dönüşündeki doğrudan ASER/koku heuristikleri kaldırıldı; yön kararı artık ASE/AWC → AIY/AIB → AIZ/RIA → RMDL/RMDR ağ zincirinden gelir.
  • PLM → PVC → AVB arka dokunma yolu güçlendirildi; arka hafif dokunma görünür bir ileri kaçış üretir ve tekrarlandıkça sinaptik depresyonla alışır.
  • Açılışta her nöral ağ dinlenim durumuna oturtulur; yapay ilk-kare AVA sıçraması ortadan kaldırılır.
  • Enerji ve tokluk bilgisi ASEL/RIM/RIS modülatörlerine geri bağlanır.
  • Petride canlı karar yolu göstergesi bulunur: KOŞU, PİRUET, DÖNÜŞ, DWELLING, UYKU.
  • T5 saf ağ sürüşü ve T6 iki yönlü dokunma refleksi testleri eklendi.

Nöron Modeli (matematiksel çekirdek)

C. elegans nöronları spike üretmez (voltaj-kapılı Na⁺ kanalı yoktur); zar potansiyeliyle orantılı kademeli (graded) sinyal iletir. Bu yüzden modelde ateşleme yoktur — her nöron, her adımda:

v ← v + (I − v) · dt/τ          pasif zar / leak entegrasyonu
çıkış = σ(v) = 1/(1+e^(−k·v))   yumuşak eşik (k: hücre tipine özgü diklik)
I = G · Σ (± w · depresyon · çıkış_pre) + duyusal girdi + bias − yorgunluk
  • v: zar potansiyeli · τ: hücre tipine özgü zaman sabiti · G: sinaptik kazanç (tablodaki her "sinaps" gerçekte bir NMJ demetini temsil eder)
  • Sinapslar uyarıcı (+) veya baskılayıcı (−) olabilir; ağırlıklar WormAtlas / White et al. (1986) ve Cook et al. (2019) topolojisinden normalize edilmiştir (js/connectome.js, 98 bağlantının her biri biyolojik yorumuyla birlikte).
  • Kararlılık: σ sınırlı olduğundan girdiler sınırlıdır; v ayrıca [−6, 6] aralığına kenetlenir → sayısal patlama matematiksel olarak imkânsızdır.

Üç Devre + Modülatörler

Devre Nöronlar Biyolojik temel
Dokunma-kaçış ALM/AVM/PLM (yumuşak), PVD (zararlı) → AVD/AVE/PVC → AVA/AVB Chalfie & White 1985: ön dokunma → geri, arka dokunma → ileri kaçış
Kemotaksi ASE (temporal gradyan), AWC (OFF-hücresi) → AIY/AIB → AIZ → RIA → RMD Bargmann: piruet modeli + weathervane yönlendirmesi
Lokomotor osilatör DB/DD ↔ VB/VD çapraz inhibisyon + adaptasyon White'ın motor devresi; relaksasyon osilatörü = gövde dalgası
Modülatörler RIS (lethargus/uyku), RIM Turek & Bringmann: RIS uyku-benzeri durumun anahtarı

Kapalı döngü: koku, her adımda kurdun o anki burun konumundan örneklenir (Gauss bulutu). Kurt hareket edince algısı (dC/dt → ASE) değişir, algı davranışı, davranış konumu değiştirir. Açık döngüde yönelim davranışı tanım gereği oluşamaz — bu ayrım kodda da vurgulanmıştır.

Karar rekabetleri (diyagramda beyaz halkalı düğümler):

  • AIBL ↔ AIBR: koku azalırken hangi tarafa dönüleceği (karşılıklı inhibisyon)
  • AVA ↔ AVB: ileri/geri yön seçimi (premotor komut rekabeti)

Adaptif Mekanizmalar

  • Alışma (habituation): her yumuşak dokunuş, birinci basamak dokunma sinapslarında sinaptik depresyon biriktirir (ağırlık ×0.62, τ≈15 sn ile toparlanır). PVD nosiseptif sinapsları asla alışmaz.
  • Nöral yorgunluk: AVA'daki aktivite-bağımlı adaptasyon + davranışsal yorgunluk sayacı; ardışık kaçışların eşiği yükselir, genliği düşer.
  • Metabolizma: enerji bazal + hareket maliyetiyle azalır; besin üzerinde yenilenir. Açlık (<25) hızı artırır (foraging).
  • Lethargus: toklukta (≥92) RIS devreye girer, komut devresini GABAerjik olarak baskılar → kurt durur (uyku-benzeri dönem), sonra uyanır.
  • Roaming ↔ Dwelling: besin öbeğine ulaşan kurt yavaşlar, dönüşlerini kısıtlar ve öbekte kalıp beslenir — gerçek kurtçuğun iki durumlu davranışı.

Yaşam Döngüsü (ekoloji modu)

Her kurdun kendi 41 nöronluk ağı vardır. Kurtlar yaşlanır, büyür (ölçek 0.55→1.0), enerji tüketir; olgun ve tokken yumurta bırakır (yeni nesil), açlıktan (6 sn enerjisizlik) veya yaşlılıktan (~13 dk) ölür. Besin sonludur: öbekler yenildikçe tükenir ve geri gelmez; yeni kaynak yalnızca kullanıcıdan veya ölen kurtların karkasından gelir — gerçek bir kaynak baskısı altında ekosistem (nüfus üst sınırı 8). Bitkin kurt sürünür, yaşlı kurt yavaşlar. Doğrulama testleri yaşam döngüsü kapalı kipte (ecology:false) koşar.

Arayüzde açık/koyu tema geçişi, petride tıklayınca birincil kurt seçimi (ağ diyagramı seçili bireyin beynini gösterir) ve "Kurt bırak" modu vardır.

Nöral Sürüş

Kurtçuğun yön davranışı kokuya göre yazılmış bir oyun kuralı değildir. Kapalı döngü akışı şöyledir:

Kurdun hareketi → burnundaki koku değişimi (dC/dt)
→ ASEL/ASER ve AWCL/AWCR
→ AIY/AIB → AIZ/RIA
→ RMDL/RMDR baş motorları
→ dönüş momenti → yeni konum

İleri/geri hareket AVB/AVA rekabetinden, dokunma kaçışı ALM/AVM/PLM/PVD → AVD/PVC → AVA/AVB zincirinden, gövde dalgası ise DB/DD↔VB/VD motor havuzlarından gelir. worm.js graded nöron çıkışlarını fiziksel harekete çeviren motor katmanıdır; ASER'i okuyup doğrudan rastgele dönüş üreten bir kemotaksi heuristiği yoktur. Küçük iletişim değişkenliği network.js içindeki kimyasal sinapslarda modellenir.

Besin üzerindeki yavaşlama, yön kararı değil, beslenmeye ait motor düzeyi dwelling durumudur. Dokunma bu yavaşlamayı geçici olarak keser; bu nedenle arka dokunma, besin üzerindeki uykuda olmayan kurtta bile PLM→PVC→AVB ileri kaçışı olarak gözlenebilir. Tokluk lethargus'u sırasında hafif dokunma bastırılır ve arayüzde UYKU · RIS olarak gösterilir.

Arayüzdeki karar çipi canlı olarak şu ağ durumlarından birini gösterir: KOŞU · AIY→AVB, PİRUET · AIB→AVA, DÖNÜŞ · RIA→RMD, İLERİ KAÇIŞ · PLM→PVC→AVB, DWELLING · beslenme veya UYKU · RIS.

Kontroller

Kontrol İşlev
Ön/Arka · yumuşak ALM+AVM / PLM dokunma pulsu (kaçış yönü site'a bağlı)
Ön/Arka · ZARARLI PVD nosiseptörü devrede — alışmış devrede bile kaçış
Alışma protokolü 2 sn arayla 10 yumuşak dokunuş (Rankin & Broster protokolü) → eğri çizilir
Hız (1–10×) Kare başına sabit-adım sayısı (simülasyon dt=30 ms sabittir)
Duraklat / Sıfırla / Rastgele konum
Besin ekle AÇIK konumdayken petriye tıklayınca yeni koku kaynağı
Kurt bırak AÇIK konumdayken petriye tıklayınca yeni birey (nüfus ≤ 8)
Petriye tıklama Kurda yakınsa birincil yapar; değilse birincil kurdu taşır
Tema düğmesi Açık/koyu tema (tercih saklanır)
Ağ diyagramında hover Nöronun biyolojik rolü + canlı v/çıkış değerleri

Doğrulama (kabul testleri)

Açılışta otomatik koşar; F12 konsolunda raporlanır ve olay günlüğüne özet düşer. "Doğrulama testlerini çalıştır" butonu yeniden koşturur. Tarayıcısız koşu: node test/run-headless.js

Test Kriter Tipik sonuç
T1 Kemotaksi 12 başlangıç konumundan ≥11'inde besine ulaşma (≤8 dk) Saf ağ sürüşüyle 12/12
T2 Kararlılık 300.000 adım (2.5 saat sim) sonunda max|v| ≤ 6 ~2.6, patlama yok
T3 Alışma son-3 tepki ort. / ilk-3 tepki ort. < 0.75 ~0.5 (tipik alışma eğrisi)
T4 Nosisepsiyon alışmış devrede zararlı pik > max(0.28, 1.6×son yumuşak pik) ~0.40 vs ~0.12
T5 Saf ağ sürüşü Koku azalması ASER→RIA→RMD üzerinden baş dönüşü üretmeli ASER≈0.85, RMD farkı≈0.07, dönüş≈2 rad
T6 Dokunma refleksleri Ön ALM/AVM kaçışı ve arka PLM/PVC ileri yanıtı AVA≈0.42, AVB≈0.43→0.60

Testler görünür simülasyondan bağımsız Simulation örneklerinde koşar (js/tests.js).

Dosya Yapısı

index.html          arayüz iskeleti
style.css           koyu bilim teması
js/connectome.js    41 nöron + 98 sinaps — her bağlantı biyolojik yorumlu
js/network.js       kademeli-potansiyel ağ modeli (spike yok!), depresyon, adaptasyon
js/world.js         petri kabı + Gauss koku alanı (kapalı döngü algısı)
js/worm.js          graded çıkışları fiziksel harekete çeviren motor katmanı
js/simulation.js    orkestrasyon: algı→ağ→hareket→metabolizma→lethargus
js/tests.js         T1–T6 kabul testleri (tarayıcı VE Node uyumlu)
js/ui.js            petri/konnektom/grafik çizimleri, ipuçları
js/main.js          ana döngü (sabit adımlı sim + ayrık render), kontroller
test/run-headless.js  Node'da tarayıcısız doğrulama koşucusu

Katkı

Konnektom tablosunu genişletmek (yeni nöron/sinaps eklemek) için yalnızca js/connectome.js'teki listelere satır ekleyin — ağ, testler ve arayüz otomatik uyum sağlar. PR'lar ve bilimsel düzeltmeler memnuniyetle karşılanır.

Bilimsel Kapsam Notu (dürüstlük için)

Bağlantı topolojisi ve nöron model sınıfı (kademeli, spike'sız) literatüre sadıktır; sinaps ağırlıkları ise ölçülmüş değerler bilinmediğinden davranışa kalibre edilmiştir. Ayrıntılar kod içi yorumlarda.


English Summary

Worm Simulator v1.1 is an interactive, browser-only simulation of a behaviorally critical C. elegans connectome subset (41 neurons, 98 synapses, topology after White et al. 1986 / Cook et al. 2019). Neurons use graded potentials (no spikes), matching nematode physiology. Implemented circuits: touch-escape reflex (Chalfie & White), chemotaxis (Bargmann; AWC OFF-response, ASE temporal-gradient sensing, network-driven RIA/RMD turning) and a locomotor relaxation oscillator (DB/DD↔VB/VD cross-inhibition). Adaptive mechanisms: synaptic-depression habituation (the PVD nociceptive pathway never habituates), neural fatigue, metabolism, finite food, growth, reproduction, starvation/age death, and RIS-driven lethargus. The UI exposes the active neural decision path and both touch directions are verified through the ALM/AVD/AVA and PLM/PVC/AVB pathways. Acceptance tests (12-position chemotaxis, 300k-step stability, pure network steering, two-way touch response, habituation curve, noxious reliability) run headlessly via node test/run-headless.js. Zero dependencies, zero build steps — open index.html.

Lisans

MIT — ayrıntılar LICENSE dosyasında.

About

C. elegans konnektom simülasyonu — 41 nöron, 98 sinaps, tarayıcıda çalışan yapay yaşam

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages