Главная Юзердоски Каталог Трекер NSFW Настройки

Программирование

Ответить в тред Ответить в тред
Check this out!
<<
Назад | Вниз | Каталог | Обновить | Автообновление | 24 3 15
Ученик старшей школы написал на Расте движок для моделирования макромолекул и фронт на HTML/JS. Ядро Аноним 25/02/26 Срд 00:56:14 3651297 1
1000302645.jpg 111Кб, 2500x1406
2500x1406
Ученик старшей школы написал на Расте движок для моделирования макромолекул и фронт на 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
Аноним 25/02/26 Срд 00:58:28 3651299 2
>>3651297 (OP)
3млн атомов*, не молекул

Опечатался
Аноним 25/02/26 Срд 01:56:19 3651300 3
>>3651297 (OP)
>Ученик старшей школы написал на Расте
Такой маленький, а уже пидараст
Аноним 25/02/26 Срд 02:08:15 3651304 4
Аноним 25/02/26 Срд 02:37:20 3651310 5
>>3651297 (OP)
А написанное на С++ обязательно OOM вызывает и падает постоянно?
Аноним 25/02/26 Срд 02:50:42 3651313 6
>>3651310
Нет, но риск возникновения подобного бага вследствие некорректно написанного кода выше.
Аноним 25/02/26 Срд 06:54:14 3651337 7
Интересный проект. Вот мой разбор с доказательствами.

---

## 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 — реальный стек для производительных инструментов анализа данных с браузерным фронтендом. Паттерн применим и за пределами биологии.
Аноним 25/02/26 Срд 06:59:56 3651339 8
>>3651337
Тем самым ОП доказал что даже высер школьника лучше 99% проектов местных крудошлепов на джаве и жс
Аноним 25/02/26 Срд 08:14:32 3651352 9
image.png 79Кб, 782x505
782x505
>>3651297 (OP)
>ядро было написано вручную
Смотрю я на эти комменты, и у меня появляются сомнения.
Аноним 25/02/26 Срд 10:54:22 3651430 10
>>3651352
Ну да, очевидно, что он использовал LLM для помощи в разработке. Плохо что ли? Хорошо! Не умаляет его заслуг. Он сделал реально полезную штуку, в отличие от большинства макак здесь.
Аноним 25/02/26 Срд 11:02:23 3651436 11
>>3651352
У парня достаточно богатая история коммитов на Гитхабе, в том числе были даже ПР в ядро языка Раст. Он там пишет, что использует ЧатГПТ только для переводов своих оригинальных текстов на английский язык, тот и добавляет лишние ИИ символы в переведенный текст. В целом никто не жаловался.
Аноним 25/02/26 Срд 12:15:56 3651486 12
>Почему вы так не можете?
Пачиму не могём? Могём! Я когда в детском саду был, ходил в местный ящик на экскурсию, нам там показывали в реальном времени печать нового поколения БОВ на устаревшем пайплайне "ядро на смеси бэйсика, фортрана и кобола+опенмп для распаралеливания на какой-то секретной современной модификации Сетуни+стандартный ещё советский 4D-биопринтер", мы так и не дождались, пока порошок начнет печататься. Вспомнил, что в жаву как раз завезли форкжойн и параллельные кал лекшаны, ну и сказал местному куратору, типа магу ускорить. Он меня на понт взял, пришлось ковыряться.
Пришёл домой и переписал их пайплайн в однострочник: var molecules=rawData.parallelStream().map(Cleaner::clean()).map(Repairer::repair()).map(Hydrogener::hydrogenate()).map(Waterer::addWaterBox());. Ну, типа как rayon, только на норм ЯП и встроенный.
Потом крч уже в школе грааль допилили и я через все его улучшения прогнал и всё стало работать за сублинейное время.
Ес-но, все наработки были строго засекречены, так что сам понимаешь никакого открытого репозитория показать не могу...
Аноним 25/02/26 Срд 17:50:02 3651672 13
>>3651486
>БОВ
Капец, уже в детском саду детей готовят к большой войне?
Аноним 25/02/26 Срд 18:58:06 3651712 14
>>3651310
Нахуй нужен C++, когда есть C?
Аноним 25/02/26 Срд 18:58:52 3651714 15
>>3651313
Что делать, если пишешь системный софт и у тебя ансейф через ансейф?
Аноним 25/02/26 Срд 19:07:28 3651718 16
>>3651714
Не быть сидурачком
Аноним 25/02/26 Срд 20:22:39 3651744 17
>>3651712
Достаточный уровень абстракций для написания действительно больших систем.
Была бы условная Krita написана на С - ой как бы все охуели её пилить.
Ты же знаешь, что С это write-only язык и он совершенно нечитаем?
Аноним 25/02/26 Срд 20:25:39 3651747 18
>>3651313
Так пишите корректно
Аноним 25/02/26 Срд 20:56:03 3651758 19
>>3651744
>что С это write-only язык и он совершенно нечитаем
если ты соевый растопедик и долбоеб, то безусловно
Аноним 26/02/26 Чтв 00:34:53 3651828 20
Почекал я репу, не буду я много пиздеть, но сколько либо читавший код сгенерированный ии, тут прям видно, что и сама либа написано с помощи ИИ, много бесполезных коментов и комитов, где иишка челу не правильно генерировала методы с района. Школотрон так-то на подсосе в калтехе в лабе материаловедения,он талантив раз туда попал, но явно не в кодинге.
Аноним 26/02/26 Чтв 06:29:34 3651862 21
>>3651747
Что-то уровня "корректно живите, а рак желудка не получайте"
Аноним 03/03/26 Втр 07:37:00 3655217 22
>>3651828
Он вполне мог сам написать весь код и попросить нейронку его зарефакторить. Нейронки не особо хорошо пишут оптимальные алгоритмы под конкретные задачи
Аноним 03/03/26 Втр 07:56:07 3655225 23
OIP-3075015507.jpg 26Кб, 474x465
474x465
>>3655217
>Он вполне мог сам написать весь код и попросить нейронку его зарефакторить
Аноним 03/03/26 Втр 08:11:55 3655228 24
>>3655225
?
Я так и делаю, когда пишу что-то сложное, типа работы с памятью на cuda. Накидал структуру, попросил улучшить code style - профит

Я посмотрел его код, нейронка в жизни этот o(n) алгоритм под его задачу не написала бы
Настройки X
Ответить в тред X
15000
Добавить файл/ctrl-v
Стикеры X
Избранное / Топ тредов