

WERM nima qiladi
WERM, Wiring-Encoded Recurrent Modulator (simlar bilan kodlangan rekurrent modulyator) qisqartmasi bo‘lib, voyaga yetgan germafrodit Caenorhabditis elegans qurtining haqiqiy neyronlar ulanish diagrammasiga asoslangan kichik neyron simulyatsiyasidir. Uning 302 neyronli tezlik tarmog‘i brauzerda, Node.js’da yoki kompyuteringizda mahalliy ishlayotgan til modeli bilan birga ishlaydi.
Model simulyatsiya qilingan sensor ta’sirlarni qayta ishlash uchun konnektomdan foydalanadi. Boshqaruv qatlami hosil bo‘lgan qurt holatini o‘qiydi va uni harorat, top-p, token cheklovlari hamda bir qatorli ohang rejimi kabi til modeli sozlamalariga aylantiradi. WERM mahalliy model bilan ishlatilganda ma’lumotlarni masofaviy xizmatga yubormaydi.
Qaysi jihatlar biologik ma’lumotlarga asoslangan?
Omborda OpenWorm Connectome Toolbox orqali taqdim etilgan Cook va boshqalarning 2019-yilgi voyaga yetgan germafrodit tarmog‘i mavjud. Unda 302 ta neyron, 3 709 ta yo‘naltirilgan kimyoviy aloqa va 1 105 ta tirqish birikmasi jufti bor. Aloqa og‘irliklari to‘g‘ridan-to‘g‘ri sinapslar sonini emas, balki elektron mikroskop kesimlarida ikki hujayraning birikkan holda kuzatilgan sonini ifodalaydi.
Loyihada genomdan olingan xaritalar ham mavjud. Referens genom NCBI RefSeq GCF_000002985.6 bo‘lib, WBcel235 nomi bilan ham tanilgan, gen annotatsiyasi esa WormBase WS298’dan olingan. Kiritilgan o‘lchovlar olti xromosoma bo‘ylab 100 272 607 ta bazani qamrab oladi; GC tarkibi 35,4 foiz, oqsil kodlovchi genlar soni esa 19 971 ta.
WERM suyuq vaqt konstantali tarmoqlardan ilhomlangan darvoza bilan tezlik tarmog‘idan foydalanadi. GABA hosil qilishi va chiqarishi ma’lum bo‘lgan 28 ta neyron tormozlovchi, qolgan neyronlar esa qo‘zg‘atuvchi deb olinadi.
Modellashtirish tanlovlarini tushuning
Konnektom har bir sinapsning ishorasini ko‘rsatmaydi. Shu sababli WERM GABA asosidagi qoidani soddalashtiruvchi taxmin sifatida qo‘llaydi. Model parametrlari natijalar ko‘rib chiqilishidan oldin belgilangan qoida asosida 1 470 ta sozlama ichidan scripts/sweep.mjs tomonidan tanlangan. Demak, WERM neyron yozuvlariga moslashtirilgan model emas, balki sozlangan modeldir.
Boshqaruv xaritasi ham aniq loyihaviy tanlovdir. Qurt holati kod orqali tanlanma parametrlari va ohangni boshqaradi; bu kodni tekshirish va o‘zgartirish mumkin. Neyroilmiy ma’lumotlar ushbu til modeli sozlamalarini belgilamaydi.
Birinchi simulyatsiyani o‘rnating va ishga tushiring
Omborni klonlang va uning katalogiga kiring:
git clone https://github.com/Henryfud/werm
cd wermWERM Node.js 20 yoki undan yangiroq versiyani talab qiladi. Modelning ish vaqtida kerak bo‘ladigan bog‘liqliklari yo‘q, shuning uchun paketlarni o‘rnatmasdan birlik testlarini ishga tushirishingiz mumkin:
npm testDumga tegish ta’siridan foydalanib, uch soniyalik simulyatsiyani ishga tushiring:
node src/cli.mjs sim --stim touch-tail --seconds 3Buyruq tarmoqni tanlangan sensor kirishi bilan ishga tushiradi. Buyruq qatori interfeysi mahalliy til modeli integratsiyasi uchun connect buyrug‘ini va WERM ishlab chiqaradigan sozlamalarni tekshirish uchun steer buyrug‘ini ham qo‘llab-quvvatlaydi.
WERM’ni Ollama’ga ulang
Avval ollama.com/download saytidan Ollama’ni o‘rnating va uni ishga tushiring. Zarur bo‘lsa, xizmatni bevosita ollama serve buyrug‘i bilan ishga tushirishingiz mumkin. Mahalliy modelni yuklab oling, so‘ng WERM’ni unga ulang:
ollama pull llama3.2
node src/cli.mjs connect --model llama3.2llama3.2 o‘rniga Ollama’da o‘rnatilgan istalgan model nomini yozing. Ollama ishlamayotgan yoki model mavjud bo‘lmagan hollarda WERM muammo haqida xabar beradi va bajarilishi kerak bo‘lgan buyruqni tavsiya qiladi. Ollama xizmati http://localhost:11434 manzilidan boshqa joyda joylashgan bo‘lsa, --host parametridan foydalaning.
Suhbat davomida WERM avval xabarni sensor ta’sirlarga aylantiradi, qurtni qisqa vaqt ishga tushiradi, keyin hosil bo‘lgan holatdan model so‘rovini sozlash uchun foydalanadi. WERM ham, model serveri ham mahalliy bo‘lsa, xabarlar kompyuteringizda qoladi.
Boshqa OpenAI bilan mos mahalliy serverdan foydalaning
WERM OpenAI chat completions API’sini taqdim etadigan istalgan mahalliy dvigatelga ulanishi mumkin. Serverni ishga tushiring, so‘ng uning asosiy URL manzili va model nomini ko‘rsating:
node src/cli.mjs connect --base-url http://localhost:1234/v1 --model YOUR_MODELKo‘p ishlatiladigan server sozlamalari:
- LM Studio: mahalliy serverni uning Developer yorlig‘idan ishga tushiring va
http://localhost:1234/v1manzilidan foydalaning. - llama.cpp:
llama-server -m your-model.ggufbuyrug‘ini bajaring vahttp://localhost:8080/v1manzilidan foydalaning. - vLLM:
vllm serve your-modelbuyrug‘ini bajaring vahttp://localhost:8000/v1manzilidan foydalaning. - Ollama’ning OpenAI uslubidagi endpointi:
http://localhost:11434/v1manzilidan foydalaning.
Ushbu serverlar uchun WERM temperature, top_p va max_tokens parametrlarini yuboradi. OpenAI uslubidagi API Ollama mijozida ishlatiladigan takrorlash jarimasini o‘z ichiga olmaydi, shuning uchun bu parametr qoldirib ketiladi. Serveringiz autentifikatsiyani talab qilsa, WERM_API_KEY muhit o‘zgaruvchisini o‘rnating.
Model bilan bog‘lanmasdan boshqaruvni tekshiring
WERM xabarni qanday talqin qilishini ko‘rish uchun steer buyrug‘idan foydalaning:
node src/cli.mjs steer "why is my code broken?"Buyruq aniqlangan ta’sirlarni, joriy rejimni, modelga xos parametrlarni va tizim promptini chiqaradi. Natijada nose-touch va noxious kabi ta’sirlar, reversing rejimi hamda Ollama va OpenAI bilan mos mijozlar uchun tanlanma qiymatlari bo‘lishi mumkin.
Bu oflayn buyruq integratsiyani ishlab chiqishda foydali, chunki u model serverini ishga tushirmasdan boshqaruv xatti-harakatlarini tekshirish imkonini beradi.
WERM’dan JavaScript orqali foydalaning
Asosiy tarmoq va boshqaruv yordamchilari ES modullari sifatida mavjud. Quyidagi misol connectome-ni yuklaydi, tarmoqni barqarorlashtiradi, xabardan hosil qilingan stimullarni qo‘llaydi va natijaviy boshqaruv parametrlarini o‘qiydi:

