1000302645.jpg111 Кб, 2500x1406
Ученик старшей школы написал на Расте движок для моделирования макромолекул и фронт на HTML/JS. Ядро 3651297 В конец треда | Веб
Ученик старшей школы написал на Расте движок для моделирования макромолекул и фронт на HTML/JS. Ядро моделирует 3млн молекул за 600мс. Почему вы так не можете?

ИИ был использован только для помощи в разработке фронта, ядро было написано вручную.

А потом неосиляторы ИТТ визжат что с местным дипломом ПТУ не могут найти работу. А вы сначала добейтесь чего-то подобного, чтобы ещё до вката в вуз, ещё за пару лет до стажерства и даже за пару лет до вката в джуны написать подобный инженерный софт, а не очередной CRUD сайтик с заметками на NodeJS.

Вот оригинальный пост школьника:

"Привет, ребята, я ученик старшей школы. Меня ужасно бесили стандартные инструменты (в основном это просто Python-обёртки вокруг старого C++ кода). Они очень медленные, жрут слишком много RAM, а иногда вообще случайно падают с segfault, если скормить им кривой PDB-файл.

Поэтому, очевидно, я решил переписать это на Rust, лол.

Называется BioForge. Насколько я знаю, это первый полностью написанный на Rust open-source crate и CLI для подготовки белков и ДНК/РНК. По сути, он берёт сырые экспериментальные структуры, очищает их, восстанавливает недостающие тяжёлые атомы, добавляет водороды в зависимости от pH и строит водные боксы вокруг них.

Поскольку это Rust, производительность, если честно, просто безумная по сравнению с тем, чем обычно пользуются биологи. Для многопоточности я использовал rayon, а для математики — nalgebra. Утечек памяти нет вообще, и он буквально никогда не ловит OOM, даже на огромных системах. Если посмотреть на бенчмарк на второй картинке, масштабирование строго O(n). Он прогрызает вирусный капсид на 3 миллиона атомов примерно за 600 миллисекунд.

И ещё, самое крутое в отсутствии странных C-bindings — это WASM. Я скомпилировал весь пайплайн обработки в WebAssembly и сделал для него фронтенд на Web-GLU. Этот движок можно прямо в браузере запустить здесь: bio-forge.app.

Crate уже есть на crates.io (cargo add bio-forge), а репозиторий тут: github.com/TKanX/bio-forge.

Я всё ещё учусь, так что если кто-то из опытных Rust-разработчиков захочет посмотреть репозиторий, разнести мою структуру кода в пух и прах или подсказать, как ещё лучше оптимизировать — буду очень благодарен!

EDIT: Огромный респект мейнтейнерам rayon и nalgebra.

Особенно rayon — модель владения в Rust это просто чит-код для конкурентности. Масштабирование O(n) в BioForge завязано на том, что огромные белки можно распараллеливать по потокам без каких-либо глобальных блокировок."

https://www.reddit.com/r/rust/s/YtTGbX57qj
2 3651299
>>51297 (OP)
3млн атомов*, не молекул

Опечатался
3 3651300
>>51297 (OP)

>Ученик старшей школы написал на Расте


Такой маленький, а уже пидараст
4 3651304
>>51300
а чего добился ты?
5 3651310
>>51297 (OP)
А написанное на С++ обязательно OOM вызывает и падает постоянно?
6 3651313
>>51310
Нет, но риск возникновения подобного бага вследствие некорректно написанного кода выше.
7 3651337
Интересный проект. Вот мой разбор с доказательствами.

---

## BioForge — чистый Rust для молекулярной биологии: применимо ли это?

