protspace 2.2.0__tar.gz → 2.3.0__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.
Files changed (189) hide show
  1. {protspace-2.2.0 → protspace-2.3.0}/CHANGELOG.md +50 -0
  2. {protspace-2.2.0 → protspace-2.3.0}/PKG-INFO +25 -17
  3. {protspace-2.2.0 → protspace-2.3.0}/README.md +24 -16
  4. {protspace-2.2.0 → protspace-2.3.0}/examples/image_creation.py +3 -1
  5. protspace-2.3.0/examples/out/automatic_projections/PCA_3_annotation_score.html +3885 -0
  6. protspace-2.3.0/examples/out/automatic_projections/PCA_3_protein_existence.html +3885 -0
  7. {protspace-2.2.0 → protspace-2.3.0}/pyproject.toml +1 -1
  8. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/__init__.py +1 -1
  9. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/cli/local_data.py +14 -1
  10. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/cli/uniprot_query.py +13 -1
  11. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/data/base_data_processor.py +72 -47
  12. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/data/feature_manager.py +24 -16
  13. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/data/taxonomy_feature_retriever.py +88 -24
  14. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/server/app.py +6 -2
  15. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/server/callbacks.py +11 -11
  16. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/utils/reducers.py +4 -0
  17. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/visualization/plotting.py +15 -8
  18. {protspace-2.2.0 → protspace-2.3.0}/uv.lock +1 -1
  19. {protspace-2.2.0 → protspace-2.3.0}/.dockerignore +0 -0
  20. {protspace-2.2.0 → protspace-2.3.0}/.env.example +0 -0
  21. {protspace-2.2.0 → protspace-2.3.0}/.github/SEMANTIC_RELEASE_SETUP.md +0 -0
  22. {protspace-2.2.0 → protspace-2.3.0}/.github/workflows/docker.yml +0 -0
  23. {protspace-2.2.0 → protspace-2.3.0}/.github/workflows/jekyll-gh-pages.yml +0 -0
  24. {protspace-2.2.0 → protspace-2.3.0}/.github/workflows/python.yml +0 -0
  25. {protspace-2.2.0 → protspace-2.3.0}/.github/workflows/release.yml +0 -0
  26. {protspace-2.2.0 → protspace-2.3.0}/.gitignore +0 -0
  27. {protspace-2.2.0 → protspace-2.3.0}/.python-version +0 -0
  28. {protspace-2.2.0 → protspace-2.3.0}/Dockerfile +0 -0
  29. {protspace-2.2.0 → protspace-2.3.0}/LICENSE +0 -0
  30. {protspace-2.2.0 → protspace-2.3.0}/data/3FTx/3FTx.csv +0 -0
  31. {protspace-2.2.0 → protspace-2.3.0}/data/3FTx/3FTx.json +0 -0
  32. {protspace-2.2.0 → protspace-2.3.0}/data/3FTx/3FTx_colored_hex.json +0 -0
  33. {protspace-2.2.0 → protspace-2.3.0}/data/3FTx/3FTx_colored_rbga.json +0 -0
  34. {protspace-2.2.0 → protspace-2.3.0}/data/3FTx/3FTx_customized.json +0 -0
  35. {protspace-2.2.0 → protspace-2.3.0}/data/3FTx/3FTx_pdb.zip +0 -0
  36. {protspace-2.2.0 → protspace-2.3.0}/data/3FTx/3FTx_prott5.h5 +0 -0
  37. {protspace-2.2.0 → protspace-2.3.0}/data/3FTx/costumize_colors_hex.json +0 -0
  38. {protspace-2.2.0 → protspace-2.3.0}/data/3FTx/costumize_colors_rbga.json +0 -0
  39. {protspace-2.2.0 → protspace-2.3.0}/data/Pla2g2/Pla2g2.csv +0 -0
  40. {protspace-2.2.0 → protspace-2.3.0}/data/Pla2g2/Pla2g2.fasta +0 -0
  41. {protspace-2.2.0 → protspace-2.3.0}/data/Pla2g2/Pla2g2_pdb.zip +0 -0
  42. {protspace-2.2.0 → protspace-2.3.0}/data/Pla2g2/embs/esm2_3b.h5 +0 -0
  43. {protspace-2.2.0 → protspace-2.3.0}/data/Pla2g2/embs/prott5.h5 +0 -0
  44. {protspace-2.2.0 → protspace-2.3.0}/data/Pla2g2/protspace_files/Pla2g2.json +0 -0
  45. {protspace-2.2.0 → protspace-2.3.0}/data/Pla2g2/protspace_files/Pla2g2_customized.json +0 -0
  46. {protspace-2.2.0 → protspace-2.3.0}/data/Pla2g2/style.json +0 -0
  47. {protspace-2.2.0 → protspace-2.3.0}/data/gfp/processed_data/gfp_features.csv +0 -0
  48. {protspace-2.2.0 → protspace-2.3.0}/data/gfp/processed_data/mutated_sequences.fasta +0 -0
  49. {protspace-2.2.0 → protspace-2.3.0}/data/gfp/processed_data/prott5_subset_1000.h5 +0 -0
  50. {protspace-2.2.0 → protspace-2.3.0}/data/gfp/processed_data/sequence_fident_matrix.csv +0 -0
  51. {protspace-2.2.0 → protspace-2.3.0}/data/gfp/processed_data/structure_alntmscore_matrix.csv +0 -0
  52. {protspace-2.2.0 → protspace-2.3.0}/data/gfp/processed_data/structure_bits_matrix.csv +0 -0
  53. {protspace-2.2.0 → protspace-2.3.0}/data/gfp/processed_data/structure_evalue_matrix.csv +0 -0
  54. {protspace-2.2.0 → protspace-2.3.0}/data/gfp/processed_data/structure_fident_matrix.csv +0 -0
  55. {protspace-2.2.0 → protspace-2.3.0}/data/gfp/processed_data/structure_lddt_matrix.csv +0 -0
  56. {protspace-2.2.0 → protspace-2.3.0}/data/gfp/processed_data/structure_rmsd_matrix.csv +0 -0
  57. {protspace-2.2.0 → protspace-2.3.0}/data/gfp/processed_data/structure_similarity_matrix.csv +0 -0
  58. {protspace-2.2.0 → protspace-2.3.0}/data/gfp/processed_data/subset_1000.fasta +0 -0
  59. {protspace-2.2.0 → protspace-2.3.0}/data/gfp/protspace/gfp.json +0 -0
  60. {protspace-2.2.0 → protspace-2.3.0}/data/gfp/protspace/gfp_str_sim.json +0 -0
  61. {protspace-2.2.0 → protspace-2.3.0}/data/gfp/protspace/gfp_style.json +0 -0
  62. {protspace-2.2.0 → protspace-2.3.0}/data/gfp/protspace/out/prott5_umap2.svg +0 -0
  63. {protspace-2.2.0 → protspace-2.3.0}/data/gfp/protspace/style.json +0 -0
  64. {protspace-2.2.0 → protspace-2.3.0}/data/phages/phages_prep.ipynb +0 -0
  65. {protspace-2.2.0 → protspace-2.3.0}/data/phages/processed/all_members.csv +0 -0
  66. {protspace-2.2.0 → protspace-2.3.0}/data/phages/processed/all_members_7k_function_500_hyp.fasta +0 -0
  67. {protspace-2.2.0 → protspace-2.3.0}/data/phages/processed/foldseek.csv +0 -0
  68. {protspace-2.2.0 → protspace-2.3.0}/data/phages/processed/foldseek_clusterreps_7k_function_500_hyp.fasta +0 -0
  69. {protspace-2.2.0 → protspace-2.3.0}/data/phages/processed/foldseek_new.csv +0 -0
  70. {protspace-2.2.0 → protspace-2.3.0}/data/phages/processed/foldseek_new2.csv +0 -0
  71. {protspace-2.2.0 → protspace-2.3.0}/data/phages/protspace/all_members_phages.json +0 -0
  72. {protspace-2.2.0 → protspace-2.3.0}/data/phages/protspace/all_members_style.json +0 -0
  73. {protspace-2.2.0 → protspace-2.3.0}/data/phages/protspace/foldseek.json +0 -0
  74. {protspace-2.2.0 → protspace-2.3.0}/data/phages/protspace/foldseek_phages.json +0 -0
  75. {protspace-2.2.0 → protspace-2.3.0}/data/phages/protspace/foldseek_style.json +0 -0
  76. {protspace-2.2.0 → protspace-2.3.0}/data/phages/raw/all_members_7k_function_500_hyp.csv +0 -0
  77. {protspace-2.2.0 → protspace-2.3.0}/data/phages/raw/foldseek_clusterreps_7k_function_500_hyp.csv +0 -0
  78. {protspace-2.2.0 → protspace-2.3.0}/data/phages/raw/foldseek_clusterreps_7k_function_500_hyp.fasta +0 -0
  79. {protspace-2.2.0 → protspace-2.3.0}/data/phages/raw/foldseek_clusterreps_7k_function_500_hyp_with_ids.csv +0 -0
  80. {protspace-2.2.0 → protspace-2.3.0}/data/phages/style.json +0 -0
  81. {protspace-2.2.0 → protspace-2.3.0}/data/phages/style2.json +0 -0
  82. {protspace-2.2.0 → protspace-2.3.0}/data/toxins/processed_data/alluvial_plot.png +0 -0
  83. {protspace-2.2.0 → protspace-2.3.0}/data/toxins/processed_data/analysis.ipynb +0 -0
  84. {protspace-2.2.0 → protspace-2.3.0}/data/toxins/processed_data/toxins.csv +0 -0
  85. {protspace-2.2.0 → protspace-2.3.0}/data/toxins/processed_data/toxins.h5 +0 -0
  86. {protspace-2.2.0 → protspace-2.3.0}/data/toxins/processed_data/toxins_all.csv +0 -0
  87. {protspace-2.2.0 → protspace-2.3.0}/data/toxins/processed_data/toxins_query_new_zstd/projections_data.parquet +0 -0
  88. {protspace-2.2.0 → protspace-2.3.0}/data/toxins/processed_data/toxins_query_new_zstd/projections_metadata.parquet +0 -0
  89. {protspace-2.2.0 → protspace-2.3.0}/data/toxins/processed_data/toxins_query_new_zstd/selected_features.parquet +0 -0
  90. {protspace-2.2.0 → protspace-2.3.0}/data/toxins/protspace/hymenoptera.json +0 -0
  91. {protspace-2.2.0 → protspace-2.3.0}/data/toxins/protspace/style.json +0 -0
  92. {protspace-2.2.0 → protspace-2.3.0}/data/toxins/protspace/style.md +0 -0
  93. {protspace-2.2.0 → protspace-2.3.0}/data/toxins/protspace/style.txt +0 -0
  94. {protspace-2.2.0 → protspace-2.3.0}/data/toxins/protspace/tmp.json +0 -0
  95. {protspace-2.2.0 → protspace-2.3.0}/data/toxins/protspace/tmp_style.json +0 -0
  96. {protspace-2.2.0 → protspace-2.3.0}/data/toxins/protspace/toxins.json +0 -0
  97. {protspace-2.2.0 → protspace-2.3.0}/data/toxins/protspace/toxins_seq_sim.json +0 -0
  98. {protspace-2.2.0 → protspace-2.3.0}/data/toxins/protspace/toxins_seq_sim_style.json +0 -0
  99. {protspace-2.2.0 → protspace-2.3.0}/data/toxins/protspace/toxins_style.json +0 -0
  100. {protspace-2.2.0 → protspace-2.3.0}/examples/Workflow.svg +0 -0
  101. {protspace-2.2.0 → protspace-2.3.0}/examples/cli/protspace_local.py +0 -0
  102. {protspace-2.2.0 → protspace-2.3.0}/examples/cli/protspace_query.py +0 -0
  103. {protspace-2.2.0 → protspace-2.3.0}/examples/notebook/2024_ClickThrough_GenerateEmbeddings.ipynb +0 -0
  104. {protspace-2.2.0 → protspace-2.3.0}/examples/notebook/ClickThrough_GenerateEmbeddings.ipynb +0 -0
  105. {protspace-2.2.0 → protspace-2.3.0}/examples/notebook/Explore_ProtSpace.ipynb +0 -0
  106. {protspace-2.2.0 → protspace-2.3.0}/examples/notebook/PfamExplorer_ProtSpace.ipynb +0 -0
  107. {protspace-2.2.0 → protspace-2.3.0}/examples/notebook/Run_ProtSpace.ipynb +0 -0
  108. {protspace-2.2.0 → protspace-2.3.0}/examples/out/3FTx/PCA2_group.svg +0 -0
  109. {protspace-2.2.0 → protspace-2.3.0}/examples/out/3FTx/PCA2_major_group.svg +0 -0
  110. {protspace-2.2.0 → protspace-2.3.0}/examples/out/3FTx/PCA3_group.html +0 -0
  111. {protspace-2.2.0 → protspace-2.3.0}/examples/out/3FTx/PCA3_major_group.html +0 -0
  112. {protspace-2.2.0 → protspace-2.3.0}/examples/out/3FTx/UMAP2_group.svg +0 -0
  113. {protspace-2.2.0 → protspace-2.3.0}/examples/out/3FTx/UMAP2_major_group.svg +0 -0
  114. {protspace-2.2.0 → protspace-2.3.0}/examples/out/3FTx/UMAP3_group.html +0 -0
  115. {protspace-2.2.0 → protspace-2.3.0}/examples/out/3FTx/UMAP3_major_group.html +0 -0
  116. {protspace-2.2.0 → protspace-2.3.0}/examples/out/Pla2g2/Pla2g2_dashboard.png +0 -0
  117. {protspace-2.2.0 → protspace-2.3.0}/examples/out/Pla2g2/Pla2g2_group.svg +0 -0
  118. {protspace-2.2.0 → protspace-2.3.0}/examples/out/Pla2g2/group.svg +0 -0
  119. {protspace-2.2.0 → protspace-2.3.0}/examples/out/automatic_projections/PCA_2_annotation_score.png +0 -0
  120. {protspace-2.2.0 → protspace-2.3.0}/examples/out/automatic_projections/PCA_2_protein_existence.png +0 -0
  121. {protspace-2.2.0 → protspace-2.3.0}/examples/out/gfp/prott5_umap2_brightness_category.svg +0 -0
  122. {protspace-2.2.0 → protspace-2.3.0}/examples/out/gfp/prott5_umap2_nr_mutations.svg +0 -0
  123. {protspace-2.2.0 → protspace-2.3.0}/examples/out/gfp/seq_sim_mds2_brightness_category.svg +0 -0
  124. {protspace-2.2.0 → protspace-2.3.0}/examples/out/gfp/seq_sim_mds2_nr_mutations.svg +0 -0
  125. {protspace-2.2.0 → protspace-2.3.0}/examples/out/gfp/seq_sim_umap2_brightness_category.svg +0 -0
  126. {protspace-2.2.0 → protspace-2.3.0}/examples/out/gfp/seq_sim_umap2_nr_mutations.svg +0 -0
  127. {protspace-2.2.0 → protspace-2.3.0}/examples/out/gfp/struct_sim_mds2_brightness_category.svg +0 -0
  128. {protspace-2.2.0 → protspace-2.3.0}/examples/out/gfp/struct_sim_mds2_nr_mutations.svg +0 -0
  129. {protspace-2.2.0 → protspace-2.3.0}/examples/out/phages/function_umap.svg +0 -0
  130. {protspace-2.2.0 → protspace-2.3.0}/examples/out/phages/product_category_umap.svg +0 -0
  131. {protspace-2.2.0 → protspace-2.3.0}/examples/out/phages/sub_all_members.html +0 -0
  132. {protspace-2.2.0 → protspace-2.3.0}/examples/out/phages/sub_all_members.svg +0 -0
  133. {protspace-2.2.0 → protspace-2.3.0}/examples/out/phages/sub_clusterrep.html +0 -0
  134. {protspace-2.2.0 → protspace-2.3.0}/examples/out/phages/sub_clusterrep.svg +0 -0
  135. {protspace-2.2.0 → protspace-2.3.0}/examples/out/toxins/family_bitmap_umap.svg +0 -0
  136. {protspace-2.2.0 → protspace-2.3.0}/examples/out/toxins/family_evalue_umap.svg +0 -0
  137. {protspace-2.2.0 → protspace-2.3.0}/examples/out/toxins/order_bits_umap.svg +0 -0
  138. {protspace-2.2.0 → protspace-2.3.0}/examples/out/toxins/order_evalue_umap.svg +0 -0
  139. {protspace-2.2.0 → protspace-2.3.0}/examples/out/toxins/order_umap.png +0 -0
  140. {protspace-2.2.0 → protspace-2.3.0}/examples/out/toxins/order_umap.svg +0 -0
  141. {protspace-2.2.0 → protspace-2.3.0}/examples/out/toxins/protein_category_bits_umap.svg +0 -0
  142. {protspace-2.2.0 → protspace-2.3.0}/examples/out/toxins/protein_category_evalue_umap.svg +0 -0
  143. {protspace-2.2.0 → protspace-2.3.0}/examples/out/toxins/protein_category_umap.png +0 -0
  144. {protspace-2.2.0 → protspace-2.3.0}/examples/out/toxins/protein_category_umap.svg +0 -0
  145. {protspace-2.2.0 → protspace-2.3.0}/examples/run_interactive_mode.py +0 -0
  146. {protspace-2.2.0 → protspace-2.3.0}/out/images/marker_gallery.png +0 -0
  147. {protspace-2.2.0 → protspace-2.3.0}/poster/index.html +0 -0
  148. {protspace-2.2.0 → protspace-2.3.0}/requirements-py310.txt +0 -0
  149. {protspace-2.2.0 → protspace-2.3.0}/requirements-py311.txt +0 -0
  150. {protspace-2.2.0 → protspace-2.3.0}/requirements-py312.txt +0 -0
  151. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/assets/__init__.py +0 -0
  152. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/assets/annotated_image.png +0 -0
  153. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/assets/custom.css +0 -0
  154. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/assets/help_content/__init__.py +0 -0
  155. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/assets/help_content/help_faq.md +0 -0
  156. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/assets/help_content/help_how_it_works.md +0 -0
  157. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/assets/help_content/help_json.md +0 -0
  158. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/assets/help_content/help_overview.md +0 -0
  159. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/assets/rostlab_logo.png +0 -0
  160. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/cli/__init__.py +0 -0
  161. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/config.py +0 -0
  162. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/data/__init__.py +0 -0
  163. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/data/interpro_feature_retriever.py +0 -0
  164. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/data/local_data_processor.py +0 -0
  165. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/data/uniprot_feature_retriever.py +0 -0
  166. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/data/uniprot_query_processor.py +0 -0
  167. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/helpers.py +0 -0
  168. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/main.py +0 -0
  169. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/molstar_helper.py +0 -0
  170. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/server/__init__.py +0 -0
  171. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/styles.py +0 -0
  172. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/ui/__init__.py +0 -0
  173. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/ui/layout.py +0 -0
  174. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/utils/__init__.py +0 -0
  175. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/utils/add_feature_style.py +0 -0
  176. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/utils/analyse_json.py +0 -0
  177. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/utils/arrow_reader.py +0 -0
  178. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/utils/json_reader.py +0 -0
  179. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/visualization/__init__.py +0 -0
  180. {protspace-2.2.0 → protspace-2.3.0}/src/protspace/wsgi.py +0 -0
  181. {protspace-2.2.0 → protspace-2.3.0}/tests/__init__.py +0 -0
  182. {protspace-2.2.0 → protspace-2.3.0}/tests/test_base_data_processor.py +0 -0
  183. {protspace-2.2.0 → protspace-2.3.0}/tests/test_feature_manager.py +0 -0
  184. {protspace-2.2.0 → protspace-2.3.0}/tests/test_interpro_feature_retriever.py +0 -0
  185. {protspace-2.2.0 → protspace-2.3.0}/tests/test_local_data_processor.py +0 -0
  186. {protspace-2.2.0 → protspace-2.3.0}/tests/test_taxonomy_feature_retriever.py +0 -0
  187. {protspace-2.2.0 → protspace-2.3.0}/tests/test_uniprot_feature_retriever.py +0 -0
  188. {protspace-2.2.0 → protspace-2.3.0}/tests/test_uniprot_query_processor.py +0 -0
  189. {protspace-2.2.0 → protspace-2.3.0}/update_deps.sh +0 -0