import fs from "node:fs";
import { WormBrain } from "./src/network.mjs";
import { steer, stimuliFromText, applyStimuli, systemPrompt } from "./src/steer.mjs";
const worm = new WormBrain(
JSON.parse(fs.readFileSync("data/connectome.json", "utf8"))
);
worm.run(1);
applyStimuli(worm, stimuliFromText("thanks, that helped"), true);
worm.run(1.5);
const { options, mode } = steer(worm.readout());
// options va systemPrompt(mode) ni mahalliy mexanizmingizga yuboring.Dastlabki worm.run(1) chaqiruvi tarmoqning barqarorlashishiga imkon beradi. Matn stimullarga aylantirilgach, applyStimuli sensor holatini o‘zgartiradi, navbatdagi ishga tushirish esa tarmoqqa javob berish uchun vaqt beradi. Keyin readout natijasi steer funksiyasiga uzatiladi; u namuna olish parametrlari va rejimni qaytaradi. Mos ohang ko‘rsatmasini olish uchun systemPrompt(mode) dan foydalaning.
Tajribalarni qayta ishga tushirish
Repozitoriyda parametrlarni skanerlash, null-modellar bilan taqqoslash va rezervuar uslubidagi xotira mezoni uchun skriptlar mavjud:
npm run sweep
npm run experimentsBu buyruqlar natijalarni docs/results/ katalogiga yozadi, mavjud barcha CPU yadrolaridan foydalanadi va bir necha daqiqa davom etadi.
Hujjatlashtirilgan natijalarga ko‘ra, dumga tegish tarmoqni kuchli ravishda oldinga, burunga tegish esa orqaga yo‘naltiradi; har bir testda ular bir xil kattalikdagi 100 ta tasodifiy ta’sirdan yaxshiroq natija beradi. Boshga tegish faqat biroz orqaga yo‘nalgan javob hosil qiladi, zararli stimul esa tasodifiy ta’sirdan yaxshiroq emas. Aralashtirilgan va tasodifiy tarmoqlar odatda haqiqiy tarmoqning bosh va dum o‘rtasidagi farqini takrorlay olmaydi, biroq xotira mezonida haqiqiy ulanishlar aralashtirilgan variantlardan biroz yomonroq natija ko‘rsatadi.
Boshqaruvning til modeli chiqishiga ta’siri hali o‘lchanmagan. Baholash skripti mavjud, ammo uning haqiqiy model bilan ishlashi hali yakunlanmagan.
Boshqaruvni baholash
Ollama bilan bog‘lanmasdan rejalashtirilgan baholashni oldindan ko‘rish uchun quyidagini ishga tushiring:
node scripts/steer-eval.mjs --dry-run --limit 5Mahalliy Ollama modelidan foydalanib haqiqiy baholashni ishga tushirish uchun:
node scripts/steer-eval.mjs --model llama3.2Skript 200 ta prompt bo‘yicha standart sozlamalar, WERM hosil qilgan sozlamalar va tasodifiy sozlamalarni taqqoslaydi. Sinov boshlanishidan oldin rejalashtirilgan parametrlarni tekshirish uchun dry-run parametri foydalidir.
Genom va connectome ma’lumotlarini qayta yaratish
Genom xaritalari
Referens genomni yuklab olish va GC hamda gen zichligi xaritalarini qayta yaratish uchun quyidagilarni ishga tushiring:
bash scripts/fetch_genome.sh
node scripts/genome_stats.mjs data/genome/c_elegans.fasta
node scripts/gc_windows.mjs data/genome/c_elegans.fasta
bash scripts/fetch_annotation.sh
node scripts/gene_windows.mjs data/genome/annotation.gff.gzGenomni yuklab olish hajmi taxminan 100 MB, annotatsiyani yuklab olish hajmi esa taxminan 10 MB. Yuklab olingan fayllar Git tomonidan e’tiborga olinmaydi. Sayt GC xaritasini chizish uchun FASTA faylini mahalliy tarzda ham o‘qiy oladi; ma’lumotlar yuklanmaydi.
Connectome fayli
data/connectome.json faylini qayta yaratish uchun Python virtual muhitini yarating, kerakli paket arxivini o‘rnating, uni oching va qurish skriptini ishga tushiring:
python3 -m venv .venv
.venv/bin/pip install openpyxl
.venv/bin/pip download cect==0.3.5 --no-deps -d dl
unzip -q dl/cect-*.whl -d dl/x
.venv/bin/python scripts/build_connectome.py dl/x/cect/dataSaytni qurish va tekshirish
site/ katalogidagi uzun sahifali sayt generativ pikselli chuvalchang maydoni, jonli connectome globusi, masshtab bo‘yicha chizilgan genom va tushuntiruvchi izohlarni o‘z ichiga oladi. Sayt buyruq satri modeli bilan bir xil koddan foydalanadi.
Sahifani quyidagi buyruq bilan quring:
npm run build:siteBu site/index.html faylini yozadi. Sahifadagi havolalarni moslashtirish uchun GITHUB_URL yoki SITE_URL ni belgilang. Netlify ham xuddi shu qurish jarayonidan foydalanadi.
Repozitoriy tekshiruvlarini ishga tushiring:
npm test
npm run check
npm ci && npx playwright install chromium && npm run test:siteTestlar to‘plami 36 ta birlik testini o‘z ichiga oladi. Qo‘shimcha tekshiruvlar loyiha konvensiyalarini tasdiqlaydi va headless-brauzer smoke-testini ishga tushiradi. Uzluksiz integratsiya tekshiruvlarni Node.js 20 va 22 versiyalarida bajaradi.
Loyiha tuzilmasini o‘rganish
data/connectome.jsonneyronlar va ulanishlarni o‘z ichiga oladi.src/network.mjsneyron modelini amalga oshiradi.src/reflex.mjsrefleks tekshiruvlari va o‘ziga xoslik taqqoslashlarini o‘z ichiga oladi.src/graphs.mjsaralashtirilgan va tasodifiy ulanish variantlarini yaratadi.src/steer.mjschuvalchang holatini model sozlamalari va ohangiga moslaydi.src/ollama.mjsvasrc/openai.mjsmahalliy model mijozlarini amalga oshiradi.src/cli.mjssim,connectvasteerbuyruqlarini taqdim etadi.scripts/katalogida ma’lumotlar, tajriba, tekshiruv va sayt qurish skriptlari mavjud.docs/RESULTS.mdo‘lchangan natijalarni qayd etadi,docs/ARCHITECTURE.mdesa model va o‘qish jarayonini tushuntiradi.
Muhim cheklovlar
WERM ataylab kichik yaratilgan va to‘liq biologik simulyatsiya emas. Unda mushaklar, tana fizikasi, neyropeptidlar yoki o‘rganish mavjud emas, shuningdek u haqiqiy chuvalchanglardan olingan yozuvlar bilan taqqoslanmagan. Uning xatti-harakatini haqiqiy chuvalchang nima qilishi haqidagi bashorat sifatida talqin qilmaslik kerak.
Boshqaruv qatlami ham til modeliga yangi qobiliyatlar bermaydi va uning model javoblariga ta’siri hali o‘lchanmagan. Yanada aniq bi fizikaviy simulyatsiya uchun README faylida OpenWorm loyihasining c302 vositasi tavsiya etiladi. WERM uni bir tushdan keyin ko‘rib chiqish va o‘zgartirish mumkin bo‘ladigan darajada ixcham qilib ishlab chiqilgan.
Xulosa
WERM katta simulyatsiya stekini talab qilmasdan, haqiqiy C. elegans neyron aloqalari diagrammasi bilan tajriba o‘tkazishning amaliy usulini taqdim etadi. Node.js CLI dasturidan boshlang, teginish stimullarini sinab ko‘ring, yaratilgan boshqaruv parametrlarini tekshiring, so‘ngra tarmoqni Ollama yoki OpenAI bilan mos keluvchi boshqa mahalliy serverga ulang. Shundan keyin kiritilgan skriptlar tajribalarni qayta yaratish, biologik ma’lumot mahsulotlarini qayta qurish va boshqaruv qatlamini o‘zingizning mahalliy AI ish jarayoningizga moslashtirish imkonini beradi.
