#00 Квантові обчислення і дизайн протеїнів, D-Wave
Сьогодні закінчується конференція Practical Quantum Computing q2b.qcware.com у м. Санта-Клара. Приємно усвідомлювати, що застосування квантових обчислювальних машин вже дає практичні результати. Ще приємніше знати, що маєш відношення до демо, які там презентувалися.
У прикладі нижче я спробував описати принцип, використаний в дослідженні для демонстраційного «Orquestra quantum-enabled workflow» проекту.
Наукова проблема
Проблема дизайну білків (протеїнів) із заданими властивостями є цікавою як з точки зору біохімії так і з суто фінансових міркувань. Біохіміки зацікавлені в отриманні ланцюжків амінокислот із наперед заданими властивостями. Це може бути наприклад вакцина, або каталізатор для хімічної промисловості. Фінансові кола зацікавлені в зменшенні бюджету таких досліжень і часу виходу на ринок. Наразі час розробки 1 протеїну може сягати
Основною перепоною є не кількість базових амінокислот, їх лише 20 (за альтернативною класифікацією 26). Всі вони можуть бути синтезовані в лабораторії. Амінокислоти добре вивчені на даний момент і їхні властивості є передбачуваними, https://uk.wikipedia.org/wiki/Амінокислоти. Проблема виникає через наявність «ротамерів» практично в кожної амінокислоти. Ротамер — це варіант амінокислоти із різними кутами повороту її складових частин — гідроксильних груп, кислотних залишків, окремих атомів.
Наприклад з точки зору ланцюжка амінокислот, білок людини «Peroxisome proliferator-activated receptor gamma», 3HON завжди має FASTA послідовність GSHMAEISSDIDQLNPESA... (дані про білок з www.rcsb.org/structure/3HO0), тобто Гліцин-Серин-Гистидин-Метіонін-..., кожна латинська літера в ланцюжку позначає амінокислоту.
Квантові обчислювачі D-Wave
Канадська компанія
На апаратному рівні квантові обчислення в системах
Свої процесори
На сьогоднійшній день найпотужніший QPU від
Варто зазначити, що в класі задач оптимізації, пошук наближеного глобального оптимуму більш доцільний, ніж пошук точного рішення. У випадку, коли ми працюємо із квантовим оператором енергії системи (Гамільтоніан), поле пошуку рішення є надзвичайно великим і експотенціально зростає із зростанням кількості параметрів. Існує приказка, що «Hilbert space is inda big place» — «Гільбертів простір це велике місце».
D-Wave Leap: 1 хвилина це багато
IDE Leap об’єднує редактор коду, консоль і відладчик. Проект можна створити з нуля, або працювати із GitHub репозиторієм. Якщо репозиторій не ваш, він буде автоматично склонований. Наприклад, наступне посилання відкриє IDE із проектом квантового судоку: ide.dwavesys.io/...com/dwave-examples/sudoku
Для нас більш цікаве використання
Представлення проблеми
Для запуску задачі на апаратній частині
Наприклад є зарача розрахувати комбінацію амінокислот, яка буде валідною з біологічної точки зору і утворить стабільни білок із заданими властивостями. Ця наукова проблема називається дизайном згортання протеїна і є важливою з точки зору практичного застосування. У просторі можливих рішень людство наразі дослідило <1% валідних комбінацій амінокислот. Зазвичай із застосуванням сучасних лабораторій і обладнання дизайн одного протеїна займає ~1-2 роки із бюджетом $10-20M.
Приклад представлення проблеми дизайну протеїна у вигляді BQM:
import numpy as np
import dimod
from hybrid.reference.kerberos import KerberosSampler
from dwave.system import LeapHybridSampler
from dwave.system import DWaveSampler
energy_matrix = np.array(
[[-100.0, 50000, 50000, -1121.0, 1122.0, 1123.0, -1124.0, 1131.0, 1132.0, -1133.0], [0, 200.0, 50000, 1221.0, 1222.0, 1223.0, 1224.0, 1231.0, 1232.0, -1233.0], [0, 0, -300.0, -1321.0, 1322.0, -1323.0, 1324.0, 1331.0, 1332.0, 1333.0], [0, 0, 0, 400.0, 50000, 50000, 50000, -2131.0, 2132.0, -2133.0],
[0, 0, 0, 0, -500.0, 50000, 50000, 2231.0, -2232.0, 2233.0],
[0, 0, 0, 0, 0, 600.0, 50000, -2331.0, 2332.0, -2333.0],
[0, 0, 0, 0, 0, 0, -700.0, 2431.0, -2432.0, 2433.0],
[0, 0, 0, 0, 0, 0, 0, 800.0, 50000, 50000 ],
[0, 0, 0, 0, 0, 0, 0, 0, -900.0, 50000 ],
[0, 0, 0, 0, 0, 0, 0, 0, 0, 10.0 ]]
)
variables = [
(0, 0), (0, 1), (0, 2),
(1, 0), (1, 1), (1, 2), (1, 3),
(2, 0), (2, 1), (2, 2)
]
bqm = dimod.BinaryQuadraticModel.from_numpy_matrix(energy_matrix, variables)
Трикутна матриця містить енергії взаємодії ротамерів амінокислот одна з одною, і власні енергії ротамерів (головна діагональ). Енергії для реальних задач біохімії отримують використовуючи пакети на кшталт Rosetta.
У наведеному прикладі білок має ланцюжок з 3 амінокислот, і для кожної з них маємо наступні конфігурації ротамерів:
- 3 ротамери — для амінокислоти № 1
- 4 ротамери — для амінокислоти № 2
- 3 ротамери — для амінокислоти № 3
Якщо дивитися на матрицю, то перші 3 клонки відносяться до амінокислоти № 1, наступні 4 колонки — до амінокислоти № 2 і т.д. Аналогічно справедливо і для стовпців.
Для запуску моделі потрібно вибрати оптимізатор і викликати метод «sample()». У прикладі нижче наведено використання декількох доступних класів оптимізаторів, «семплерів»:
solution = KerberosSampler().sample(bqm, max_iter=10, convergence=3)
print("[KERBEROS] Energy:", solution.first.energy)
print("[KERBEROS] Solution:", solution.first)
hybrid = LeapHybridSampler().sample(bqm)
print("[HYBRID] Energy:", hybrid.first.energy)
print("[HYBRID] Solution:", hybrid.first)
dwave = DWaveSampler().sample(bqm)
print("[DWAVE] Energy:", dwave.first.energy)
print("[DWAVE] Solution:", dwave.first)
Семплер приймає задачу у форматі двійкової квадратичної моделі (BQM) або дискретної квадратичної моделі (DQM) і повертає результат пошуку із поля можливих рішень. Оптимізатор зазвичай намагається знайти мінімальні значення, але також може робити вибірку з розподілу, визначеного науковою проблемою.
На десерт
Наведена в прикладі наукова задача дизайну протеїну є лише однією із корисних застосувань квантових комп’ютерів. Ряд компаній, не лише
Репозиторій із кодом прикладу: github.com/vsergeyev/simanneal
Для запуску проекту у IDE: ide.dwavesys.io/...b.com/vsergeyev/simanneal
10 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів