М.Двач / Программирование

111 Кб, 2500x1406
Ученик старшей школы написал на Расте движок для моделирования макромолекул и фронт на HTML/JS. Ядро 25 фев, 00:56 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

Ответы51299513005131051352

2 25 фев, 00:58 2 3651299

>>3651297 (OP)
3млн атомов*, не молекул

Опечатался

3 25 фев, 01:56 3 3651300

>>3651297 (OP)
>Ученик старшей школы написал на Расте
Такой маленький, а уже пидараст

Ответы51304

4 25 фев, 02:08 4 3651304

>>3651300
а чего добился ты?

5 25 фев, 02:37 5 3651310

>>3651297 (OP)
А написанное на С++ обязательно OOM вызывает и падает постоянно?

Ответы5131351712

6 25 фев, 02:50 6 3651313

>>3651310
Нет, но риск возникновения подобного бага вследствие некорректно написанного кода выше.

Ответы5171451747

7 25 фев, 06:54 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 25 фев, 06:54 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 — реальный стек для производительных инструментов анализа данных с браузерным фронтендом. Паттерн применим и за пределами биологии.

Показать весь текст
Ответы51339

8 25 фев, 06:59 8 3651339

>>3651337
Тем самым ОП доказал что даже высер школьника лучше 99% проектов местных крудошлепов на джаве и жс

79 Кб, 782x505
9 25 фев, 08:14 9 3651352

>>3651297 (OP)
>ядро было написано вручную
Смотрю я на эти комменты, и у меня появляются сомнения.

Ответы5143051436

10 25 фев, 10:54 10 3651430

>>3651352
Ну да, очевидно, что он использовал LLM для помощи в разработке. Плохо что ли? Хорошо! Не умаляет его заслуг. Он сделал реально полезную штуку, в отличие от большинства макак здесь.

11 25 фев, 11:02 11 3651436

>>3651352
У парня достаточно богатая история коммитов на Гитхабе, в том числе были даже ПР в ядро языка Раст. Он там пишет, что использует ЧатГПТ только для переводов своих оригинальных текстов на английский язык, тот и добавляет лишние ИИ символы в переведенный текст. В целом никто не жаловался.

12 25 фев, 12:15 12 3651486

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

Ответы51672

13 25 фев, 17:50 13 3651672

>>3651486
>БОВ
Капец, уже в детском саду детей готовят к большой войне?

14 25 фев, 18:58 14 3651712

>>3651310
Нахуй нужен C++, когда есть C?

Ответы51744

15 25 фев, 18:58 15 3651714

>>3651313
Что делать, если пишешь системный софт и у тебя ансейф через ансейф?

Ответы51718

16 25 фев, 19:07 16 3651718

>>3651714
Не быть сидурачком

17 25 фев, 20:22 17 3651744

>>3651712
Достаточный уровень абстракций для написания действительно больших систем.
Была бы условная Krita написана на С - ой как бы все охуели её пилить.
Ты же знаешь, что С это write-only язык и он совершенно нечитаем?

Ответы51758

18 25 фев, 20:25 18 3651747

>>3651313
Так пишите корректно

Ответы51862

19 25 фев, 20:56 19 3651758

>>3651744
>что С это write-only язык и он совершенно нечитаем
если ты соевый растопедик и долбоеб, то безусловно

20 26 фев, 00:34 20 3651828

Почекал я репу, не буду я много пиздеть, но сколько либо читавший код сгенерированный ии, тут прям видно, что и сама либа написано с помощи ИИ, много бесполезных коментов и комитов, где иишка челу не правильно генерировала методы с района. Школотрон так-то на подсосе в калтехе в лабе материаловедения,он талантив раз туда попал, но явно не в кодинге.

Ответы5521764412

21 26 фев, 06:29 21 3651862

>>3651747
Что-то уровня "корректно живите, а рак желудка не получайте"

22 3 мар, 07:37 22 3655217

>>3651828
Он вполне мог сам написать весь код и попросить нейронку его зарефакторить. Нейронки не особо хорошо пишут оптимальные алгоритмы под конкретные задачи

Ответы55225

26 Кб, 474x465
23 3 мар, 07:56 23 3655225

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

Ответы55228

24 3 мар, 08:11 24 3655228

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

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

Ответы63990

25 15 мар, 02:36 25 3663980

О

26 15 мар, 05:48 26 3663990

>>3655228
>что-то сложное, типа работы с памятью на cuda
>cudaMalloc => cudaMemcpy => cudaFree
Невероятная сложность 100 из 10.

27 15 мар, 16:47 27 3664412

>>3651828
Ну так 2k26 на дворе. Написать код = скинуть промт нейронке и получить идеальный готовый результат.

Обновить тред
« /pr/В начало тредаВеб-версияНастройки/a//b//mu//s//vg/Все доски

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

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

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion