diffbio 0.1.3__tar.gz → 0.1.4__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.3 → diffbio-0.1.4}/PKG-INFO +7 -2
- {diffbio-0.1.3 → diffbio-0.1.4}/benchmarks/README.md +4 -4
- {diffbio-0.1.3 → diffbio-0.1.4}/pyproject.toml +9 -5
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/core/soft_ops/__init__.py +4 -0
- diffbio-0.1.4/src/diffbio/core/soft_ops/normalization.py +174 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/archive_ii.py +1 -1
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/balifam.py +1 -1
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/bengrn_ground_truth.py +2 -2
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/encode_peaks.py +1 -1
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/immune_human.py +1 -1
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/pancreas.py +1 -1
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/seqfish.py +1 -1
- {diffbio-0.1.3 → diffbio-0.1.4}/.gitignore +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/LICENSE +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/README.md +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/benchmarks/crossmodality/README.md +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/examples/README.md +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/configs.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/constants.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/core/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/core/base_operators.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/core/data_types.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/core/gnn_components.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/core/graph_utils.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/core/neural_components.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/core/optimal_transport.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/core/soft_ops/_projections_permutahedron.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/core/soft_ops/_projections_simplex.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/core/soft_ops/_projections_transport.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/core/soft_ops/_sorting_network.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/core/soft_ops/_types.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/core/soft_ops/_utils.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/core/soft_ops/autograd_safe.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/core/soft_ops/comparison.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/core/soft_ops/elementwise.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/core/soft_ops/logical.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/core/soft_ops/quantile.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/core/soft_ops/selection.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/core/soft_ops/sorting.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/core/soft_ops/straight_through.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/core/uncertainty.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/evaluation/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/evaluation/adapters.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/evaluation/graders.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/evaluation/problem.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/evaluation/runner.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/losses/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/losses/alignment_losses.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/losses/biological_regularization.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/losses/metric_losses.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/losses/self_supervised_losses.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/losses/singlecell_losses.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/losses/statistical_losses.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/_count_vae.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/_loss_balancing.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/_masked_gene_transformer.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/_transformer_validation.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/alignment/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/alignment/profile_hmm.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/alignment/scoring.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/alignment/smith_waterman.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/alignment/soft_msa.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/assembly/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/assembly/gnn_assembly.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/assembly/metagenomic_binning.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/crispr/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/crispr/guide_scoring.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/drug_discovery/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/drug_discovery/_graph_utils.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/drug_discovery/admet_predictor.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/drug_discovery/attentive_fp.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/drug_discovery/dti.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/drug_discovery/fingerprint.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/drug_discovery/maccs_keys.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/drug_discovery/message_passing.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/drug_discovery/primitives.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/drug_discovery/property_predictor.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/drug_discovery/similarity.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/epigenomics/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/epigenomics/chromatin_state.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/epigenomics/contextual.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/epigenomics/fno_peak_calling.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/epigenomics/peak_calling.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/foundation_models/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/foundation_models/adapters.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/foundation_models/contracts.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/foundation_models/embedding_probe.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/foundation_models/experimental.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/foundation_models/foundation_model.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/foundation_models/frozen.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/foundation_models/precomputed.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/foundation_models/transformer_encoder.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/mapping/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/mapping/neural_mapper.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/metabolomics/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/metabolomics/isotope_envelope.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/metabolomics/soft_centroiding.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/metabolomics/spectral_similarity.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/molecular_dynamics/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/molecular_dynamics/force_field.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/molecular_dynamics/integrator.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/molecular_dynamics/primitives.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/multiomics/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/multiomics/hic_contact.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/multiomics/multiomics_vae.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/multiomics/spatial_deconvolution.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/multiomics/spatial_gene_detection.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/normalization/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/normalization/arcsinh_cofactor.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/normalization/differentiable_pca.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/normalization/embedding.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/normalization/learnable_normalization.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/normalization/learnable_orthogonal_projection.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/normalization/learnable_projection.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/normalization/matrix_free_pca.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/normalization/phate.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/normalization/scaling.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/normalization/soft_pca.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/normalization/umap.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/normalization/vae_normalizer.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/population/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/population/ancestry_estimation.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/preprocessing/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/preprocessing/adapter_removal.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/preprocessing/duplicate_filter.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/preprocessing/error_correction.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/protein/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/protein/secondary_structure.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/quality_filter.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/rna_structure/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/rna_structure/rna_folding.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/rnaseq/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/rnaseq/motif_discovery.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/rnaseq/splicing_psi.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/singlecell/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/singlecell/ambient_removal.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/singlecell/archetypes.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/singlecell/batch_correction.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/singlecell/cell_annotation.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/singlecell/communication.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/singlecell/differential_distribution.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/singlecell/doublet_detection.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/singlecell/downsampling.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/singlecell/enhanced_batch_correction.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/singlecell/grn_inference.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/singlecell/imputation.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/singlecell/knockdown_filter.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/singlecell/ot_trajectory.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/singlecell/simulation.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/singlecell/sindy_grn.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/singlecell/soft_clustering.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/singlecell/soft_hvg.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/singlecell/spatial_domains.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/singlecell/stochastic_gate_selector.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/singlecell/switch_de.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/singlecell/trajectory.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/singlecell/velocity.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/statistical/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/statistical/em_quantification.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/statistical/hmm.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/statistical/nb_glm.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/variant/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/variant/classifier.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/variant/cnn_classifier.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/variant/cnv_segmentation.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/variant/deepvariant_pileup.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/variant/learnable_pileup.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/variant/pileup.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/operators/variant/quality_recalibration.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/pipelines/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/pipelines/adapters.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/pipelines/differential_expression.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/pipelines/enhanced_variant_calling.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/pipelines/joint_preprocessing.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/pipelines/joint_training.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/pipelines/minibatch_training.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/pipelines/perturbation.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/pipelines/preprocessing.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/pipelines/single_cell.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/pipelines/variant_calling.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/reductions/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/reductions/base.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/reductions/pca_reduction.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/reductions/tfidf_reduction.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/samplers/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/samplers/perturbation_sampler.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sequences/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sequences/dna.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sequences/kmer.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/_anndata_shared.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/_batch_iteration.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/_benchmark_source.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/_indexed_batch_source.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/_utils.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/anndata_interop.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/anndata_source.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/bam.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/contextual_epigenomics.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/dti.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/embeddings.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/fasta.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/indexed_embeddings.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/indexed_view.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/molnet.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/multiomics.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/perturbation/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/perturbation/_types.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/perturbation/_utils.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/perturbation/concat_source.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/perturbation/control_mapping.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/perturbation/experiment_config.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/perturbation/h5_metadata_cache.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/perturbation/output_space.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/perturbation/perturbation_source.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/sequence_foundation.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/sources/singlecell_foundation.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/splitters/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/splitters/base.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/splitters/molecular.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/splitters/perturbation.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/splitters/random.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/splitters/sequence.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/utils/__init__.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/utils/dependency_runtime.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/utils/nn_utils.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/utils/quality.py +0 -0
- {diffbio-0.1.3 → diffbio-0.1.4}/src/diffbio/utils/training.py +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: diffbio
|
|
3
|
-
Version: 0.1.
|
|
4
|
-
Summary:
|
|
3
|
+
Version: 0.1.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
|
|
7
7
|
Project-URL: Source, https://github.com/avitai/DiffBio
|
|
@@ -74,6 +74,7 @@ Requires-Dist: griffe>=1.7.3; extra == 'all'
|
|
|
74
74
|
Requires-Dist: import-linter>=2.5; extra == 'all'
|
|
75
75
|
Requires-Dist: interrogate>=1.7.0; extra == 'all'
|
|
76
76
|
Requires-Dist: ipykernel>=6.29.5; extra == 'all'
|
|
77
|
+
Requires-Dist: jax-metal>=0.1.0; (sys_platform == 'darwin' and platform_machine == 'arm64') and extra == 'all'
|
|
77
78
|
Requires-Dist: jax[cuda12]>=0.11.1; extra == 'all'
|
|
78
79
|
Requires-Dist: lineax>=0.0.8; extra == 'all'
|
|
79
80
|
Requires-Dist: matplotlib>=3.7; extra == 'all'
|
|
@@ -101,6 +102,7 @@ Requires-Dist: pytest-timeout>=2.1; extra == 'all'
|
|
|
101
102
|
Requires-Dist: pytest-xdist>=3.6; extra == 'all'
|
|
102
103
|
Requires-Dist: pytest>=8.3.5; extra == 'all'
|
|
103
104
|
Requires-Dist: python-dotenv>=1; extra == 'all'
|
|
105
|
+
Requires-Dist: pyyaml>=6; extra == 'all'
|
|
104
106
|
Requires-Dist: radon>=6.0.1; extra == 'all'
|
|
105
107
|
Requires-Dist: rdkit>=2025.9.3; extra == 'all'
|
|
106
108
|
Requires-Dist: ruff>=0.1.5; extra == 'all'
|
|
@@ -185,6 +187,8 @@ Requires-Dist: pymdown-extensions>=10.14.3; extra == 'docs'
|
|
|
185
187
|
Provides-Extra: genomics
|
|
186
188
|
Requires-Dist: pyfaidx>=0.8.0; extra == 'genomics'
|
|
187
189
|
Requires-Dist: pysam>=0.22.0; extra == 'genomics'
|
|
190
|
+
Provides-Extra: metal
|
|
191
|
+
Requires-Dist: jax-metal>=0.1.0; (sys_platform == 'darwin' and platform_machine == 'arm64') and extra == 'metal'
|
|
188
192
|
Provides-Extra: soft-ops-advanced
|
|
189
193
|
Requires-Dist: lineax>=0.0.8; extra == 'soft-ops-advanced'
|
|
190
194
|
Requires-Dist: optimistix>=0.0.9; extra == 'soft-ops-advanced'
|
|
@@ -203,6 +207,7 @@ Requires-Dist: pytest-randomly>=3.16.0; extra == 'test'
|
|
|
203
207
|
Requires-Dist: pytest-timeout>=2.1; extra == 'test'
|
|
204
208
|
Requires-Dist: pytest-xdist>=3.6; extra == 'test'
|
|
205
209
|
Requires-Dist: pytest>=8.3.5; extra == 'test'
|
|
210
|
+
Requires-Dist: pyyaml>=6; extra == 'test'
|
|
206
211
|
Provides-Extra: torch-io
|
|
207
212
|
Requires-Dist: torch>=1.13.0; extra == 'torch-io'
|
|
208
213
|
Description-Content-Type: text/markdown
|
|
@@ -90,13 +90,13 @@ Download datasets before running:
|
|
|
90
90
|
|
|
91
91
|
```bash
|
|
92
92
|
# Single-cell (immune_human, 2GB)
|
|
93
|
-
mkdir -p /
|
|
94
|
-
wget -O /
|
|
93
|
+
mkdir -p /mnt/ssd2/Data/scib
|
|
94
|
+
wget -O /mnt/ssd2/Data/scib/Immune_ALL_human.h5ad \
|
|
95
95
|
"https://ndownloader.figshare.com/files/25717328"
|
|
96
96
|
|
|
97
97
|
# Trajectory (pancreas, 51MB)
|
|
98
|
-
mkdir -p /
|
|
99
|
-
wget -O /
|
|
98
|
+
mkdir -p /mnt/ssd2/Data/scvelo
|
|
99
|
+
wget -O /mnt/ssd2/Data/scvelo/endocrinogenesis_day15.h5ad \
|
|
100
100
|
"https://github.com/theislab/scvelo_notebooks/raw/master/data/Pancreas/endocrinogenesis_day15.h5ad"
|
|
101
101
|
```
|
|
102
102
|
|
|
@@ -64,16 +64,16 @@ dependencies = [
|
|
|
64
64
|
"h5py>=3.7",
|
|
65
65
|
"jax-md>=0.2.27"
|
|
66
66
|
]
|
|
67
|
-
description = "
|
|
67
|
+
description = "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"
|
|
68
68
|
keywords = ["jax", "flax", "bioinformatics", "differentiable", "variant-calling", "alignment", "machine-learning"]
|
|
69
69
|
license = {file = "LICENSE"}
|
|
70
70
|
name = "diffbio"
|
|
71
71
|
readme = "README.md"
|
|
72
72
|
requires-python = ">=3.12,<3.14"
|
|
73
|
-
version = "0.1.
|
|
73
|
+
version = "0.1.4"
|
|
74
74
|
|
|
75
75
|
[project.optional-dependencies]
|
|
76
|
-
all = ["diffbio[benchmark,chem,cuda12,dev,docs,genomics,soft-ops-advanced,soft-ops-ot,test,torch-io]"]
|
|
76
|
+
all = ["diffbio[benchmark,chem,cuda12,dev,docs,genomics,metal,soft-ops-advanced,soft-ops-ot,test,torch-io]"]
|
|
77
77
|
benchmark = [
|
|
78
78
|
# benchmarks/crossmodality/*.py call datasets.load_dataset. It used to arrive
|
|
79
79
|
# transitively through the sibling packages; they now declare their heavy
|
|
@@ -131,6 +131,8 @@ docs = [
|
|
|
131
131
|
"pymdown-extensions>=10.14.3"
|
|
132
132
|
]
|
|
133
133
|
genomics = ["pysam>=0.22.0", "pyfaidx>=0.8.0"]
|
|
134
|
+
# Apple Silicon GPU backend; setup.sh selects it on arm64 macOS.
|
|
135
|
+
metal = ["jax-metal>=0.1.0; sys_platform == 'darwin' and platform_machine == 'arm64'"]
|
|
134
136
|
soft-ops-advanced = ["optimistix>=0.0.9", "lineax>=0.0.8"]
|
|
135
137
|
soft-ops-ot = ["diffbio[soft-ops-advanced]", "ott-jax>=0.5.0"]
|
|
136
138
|
test = [
|
|
@@ -143,7 +145,9 @@ test = [
|
|
|
143
145
|
"pytest-env>=1.0.1",
|
|
144
146
|
"pytest-randomly>=3.16.0",
|
|
145
147
|
"pytest-timeout>=2.1",
|
|
146
|
-
"pytest-xdist>=3.6"
|
|
148
|
+
"pytest-xdist>=3.6",
|
|
149
|
+
# tests/test_ci_shards.py reads the CI workflow.
|
|
150
|
+
"pyyaml>=6"
|
|
147
151
|
]
|
|
148
152
|
torch-io = ["torch>=1.13.0"]
|
|
149
153
|
|
|
@@ -341,7 +345,7 @@ save_data = true
|
|
|
341
345
|
warmup = true
|
|
342
346
|
warmup_iterations = 3
|
|
343
347
|
|
|
344
|
-
[tool.
|
|
348
|
+
[tool.pytest_env]
|
|
345
349
|
JAX_ENABLE_X64 = "0"
|
|
346
350
|
JAX_SKIP_CUDA_CONSTRAINTS_CHECK = "1"
|
|
347
351
|
LD_LIBRARY_PATH = "/usr/local/cuda/lib64"
|
|
@@ -81,6 +81,9 @@ from diffbio.core.soft_ops.sorting import (
|
|
|
81
81
|
top_k_mask,
|
|
82
82
|
)
|
|
83
83
|
|
|
84
|
+
# --- Range-aware normalization ---
|
|
85
|
+
from diffbio.core.soft_ops.normalization import temperature_softmax
|
|
86
|
+
|
|
84
87
|
# --- Quantile ---
|
|
85
88
|
from diffbio.core.soft_ops.quantile import (
|
|
86
89
|
argmedian,
|
|
@@ -126,6 +129,7 @@ from diffbio.core.soft_ops.straight_through import (
|
|
|
126
129
|
)
|
|
127
130
|
|
|
128
131
|
__all__ = [
|
|
132
|
+
"temperature_softmax",
|
|
129
133
|
# Types
|
|
130
134
|
"SoftBool",
|
|
131
135
|
"SoftIndex",
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"""Temperature softmax with jointly evaluated derivative coefficients.
|
|
2
|
+
|
|
3
|
+
Ordinary division AD forms ``T**-2`` before multiplying the softmax tail.
|
|
4
|
+
The product can be finite even when that reciprocal overflows or the tail
|
|
5
|
+
underflows. Evaluate probability products, score gaps and reciprocal powers
|
|
6
|
+
together in log space. A recursive coefficient JVP preserves mixed derivatives
|
|
7
|
+
at zero gaps; differentiating an outer zero selection would lose them.
|
|
8
|
+
|
|
9
|
+
This requires representable coefficient sums, not merely a representable final
|
|
10
|
+
contraction. Work grows with donor count and derivative order: the first JVP
|
|
11
|
+
has quadratic donor work. It is intended for small donor panels.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
from functools import partial
|
|
15
|
+
|
|
16
|
+
import jax
|
|
17
|
+
import jax.numpy as jnp
|
|
18
|
+
from jax import Array
|
|
19
|
+
|
|
20
|
+
from diffbio.core.soft_ops._utils import canonicalize_axis
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
type _Specification = tuple[tuple[int, ...], tuple[tuple[int, int], ...], int]
|
|
24
|
+
type _Inputs = tuple[Array, Array, Array]
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _logits(scores: Array, temperature: Array, covered: Array) -> Array:
|
|
28
|
+
"""Shift over covered donors before division, guarding excluded operands."""
|
|
29
|
+
maximum = jnp.max(jnp.where(covered, scores, -jnp.inf), axis=0, keepdims=True)
|
|
30
|
+
shifted = jnp.where(covered, scores - maximum, 0.0)
|
|
31
|
+
return jnp.where(covered, shifted / temperature, -jnp.inf)
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def _coefficient_value(
|
|
35
|
+
scores: Array, temperature: Array, covered: Array, specification: _Specification
|
|
36
|
+
) -> Array:
|
|
37
|
+
"""Evaluate a probability/gap monomial divided by a temperature power."""
|
|
38
|
+
indices, gaps, power = specification
|
|
39
|
+
log_weights = jax.nn.log_softmax(_logits(scores, temperature, covered), axis=0)
|
|
40
|
+
magnitude = sum(log_weights[index] for index in indices) - power * jnp.log(temperature)
|
|
41
|
+
sign = jnp.ones_like(magnitude)
|
|
42
|
+
nonzero = jnp.ones_like(magnitude, dtype=jnp.bool_)
|
|
43
|
+
for left, right in gaps:
|
|
44
|
+
gap = scores[left] - scores[right]
|
|
45
|
+
nonzero = nonzero & (gap != 0)
|
|
46
|
+
magnitude = magnitude + jnp.log(jnp.where(gap != 0, jnp.abs(gap), 1.0))
|
|
47
|
+
sign = sign * jnp.sign(gap)
|
|
48
|
+
# Guard the exponential too: a zero gap must not create 0 * inf.
|
|
49
|
+
value = sign * jnp.exp(jnp.where(nonzero, magnitude, 0.0))
|
|
50
|
+
return jnp.where(nonzero, value, 0.0)
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
_coefficient = jax.custom_jvp(_coefficient_value, nondiff_argnums=(3,))
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def _coefficient_jvp(
|
|
57
|
+
specification: _Specification, primals: _Inputs, tangents: _Inputs
|
|
58
|
+
) -> tuple[Array, Array]:
|
|
59
|
+
"""Differentiate complete coefficients, including zero-gap extensions."""
|
|
60
|
+
scores, _, _ = primals
|
|
61
|
+
score_dot, temperature_dot, _ = tangents
|
|
62
|
+
indices, gaps, power = specification
|
|
63
|
+
value = _coefficient(*primals, specification)
|
|
64
|
+
derivative = jnp.zeros_like(value)
|
|
65
|
+
thermal = jnp.zeros_like(value)
|
|
66
|
+
for index in indices:
|
|
67
|
+
for other in range(scores.shape[0]):
|
|
68
|
+
if other != index:
|
|
69
|
+
extended = (*indices, other)
|
|
70
|
+
coefficient = _coefficient(*primals, (extended, gaps, power + 1))
|
|
71
|
+
derivative = derivative + coefficient * (score_dot[index] - score_dot[other])
|
|
72
|
+
thermal = thermal + _coefficient(
|
|
73
|
+
*primals, (extended, (*gaps, (other, index)), power + 2)
|
|
74
|
+
)
|
|
75
|
+
for position, (left, right) in enumerate(gaps):
|
|
76
|
+
remaining = gaps[:position] + gaps[position + 1 :]
|
|
77
|
+
derivative = derivative + _coefficient(*primals, (indices, remaining, power)) * (
|
|
78
|
+
score_dot[left] - score_dot[right]
|
|
79
|
+
)
|
|
80
|
+
if power:
|
|
81
|
+
thermal = thermal - power * _coefficient(*primals, (indices, gaps, power + 1))
|
|
82
|
+
return value, derivative + thermal * temperature_dot
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
_coefficient.defjvp(_coefficient_jvp)
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
@jax.custom_jvp
|
|
89
|
+
def _weights(scores: Array, temperature: Array, covered: Array) -> Array:
|
|
90
|
+
"""Keep the native shifted forward softmax arithmetic."""
|
|
91
|
+
return jax.nn.softmax(_logits(scores, temperature, covered), axis=0)
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def _weights_jvp(primals: _Inputs, tangents: _Inputs) -> tuple[Array, Array]:
|
|
95
|
+
"""Contract pairwise sensitivities without rounding either probability first."""
|
|
96
|
+
scores, _, _ = primals
|
|
97
|
+
score_dot, temperature_dot, _ = tangents
|
|
98
|
+
value = _weights(*primals)
|
|
99
|
+
rows = []
|
|
100
|
+
for index in range(scores.shape[0]):
|
|
101
|
+
derivative = jnp.zeros_like(value[index])
|
|
102
|
+
for other in range(scores.shape[0]):
|
|
103
|
+
if other != index:
|
|
104
|
+
probability = (index, other)
|
|
105
|
+
spatial = _coefficient(*primals, (probability, (), 1))
|
|
106
|
+
thermal = _coefficient(*primals, (probability, ((other, index),), 2))
|
|
107
|
+
derivative = derivative + spatial * (score_dot[index] - score_dot[other])
|
|
108
|
+
derivative = derivative + thermal * temperature_dot
|
|
109
|
+
rows.append(derivative)
|
|
110
|
+
return value, jnp.stack(rows)
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
_weights.defjvp(_weights_jvp)
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
@partial(jax.jit, static_argnames=("axis",))
|
|
117
|
+
def temperature_softmax(
|
|
118
|
+
scores: Array,
|
|
119
|
+
temperature: float | Array = 1.0,
|
|
120
|
+
*,
|
|
121
|
+
axis: int = -1,
|
|
122
|
+
where: Array | None = None,
|
|
123
|
+
) -> Array:
|
|
124
|
+
"""Normalize small score axes with range-aware temperature derivatives.
|
|
125
|
+
|
|
126
|
+
Equivalent to masked ``jax.nn.softmax(scores / temperature, axis=axis)``
|
|
127
|
+
for valid inputs. Shift before division and evaluate complete derivative
|
|
128
|
+
coefficients in signed log space, preserving sensitivities even when a
|
|
129
|
+
probability rounds to zero or one. Supports JVP, VJP and higher derivatives.
|
|
130
|
+
|
|
131
|
+
This is an opt-in operation for small axes, not the default sorting kernel:
|
|
132
|
+
first derivatives require quadratic axis work and higher orders cost more.
|
|
133
|
+
Coefficients, score differences and their necessary sums must be representable;
|
|
134
|
+
a representable final contraction alone does not guarantee a finite derivative.
|
|
135
|
+
|
|
136
|
+
Args:
|
|
137
|
+
scores: Real floating array. Included scores and their pairwise differences
|
|
138
|
+
must be finite. Excluded scores are ignored, including NaN/infinity.
|
|
139
|
+
temperature: Positive finite real scalar. Callers own runtime validation;
|
|
140
|
+
nonpositive/nonfinite values are outside this numerical contract.
|
|
141
|
+
axis: Static reduction axis. Must be nonempty.
|
|
142
|
+
where: Boolean mask broadcastable to the score shape. Empty slices return
|
|
143
|
+
zero weights and zero derivatives, matching native masked softmax.
|
|
144
|
+
|
|
145
|
+
Returns:
|
|
146
|
+
Weights with the score shape and standard floating dtype promotion.
|
|
147
|
+
|
|
148
|
+
Raises:
|
|
149
|
+
TypeError: Scores are not floating, temperature is complex, or mask is not boolean.
|
|
150
|
+
ValueError: Temperature is not scalar, the axis is invalid/empty, or mask cannot broadcast.
|
|
151
|
+
"""
|
|
152
|
+
scores = jnp.asarray(scores)
|
|
153
|
+
temperature = jnp.asarray(temperature)
|
|
154
|
+
if not jnp.issubdtype(scores.dtype, jnp.floating):
|
|
155
|
+
raise TypeError("scores must have a real floating dtype")
|
|
156
|
+
if jnp.issubdtype(temperature.dtype, jnp.complexfloating):
|
|
157
|
+
raise TypeError("temperature must be real")
|
|
158
|
+
if temperature.ndim != 0:
|
|
159
|
+
raise ValueError("temperature must be scalar")
|
|
160
|
+
temperature = temperature.astype(jnp.result_type(scores, temperature))
|
|
161
|
+
axis = canonicalize_axis(axis, scores.ndim)
|
|
162
|
+
if scores.shape[axis] == 0:
|
|
163
|
+
raise ValueError("the normalization axis must be nonempty")
|
|
164
|
+
covered = jnp.ones_like(scores, dtype=jnp.bool_) if where is None else jnp.asarray(where)
|
|
165
|
+
if covered.dtype != jnp.bool_:
|
|
166
|
+
raise TypeError("where must have boolean dtype")
|
|
167
|
+
covered = jnp.broadcast_to(covered, scores.shape)
|
|
168
|
+
scores, covered = jnp.moveaxis(scores, axis, 0), jnp.moveaxis(covered, axis, 0)
|
|
169
|
+
scores = jnp.where(covered, scores, 0.0)
|
|
170
|
+
populated = jnp.any(covered, axis=0, keepdims=True)
|
|
171
|
+
first = (jnp.arange(scores.shape[0]) == 0).reshape((-1,) + (1,) * (scores.ndim - 1))
|
|
172
|
+
safe_coverage = covered | (first & ~populated)
|
|
173
|
+
value = _weights(scores, temperature, safe_coverage)
|
|
174
|
+
return jnp.moveaxis(jnp.where(populated, value, 0.0), 0, axis)
|
|
@@ -32,7 +32,7 @@ from flax import nnx
|
|
|
32
32
|
|
|
33
33
|
logger = logging.getLogger(__name__)
|
|
34
34
|
|
|
35
|
-
_DEFAULT_DATA_DIR = "/
|
|
35
|
+
_DEFAULT_DATA_DIR = "/mnt/ssd2/Works/RNAFoldAssess/tutorial/processed_data"
|
|
36
36
|
_STRUCTURE_FILENAME = "example_data_structure.csv"
|
|
37
37
|
|
|
38
38
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Loads mESC expression data and ChIP+Perturb ground truth edges from
|
|
4
4
|
the benGRN repository (Stone & Sroy gold standards).
|
|
5
5
|
|
|
6
|
-
Data source: /
|
|
6
|
+
Data source: /mnt/ssd2/Works/benGRN/data/GroundTruth/
|
|
7
7
|
|
|
8
8
|
References:
|
|
9
9
|
- benGRN: https://github.com/your-org/benGRN
|
|
@@ -28,7 +28,7 @@ from datarax.core.data_source import DataSourceModule
|
|
|
28
28
|
|
|
29
29
|
logger = logging.getLogger(__name__)
|
|
30
30
|
|
|
31
|
-
_BASE_DIR = Path("/
|
|
31
|
+
_BASE_DIR = Path("/mnt/ssd2/Works/benGRN/data/GroundTruth/stone_and_sroy")
|
|
32
32
|
|
|
33
33
|
|
|
34
34
|
@dataclass(frozen=True, kw_only=True)
|
|
@@ -33,7 +33,7 @@ from flax import nnx
|
|
|
33
33
|
|
|
34
34
|
logger = logging.getLogger(__name__)
|
|
35
35
|
|
|
36
|
-
_DEFAULT_DATA_PATH = "/
|
|
36
|
+
_DEFAULT_DATA_PATH = "/mnt/ssd2/Data/encode/CTCF_K562_narrowPeak.bed.gz"
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
@dataclass(frozen=True, kw_only=True)
|
|
@@ -48,7 +48,7 @@ class ImmuneHumanConfig(StructuralConfig):
|
|
|
48
48
|
embedding_key: Key in obsm for precomputed embeddings.
|
|
49
49
|
"""
|
|
50
50
|
|
|
51
|
-
data_dir: str = "/
|
|
51
|
+
data_dir: str = "/mnt/ssd2/Data/scib"
|
|
52
52
|
subsample: int | None = None
|
|
53
53
|
batch_key: str = "batch"
|
|
54
54
|
label_key: str = "final_annotation"
|
|
@@ -42,7 +42,7 @@ class PancreasConfig(StructuralConfig):
|
|
|
42
42
|
cluster_key: Column in obs for cell type labels.
|
|
43
43
|
"""
|
|
44
44
|
|
|
45
|
-
data_dir: str = "/
|
|
45
|
+
data_dir: str = "/mnt/ssd2/Data/scvelo"
|
|
46
46
|
subsample: int | None = None
|
|
47
47
|
cluster_key: str = "clusters"
|
|
48
48
|
|
|
@@ -46,7 +46,7 @@ class SeqFISHConfig(StructuralConfig):
|
|
|
46
46
|
spatial_key: Key in obsm for spatial coordinates.
|
|
47
47
|
"""
|
|
48
48
|
|
|
49
|
-
data_dir: str = "/
|
|
49
|
+
data_dir: str = "/mnt/ssd2/Data/spatial"
|
|
50
50
|
subsample: int | None = None
|
|
51
51
|
label_key: str = "celltype_mapped_refined"
|
|
52
52
|
spatial_key: str = "spatial"
|
|
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.3 → diffbio-0.1.4}/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
|