46.4kデモを予約するログイン無料で始める

Milvusに基づくDNA配列の分類

Sep 06, 20211 min read

著者 McGill大学情報学修士課程卒業。AIアプリケーションとベクトルデータベースによる類似検索に関心を持つ。オープンソースプロジェクトMilvusのコミュニティメンバーとして、推薦システムやDNA配列分類モデルのような様々なソリューションを提供し、改良してきた。挑戦を楽しみ、決してあきらめない!

はじめに

DNA配列は、遺伝子のトレーサビリティ、種の同定、病気の診断など、学術研究と実用的なアプリケーションの両方で人気のある概念である。あらゆる産業がより知的で効率的な研究手法に飢えている中、人工知能は特に生物学や医学の領域から大きな注目を集めている。ますます多くの科学者や研究者が、バイオインフォマティクスにおける機械学習や深層学習に貢献している。実験結果をより説得力のあるものにするために、一般的な選択肢の一つはサンプルサイズを増やすことである。ゲノミクスにおけるビッグデータとの連携は、ユースケースの可能性を現実のものにする。しかし、従来の配列アライメントには限界があり、大規模データには適さない。現実的にトレードオフを少なくするために、ベクター化はDNA配列の大規模データセットに適した選択である。

オープンソースのベクターデータベースであるMilvusは、大規模データに適している。核酸配列のベクターを保存し、高効率の検索を行うことができる。また、生産や研究のコスト削減にも役立つ。Milvusに基づくDNA配列分類システムは、遺伝子分類にかかる時間はわずか数ミリ秒である。さらに、機械学習における他の一般的な分類器よりも高い精度を示している。

データ処理

遺伝情報をコードする遺伝子は、4塩基[A、C、G、T]からなるDNA配列の小さな部分からできている。ヒトゲノムには約30,000の遺伝子、約30億のDNA塩基対が存在し、各塩基対には2つの対応する塩基が存在する。多様な用途をサポートするために、DNA配列は様々なカテゴリーに分類することができる。長いDNA塩基配列のデータの利用を容易にし、コストを削減するために、k-merがデータの前処理に導入されている。これにより、DNA塩基配列データをプレーンテキストに近づけることができる。さらに、ベクトル化されたデータは、データ解析や機械学習における計算を高速化することができる。

