Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move and reorganize setup dict out of AnnData into Manager #1285

Merged
merged 9 commits into from
Dec 14, 2021

Conversation

justjhong
Copy link
Contributor

This PR includes:

  • New setup dict organization more amenable to generalizable fields (now called a registry)
    • The organization is as such: registry -> some metadata as well as field_registries
    • field_registries: keys are registry_keys (the ones you feed into setup_anndata - guaranteed to be unique), values are field_registry dictionaries
    • field_registry has a data_registry (same as before), summary_stats (same as before), and a new state_registry which holds any field specific information (e.g. categorical_mappings, extra_continuous_keys)
  • Dataloading and various utils have been modified to take in an anndata manager object rather than an anndata since this is now necessary to access setup metadata.


adata = self._validate_anndata(adata)
batch = self.get_from_registry(adata, _CONSTANTS.BATCH_KEY).ravel()
cats = adata.uns["_scvi"]["categorical_mappings"]["_scvi_batch"]["mapping"]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this safe now?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no I haven't moved all these references yet, I'm planning on doing that in chunks

Comment on lines 777 to 779
warnings.warn(
"Is adata.obs['{}'] continuous? SCVI doesn't support continuous obs yet."
)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this could probably be changed as well

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should it be removed?

scvi/data/anndata/_utils.py Show resolved Hide resolved
scvi/data/anndata/_utils.py Outdated Show resolved Hide resolved
scvi/data/anndata/_utils.py Outdated Show resolved Hide resolved
scvi/model/base/_base_model.py Show resolved Hide resolved
scvi/model/base/_base_model.py Show resolved Hide resolved
@justjhong justjhong merged commit 5c3777f into jhong/adatarefactorbase Dec 14, 2021
@justjhong justjhong deleted the jhong/adatarefactor-movesetupdict branch December 14, 2021 00:15
justjhong added a commit that referenced this pull request Jan 16, 2022
* new base field API for setup dict

* adapt manager to new registry

* backwards compatibility implementation

* train works

* adapt get_from_registry function

* simplify needs transfer logic, working test_scvi

* change _REGISTRY_KEYS back to _CONSTANTS

* address comments, fix compat test

* codacy
justjhong added a commit that referenced this pull request Feb 2, 2022
* new base field API for setup dict

* adapt manager to new registry

* backwards compatibility implementation

* train works

* adapt get_from_registry function

* simplify needs transfer logic, working test_scvi

* change _REGISTRY_KEYS back to _CONSTANTS

* address comments, fix compat test

* codacy
justjhong added a commit that referenced this pull request Feb 5, 2022
* placeholder release notes for base

