Selene est une bibliothèque de Deep Learning basée sur PyTorch dédiée à l'analyse de données de séquence. C'est comme NiftyNet dans les images médicales, et vous pouvez faire du Deep Learning simplement en définissant le fichier cofig sans écrire de code. Comme l'échantillonnage peut être effectué dans les mêmes conditions, il est facile de comparer les performances du modèle. Les modèles réalisés avec Selene peuvent également être partagés par Kipoi dans l'article précédent (https://qiita.com/takeajioka/items/7709e264c6cd8fbcfae1).
github:https://github.com/FunctionLab/selene Papier: https://www.nature.com/articles/s41592-019-0360-8 Document: https://selene.flatironinstitute.org/
À propos, veuillez noter qu'il existe une bibliothèque Python avec exactement le même nom dans la bibliothèque Web.
Nécessite Python 3.6 ou supérieur et PyTorch installé. L'environnement était Ubuntu 16.04, CUDA10, Anaconda, Python3.6, PyTorch 1.2.0.
pip install selene-sdk
Vous l'avez maintenant installé. La version était 0.4.8.
En gros, écrivez simplement les paramètres dans le fichier de configuration et exécutez. Comment écrire le fichier de configuration (format YAML) peut être trouvé à ici. Nous définirons quatre éléments: opération, modèle, échantillonneur et paramètres. Les données sont distribuées de manière reproductible aux données d'entraînement, aux données de validation et aux données de test.
Tout d'abord, git clone.
git clone https://github.com/FunctionLab/selene.git
Il a fallu beaucoup de temps pour git cloner. Il y a un exemple de fichier de configuration dans le dossier config_examples pour votre référence.
Cette fois, je vais essayer quickstart_training dans le didacticiel.
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/* .
Le téléchargement des données prend du temps. Si vous ne pouvez pas télécharger selene_quickstart.tar.gz, vous pouvez le remplacer par cette méthode.
config utilise un modèle plus profond de deepSEA. Je passe à 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
Pour exécuter, exécutez simplement le code suivant en Python.
from selene_sdk.utils import load_path, parse_configs_and_run
parse_configs_and_run(load_path("./simple_train.yml"), lr=0.01)
En utilisant environ 2 Go de mémoire GPU, j'ai pu terminer l'apprentissage en quelques minutes. Le résultat est ci-dessous. (Évaluation de la précision avec les données de test)
Le modèle est enregistré dans best_model.pth.tar.
Une fois le modèle DeepSEA créé, l'effet de la mutation peut être prédit en entrant les données de séquence contenant la mutation. Vous pouvez simuler le résultat de GWAS par la prédiction.
Il prend également en charge Kipoi, et j'ai trouvé que c'était une bibliothèque très utile. Cette fois, je n'ai pu essayer que l'échantillon, donc la prochaine fois, j'aimerais définir le modèle moi-même.
Recommended Posts