図1](https://assets.zilliz.com/1_a7469e9eac.png)

k-mer

k-mer法はDNA配列の前処理によく使われる。これは元の配列の各塩基から始まる長さkの小さな部分を抽出し、それによって長さsの長い配列を長さkの(s-k+1)短い配列に変換する。kの値を調整することで、モデルの性能が向上する。短い配列のリストは、データの読み取り、特徴抽出、ベクトル化が容易である。

**ベクトル化

DNA配列はテキストの形でベクトル化される。k-merによって変換された配列は、短い配列のリストになり、文章中の個々の単語のリストのように見える。したがって、ほとんどの自然言語処理モデルは、DNA配列データに対しても機能するはずである。モデルのトレーニング、特徴抽出、符号化にも同様の方法論が適用できる。各モデルにはそれぞれ利点と欠点があるため、モデルの選択はデータの特徴や研究目的によって異なる。例えば、CountVectorizerはBag-of-Wordsモデルであり、単純なトークン化によって特徴抽出を行う。データの長さに制限はありませんが、類似性の比較という観点からは、返される結果はあまり明らかではありません。

Milvusデモ

Milvusは非構造化データを容易に管理し、数兆のベクトルの中から最も類似した結果を平均数ミリ秒の遅延で呼び出すことができる。その類似検索は近似最近傍(ANN)検索アルゴリズムに基づいている。これらの特長により、MilvusはDNA配列のベクトルを管理するための優れた選択肢となり、バイオインフォマティクスの発展と応用を促進します。

以下に、Milvusを用いたDNA配列分類システムの構築方法を示すデモを示します。実験データセット](https://www.kaggle.com/nageshsingh/dna-sequence-dataset)には3つの生物と7つの遺伝子ファミリーが含まれている。全てのデータはk-mersによって短い配列のリストに変換されている。事前に学習されたCountVectorizerモデルを用いて、システムは配列データをベクトルにエンコードする。以下のフローチャートは、システムの構造と、挿入と検索のプロセスを示している。

図2](https://assets.zilliz.com/1_ebd89660f6.png)

このデモはMilvus bootcampでお試しください。

Milvusでは、システムがコレクションを作成し、対応するDNA配列のベクターをコレクション(有効な場合はパーティション)に挿入する。クエリー要求を受け取ると、Milvusは入力DNA配列のベクトルとデータベース中の最も類似した結果との間の距離を返す。入力塩基配列のクラスと DNA 配列間の類似性は、結果のベクター間の距離から判断することができる。

# ベクターをMilvusコレクションに挿入する (パーティション "human")
DNA_human = collection.insert([human_ids, human_vectors], partition_name='human')
# トップKの結果(パーティション "human "内)からテストベクターを検索する
res = collection.search(test_vectors, "vector_field", search_params, limit=topK, partition_names=['human'])
for results in res:
    res_ids = results.ids # トップKの結果の主キー
    res_distances = results.distances # topK結果と検索入力の距離

**DNA配列の分類 Milvusで最も類似したDNA配列を検索することで、未知のサンプルの遺伝子ファミリーを示唆し、その可能な機能を知ることができる。](https://www.nature.com/scitable/topicpage/gpcr-14047471/)このデモでは、Milvusは検索されたヒトDNA配列の遺伝子ファミリーを特定することに成功している。

図3](https://assets.zilliz.com/3_1616da5bb0.png) 図4](https://assets.zilliz.com/4_d719b22fc7.png)

**遺伝子の類似性

生物間のDNA配列の平均類似度は、そのゲノムの近さを示している。このデモでは、ヒトのデータから、チンパンジーとイヌそれぞれのDNA配列と最も類似したDNA配列を検索します。そして、平均内積距離(チンパンジーは0.97、イヌは0.70)を計算し比較することで、チンパンジーはイヌよりもヒトと類似した遺伝子を共有していることを証明している。より複雑なデータとシステム設計により、Milvusはより高いレベルでの遺伝子研究をサポートすることができる。

search_params = {"metric_type":"IP", "params":{"nprobe": 20}} となる。

**パフォーマンス

このデモでは、80%のヒトサンプルデータ(合計3629)で分類モデルを学習し、残りをテストデータとして使用します。Milvusを使用したDNA配列分類モデルとMysqlを使用した分類モデル、および5つの一般的な機械学習分類器の性能を比較しています。Milvusを使用したモデルは、精度において他のモデルを凌駕している。

from sklearn.model_selection import train_test_split
X, y = human_sequence_kmers, human_labels
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

図5](https://assets.zilliz.com/1_6541a7dec6.png)

さらなる探求

ビッグデータ技術の発展に伴い、DNA配列のベクター化は遺伝学的研究と実践においてより重要な役割を果たすようになるだろう。バイオインフォマティクスの専門的な知識と組み合わせることで、DNA配列のベクトル化の関与から関連研究がさらに恩恵を受けることができる。従って、Milvusは、実際により良い結果を提示することができる。様々なシナリオやユーザーのニーズに合わせて、Milvusを利用した類似性検索と距離計算は大きな可能性と多くの可能性を示している。

  • 未知の配列の研究ある研究者によると、ベクトル化はDNA配列データを圧縮することができる 同時に、未知のDNA配列の構造、機能、進化を研究するための労力は少なくて済む。Milvusは、精度を落とすことなく、膨大な数のDNA配列ベクトルを保存し、取り出すことができる。
  • Adapt devices:従来の配列アライメントのアルゴリズムでは、デバイス(CPU/GPUの改良による類似性検索の恩恵はほとんど得られない。通常のCPU計算とGPUアクセラレーションの両方をサポートするMilvusは、近似最近傍アルゴリズムによってこの問題を解決します。
  • ウイルスを検出し、起源を追跡する:科学者たちはゲノム配列を比較し、コウモリ由来の可能性が高いCOVID19ウイルスがSARS-COVに属することを報告した。この結論に基づき、研究者はより多くの証拠とパターンを得るためにサンプルサイズを拡大することができる。
  • 病気の診断臨床的には、医師は病気の原因となる変異遺伝子を特定するために、患者と健康なグループのDNA配列を比較することができる。適切なアルゴリズムを用いて特徴を抽出し、これらのデータを符号化することが可能である。Milvusはベクトル間の距離を返すことができ、それは病気のデータと関連づけることができる。病気の診断を助けるだけでなく、このアプリケーションは、標的治療の研究を促すこともできる。

Milvusについてもっと知る

Milvusは、膨大な数の人工知能やベクトル類似検索アプリケーションを動かすことができる強力なツールである。プロジェクトの詳細については、以下のリソースをご覧ください:

  • 私たちのブログを読む。
  • Slack](https://milvusio.slack.com/join/shared_invite/zt-e0u4qu3k-bI2GDNys3ZqX1YCJ9OM~GQ#/shared-invite/email)でオープンソースコミュニティと交流する。
  • GitHub](https://github.com/milvus-io/milvus/)で、世界で最も人気のあるベクトル・データベースを利用したり、貢献したりする。
  • 私たちの新しいブートキャンプでAIアプリケーションを素早くテストし、デプロイする。
Updated on Jul 09, 2026