* AnnData Manager refactor (#1238)

* move anndata file into anndata subfolder

* mock out anndata manager and fields for categorical obs fields only

* add layerfield

* fix imports

* fix imports in models

* add temporary test and fix bugs in manager code

* manager store on model class, refactor what needs to be defined for a model

* clean up some existing code

* restructure fields file, clean up more view anndata setup code, add more skeleton

* add transfer_field for obs and layer fields

* naive implementation of transfer_setup in anndata manager

* implement backwards compat with setup dict on load

* add docstrings to all new methods

* address comments: change to registry_key, change fields to set in manager

* add tests for transfer and manager from setup

* remove anndata_fields method

* address pr comment

* Implement NonCategoricalJointObsField (#1247)

* implement continuous obsm field

* make class specific to joint obs fields

* make fields public

* address comments

* faster concat by subsetting obs

* Implement CategoricalJointObsField (#1248)

* add categorical joint obs field

* fix _make_obsm_categorical

* add line in test

* address pr comment

* Pass manager to data loader (#1280)

* pass manager to data loader

* address comment

* Move and reorganize setup dict out of AnnData into Manager (#1285)

* new base field API for setup dict

* adapt manager to new registry

* backwards compatibility implementation

* train works

* adapt get_from_registry function

* simplify needs transfer logic, working test_scvi

* change _REGISTRY_KEYS back to _CONSTANTS

* address comments, fix compat test

* codacy

* Add anndata registration classes to developer API (#1292)

* add anndata registration classes to developer API

* move manager to anndata submodule to fix docs

* Save/Load with saved setup inputs (#1294)

* skeleton for new save load, missing field logic

* save load with saved setup inputs

* add docstring for setup_inputs

* codacy

* fix documentation

* additional pr comments

* fix manager imports

* Adapt TotalVI to new setup (#1298)

* obsm field

* adapt totalVI to new setup

* fix additional totalvi test

* make field registration ordered

* fix totalvi protein priors logic

* address pr comments

* address pr comments

* Fix tests for SCVI, TOTALVI, generic AnnData utils (#1299)

* adapt totalVI to new setup

* fix additional totalvi test

* remove run_setup_anndata kwarg, reassign uuid on view copy, fix some tests

* remove run_setup_anndata comments

* fix transfer anndata test

* fix test data format test

* fix setup anndata test

* fix most pyro tests

* fix most scarches tests

* remove state dict from field

* Adapt all internal models to new setup (#1301)

* adapt LDA

* adapt linearscvi

* remove _get_var_names_from_setup_anndata

* adapt peakvi

* adapt autozi

* adapt scanvi

* fix scanvi test

* fix totalvi test

* fix dataloader tests

* fix multiple cov tests

* adapt condscvi

* adapt destvi

* adapt multivi

* fix setup compat test

* remove get_from_registry util

* fix scanvi and peakvi scarches tests

* fix backwards compat tests and default missing summary stat in models

* address comment

* Adapt all external models to new setup (#1302)

* adapt cellassign

* adapt gimvi

* adapt solo model

* adapt stereoscope

* codacy

* rename _CONSTANTS to REGISTRY_KEYS (#1306)

* Remove deprecated functions (#1308)

* remove unused utils

* remove references to removed functions in docs

* Cleanup Manager register reference with AttrDict implementation (#1307)

* implement attrdict and add it to properties of manager

* use attrdict feature model code

* address pr comments

* codacy

* view_anndata_setup new implementation (#1313)

* implement attrdict and add it to properties of manager

* use attrdict feature model code

* address pr comments

* view anndata setup implementation

* fix bugs and tweak text

* Field specific `view_anndata_setup` (#1315)

* implement attrdict and add it to properties of manager

* use attrdict feature model code

* address pr comments

* view anndata setup implementation

* fix bugs and tweak text

* field specific view setup

* rich links in docstrings

* update get_totalvi_protein_priors code w/ master

* Fix docs (#1330)

* codacy

* address first round of comments

* comments in constants file

* add view registry tests

* fix compat function

* Update _layer_field.py

* Update _obsm_field.py

Co-authored-by: Adam Gayoso <[email protected]>
nrclaudio pushed a commit to nrclaudio/scvi-tools-tune that referenced this pull request Jun 21, 2022
* placeholder release notes for base

* AnnData Manager refactor (scverse#1238)

* move anndata file into anndata subfolder

* mock out anndata manager and fields for categorical obs fields only

* add layerfield

* fix imports

* fix imports in models

* add temporary test and fix bugs in manager code

* manager store on model class, refactor what needs to be defined for a model

* clean up some existing code

* restructure fields file, clean up more view anndata setup code, add more skeleton

* add transfer_field for obs and layer fields

* naive implementation of transfer_setup in anndata manager

* implement backwards compat with setup dict on load

* add docstrings to all new methods

* address comments: change to registry_key, change fields to set in manager

* add tests for transfer and manager from setup

* remove anndata_fields method

* address pr comment

* Implement NonCategoricalJointObsField (scverse#1247)

* implement continuous obsm field

* make class specific to joint obs fields

* make fields public

* address comments

* faster concat by subsetting obs

* Implement CategoricalJointObsField (scverse#1248)

* add categorical joint obs field

* fix _make_obsm_categorical

* add line in test

* address pr comment

* Pass manager to data loader (scverse#1280)

* pass manager to data loader

* address comment

* Move and reorganize setup dict out of AnnData into Manager (scverse#1285)

* new base field API for setup dict

* adapt manager to new registry

* backwards compatibility implementation

* train works

* adapt get_from_registry function

* simplify needs transfer logic, working test_scvi

* change _REGISTRY_KEYS back to _CONSTANTS

* address comments, fix compat test

* codacy

* Add anndata registration classes to developer API (scverse#1292)

* add anndata registration classes to developer API

* move manager to anndata submodule to fix docs

* Save/Load with saved setup inputs (scverse#1294)

* skeleton for new save load, missing field logic

* save load with saved setup inputs

* add docstring for setup_inputs

* codacy

* fix documentation

* additional pr comments

* fix manager imports

* Adapt TotalVI to new setup (scverse#1298)

* obsm field

* adapt totalVI to new setup

* fix additional totalvi test

* make field registration ordered

* fix totalvi protein priors logic

* address pr comments

* address pr comments

* Fix tests for SCVI, TOTALVI, generic AnnData utils (scverse#1299)

* adapt totalVI to new setup

* fix additional totalvi test

* remove run_setup_anndata kwarg, reassign uuid on view copy, fix some tests

* remove run_setup_anndata comments

* fix transfer anndata test

* fix test data format test

* fix setup anndata test

* fix most pyro tests

* fix most scarches tests

* remove state dict from field

* Adapt all internal models to new setup (scverse#1301)

* adapt LDA

* adapt linearscvi

* remove _get_var_names_from_setup_anndata

* adapt peakvi

* adapt autozi

* adapt scanvi

* fix scanvi test

* fix totalvi test

* fix dataloader tests

* fix multiple cov tests

* adapt condscvi

* adapt destvi

* adapt multivi

* fix setup compat test

* remove get_from_registry util

* fix scanvi and peakvi scarches tests

* fix backwards compat tests and default missing summary stat in models

* address comment

* Adapt all external models to new setup (scverse#1302)

* adapt cellassign

* adapt gimvi

* adapt solo model

* adapt stereoscope

* codacy

* rename _CONSTANTS to REGISTRY_KEYS (scverse#1306)

* Remove deprecated functions (scverse#1308)

* remove unused utils

* remove references to removed functions in docs

* Cleanup Manager register reference with AttrDict implementation (scverse#1307)

* implement attrdict and add it to properties of manager

* use attrdict feature model code

* address pr comments

* codacy

* view_anndata_setup new implementation (scverse#1313)

* implement attrdict and add it to properties of manager

* use attrdict feature model code

* address pr comments

* view anndata setup implementation

* fix bugs and tweak text

* Field specific `view_anndata_setup` (scverse#1315)

* implement attrdict and add it to properties of manager

* use attrdict feature model code

* address pr comments

* view anndata setup implementation

* fix bugs and tweak text

* field specific view setup

* rich links in docstrings

* update get_totalvi_protein_priors code w/ master

* Fix docs (scverse#1330)

* codacy

* address first round of comments

* comments in constants file

* add view registry tests

* fix compat function

* Update _layer_field.py

* Update _obsm_field.py

Co-authored-by: Adam Gayoso <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants