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

Release 2.2 #40

Merged
merged 46 commits into from
Jul 26, 2023
Merged

Release 2.2 #40

merged 46 commits into from
Jul 26, 2023

Conversation

evanroyrees
Copy link
Owner

Release 2.2

A complete refactor for improved maintainability, code comprehension and most importantly performance.

New features for quickly exploring your environmental samples across multiple datasets. Automappa will persist your changes, so no longer must you spend hours painstakingly curating your genomes only for them to be lost by a pesky browser crash!

A shortlist of nice features with this update 🎈

  • πŸƒ Faster load times
  • πŸ§‘β€πŸŽ¨ Cleaner layouts
  • 🐘 persistent curations
  • multi-sample upload
  • Improved UI/UX for easily getting started

πŸ“πŸŽ¨ Add Bioconda project url to setup.py
🎨 Add toast when browser storage limits are reached (issue #11)
:art::memo: Move favicon to automappa/assets
:arrow_up::art: Add geom-median to environment.yml
:art: Add get_clusters_geom_medians(...) to celery tasks
:arrow_up::art: Bump VERSION to 2.2.0
:see_no_evil: Add data to .gitignore
Add TODOs for WIP next steps... To be checked before merge into develop
πŸŽ¨πŸ› Prevent samples-store data from being overwritten on initial callback
🎨 samples-store data now persistent with local session
🎨 Refactor some variables in MAG refinement
🎨 WIP
… MetaData.table.keys()

Should now be able to πŸ”₯ remove all of the data stores to track the fileupload table_id... πŸ”₯
🐳🌻🐘🎨 Add docker-services: celery, flower, prometheus, grafana, redis, rabbitmq
🎨πŸ”₯ Remove environment/*.env files. Consolidate to .env with corresponding prefixes
🎨 Change pydantic models built on BaseSettings in automappa.settings to use only .env with env_prefix
🎨🌻 Add working configuration of celery task-queue with redis backend and rabbitMQ broker
πŸ“ Add resources/references for misc. links used during debugging/troubleshooting
⬆️ Add flower. Move celery[redis] to pip install section of environment.yml
🎨 black formatting to serializers and change server.upload_folder root to server.root_upload_folder
🎨 blak formatting to home.py
🎨 dbc.Select(...) are now populated with values from db tables
πŸ›πŸŽ¨ Investigate whether serializer.get_uploaded_files_table() is functional (TODO)
🐳 Add commented out arg to create_engine(..., pre_pool_ping: Optional[bool]) and db settings
🐳 Add PRE_POOL_PING to .env
πŸ”₯ Remove (now deprecated) stores
🎨 Add serialization of a hash-refinement table when hash-binning file is uploaded (respective to hash-binning)
🎨 Remove --debug arg from parser. Move statement to .env (now handle read with automappa.settings.server.debug
πŸ”₯ remove unused imports in index.py
🎨 Move samples stores from home.py to index.py
Add dbc.InputGroup(...) with selects for binning, markers and metagenome
🎨 Add dbc.Button(...) to save table-ids in 'selected-tables-store' to be read from mag_refinement.py
πŸŽ¨πŸ› Continue refactor of get_scatterplot_2d(...) to use other embedding methods
🎨 Add get_marker_symbols(...) to tasks.py and automappa.utils.markers (WIP currently being used to *expensively* generate symbols during 2d scatterplot creation
πŸ”₯ Remove unused (commented out) argparse args
πŸ”₯🎨🐳 Update automappa-web service command to not use removed argparse args
Will still need to ensure this is working once celery tasks are implemented
πŸ›πŸ”₯ Fix sankey diagram subsetting bug where selections would not render
🎨 Change MAG-specific completeness/purity boxplot to barplot
🎨 Rename save_to_db(...) to file_to_db(...) in serializer
🎨 Add metric_barplot(...) func to automappa.utils.figures
- 🐳🎨 Add mem_limit: 4GB to automappa-web service
- πŸŽ¨πŸ› Remove ability for user to navigate to other tabs when no data has been uploaded/selected
- 🎨 Disable 'Refine mags' button if data has not been selected
- 🎨 Add DataTable(...) to visualize the currently loaded datasets
- 🎨 Change server settings import so it is clear that the server setting are imported and not the server
- 🎨πŸ₯• Silence numba and h5py loggers in mag_refinement.py (beginnings of celery task-queue tasks implementation)
 - 🎨 Add logger to automappa.tasks
- πŸ› Fix logger emitted message during refinement data serialization to postgres db
…g methods

πŸŽ¨πŸ› Need to replace kmers.embed(...) method in tasks.py to include n_jobs=1 when autometa 2.0.4 release is out
🎨πŸ₯¦ Add celeryconfig
🎨πŸ₯¦ Add working kmer freq. analysis parallelize pipeline for use in task-queue
🎨 Add use of pydantic.BaseModel in models.py of SampleTables, KmerTable, AnnotationTable and misc. others (WIP)
🎨 Add construction of SeqIO.SeqRecords when retrieving metagenome from table using new func, get_metagenome_seqrecords(...)
🎨 Refactor get_contig_marker_counts(...)
🎨 Refactor get_marker_symbols(...) in markers.py
🎨πŸ”₯ Remove hard-coded values in automappa.utils.figures.get_embedding_traces_df(...)
🎨 Parse selected_data_tables as SampleTables.parse_raw(selected_data_tables) for shared data
🎨 Add tasks button to home.py
🎨 Replace typehints for selected_data_tables to Json[SampleTables]
evanroyrees and others added 14 commits May 5, 2022 11:56
🎨 Fetch data from postgres service
🎨πŸ₯¦ Retrieve scatterplot-2d coordinates from celery task-queue results (selected from auto-generated dropdown)
🎨🌻 Add flower configuration env variable to settings.py
🎨 generate product of all combinations of kmer pipeline params (kmer_size, norm_method, embed_method) for 2d-coords retrieval
πŸŽ¨πŸŽπŸ› Retrieve mag summary data from SampleTables properties instead of using get_table(...)
πŸ”₯πŸ› Remove default value of 'cluster' for mag_summary_cluster_col_dropdown
🎨πŸ”₯ Remove unnecessary nested lists of Input(...) in mag_summary callbacks
🎨 Add long_callback_manager to app (WIP: currently not being used)
🎨 Add handling of kmer param titles and metagenome annotation titles to format_axis_title(...) in figures.py
🎨🐳🐰 Change rabbitmq image from latest to 3.10.1-management-alpine (w/port) to use amqp management UI
πŸ“ Move misc. markdown docs to docs directory
🐳 Ignore .vscode for docker context
🐳 Install mamba and prune prior to env update
πŸ’šπŸŽ Add dash-extensions to enable caching
πŸ”₯ Reduce kmer tasks to am_clr norm method and kmer_size of 5 (bhsne, densmap and umap embeddings)
Turn off debug mode by default
πŸ”₯ Change clone of `home-tab` branch to `develop` branch
πŸ³πŸ“ΊπŸŽ¨ Automappa web app with home tab for data upload

- πŸ₯¦ Add task-queue for pre/post-processing tasks with celery
- πŸŸ₯ Add Redis service for celery backend
- 🐰 Add RabbitMQ service for celery broker
- 🐘 Add PostgreSQL for data ingestion
- 🌷 Add Flower for celery task-queue monitoring
- 🐍🎨 Add Pydantic for data models
- 🐳 Add docker-compose file to orchestrate Automappa services
* 🎨 Apply black formatting
* πŸŽ¨β¬†οΈπŸ€  refactor to use dash-extensions DashBlueprints
* Significantly simplified code base with modular components that are each passed their own page's app (DashBlueprint)
* components and layouts are standardized to use render function that may receive the app with or without arguments
* πŸ”₯ Remove (now) unnecessary index.py
* ⬆️ Pin dash-extensions to first major release
* ⬆️ Pin dash to 2.10
* ⬆️ Add dash-mantine-components
* ⬆️ Add dash-iconify
* πŸ“ Add contributing docs
* πŸŽ¨πŸ›πŸ“πŸ³ Fix docs, prop id and docker specs
* 🐳 Add quotes around ports per docker-compose spec
* πŸ“πŸŽ¨πŸ”₯ add Development resources
🎨πŸ”₯ Add icons to not found page and remove unnecessary text
* 🎨 Refactor mag refinement page components
* 🎨 Refactor marker symbols legend to use icons rather than naming shapes
* 🎨 Restyle save selections and settings buttons
* 🎨 Refactor mag-refinement offsettings canvas components
* 🎨 Add minimum example contig_cytoscape component
* 🎨 Add specific backend configurations
* 🎨 Add REDIS_BACKEND details to .env
* 🎨 Add specific backend params to Serverside(..., backend=...) from automappa.data.db import {redis,file_system}_backend
* πŸ“πŸ”₯ Refactor dash components to DashProxy components
* ⬆️ pin dash-mantine-components to 0.12 in env using pip rather than conda
* 🎨 Add icons in page registry with blueprints
* 🎨 Add coverage range slider component
* 🎨 Add Refinement model to track contig cluster refinements
* 🎨 Implement data source to connect MAG refinements table
* 🎨 Add methods to get latest user refinements contig headers
* 🎨 Add interaction b/w coverage range slider and scatterplot2d
* 🎨 Connect download refinements button to data source
* 🎨 Hide MAG refinements switch is now disabled when there are no user refinements that have been made
* 🎨 Refinements table has been styled with new timestamp string and removed 'initial_cluster' column
* 🎨 Refinements table now only retrieves user refinements (i.e. excludes initial clusters)
* 🎨 Add refinements clear button
* Add working data source for completeness/purity boxplot
* 🎨 Add minimal working AgGrid for MAG Summary
* 🎨 Replace dbc.Offcanvas with dmc.Drawer
* 🎨 Replace many of the Dropdowns in Offcanvas with RadioGroup Radio options (less clicks for the user)
* πŸ₯•πŸ° Add logic for modular task-queue
* πŸ“ Add documentation for tasks in CONTRIBUTING and reference tasks README.md
* πŸ₯• Add minimum working example for task submission, progress display for a task status badge
* πŸ₯• Add task discovery for home page task in celeryconfig.py
* 🐳🐍 Replace base image of miniforge with mambaforge
* πŸ₯•πŸŽ¨ Notification system tells user of current state of tasks processing
* πŸ›πŸŽ¨ Move dcc.Store(...) within respective du.Upload component
* 🎨 Add tasks store for getting tasks statuses
* 🐰πŸ₯• Add tasks in home for handling sample data ingestion
* 🎨 Add mag length sum computations
* 🎨 Add MIMAG cluster count computations
* 🎨 Add metadata to sample data card info
* πŸ› Replace na values from cluster col during contig loader pre-processing
* 🎨πŸ”₯ Add sample removal feature
* 🎨 Affix settings and save mag buttons
@evanroyrees evanroyrees added documentation Improvements or additions to documentation enhancement New feature or request dependencies Pull requests that update a dependency file aesthetic Improvements or additions to aesthetics performance Performance Improvements to speed-up user experience labels Jul 21, 2023
@evanroyrees evanroyrees merged commit 3640ae0 into main Jul 26, 2023
2 checks passed
@evanroyrees evanroyrees deleted the develop branch July 26, 2023 12:29
@evanroyrees evanroyrees restored the develop branch July 26, 2023 12:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
aesthetic Improvements or additions to aesthetics dependencies Pull requests that update a dependency file documentation Improvements or additions to documentation enhancement New feature or request performance Performance Improvements to speed-up user experience
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant