diffbio 0.1.6__tar.gz → 0.1.7__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {diffbio-0.1.6 → diffbio-0.1.7}/PKG-INFO +5 -6
- {diffbio-0.1.6 → diffbio-0.1.7}/README.md +3 -4
- {diffbio-0.1.6 → diffbio-0.1.7}/pyproject.toml +2 -2
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/losses/self_supervised_losses.py +10 -9
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/epigenomics/contextual.py +2 -2
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/pipelines/joint_training.py +2 -2
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/pipelines/minibatch_training.py +2 -4
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/utils/__init__.py +0 -2
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/utils/training.py +2 -24
- {diffbio-0.1.6 → diffbio-0.1.7}/.gitignore +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/LICENSE +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/benchmarks/README.md +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/benchmarks/crossmodality/README.md +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/examples/README.md +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/configs.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/constants.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/core/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/core/base_operators.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/core/data_types.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/core/gnn_components.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/core/graph_utils.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/core/neural_components.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/core/optimal_transport.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/core/soft_ops/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/core/soft_ops/_projections_permutahedron.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/core/soft_ops/_projections_simplex.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/core/soft_ops/_projections_transport.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/core/soft_ops/_sorting_network.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/core/soft_ops/_types.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/core/soft_ops/_utils.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/core/soft_ops/autograd_safe.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/core/soft_ops/comparison.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/core/soft_ops/elementwise.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/core/soft_ops/logical.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/core/soft_ops/normalization.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/core/soft_ops/quantile.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/core/soft_ops/selection.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/core/soft_ops/sorting.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/core/soft_ops/straight_through.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/core/uncertainty.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/evaluation/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/evaluation/adapters.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/evaluation/graders.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/evaluation/problem.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/evaluation/runner.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/losses/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/losses/alignment_losses.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/losses/biological_regularization.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/losses/metric_losses.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/losses/singlecell_losses.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/losses/statistical_losses.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/_count_vae.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/_loss_balancing.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/_masked_gene_transformer.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/_transformer_validation.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/alignment/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/alignment/profile_hmm.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/alignment/scoring.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/alignment/smith_waterman.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/alignment/soft_msa.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/assembly/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/assembly/gnn_assembly.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/assembly/metagenomic_binning.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/crispr/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/crispr/guide_scoring.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/drug_discovery/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/drug_discovery/_graph_utils.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/drug_discovery/admet_predictor.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/drug_discovery/attentive_fp.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/drug_discovery/dti.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/drug_discovery/fingerprint.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/drug_discovery/maccs_keys.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/drug_discovery/message_passing.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/drug_discovery/primitives.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/drug_discovery/property_predictor.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/drug_discovery/similarity.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/epigenomics/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/epigenomics/chromatin_state.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/epigenomics/fno_peak_calling.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/epigenomics/peak_calling.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/foundation_models/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/foundation_models/adapters.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/foundation_models/contracts.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/foundation_models/embedding_probe.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/foundation_models/experimental.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/foundation_models/foundation_model.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/foundation_models/frozen.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/foundation_models/precomputed.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/foundation_models/transformer_encoder.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/mapping/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/mapping/neural_mapper.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/metabolomics/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/metabolomics/isotope_envelope.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/metabolomics/soft_centroiding.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/metabolomics/spectral_similarity.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/molecular_dynamics/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/molecular_dynamics/force_field.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/molecular_dynamics/integrator.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/molecular_dynamics/primitives.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/multiomics/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/multiomics/hic_contact.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/multiomics/multiomics_vae.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/multiomics/spatial_deconvolution.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/multiomics/spatial_gene_detection.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/normalization/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/normalization/arcsinh_cofactor.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/normalization/differentiable_pca.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/normalization/embedding.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/normalization/learnable_normalization.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/normalization/learnable_orthogonal_projection.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/normalization/learnable_projection.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/normalization/matrix_free_pca.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/normalization/phate.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/normalization/scaling.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/normalization/soft_pca.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/normalization/umap.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/normalization/vae_normalizer.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/population/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/population/ancestry_estimation.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/preprocessing/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/preprocessing/adapter_removal.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/preprocessing/duplicate_filter.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/preprocessing/error_correction.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/protein/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/protein/secondary_structure.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/quality_filter.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/rna_structure/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/rna_structure/rna_folding.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/rnaseq/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/rnaseq/motif_discovery.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/rnaseq/splicing_psi.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/singlecell/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/singlecell/ambient_removal.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/singlecell/archetypes.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/singlecell/batch_correction.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/singlecell/cell_annotation.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/singlecell/communication.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/singlecell/differential_distribution.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/singlecell/doublet_detection.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/singlecell/downsampling.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/singlecell/enhanced_batch_correction.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/singlecell/grn_inference.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/singlecell/imputation.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/singlecell/knockdown_filter.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/singlecell/ot_trajectory.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/singlecell/simulation.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/singlecell/sindy_grn.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/singlecell/soft_clustering.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/singlecell/soft_hvg.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/singlecell/spatial_domains.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/singlecell/stochastic_gate_selector.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/singlecell/switch_de.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/singlecell/trajectory.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/singlecell/velocity.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/statistical/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/statistical/em_quantification.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/statistical/hmm.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/statistical/nb_glm.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/variant/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/variant/classifier.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/variant/cnn_classifier.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/variant/cnv_segmentation.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/variant/deepvariant_pileup.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/variant/learnable_pileup.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/variant/pileup.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/variant/quality_recalibration.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/pipelines/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/pipelines/adapters.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/pipelines/differential_expression.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/pipelines/enhanced_variant_calling.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/pipelines/joint_preprocessing.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/pipelines/perturbation.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/pipelines/preprocessing.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/pipelines/single_cell.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/pipelines/variant_calling.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/reductions/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/reductions/base.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/reductions/pca_reduction.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/reductions/tfidf_reduction.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/samplers/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/samplers/perturbation_sampler.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sequences/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sequences/dna.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sequences/kmer.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/_anndata_shared.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/_batch_iteration.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/_benchmark_source.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/_indexed_batch_source.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/_utils.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/anndata_interop.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/anndata_source.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/archive_ii.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/balifam.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/bam.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/bengrn_ground_truth.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/contextual_epigenomics.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/dti.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/embeddings.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/encode_peaks.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/fasta.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/immune_human.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/indexed_embeddings.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/indexed_view.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/molnet.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/multiomics.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/pancreas.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/perturbation/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/perturbation/_types.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/perturbation/_utils.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/perturbation/concat_source.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/perturbation/control_mapping.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/perturbation/experiment_config.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/perturbation/h5_metadata_cache.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/perturbation/output_space.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/perturbation/perturbation_source.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/seqfish.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/sequence_foundation.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/sources/singlecell_foundation.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/splitters/__init__.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/splitters/base.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/splitters/molecular.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/splitters/perturbation.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/splitters/random.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/splitters/sequence.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/utils/dependency_runtime.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/utils/nn_utils.py +0 -0
- {diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/utils/quality.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: diffbio
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.7
|
|
4
4
|
Summary: End-to-end differentiable bioinformatics for JAX/Flax NNX: alignment, mapping, assembly, variant calling, RNA-seq, single-cell, epigenomics, CRISPR, metabolomics, multi-omics, protein and RNA structure, molecular dynamics and drug-discovery operators composed into trainable pipelines on datarax, artifex, opifex and calibrax
|
|
5
5
|
Project-URL: Bug Tracker, https://github.com/avitai/DiffBio/issues
|
|
6
6
|
Project-URL: Documentation, https://diffbio.readthedocs.io
|
|
@@ -48,7 +48,7 @@ Requires-Dist: anndata>=0.9.1
|
|
|
48
48
|
Requires-Dist: avitai-artifex>=0.1.9
|
|
49
49
|
Requires-Dist: beartype>=0.14.1
|
|
50
50
|
Requires-Dist: biopython>=1.81
|
|
51
|
-
Requires-Dist: calibrax>=0.1.
|
|
51
|
+
Requires-Dist: calibrax>=0.1.8
|
|
52
52
|
Requires-Dist: chex>=0.1.7
|
|
53
53
|
Requires-Dist: datarax>=0.1.11
|
|
54
54
|
Requires-Dist: flax>=0.12.9
|
|
@@ -352,11 +352,11 @@ result, _, _ = pipeline.apply(batch_data, {}, None)
|
|
|
352
352
|
### Training a Pipeline
|
|
353
353
|
|
|
354
354
|
```python
|
|
355
|
-
from
|
|
355
|
+
from calibrax.metrics.functional import softmax_cross_entropy
|
|
356
356
|
from substrax.optim import OptimizerConfig
|
|
357
|
+
from diffbio.utils import (
|
|
357
358
|
Trainer,
|
|
358
359
|
TrainingConfig,
|
|
359
|
-
cross_entropy_loss,
|
|
360
360
|
create_synthetic_training_data,
|
|
361
361
|
data_iterator,
|
|
362
362
|
)
|
|
@@ -384,10 +384,9 @@ trainer = Trainer(pipeline, config)
|
|
|
384
384
|
|
|
385
385
|
# Define loss function
|
|
386
386
|
def loss_fn(predictions, targets):
|
|
387
|
-
return
|
|
387
|
+
return softmax_cross_entropy(
|
|
388
388
|
predictions["logits"],
|
|
389
389
|
targets["labels"],
|
|
390
|
-
num_classes=3,
|
|
391
390
|
)
|
|
392
391
|
|
|
393
392
|
# Train
|
|
@@ -138,11 +138,11 @@ result, _, _ = pipeline.apply(batch_data, {}, None)
|
|
|
138
138
|
### Training a Pipeline
|
|
139
139
|
|
|
140
140
|
```python
|
|
141
|
-
from
|
|
141
|
+
from calibrax.metrics.functional import softmax_cross_entropy
|
|
142
142
|
from substrax.optim import OptimizerConfig
|
|
143
|
+
from diffbio.utils import (
|
|
143
144
|
Trainer,
|
|
144
145
|
TrainingConfig,
|
|
145
|
-
cross_entropy_loss,
|
|
146
146
|
create_synthetic_training_data,
|
|
147
147
|
data_iterator,
|
|
148
148
|
)
|
|
@@ -170,10 +170,9 @@ trainer = Trainer(pipeline, config)
|
|
|
170
170
|
|
|
171
171
|
# Define loss function
|
|
172
172
|
def loss_fn(predictions, targets):
|
|
173
|
-
return
|
|
173
|
+
return softmax_cross_entropy(
|
|
174
174
|
predictions["logits"],
|
|
175
175
|
targets["labels"],
|
|
176
|
-
num_classes=3,
|
|
177
176
|
)
|
|
178
177
|
|
|
179
178
|
# Train
|
|
@@ -43,7 +43,7 @@ dependencies = [
|
|
|
43
43
|
# Opifex - scientific ML, operator learning, and advanced optimization
|
|
44
44
|
"opifex>=0.2.7",
|
|
45
45
|
# Calibrax - benchmarking, comparison, profiling, and regression control
|
|
46
|
-
"calibrax>=0.1.
|
|
46
|
+
"calibrax>=0.1.8",
|
|
47
47
|
# Substrax - device identity, meshes, runtime settings and checkpoint store shared by the
|
|
48
48
|
# siblings; 0.1.6 adds substrax.runtime, substrax.artifacts and substrax.testing.
|
|
49
49
|
"substrax>=0.1.9",
|
|
@@ -71,7 +71,7 @@ license = {file = "LICENSE"}
|
|
|
71
71
|
name = "diffbio"
|
|
72
72
|
readme = "README.md"
|
|
73
73
|
requires-python = ">=3.12,<3.14"
|
|
74
|
-
version = "0.1.
|
|
74
|
+
version = "0.1.7"
|
|
75
75
|
|
|
76
76
|
[project.optional-dependencies]
|
|
77
77
|
all = ["diffbio[benchmark,chem,cuda12,dev,docs,genomics,metal,soft-ops-advanced,soft-ops-ot,test,torch-io]"]
|
|
@@ -11,10 +11,11 @@ term, which the ``core.losses`` ledger flags as the one genuinely new B6 piece.
|
|
|
11
11
|
from __future__ import annotations
|
|
12
12
|
|
|
13
13
|
import jax
|
|
14
|
+
from calibrax.metrics.functional import mae, mse
|
|
14
15
|
from flax import nnx
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
_VALID_LOSS_TYPES = (
|
|
17
|
+
_LOSSES = {"mse": mse, "mae": mae}
|
|
18
|
+
_VALID_LOSS_TYPES = tuple(_LOSSES)
|
|
18
19
|
|
|
19
20
|
|
|
20
21
|
def masked_value_loss(
|
|
@@ -23,28 +24,28 @@ def masked_value_loss(
|
|
|
23
24
|
mask: jax.Array,
|
|
24
25
|
*,
|
|
25
26
|
loss_type: str = "mse",
|
|
26
|
-
epsilon: float = _EPSILON,
|
|
27
27
|
) -> jax.Array:
|
|
28
28
|
"""Reconstruction loss averaged over masked positions only.
|
|
29
29
|
|
|
30
|
+
The reduction is calibrax's masked mean: positions where ``mask`` is nonzero are
|
|
31
|
+
averaged, the rest contribute nothing, and an all-zero mask gives ``0`` rather than
|
|
32
|
+
``0 / 0``.
|
|
33
|
+
|
|
30
34
|
Args:
|
|
31
35
|
predictions: Predicted values, any shape broadcastable with ``mask``.
|
|
32
36
|
targets: Ground-truth values, same shape as ``predictions``.
|
|
33
37
|
mask: ``1`` at positions to reconstruct (the masked-out values), ``0`` elsewhere.
|
|
34
38
|
loss_type: ``"mse"`` (squared error) or ``"mae"`` (absolute error).
|
|
35
|
-
epsilon: Stabilizer so an all-zero mask returns ``0`` rather than ``0 / 0``.
|
|
36
39
|
|
|
37
40
|
Returns:
|
|
38
|
-
The
|
|
41
|
+
The mean reconstruction error at the masked positions.
|
|
39
42
|
|
|
40
43
|
Raises:
|
|
41
44
|
ValueError: If ``loss_type`` is not one of ``("mse", "mae")``.
|
|
42
45
|
"""
|
|
43
|
-
if loss_type not in
|
|
46
|
+
if loss_type not in _LOSSES:
|
|
44
47
|
raise ValueError(f"loss_type must be one of {_VALID_LOSS_TYPES}, got {loss_type!r}")
|
|
45
|
-
|
|
46
|
-
error = residual**2 if loss_type == "mse" else abs(residual)
|
|
47
|
-
return (mask * error).sum() / (mask.sum() + epsilon)
|
|
48
|
+
return _LOSSES[loss_type](predictions, targets, mask=mask)
|
|
48
49
|
|
|
49
50
|
|
|
50
51
|
class MaskedValueLoss(nnx.Module):
|
|
@@ -9,6 +9,7 @@ import jax
|
|
|
9
9
|
import jax.numpy as jnp
|
|
10
10
|
import optax
|
|
11
11
|
from artifex.generative_models.core.layers import TransformerEncoder
|
|
12
|
+
from calibrax.metrics.functional import mse
|
|
12
13
|
from datarax.core.config import OperatorConfig
|
|
13
14
|
from datarax.core.operator import OperatorModule
|
|
14
15
|
from flax import nnx
|
|
@@ -250,8 +251,7 @@ def compute_chromatin_guidance_loss(
|
|
|
250
251
|
)
|
|
251
252
|
predicted_contacts = jax.nn.sigmoid(similarity)
|
|
252
253
|
pair_mask = sequence_mask[:, :, None] * sequence_mask[:, None, :]
|
|
253
|
-
|
|
254
|
-
return squared_error.sum() / jnp.maximum(pair_mask.sum(), 1.0)
|
|
254
|
+
return mse(predicted_contacts, chromatin_contacts, mask=pair_mask)
|
|
255
255
|
|
|
256
256
|
|
|
257
257
|
def compute_contextual_epigenomics_loss(
|
|
@@ -36,7 +36,7 @@ from substrax.optim import OptimizerConfig, create_optimizer
|
|
|
36
36
|
|
|
37
37
|
from diffbio.losses.singlecell_losses import gene_weight_sparsity_loss
|
|
38
38
|
from diffbio.pipelines.joint_preprocessing import JointPreprocessingPipeline
|
|
39
|
-
from
|
|
39
|
+
from calibrax.metrics.functional import softmax_cross_entropy
|
|
40
40
|
|
|
41
41
|
_NUM_LOSSES = 2
|
|
42
42
|
|
|
@@ -94,7 +94,7 @@ def _classification_loss(
|
|
|
94
94
|
) -> jnp.ndarray:
|
|
95
95
|
"""Cross-entropy of the pipeline's predicted logits against the labels."""
|
|
96
96
|
output, _, _ = pipeline.apply({"counts": counts}, {}, None)
|
|
97
|
-
return
|
|
97
|
+
return softmax_cross_entropy(output["logits"], labels)
|
|
98
98
|
|
|
99
99
|
|
|
100
100
|
def _global_norm(grads: nnx.State) -> jnp.ndarray:
|
|
@@ -27,7 +27,7 @@ import numpy as np
|
|
|
27
27
|
from flax import nnx
|
|
28
28
|
from substrax.optim import create_optimizer, OptimizerConfig
|
|
29
29
|
|
|
30
|
-
from
|
|
30
|
+
from calibrax.metrics.functional import softmax_cross_entropy
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
# ``features`` may be a single array or an arbitrary pytree of per-sample arrays (each
|
|
@@ -140,9 +140,7 @@ def train_minibatch(
|
|
|
140
140
|
optimizer = create_optimizer(model, config.optimizer)
|
|
141
141
|
|
|
142
142
|
def loss_fn(module: nnx.Module, batch_features: Any, batch_labels: jnp.ndarray) -> jnp.ndarray:
|
|
143
|
-
loss =
|
|
144
|
-
forward_fn(module, batch_features), batch_labels, num_classes=n_classes
|
|
145
|
-
)
|
|
143
|
+
loss = softmax_cross_entropy(forward_fn(module, batch_features), batch_labels)
|
|
146
144
|
if aux_loss_fn is not None:
|
|
147
145
|
loss = loss + aux_loss_fn(module)
|
|
148
146
|
return loss
|
|
@@ -20,7 +20,6 @@ from diffbio.utils.quality import apply_quality_filter
|
|
|
20
20
|
from diffbio.utils.training import (
|
|
21
21
|
default_training_optimizer,
|
|
22
22
|
create_synthetic_training_data,
|
|
23
|
-
cross_entropy_loss,
|
|
24
23
|
data_iterator,
|
|
25
24
|
Trainer,
|
|
26
25
|
TrainingConfig,
|
|
@@ -42,7 +41,6 @@ __all__ = [
|
|
|
42
41
|
"TrainingState",
|
|
43
42
|
"default_training_optimizer",
|
|
44
43
|
"create_synthetic_training_data",
|
|
45
|
-
"cross_entropy_loss",
|
|
46
44
|
"data_iterator",
|
|
47
45
|
# Quality utilities
|
|
48
46
|
"apply_quality_filter",
|
|
@@ -12,6 +12,7 @@ from typing import Any, Callable
|
|
|
12
12
|
import jax
|
|
13
13
|
import jax.numpy as jnp
|
|
14
14
|
from datarax.core.operator import OperatorModule
|
|
15
|
+
from calibrax.metrics.functional import softmax_cross_entropy # noqa: F401 - the docstring example
|
|
15
16
|
from flax import nnx
|
|
16
17
|
from jaxtyping import Array, Float
|
|
17
18
|
from substrax.optim import OptimizerConfig, create_optimizer
|
|
@@ -62,26 +63,6 @@ class TrainingState:
|
|
|
62
63
|
self.loss_history = []
|
|
63
64
|
|
|
64
65
|
|
|
65
|
-
def cross_entropy_loss(
|
|
66
|
-
logits: Float[Array, "... num_classes"],
|
|
67
|
-
labels: Float[Array, "..."],
|
|
68
|
-
num_classes: int = 3,
|
|
69
|
-
) -> Float[Array, ""]:
|
|
70
|
-
"""Compute cross-entropy loss for variant classification.
|
|
71
|
-
|
|
72
|
-
Args:
|
|
73
|
-
logits: Raw model predictions
|
|
74
|
-
labels: Integer class labels
|
|
75
|
-
num_classes: Number of classes
|
|
76
|
-
|
|
77
|
-
Returns:
|
|
78
|
-
Scalar loss value
|
|
79
|
-
"""
|
|
80
|
-
one_hot_labels = jax.nn.one_hot(labels.astype(jnp.int32), num_classes)
|
|
81
|
-
log_probs = jax.nn.log_softmax(logits, axis=-1)
|
|
82
|
-
return -jnp.mean(jnp.sum(one_hot_labels * log_probs, axis=-1))
|
|
83
|
-
|
|
84
|
-
|
|
85
66
|
class Trainer:
|
|
86
67
|
"""Training loop for DiffBio pipelines using Flax NNX patterns.
|
|
87
68
|
|
|
@@ -96,10 +77,7 @@ class Trainer:
|
|
|
96
77
|
trainer = Trainer(pipeline, TrainingConfig(learning_rate=1e-3))
|
|
97
78
|
# Define loss function
|
|
98
79
|
def loss_fn(predictions, targets):
|
|
99
|
-
return
|
|
100
|
-
predictions["logits"],
|
|
101
|
-
targets["labels"],
|
|
102
|
-
)
|
|
80
|
+
return softmax_cross_entropy(predictions["logits"], targets["labels"])
|
|
103
81
|
# Train
|
|
104
82
|
trainer.train(data_iterator_fn, loss_fn)
|
|
105
83
|
trained_pipeline = trainer.pipeline
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/foundation_models/transformer_encoder.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/normalization/learnable_normalization.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/singlecell/differential_distribution.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/singlecell/enhanced_batch_correction.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{diffbio-0.1.6 → diffbio-0.1.7}/src/diffbio/operators/singlecell/stochastic_gate_selector.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|