Источник: [Reddit r/rust](https://www.reddit.com/r/rust/comments/1rchecj/), [GitHub TKanX/bio-forge](https://github.com/TKanX/bio-forge), [docs.rs/bio-forge](https://docs.rs/bio-forge/latest/bio_forge/)

---

### Что это такое

Школьник (!) написал на чистом Rust тулкит для подготовки биомолекулярных структур к симуляции:
- читает PDB/mmCIF/MOL2 файлы
- «лечит» недостающие атомы
- расставляет водородные атомы с учётом pH
- строит водяную оболочку (solvation)
- строит топологию (связи между атомами)

Заявленное: 3 миллиона атомов за ~600 мс, O(n) масштабирование.

---

### Что сделано технически грамотно

Параллелизм через rayon без локов. Модель владения Rust гарантирует отсутствие гонок данных на уровне компилятора — rayon просто разбивает структуры по потокам без `Mutex`. Это реально выделяет его на фоне Python-обёрток над C++.

WASM компиляция. Весь пайплайн скомпилирован в WebAssembly, есть npm-пакет `bio-forge-wasm`. Это нетривиально — без FFI-зависимостей от C/C++ кода это действительно стало возможным только потому, что всё написано на Rust.

Чистый API без глобального состояния. Судя по README/ARCHITECTURE, нет глобальных мутируемых синглтонов — это важно для библиотечного использования.

---

### Честные ограничения

Версия 0.4.0, автор — школьник, 94 звезды. Это не production-ready для серьёзных вычислений. Ни один рецензируемый бенчмарк с независимым воспроизведением я не нашёл — только скриншот из поста на Reddit. Заявление «первый pure-Rust движок» — скорее всего правда, но непроверено.

Конкурентная ниша. Существуют [OpenMM](https://openmm.org/) (Python/C++/CUDA), [MDAnalysis](https://www.mdanalysis.org/), [GROMACS](https://www.gromacs.org/) — там за десятилетия накоплены форс-поля, валидация, интеграция с HPC. Rust-проект пока не имеет этого багажа.

Поиск не нашёл отдельного проекта `caltechmsc/bio-forge` — это может быть форк или однофамилец, подтверждения связи нет.

---

### Применимо ли?

Да, если: ты хочешь встроить препаративный пайплайн в Rust-приложение, нужен WASM/браузерный молекулярный вьювер, или нужна быстрая обработка структур без зависимости от Python-окружения.

Нет, если: нужна продакшн-симуляция с устоявшимися форс-полями (AMBER, CHARMM), воспроизводимость уровня науки, или поддержка GPU. Там пока нечем конкурировать с GROMACS/OpenMM.

Интересный прецедент для тебя как разработчика: это хорошая демонстрация того, что Rust + rayon + WASM — реальный стек для производительных инструментов анализа данных с браузерным фронтендом. Паттерн применим и за пределами биологии.
7 3651337
Интересный проект. Вот мой разбор с доказательствами.

---

## BioForge — чистый Rust для молекулярной биологии: применимо ли это?

Источник: [Reddit r/rust](https://www.reddit.com/r/rust/comments/1rchecj/), [GitHub TKanX/bio-forge](https://github.com/TKanX/bio-forge), [docs.rs/bio-forge](https://docs.rs/bio-forge/latest/bio_forge/)

---

### Что это такое

Школьник (!) написал на чистом Rust тулкит для подготовки биомолекулярных структур к симуляции:
- читает PDB/mmCIF/MOL2 файлы
- «лечит» недостающие атомы
- расставляет водородные атомы с учётом pH
- строит водяную оболочку (solvation)
- строит топологию (связи между атомами)

Заявленное: 3 миллиона атомов за ~600 мс, O(n) масштабирование.

---

### Что сделано технически грамотно

Параллелизм через rayon без локов. Модель владения Rust гарантирует отсутствие гонок данных на уровне компилятора — rayon просто разбивает структуры по потокам без `Mutex`. Это реально выделяет его на фоне Python-обёрток над C++.

WASM компиляция. Весь пайплайн скомпилирован в WebAssembly, есть npm-пакет `bio-forge-wasm`. Это нетривиально — без FFI-зависимостей от C/C++ кода это действительно стало возможным только потому, что всё написано на Rust.

Чистый API без глобального состояния. Судя по README/ARCHITECTURE, нет глобальных мутируемых синглтонов — это важно для библиотечного использования.

---

### Честные ограничения

Версия 0.4.0, автор — школьник, 94 звезды. Это не production-ready для серьёзных вычислений. Ни один рецензируемый бенчмарк с независимым воспроизведением я не нашёл — только скриншот из поста на Reddit. Заявление «первый pure-Rust движок» — скорее всего правда, но непроверено.

Конкурентная ниша. Существуют [OpenMM](https://openmm.org/) (Python/C++/CUDA), [MDAnalysis](https://www.mdanalysis.org/), [GROMACS](https://www.gromacs.org/) — там за десятилетия накоплены форс-поля, валидация, интеграция с HPC. Rust-проект пока не имеет этого багажа.

Поиск не нашёл отдельного проекта `caltechmsc/bio-forge` — это может быть форк или однофамилец, подтверждения связи нет.

---

### Применимо ли?

Да, если: ты хочешь встроить препаративный пайплайн в Rust-приложение, нужен WASM/браузерный молекулярный вьювер, или нужна быстрая обработка структур без зависимости от Python-окружения.

Нет, если: нужна продакшн-симуляция с устоявшимися форс-полями (AMBER, CHARMM), воспроизводимость уровня науки, или поддержка GPU. Там пока нечем конкурировать с GROMACS/OpenMM.

Интересный прецедент для тебя как разработчика: это хорошая демонстрация того, что Rust + rayon + WASM — реальный стек для производительных инструментов анализа данных с браузерным фронтендом. Паттерн применим и за пределами биологии.
8 3651339
>>51337
Тем самым ОП доказал что даже высер школьника лучше 99% проектов местных крудошлепов на джаве и жс
image.png79 Кб, 782x505
9 3651352
>>51297 (OP)

>ядро было написано вручную


Смотрю я на эти комменты, и у меня появляются сомнения.
10 3651430
>>51352
Ну да, очевидно, что он использовал LLM для помощи в разработке. Плохо что ли? Хорошо! Не умаляет его заслуг. Он сделал реально полезную штуку, в отличие от большинства макак здесь.
11 3651436
>>51352
У парня достаточно богатая история коммитов на Гитхабе, в том числе были даже ПР в ядро языка Раст. Он там пишет, что использует ЧатГПТ только для переводов своих оригинальных текстов на английский язык, тот и добавляет лишние ИИ символы в переведенный текст. В целом никто не жаловался.
12 3651486

>Почему вы так не можете?


Пачиму не могём? Могём! Я когда в детском саду был, ходил в местный ящик на экскурсию, нам там показывали в реальном времени печать нового поколения БОВ на устаревшем пайплайне "ядро на смеси бэйсика, фортрана и кобола+опенмп для распаралеливания на какой-то секретной современной модификации Сетуни+стандартный ещё советский 4D-биопринтер", мы так и не дождались, пока порошок начнет печататься. Вспомнил, что в жаву как раз завезли форкжойн и параллельные кал лекшаны, ну и сказал местному куратору, типа магу ускорить. Он меня на понт взял, пришлось ковыряться.
Пришёл домой и переписал их пайплайн в однострочник: var molecules=rawData.parallelStream().map(Cleaner::clean()).map(Repairer::repair()).map(Hydrogener::hydrogenate()).map(Waterer::addWaterBox());. Ну, типа как rayon, только на норм ЯП и встроенный.
Потом крч уже в школе грааль допилили и я через все его улучшения прогнал и всё стало работать за сублинейное время.
Ес-но, все наработки были строго засекречены, так что сам понимаешь никакого открытого репозитория показать не могу...
13 3651672
>>51486

>БОВ


Капец, уже в детском саду детей готовят к большой войне?
14 3651712
>>51310
Нахуй нужен C++, когда есть C?
15 3651714
>>51313
Что делать, если пишешь системный софт и у тебя ансейф через ансейф?
16 3651718
>>51714
Не быть сидурачком
17 3651744
>>51712
Достаточный уровень абстракций для написания действительно больших систем.
Была бы условная Krita написана на С - ой как бы все охуели её пилить.
Ты же знаешь, что С это write-only язык и он совершенно нечитаем?
18 3651747
>>51313
Так пишите корректно
19 3651758
>>51744

>что С это write-only язык и он совершенно нечитаем


если ты соевый растопедик и долбоеб, то безусловно
20 3651828
Почекал я репу, не буду я много пиздеть, но сколько либо читавший код сгенерированный ии, тут прям видно, что и сама либа написано с помощи ИИ, много бесполезных коментов и комитов, где иишка челу не правильно генерировала методы с района. Школотрон так-то на подсосе в калтехе в лабе материаловедения,он талантив раз туда попал, но явно не в кодинге.
21 3651862
>>51747
Что-то уровня "корректно живите, а рак желудка не получайте"
22 3655217
>>51828
Он вполне мог сам написать весь код и попросить нейронку его зарефакторить. Нейронки не особо хорошо пишут оптимальные алгоритмы под конкретные задачи
OIP-3075015507.jpg26 Кб, 474x465
23 3655225
>>55217

>Он вполне мог сам написать весь код и попросить нейронку его зарефакторить

24 3655228
>>55225
?
Я так и делаю, когда пишу что-то сложное, типа работы с памятью на cuda. Накидал структуру, попросил улучшить code style - профит

Я посмотрел его код, нейронка в жизни этот o(n) алгоритм под его задачу не написала бы
25 3663980
О
26 3663990
>>55228

>что-то сложное, типа работы с памятью на cuda


>cudaMalloc => cudaMemcpy => cudaFree


Невероятная сложность 100 из 10.
27 3664412
>>51828
Ну так 2k26 на дворе. Написать код = скинуть промт нейронке и получить идеальный готовый результат.
Обновить тред
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски

Скачать тред только с превьюс превью и прикрепленными файлами

Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах.Подробнее