[PYTHON] Lass uns mit Selene Deep SEA lernen

Selene ist eine PyTorch-basierte Deep Learning-Bibliothek, die sich auf die Analyse von Sequenzdaten spezialisiert hat. Es ist wie NiftyNet in medizinischen Bildern, und Sie können Deep Learning durchführen, indem Sie einfach die Cofig-Datei festlegen, ohne Code zu schreiben. Da die Probenahme unter den gleichen Bedingungen durchgeführt werden kann, ist es einfach, die Modellleistung zu vergleichen. Mit Selene hergestellte Modelle können auch von Kipoi im vorherigen Artikel (https://qiita.com/takeajioka/items/7709e264c6cd8fbcfae1) geteilt werden.

github:https://github.com/FunctionLab/selene Papier: https://www.nature.com/articles/s41592-019-0360-8 Dokument: https://selene.flatironinstitute.org/

Beachten Sie übrigens, dass die Webbibliothek eine Python-Bibliothek mit genau demselben Namen enthält.

Installation

Erfordert Python 3.6 oder höher und PyTorch installiert. Die Umgebung war Ubuntu 16.04, CUDA10, Anaconda, Python3.6, PyTorch 1.2.0.

pip install selene-sdk

Sie haben es jetzt installiert. Die Version war 0.4.8.

Versuche dich zu bewegen

Schreiben Sie einfach die Einstellungen in die Konfigurationsdatei und führen Sie sie aus. Informationen zum Schreiben der Konfigurationsdatei (YAML-Format) finden Sie unter hier. Wir werden vier Elemente festlegen: Operation, Modell, Sampler und Parameter. Die Daten werden reproduzierbar auf Trainingsdaten, Validierungsdaten und Testdaten verteilt.

Zuerst Git-Klon.

git clone https://github.com/FunctionLab/selene.git

Es hat lange gedauert, bis der Klon fertig war. Es gibt ein Beispiel für die Konfigurationsdatei im Ordner config_examples als Referenz.

Dieses Mal werde ich quickstart_training im Tutorial versuchen.

cd selene/tutorials/quickstart_training
wget https://zenodo.org/record/1443558/files/selene_quickstart.tar.gz
tar -zxvf selene_quickstart.tar.gz
mv selene_quickstart_tutorial/* .

Das Herunterladen der Daten dauert einige Zeit. Wenn Sie selene_quickstart.tar.gz nicht herunterladen können, können Sie es durch [diese Methode] ersetzen (https://github.com/FunctionLab/selene/blob/master/tutorials/getting_started_with_selene/getting_started_with_selene.ipynb).

config verwendet ein tieferes Modell von deepSEA. Ich wechsle zu RandomPositionsSampler. "Simple_train.yml"

ops: [train, evaluate]
model: {
    path: ./deeperdeepsea.py,
    class: DeeperDeepSEA,
    class_args: {
        sequence_length: 1000,
        n_targets: 1,
    },
    non_strand_specific: mean
}
sampler: !obj:selene_sdk.samplers.RandomPositionsSampler {
    reference_sequence: !obj:selene_sdk.sequences.Genome {
        input_path: ./male.hg19.fasta
    },
    features: !obj:selene_sdk.utils.load_features_list {
        input_path: ./distinct_features.txt
    },
    target_path: ./sorted_GM12878_CTCF.bed.gz,
    seed: 100,
    sequence_length: 1000,
    center_bin_to_predict: 200,
    test_holdout: [chr8, chr9],
    validation_holdout: [chr6, chr7],
    feature_thresholds: 0.5,
    mode: train,
    save_datasets: [validate, test]
}
train_model: !obj:selene_sdk.TrainModel {
    batch_size: 64,
    max_steps: 8000,
    report_stats_every_n_steps: 1000,
    n_validation_samples: 32000,
    n_test_samples: 120000,
    cpu_n_threads: 10,
    use_cuda: True,
    data_parallel: False
}
random_seed: 1445
output_dir: ./training_outputs
create_subdirectory: False
load_test_set: False

Führen Sie zum Ausführen einfach den folgenden Code in Python aus.

from selene_sdk.utils import load_path, parse_configs_and_run
parse_configs_and_run(load_path("./simple_train.yml"), lr=0.01)

Mit etwa 2 GB GPU-Speicher konnte ich das Lernen in wenigen Minuten beenden. Das Ergebnis ist unten. (Genauigkeitsbewertung mit Testdaten) roc_curves.jpg

precision_recall_curves.jpg

Das Modell wird in best_model.pth.tar gespeichert.

Sobald das DeepSEA-Modell erstellt wurde, kann der Effekt der Mutation durch Eingabe der Sequenzdaten, die die Mutation enthalten, vorhergesagt werden. Sie können das Ergebnis von GWAS durch die Vorhersage simulieren.

Impressionen

Es unterstützt auch Kipoi und ich fand, dass es eine sehr nützliche Bibliothek war. Dieses Mal konnte ich nur das Beispiel ausprobieren, also möchte ich das nächste Mal das Modell selbst einstellen.

Recommended Posts

Lass uns mit Selene Deep SEA lernen
Lerne Python mit ChemTHEATER
Lerne Zundokokiyoshi mit LSTM
Pandas lernen mit Chemoinfomatik
Scikit-Lernen mit Chemoinfomatik
Lernen Sie mit Chemo Informatics Matplotlib
Lernen Sie mit einem umgekehrten Pendel DQN (Deep Q Network)
Lernen Sie mit Chemo Informatics NumPy
DCGAN mit TF Learn
Lernen Sie Pendulum-v0 mit DDPG
Spielen wir mit der 4. Dimension der 4. Dimension
Spielen wir mit Amedas Daten - Teil 1
Lernen Sie Librosa mit einem Tutorial 1
Versuchen Sie es mit TensorFlow
Lernen Sie mit Chainer elliptische Bahnen
Machen wir Othello mit wxPython
Deep Kernel Learning mit Pyro
Spielen wir mit Amedas Daten - Teil 4
Lernen Sie neue Daten mit PaintsChainer
Versuchen Sie Deep Learning mit FPGA
Schreiben wir Python mitinema4d.
Lassen Sie uns R-CNN mit Sklearn-theano machen
Spielen wir mit Amedas Daten - Teil 3
Spielen wir mit Amedas Daten - Teil 2
Deep Embedded Clustering mit Chainer 2.0
Lassen Sie uns Git-Cat mit Python bauen
Generiere Pokemon mit Deep Learning