Download tools/_native_ssl.py from microsoft/scFM-dataselection: direct link, hf CLI and curl.
- Browser
- Download file 1.55 kB
-
https://huggingface.co/microsoft/scFM-dataselection/resolve/main/tools/_native_ssl.py
- Command line
-
hf download hf://microsoft/scFM-dataselection/tools/_native_ssl.py
-
curl -L -o _native_ssl.py https://huggingface.co/microsoft/scFM-dataselection/resolve/main/tools/_native_ssl.py
1.55 kB
| """Native SSL class loading extracted from the fully validated preparation code.""" | |
| import ast | |
| import os | |
| import pickle | |
| def native_ssl_class(resources): | |
| import abc | |
| import gc | |
| import importlib.util | |
| import typing | |
| import lightning.pytorch as pl | |
| import numpy as np | |
| import torch | |
| import torch.nn as nn | |
| import torch.nn.functional as functional | |
| from torchmetrics import ExplainedVariance, MeanSquaredError, MetricCollection | |
| base_file = resources / 'ssl-source/base.py' | |
| spec = importlib.util.spec_from_file_location('pinned_ssl_base', base_file) | |
| base = importlib.util.module_from_spec(spec) | |
| spec.loader.exec_module(base) | |
| autoencoder_file = resources / 'ssl-source/cellnet_autoencoder.py' | |
| parsed = ast.parse(autoencoder_file.read_text()) | |
| classes = {node.name: node for node in parsed.body if isinstance(node, ast.ClassDef)} | |
| namespace = {'__name__': 'pinned_ssl_autoencoder', '__file__': str(autoencoder_file), 'abc': abc, 'gc': gc, 'os': os, 'pickle': pickle, 'np': np, 'torch': torch, 'nn': nn, 'F': functional, 'pl': pl, 'MLP': base.MLP, 'ExplainedVariance': ExplainedVariance, 'MeanSquaredError': MeanSquaredError, 'MetricCollection': MetricCollection} | |
| namespace.update({name: getattr(typing, name) for name in ('Callable', 'Dict', 'List', 'Optional', 'Tuple')}) | |
| executable = ast.Module(body=[classes['BaseAutoEncoder'], classes['MLPAutoEncoder']], type_ignores=[]) | |
| exec(compile(executable, str(autoencoder_file), 'exec'), namespace) | |
| return namespace['MLPAutoEncoder'] | |