@@ -1,6 +1,56 @@
1
1
  # CHANGELOG
2
2
 
3
3
 
4
+ ## v2.3.0 (2025-09-30)
5
+
6
+ ### Documentation
7
+
8
+ * docs: Update README and CLI help to enhance feature extraction guidance
9
+
10
+ - Added a new section in README for the JavaScript frontend
11
+ - Revised the "Quick Start" section for clarity and updated usage examples for querying UniProt and processing local data.
12
+ - Expanded help text in CLI for feature extraction to include available UniProt, InterPro, and Taxonomy features. ([`56e17b2`](https://github.com/tsenoner/protspace/commit/56e17b28b60827be2cf4f63f083a52a85f2ac166))
13
+
14
+ ### Features
15
+
16
+ * feat(umap): add random_state parameter for reproducibility
17
+
18
+ Add random_state parameter with default value of 42 to ensure
19
+ reproducible UMAP results across runs.
20
+
21
+ - Add random_state field to DimensionReductionConfig (default: 42)
22
+ - Update UMAPReducer to pass random_state to UMAP constructor
23
+ - Add --random_state CLI argument to protspace-local and protspace-query
24
+ - Update base_data_processor to include random_state in valid config keys
25
+ - All 53 tests passing
26
+
27
+ Fixes #16 ([`63b7df8`](https://github.com/tsenoner/protspace/commit/63b7df80ea480e661e73052c3f2e395f93976a6c))
28
+
29
+ * feat: enhance taxonomy feature retrieval with error handling and cache management
30
+
31
+ - Added error handling in get_taxonomy_features to log and return an empty mapping on fetch errors.
32
+ - Improved _initialize_taxdb to support environment variable for cache directory and implemented a safe refresh strategy for the taxonomy database.
33
+ - Updated logic to handle first-time setup and cache refresh without losing existing data. ([`47826e9`](https://github.com/tsenoner/protspace/commit/47826e9b796e840282d1263d3ae85a31a56c5d18))
34
+
35
+ ### Refactoring
36
+
37
+ * refactor: simplify download_plot and save_plot functions
38
+
39
+ - Remove strict width/height requirements for 2D plots
40
+ - Eliminate unused parameters in download_plot callback
41
+ - Add proper HTML file handling in generate_plot
42
+ - Improve code maintainability and compatibility ([`8c3f3e9`](https://github.com/tsenoner/protspace/commit/8c3f3e9df07a98a2ee0a85d91d592f001feb9139))
43
+
44
+ ### Unknown
45
+
46
+ * Merge branch 'stage' ([`5716992`](https://github.com/tsenoner/protspace/commit/57169922e79968b7c5257f8841185de113982197))
47
+
48
+ * chor: update image generation to include PCA_3 projection
49
+
50
+ - Changed the projection list to use only "PCA_3" for image generation.
51
+ - Added support for HTML file format in the image output. ([`36551f3`](https://github.com/tsenoner/protspace/commit/36551f3748ca0e74447c91db98a5c24c9d845dd4))
52
+
53
+
4
54
  ## v2.2.0 (2025-08-07)
5
55
 
6
56
  ### Documentation
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: protspace
3
- Version: 2.2.0
3
+ Version: 2.3.0
4
4
  Summary: A visualisation tool for protein embeddings from pLMs
5
5
  Author-email: Tobias Senoner <tobias.senoner@tum.de>
6
6
  License-Expression: GPL-3.0
@@ -45,6 +45,8 @@ ProtSpace is a visualization tool for exploring **protein embeddings** or **simi
45
45
 
46
46
  **Web Interface**: https://protspace.rostlab.org/
47
47
 
48
+ **New JavaScript Frontend** _(in development)_: https://tsenoner.github.io/protspace_d3/ -> Drag & drop `.parquetbundle` files
49
+
48
50
  ## 🚀 Quick Start with Google Colab
49
51
 
50
52
  **Note**: Use Chrome or Firefox for best experience.
@@ -67,41 +69,30 @@ pip install protspace
67
69
  pip install "protspace[frontend]"
68
70
  ```
69
71
 
70
- ## 🎯 Usage
72
+ ## 🎯 Quick Start
71
73
 
72
74
  ### 1. Query UniProt directly
73
75
 
74
76
  ```bash
75
- # Search and analyze proteins from UniProt with available protein features
76
- protspace-query -q "insulin AND organism_id:9606 AND reviewed:true" -o output_dir -m pca2,umap3
77
+ # Retrieve and analyze proteins from UniProt using sequence similarity (mmmseqs2)
78
+ protspace-query -q "(ft_domain:phosphatase) AND (reviewed:true)" -o output_dir -m pca2,pca3,umap2 -f "protein_families,fragment,kingdom,superfamily" --n_neighbors 30 --min_dist 0.4
77
79
  ```
78
80
 
79
81
  ### 2. Process local data
80
82
 
81
83
  ```bash
82
- # Process your own embeddings or similarity matrices with the protein features you want
83
- protspace-local -i embeddings.h5 -f signal_peptide,pfam -o output_dir -m pca2,pca3
84
+ # Analyse and vizualise your locally stored embeddings
85
+ protspace-local -i embeddings.h5 -o output_dir -m pca2,umap2
84
86
  ```
85
87
 
86
88
  ### 3. Launch visualization
87
89
 
88
90
  ```bash
89
- # Auto-detects JSON files or Arrow directories
90
91
  protspace output_dir
91
- protspace output.json
92
92
  ```
93
93
 
94
94
  Access at `http://localhost:8050`
95
95
 
96
- ## ✨ Features
97
-
98
- - **Interactive visualization**: 2D/3D plots with multiple dimensionality reduction methods (PCA, UMAP, t-SNE, MDS, PaCMAP)
99
- - **Feature-based styling**: Color-code and shape proteins by various features
100
- - **Structure integration**: View 3D protein structures alongside embeddings
101
- - **Search & highlight**: Find and highlight specific proteins
102
- - **Export options**: High-quality SVG (2D) and interactive HTML (3D)
103
- - **Responsive interface**: Works on desktop and mobile
104
-
105
96
  ## 📊 Example Outputs
106
97
 
107
98
  ### 2D Scatter Plot
@@ -112,6 +103,23 @@ Access at `http://localhost:8050`
112
103
 
113
104
  [View 3D Example](https://tsenoner.github.io/protspace/examples/out/3FTx/UMAP3_major_group.html)
114
105
 
106
+ ## ✨ Features
107
+
108
+ - **Multiple projections**: PCA, UMAP, t-SNE, MDS, PaCMAP in 2D/3D
109
+ - **Automatic feature extraction**: Use `-f` to color-code proteins by UniProt, InterPro, or Taxonomy features
110
+ - **3D structure viewer**: Integrated protein structure visualization
111
+ - **Export**: SVG (2D) and HTML (3D) formats
112
+
113
+ ### Available Features (use with `-f`)
114
+
115
+ **UniProt**: `annotation_score`, `fragment`, `length_fixed`, `length_quantile`, `protein_existence`, `protein_families`, `reviewed`
116
+
117
+ **InterPro**: `cath`, `superfamily`, `signal_peptide`
118
+
119
+ **Taxonomy**: `kingdom`, `phylum`, `class`, `order`, `family`, `genus`, `species`
120
+
121
+ _Note: Some taxonomy parsing may have minor issues. Additional features in development._
122
+
115
123
  ## 🔧 Advanced Usage
116
124
 
117
125
  ### Command Options
@@ -12,6 +12,8 @@ ProtSpace is a visualization tool for exploring **protein embeddings** or **simi
12
12
 
13
13
  **Web Interface**: https://protspace.rostlab.org/
14
14
 
15
+ **New JavaScript Frontend** _(in development)_: https://tsenoner.github.io/protspace_d3/ -> Drag & drop `.parquetbundle` files
16
+
15
17
  ## 🚀 Quick Start with Google Colab
16
18
 
17
19
  **Note**: Use Chrome or Firefox for best experience.
@@ -34,41 +36,30 @@ pip install protspace
34
36
  pip install "protspace[frontend]"
35
37
  ```
36
38
 
37
- ## 🎯 Usage
39
+ ## 🎯 Quick Start
38
40
 
39
41
  ### 1. Query UniProt directly
40
42
 
41
43
  ```bash
42
- # Search and analyze proteins from UniProt with available protein features
43
- protspace-query -q "insulin AND organism_id:9606 AND reviewed:true" -o output_dir -m pca2,umap3
44
+ # Retrieve and analyze proteins from UniProt using sequence similarity (mmmseqs2)
45
+ protspace-query -q "(ft_domain:phosphatase) AND (reviewed:true)" -o output_dir -m pca2,pca3,umap2 -f "protein_families,fragment,kingdom,superfamily" --n_neighbors 30 --min_dist 0.4
44
46
  ```
45
47
 
46
48
  ### 2. Process local data
47
49
 
48
50
  ```bash
49
- # Process your own embeddings or similarity matrices with the protein features you want
50
- protspace-local -i embeddings.h5 -f signal_peptide,pfam -o output_dir -m pca2,pca3
51
+ # Analyse and vizualise your locally stored embeddings
52
+ protspace-local -i embeddings.h5 -o output_dir -m pca2,umap2
51
53
  ```
52
54
 
53
55
  ### 3. Launch visualization
54
56
 
55
57
  ```bash
56
- # Auto-detects JSON files or Arrow directories
57
58
  protspace output_dir
58
- protspace output.json
59
59
  ```
60
60
 
61
61
  Access at `http://localhost:8050`
62
62
 
63
- ## ✨ Features
64
-
65
- - **Interactive visualization**: 2D/3D plots with multiple dimensionality reduction methods (PCA, UMAP, t-SNE, MDS, PaCMAP)
66
- - **Feature-based styling**: Color-code and shape proteins by various features
67
- - **Structure integration**: View 3D protein structures alongside embeddings
68
- - **Search & highlight**: Find and highlight specific proteins
69
- - **Export options**: High-quality SVG (2D) and interactive HTML (3D)
70
- - **Responsive interface**: Works on desktop and mobile
71
-
72
63
  ## 📊 Example Outputs
73
64
 
74
65
  ### 2D Scatter Plot
@@ -79,6 +70,23 @@ Access at `http://localhost:8050`
79
70
 
80
71
  [View 3D Example](https://tsenoner.github.io/protspace/examples/out/3FTx/UMAP3_major_group.html)
81
72
 
73
+ ## ✨ Features
74
+
75
+ - **Multiple projections**: PCA, UMAP, t-SNE, MDS, PaCMAP in 2D/3D
76
+ - **Automatic feature extraction**: Use `-f` to color-code proteins by UniProt, InterPro, or Taxonomy features
77
+ - **3D structure viewer**: Integrated protein structure visualization
78
+ - **Export**: SVG (2D) and HTML (3D) formats
79
+
80
+ ### Available Features (use with `-f`)
81
+
82
+ **UniProt**: `annotation_score`, `fragment`, `length_fixed`, `length_quantile`, `protein_existence`, `protein_families`, `reviewed`
83
+
84
+ **InterPro**: `cath`, `superfamily`, `signal_peptide`
85
+
86
+ **Taxonomy**: `kingdom`, `phylum`, `class`, `order`, `family`, `genus`, `species`
87
+
88
+ _Note: Some taxonomy parsing may have minor issues. Additional features in development._
89
+
82
90
  ## 🔧 Advanced Usage
83
91
 
84
92
  ### Command Options
@@ -19,7 +19,8 @@ def main():
19
19
  # print("Available projection names:", reader.get_projection_names())
20
20
 
21
21
  # Generate images for specific projections and features
22
- projections = ["PCA_2"]
22
+ # projections = ["PCA_2", "PCA_3"]
23
+ projections = ["PCA_3"]
23
24
  features = ["protein_existence", "annotation_score"]
24
25
 
25
26
  # Create the output directory if it doesn't exist
@@ -34,6 +35,7 @@ def main():
34
35
  filename=output_dir / f"{projection}_{feature}",
35
36
  width=1600,
36
37
  height=1000,
38
+ file_format="html",
37
39
  )
38
40
  print(f"Generated image for {projection} - {feature}")
39
41