

Okwenziwa yi-WERM
I-WERM, okuyisifinyezo se-Wiring-Encoded Recurrent Modulator, iwukulingisa okuncane kwenethiwekhi yezinzwa okusekelwe kumdwebo wangempela wokuxhumana we-Caenorhabditis elegans eyi-hermaphrodite endala. Inethiwekhi yayo enama-neuron angu-302 isebenza esipheqululini, ku-Node.js, noma eduze kwemodeli yolimi esebenza endaweni kukhompyutha yakho.
Imodeli isebenzisa i-connectome ukucubungula izisusa zezinzwa ezilingisiwe. Isendlalelo sokuqondisa sifunda isimo sesibungu esivelayo bese sisiguqula sibe izilungiselelo zemodeli yolimi, ezifana ne-temperature, i-top-p, imikhawulo yama-token, kanye nemodi yethoni yomugqa owodwa. I-WERM ayithumeli idatha kusevisi ekude uma isetshenziswa nemodeli yendawo.
Yini esekelwe kudatha yezinto eziphilayo?
Indawo yokugcina ikhodi ihlanganisa inethiwekhi ye-hermaphrodite endala evela ku-Cook et al. 2019, ehlinzekwe nge-OpenWorm Connectome Toolbox. Iqukethe ama-neuron angu-302, ukuxhumana kwamakhemikhali okuqondiswe ku-3,709, kanye namapheya e-gap junction angu-1,105. Isisindo sokuxhumana simele inani lezingxenye zesibonakhulu se-electron lapho amaseli amabili abonakale ehlanganisiwe, hhayi inani eliqondile lama-synapse.
Iphrojekthi futhi iqukethe amamephu athathwe ku-genome. I-reference genome yi-NCBI RefSeq GCF_000002985.6, eyaziwa nangokuthi yi-WBcel235, kanti izichasiselo zezakhi zofuzo zivela ku-WormBase WS298. Izilinganiso ezifakiwe zihlanganisa ama-base angu-100,272,607 kuma-chromosome ayisithupha, okuqukethwe kwe-GC okungamaphesenti angu-35.4, kanye nezakhi zofuzo ezingu-19,971 ezikhiqiza amaprotheni.
I-WERM isebenzisa inethiwekhi yezinga enesango elikhuthazwe ama-liquid time constant networks. Ama-neuron angu-28 aziwa ngokwenza nokukhulula i-GABA aphathwa njengavimbelayo; amanye ama-neuron aphathwa njengavuselelayo.
Qonda izinqumo zokumodela
I-connectome ayicacisi uphawu lwe-synapse ngayinye. Ngakho-ke i-WERM isebenzisa umthetho osuselwe ku-GABA njengokucatshangwa okwenza imodeli ibe lula. Amapharamitha emodeli akhethwe yi-scripts/sweep.mjs phakathi kwezilungiselelo ezingu-1,470, kusetshenziswa umthetho owabekwa ngaphambi kokuhlolwa kwemiphumela. Lokhu kwenza i-WERM ibe imodeli elungiswe ngamapharamitha, hhayi imodeli elinganiswe ngokuqondile ngokurekhodwa kwezinzwa.
Ukuxhumana kokudlulisela iziqondiso nakho kuyisinqumo esicacile somklamo. Isimo sesibungu silawula amapharamitha okusampula nethoni ngekhodi ongayihlola futhi uyishintshe. Idatha ye-neuroscience ayinqumi lezi zilungiselelo zemodeli yolimi.
Faka bese uqalisa ukulingisa kokuqala
Clone indawo yokugcina ikhodi bese ungena ohlwini lwayo:
git clone https://github.com/Henryfud/werm
cd wermI-WERM idinga i-Node.js 20 noma entsha. Imodeli ayinazo izixhomekeko zesikhathi sokusebenza, ngakho ungasebenzisa izivivinyo zamayunithi ngaphandle kokufaka amaphakheji:
npm testQalisa ukulingisa kwemizuzwana emithathu usebenzisa isisusa sokuthintwa komsila:
node src/cli.mjs sim --stim touch-tail --seconds 3Lo myalo usebenzisa inethiwekhi ngokufaka kwezinzwa okukhethiwe. I-interface yomugqa womyalo futhi isekela umyalo we-connect wokuhlanganisa nemodeli yolimi yendawo, kanye nomyalo we-steer wokuhlola izilungiselelo ezizokhiqizwa yi-WERM.
Xhuma i-WERM ku-Ollama
Qala ngokufaka i-Ollama ku-ollama.com/download bese uyivula. Ungaqalisa isevisi ngokuqondile nge-ollama serve uma kudingeka. Landa imodeli yendawo, bese uyixhuma ku-WERM:
ollama pull llama3.2
node src/cli.mjs connect --model llama3.2Faka igama lanoma iyiphi imodeli efakwe ku-Ollama esikhundleni se-llama3.2. Uma i-Ollama ingasebenzi noma imodeli ingatholakali, i-WERM ibika inkinga bese iphakamisa okufanele ukuqalise. Sebenzisa i---host uma isevisi ye-Ollama isingathwe kwenye indawo ngaphandle kwe-http://localhost:11434.
Ngesikhathi sengxoxo, i-WERM iqala ngokuguqula umlayezo ube izisusa zezinzwa, isebenzise isibungu isikhathi esifushane, bese isebenzisa isimo esivelayo ukulungisa isicelo semodeli. Imilayezo ihlala kukhompyutha yakho uma kokubili i-WERM neseva yemodeli kungokwendawo.
Sebenzisa enye iseva yendawo ehambisana ne-OpenAI
I-WERM ingaxhuma kunoma iyiphi injini yendawo ehlinzeka nge-OpenAI chat completions API. Qalisa iseva, bese unikeza i-base URL negama lemodeli:
node src/cli.mjs connect --base-url http://localhost:1234/v1 --model YOUR_MODELUkucushwa kwamaseva okuvamile kufaka:
- LM Studio: qala iseva yendawo kuthebhu yayo ye-Developer bese usebenzisa i-
http://localhost:1234/v1. - llama.cpp: sebenzisa i-
llama-server -m your-model.ggufbese usebenzisa i-http://localhost:8080/v1. - vLLM: sebenzisa i-
vllm serve your-modelbese usebenzisa i-http://localhost:8000/v1. - Indawo yokugcina ye-Ollama esesitayeleni se-OpenAI: sebenzisa i-
http://localhost:11434/v1.
Kula maseva, i-WERM ithumela i-temperature, i-top_p, kanye ne-max_tokens. I-API esesitayeleni se-OpenAI ayifaki isijeziso sokuphinda esisetshenziswa iklayenti le-Ollama, ngakho leyo nketho iyashiywa. Uma iseva yakho idinga ukuqinisekiswa, setha i-variable yemvelo ethi WERM_API_KEY.
Hlola ukuqondisa ngaphandle kokuxhumana nemodeli
Sebenzisa umyalo we-steer ukuze ubone ukuthi i-WERM iwuhumusha kanjani umlayezo:
node src/cli.mjs steer "why is my code broken?"Umyalo uphrinta izisusa ezicatshangelwe, imodi yamanje, izinketho eziqondene nemodeli, kanye ne-system prompt. Umphumela ungafaka izisusa ezifana ne-nose-touch ne-noxious, imodi ye-reversing, kanye namanani okusampula e-Ollama namaklayenti ahambisana ne-OpenAI.
Lo myalo ongaxhunyiwe ku-inthanethi uwusizo uma uthuthukisa ukuhlanganisa, ngoba ukuvumela ukuthi uhlole indlela yokuqondisa ngaphandle kokuqala iseva yemodeli.
Sebenzisa i-WERM kusuka ku-JavaScript
Inethiwekhi eyinhloko nezinsiza zokuqondisa ziyatholakala njengamamojula e-ES. Isibonelo esilandelayo silayisha i-connectome, silungise inethiwekhi, sisebenzise izikhuthazi ezithathwe emlayezweni, bese sifunda amapharamitha okuqondisa avelayo:

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());
// Send options and systemPrompt(mode) to your local engine.Ucingo lokuqala lwe-worm.run(1) luvumela inethiwekhi ukuthi izinze. Ngemva kokuba umbhalo uguqulwe waba yizikhuthazi, i-applyStimuli ishintsha isimo sezinzwa, bese okunye ukusebenzisa kunikeza inethiwekhi isikhathi sokuphendula. I-readout ibe isidluliselwa ku-steer, ebuyisa izinketho zesampula kanye nemodi. Sebenzisa i-systemPrompt(mode) ukuze uthole umyalo wethoni ohambisanayo.
Phinda usebenzise izivivinyo
Indawo yokugcina ikhodi iqukethe imibhalo yokushanela amapharamitha, ukuqhathanisa namamodeli angenalutho, kanye nokuhlolwa kwenkumbulo kohlobo lwe-reservoir:
npm run sweep
npm run experimentsLena miyalo ibhala imiphumela ku-docs/results/, isebenzisa wonke ama-CPU cores atholakalayo, futhi ithatha imizuzu embalwa.
Okutholakele okubhaliwe kubika ukuthi ukuthintwa komsila kuyiphushela kakhulu inethiwekhi phambili, kanti ukuthintwa kwekhala kuyiphushela emuva, futhi kokubili kudlula ukuthintwa okungahleliwe okungu-100 kobukhulu obufanayo esivivinyweni ngasinye. Ukuthintwa kwekhanda kudala impendulo encane kuphela ebuyela emuva, kanti isikhuthazi esiyingozi asenzi kangcono kunokuthintwa okungahleliwe. Amanethiwekhi axubile namanethiwekhi angahleliwe ngokuvamile ayahluleka ukufana nomehluko wangempela wenethiwekhi phakathi kwekhanda nomsila, nakuba ukuxhunywa kwangempela kwenza kabi kancane kunezinguqulo ezixubile ekuhlolweni kwenkumbulo.
Umthelela wokuqondisa ekuphumeni kwemodeli yolimi awukakalinganiswa. Umbhalo wokuhlola uyatholakala, kodwa ukusebenzisa imodeli yangempela akukaqedwa.
Hlola ukuqondisa
Ukuze ubuke kuqala ukuhlola okuhleliwe ngaphandle kokuxhumana no-Ollama, sebenzisa:
node scripts/steer-eval.mjs --dry-run --limit 5Ukuze wenze ukuhlola kwangempela usebenzisa imodeli yendawo ye-Ollama, sebenzisa:
node scripts/steer-eval.mjs --model llama3.2Umbhalo uqhathanisa izilungiselelo ezizenzakalelayo, izilungiselelo ezikhiqizwe yi-WERM, kanye nezilungiselelo ezingahleliwe emiyalweni engu-200. Inketho ye-dry-run iwusizo ekuhloleni amapharamitha ahleliwe ngaphambi kokuqala ukuhlola okuncike kumodeli.
Yakha kabusha idatha ye-genome ne-connectome
Amamephu e-genome
Ukuze ulande i-genome eyisithenjwa futhi ukhiqize kabusha amamephu we-GC kanye nobuningi bezakhi zofuzo, sebenzisa:
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.gzUkulanda i-genome kungaba cishe ngu-100 MB, kanti ukulanda izichasiselo kungaba cishe ngu-10 MB. Amafayela alandiwe awafakwa ku-Git. Isayithi lingafunda futhi ifayela le-FASTA endaweni ukuze lidwebe imephu ye-GC; idatha ayilayishwa kwenye indawo.
Ifayela le-connectome
Ukuze wakhe kabusha i-data/connectome.json, dala indawo ebonakalayo ye-Python, faka ingobo yomlando yephakheji edingekayo, yivule, bese usebenzisa umbhalo wokwakha:
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/dataYakha futhi uhlole isayithi
Isayithi elide eliskrolwayo eliku-site/ liqukethe inkambu yesibungu yamaphikseli ekhiqizwayo, iglobe ye-connectome ebukhoma, i-genome edwetshwe ngokwesikali, kanye namanothi achazayo. Isayithi lisebenzisa ikhodi efanayo nemodeli yomugqa womyalo.
Yakha ikhasi ngokusebenzisa:
npm run build:siteLokhu kubhala ku-site/index.html. Setha i-GITHUB_URL noma i-SITE_URL ukuze wenze ngendlela oyifisayo izixhumanisi ekhasini. I-Netlify isebenzisa inqubo efanayo yokwakha.
Qalisa ukuhlolwa kwendawo yokugcina ikhodi ngokusebenzisa:
npm test
npm run check
npm ci && npx playwright install chromium && npm run test:siteIsethi yokuhlola iqukethe ukuhlolwa kweyunithi okungu-36. Ukuhlola okwengeziwe kuqinisekisa imithetho yephrojekthi futhi kuqhuba ukuhlolwa okufushane kwesiphequluli esingenaso isibonisi. Ukuhlanganiswa okuqhubekayo kuqhuba ukuhlola ku-Node.js 20 no-22.
Hlola ukwakheka kwephrojekthi
data/connectome.jsoniqukethe ama-neuron nokuxhumana.src/network.mjsisebenzisa imodeli ye-neuron.src/reflex.mjsiqukethe ukuhlolwa kwama-reflex nokuqhathanisa kokucaciseka.src/graphs.mjsidala izinhlobo zokuxhunywa ezixubile nezihleliwe.src/steer.mjsihlanganisa isimo sesibungu nezilungiselelo z imodeli nethoni.src/ollama.mjskanye ne-src/openai.mjszisebenzisa amaklayenti amamodeli endawo.src/cli.mjsinikeza imiyalo ye-sim,connect, kanye ne-steer.scripts/iqukethe imibhalo yedatha, izivivinyo, ukuqinisekisa, kanye nokwakha isayithi.docs/RESULTS.mdiqopha imiphumela elinganisiwe, kanti i-docs/ARCHITECTURE.mdichaza imodeli kanye ne-readout.
Imikhawulo ebalulekile
I-WERM incane ngamabomu futhi ayikona ukulingisa okuphelele kwezinto eziphilayo. Ayinayo imisipha, i-physics yomzimba, ama-neuropeptide, noma ukufunda, futhi ayikaqhathaniswa nokuqoshwa kwezibungu zangempela. Ukuziphatha kwayo akufanele kuhunyushwe njengesibikezelo salokho okungenziwa yisibungu sangempela.
Isendlalelo sokuqondisa naso asinikezi imodeli yolimi amakhono amasha, futhi umthelela waso ezimpendulweni zemodeli awukakalinganiswa. Ukuze kutholakale ukulingisa kwe-biophysical okuthembeke kakhulu, i-README incoma i-c302 ye-OpenWorm. I-WERM yakhelwe ukuba ibe ncane ngokwanele ukuthi ihlolwe futhi iguqulwe ntambama eyodwa.
Isiphetho
I-WERM inikeza indlela ewusizo yokuhlola umdwebo wangempela wokuxhumana kwe-C. elegans ngaphandle kokudinga inqwaba enkulu yokulingisa. Qala nge-CLI ye-Node.js, uhlole izisusa zokuthintwa, uhlole amapharamitha okuqondisa akhiqiziwe, bese uxhuma inethiwekhi ku-Ollama noma kwenye iseva yasendaweni ehambisana ne-OpenAI. Kusukela lapho, imibhalo efakiwe ikuvumela ukuthi uphinde wenze izivivinyo, wakhe kabusha imikhiqizo yedatha yezinto eziphilayo, futhi uguqule isendlalelo sokuqondisa sihambisane nokugeleza komsebenzi wakho we-AI wasendaweni.
