🚀 Coba Zilliz Cloud, Milvus yang sepenuhnya terkelola, secara gratis—rasakan performa 10x lebih cepat! Coba Sekarang>>

milvus-logo
LFAI

Pendahuluan

  • Scenarios
February 06, 2020
Shiyu Chen

Pendahuluan

Penemuan obat, sebagai sumber inovasi obat, merupakan bagian penting dari penelitian dan pengembangan obat baru. Penemuan obat diimplementasikan dengan pemilihan dan konfirmasi target. Ketika fragmen atau senyawa utama ditemukan, senyawa serupa biasanya dicari di perpustakaan senyawa internal atau komersial untuk menemukan hubungan struktur-aktivitas (SAR), ketersediaan senyawa, sehingga mengevaluasi potensi senyawa utama untuk dioptimalkan menjadi senyawa kandidat.

Untuk menemukan senyawa yang tersedia di ruang fragmen dari pustaka senyawa berskala miliaran, sidik jari kimia biasanya diambil untuk pencarian substruktur dan pencarian kemiripan. Namun, solusi tradisional ini memakan waktu dan rentan terhadap kesalahan dalam hal sidik jari kimia berdimensi tinggi berskala miliaran. Beberapa senyawa potensial juga dapat hilang dalam proses tersebut. Artikel ini membahas penggunaan Milvus, sebuah mesin pencari kemiripan untuk vektor berskala masif, dengan RDKit untuk membangun sebuah sistem pencarian kemiripan struktur kimia berkinerja tinggi.

Dibandingkan dengan metode tradisional, Milvus memiliki kecepatan pencarian yang lebih cepat dan cakupan yang lebih luas. Dengan memproses sidik jari kimia, Milvus dapat melakukan pencarian substruktur, pencarian kemiripan, dan pencarian yang tepat dalam pustaka struktur kimia untuk menemukan obat yang berpotensi tersedia.

Gambaran umum sistem

Sistem ini menggunakan RDKit untuk menghasilkan sidik jari kimia, dan Milvus untuk melakukan pencarian kemiripan struktur kimia. Kunjungi https://github.com/milvus-io/bootcamp/tree/master/solutions/molecular_similarity_search untuk mempelajari lebih lanjut tentang sistem ini.

1-system-overview.png gambaran-sistem-1.png

1. Menghasilkan sidik jari kimia

Sidik jari kimia biasanya digunakan untuk pencarian substruktur dan pencarian kemiripan. Gambar berikut ini menunjukkan daftar berurutan yang diwakili oleh bit. Setiap digit mewakili unsur, pasangan atom, atau gugus fungsi. Struktur kimia adalah C1C(=O)NCO1.

2-identifying-patterns-molecules.png 2-mengidentifikasi-pola-molekul.png

Kita dapat menggunakan RDKit untuk menghasilkan sidik jari Morgan, yang mendefinisikan radius dari atom tertentu dan menghitung jumlah struktur kimia dalam kisaran radius untuk menghasilkan sidik jari kimia. Tentukan nilai yang berbeda untuk jari-jari dan bit untuk mendapatkan sidik jari kimia dari struktur kimia yang berbeda. Struktur kimia direpresentasikan dalam format SMILES.

from rdkit import Chem
mols = Chem.MolFromSmiles(smiles)
mbfp = AllChem.GetMorganFingerprintAsBitVect(mols, radius=2, bits=512)
mvec = DataStructs.BitVectToFPSText(mbfp)

2. Mencari struktur kimia

Kita kemudian dapat mengimpor sidik jari Morgan ke dalam Milvus untuk membangun basis data struktur kimia. Dengan sidik jari kimia yang berbeda, Milvus dapat melakukan pencarian substruktur, pencarian kemiripan, dan pencarian yang tepat.

from milvus import Milvus
Milvus.add_vectors(table_name=MILVUS_TABLE, records=mvecs)
Milvus.search_vectors(table_name=MILVUS_TABLE, query_records=query_mvec, top_k=topk)

Memeriksa apakah suatu struktur kimia mengandung struktur kimia lain.

Mencari struktur kimia yang serupa. Jarak Tanimoto digunakan sebagai metrik secara default.

Memeriksa apakah struktur kimia yang ditentukan ada. Jenis pencarian ini membutuhkan kecocokan yang tepat.

Menghitung sidik jari kimia

Jarak Tanimoto sering digunakan sebagai metrik untuk sidik jari kimia. Dalam Milvus, jarak Jaccard sesuai dengan jarak Tanimoto.

3-computing-chem-fingerprings-table-1.png 3-menghitung-sidik-jari-kimia-tabel-1.png

Berdasarkan parameter sebelumnya, komputasi sidik jari kimia dapat digambarkan sebagai:

4-computing-chem-fingerprings-table-2.png 4-computing-chem-fingerprings-table-2.png

Kita dapat melihatnya di 1- Jaccard = Tanimoto. Di sini kita menggunakan Jaccard di Milvus untuk menghitung sidik jari kimia, yang sebenarnya konsisten dengan jarak Tanimoto.

Demo sistem

Untuk lebih mendemonstrasikan bagaimana sistem ini bekerja, kami telah membuat sebuah demo yang menggunakan Milvus untuk mencari lebih dari 90 juta sidik jari kimia. Data yang digunakan berasal dari ftp://ftp.ncbi.nlm.nih.gov/pubchem/Compound/CURRENT-Full/SDF. Antarmuka awal terlihat sebagai berikut:

5-system-demo-1.jpg 5-sistem-demo-1.jpg

Kita dapat mencari struktur kimia tertentu dalam sistem dan mengembalikan struktur kimia yang serupa:

6-system-demo-2.gif 6-system-demo-2.gif

Kesimpulan

Pencarian kemiripan sangat diperlukan dalam sejumlah bidang, seperti gambar dan video. Untuk penemuan obat, pencarian kemiripan dapat diterapkan pada basis data struktur kimia untuk menemukan senyawa yang berpotensi tersedia, yang kemudian dikonversi menjadi benih untuk sintesis praktis dan pengujian di tempat. Milvus, sebagai mesin pencari kemiripan sumber terbuka untuk vektor fitur berskala masif, dibangun dengan arsitektur komputasi heterogen untuk efisiensi biaya terbaik. Pencarian vektor berskala miliaran hanya membutuhkan waktu milidetik dengan sumber daya komputasi minimum. Dengan demikian, Milvus dapat membantu mengimplementasikan pencarian struktur kimia yang akurat dan cepat di bidang-bidang seperti biologi dan kimia.

Anda dapat mengakses demo dengan mengunjungi http://40.117.75.127:8002/, dan jangan lupa untuk mengunjungi GitHub kami di https://github.com/milvus-io/milvus untuk mempelajari lebih lanjut!

Try Managed Milvus for Free

Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

Get Started

Like the article? Spread the word

Terus Baca