Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Changelog

## 1.0.6
- FIX: DDP training stability and config handling (single init, rank/world-size propagation, robust setup/token flow)
- NEW: tqdm progress bars for training/validation and interactive embedding extraction
- FIX: interactive plots alignment bugs and compute_embeddings device argument handling
- FIX: Streamlit compatibility updates for model explorer (`use_container_width`, watcher workaround)
- FIX: safer core behavior (no-grad embedding extraction, CPU fallbacks in train/SWA/LR finder, clearer missing global config error)
- IMPROVED: metric selection logic with configurable `target_metric_mode` (`auto` / `max` / `min`)

## 1.0.5
- FIX: class order in model explorer was broken!
- FIX: interactive plot was looking for a missing argument
Expand Down
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,10 @@ Read the paper: [https://onlinelibrary.wiley.com/doi/10.1111/ele.14495](https://
[>> Comprehensive help files <<](help)

1\. Install BioEncoder (into a virtual environment with pytorch/CUDA):

Install `torch` / `torchvision` first for your platform (CPU or CUDA), then install BioEncoder:
````
pip install torch torchvision
pip install bioencoder
````

Expand Down
52 changes: 43 additions & 9 deletions bioencoder/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,49 @@
from .core import utils
# from .scripts import *

from .scripts.archive import archive
from .scripts.configure import configure
from .scripts.split_dataset import split_dataset
from .scripts.train import train
from .scripts.swa import swa
from .scripts.lr_finder import lr_finder
from .scripts.interactive_plots import interactive_plots
from .scripts.inference import inference
from .scripts.model_explorer_wrapper import model_explorer_wrapper as model_explorer
def archive(*args, **kwargs):
from .scripts.archive import archive as _archive
return _archive(*args, **kwargs)


def configure(*args, **kwargs):
from .scripts.configure import configure as _configure
return _configure(*args, **kwargs)


def split_dataset(*args, **kwargs):
from .scripts.split_dataset import split_dataset as _split_dataset
return _split_dataset(*args, **kwargs)


def train(*args, **kwargs):
from .scripts.train import train as _train
return _train(*args, **kwargs)


def swa(*args, **kwargs):
from .scripts.swa import swa as _swa
return _swa(*args, **kwargs)


def lr_finder(*args, **kwargs):
from .scripts.lr_finder import lr_finder as _lr_finder
return _lr_finder(*args, **kwargs)


def interactive_plots(*args, **kwargs):
from .scripts.interactive_plots import interactive_plots as _interactive_plots
return _interactive_plots(*args, **kwargs)


def inference(*args, **kwargs):
from .scripts.inference import inference as _inference
return _inference(*args, **kwargs)


def model_explorer(*args, **kwargs):
from .scripts.model_explorer_wrapper import model_explorer_wrapper as _model_explorer
return _model_explorer(*args, **kwargs)

from importlib.metadata import version
__version__ = version("bioencoder")
2 changes: 1 addition & 1 deletion bioencoder/core/losses.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,7 +173,7 @@ def forward(self, pred:torch.Tensor, target:torch.Tensor):
with torch.no_grad():
true_dist = torch.zeros_like(pred)
true_dist.fill_(self.smoothing / (self.cls - 1))
true_dist.scatter_(1, target.unsqueeze(1), self.confidence)
true_dist.scatter_(class_dim, target.unsqueeze(class_dim), self.confidence)
return torch.mean(torch.sum(-true_dist * pred, dim=self.dim))


Expand Down
Loading