gemmapy 2.0.3__tar.gz → 2.0.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.
Files changed (249) hide show
  1. {gemmapy-2.0.3 → gemmapy-2.0.7}/PKG-INFO +9 -10
  2. {gemmapy-2.0.3 → gemmapy-2.0.7}/README.rst +6 -8
  3. gemmapy-2.0.7/___src/conftest.py +0 -0
  4. gemmapy-2.0.7/docs/conf.py +87 -0
  5. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/_processors.py +38 -10
  6. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/_subprocessors.py +1 -1
  7. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/gemmapy_api.py +131 -33
  8. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/__init__.py +47 -1
  9. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/api/default_api.py +4201 -1867
  10. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/api_client.py +20 -7
  11. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/configuration.py +2 -2
  12. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/__init__.py +47 -1
  13. gemmapy-2.0.7/gemmapy/sdk/models/analysis_ref.py +164 -0
  14. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/annotation_search_result_value_object.py +30 -4
  15. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/annotation_value_object.py +1 -1
  16. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/annotation_with_usage_statistics_value_object.py +1 -1
  17. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/api_info_value_object.py +1 -1
  18. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/array_design_value_object.py +25 -25
  19. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/array_design_with_usage_statistics_value_object.py +1 -1
  20. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/audit_event_value_object.py +1 -1
  21. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/bibliographic_reference_value_object.py +1 -1
  22. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/bio_assay_value_object.py +80 -2
  23. gemmapy-2.0.7/gemmapy/sdk/models/bio_material_factor_value_assignment.py +162 -0
  24. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/bio_material_value_object.py +28 -2
  25. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/bio_sequence_value_object.py +1 -1
  26. gemmapy-2.0.7/gemmapy/sdk/models/blocker.py +242 -0
  27. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/build_info_value_object.py +1 -1
  28. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/category_with_usage_statistics_value_object.py +1 -1
  29. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/cell_level_characteristics_value_object.py +1 -1
  30. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/cell_type_assignment_value_object.py +1 -1
  31. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/characteristic_value_object.py +1 -1
  32. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/citation_value_object.py +28 -28
  33. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/composite_sequence_arg.py +1 -1
  34. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/composite_sequence_value_object.py +1 -1
  35. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/contrast_result_value_object.py +1 -1
  36. gemmapy-2.0.7/gemmapy/sdk/models/curation_details_update_request.py +188 -0
  37. gemmapy-2.0.7/gemmapy/sdk/models/curation_details_value_object.py +292 -0
  38. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/database_entry_arg.py +1 -1
  39. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/database_entry_value_object.py +54 -2
  40. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/dataset.py +1 -1
  41. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/dataset1.py +1 -1
  42. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/dataset10.py +1 -1
  43. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/dataset11.py +1 -1
  44. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/dataset12.py +1 -1
  45. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/dataset13.py +1 -1
  46. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/dataset14.py +1 -1
  47. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/dataset15.py +1 -1
  48. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/dataset16.py +1 -1
  49. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/dataset17.py +1 -1
  50. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/dataset18.py +1 -1
  51. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/dataset19.py +1 -1
  52. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/dataset2.py +1 -1
  53. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/dataset20.py +1 -1
  54. gemmapy-2.0.7/gemmapy/sdk/models/dataset21.py +84 -0
  55. gemmapy-2.0.7/gemmapy/sdk/models/dataset22.py +84 -0
  56. gemmapy-2.0.7/gemmapy/sdk/models/dataset23.py +84 -0
  57. gemmapy-2.0.7/gemmapy/sdk/models/dataset24.py +84 -0
  58. gemmapy-2.0.7/gemmapy/sdk/models/dataset25.py +84 -0
  59. gemmapy-2.0.7/gemmapy/sdk/models/dataset26.py +84 -0
  60. gemmapy-2.0.7/gemmapy/sdk/models/dataset27.py +84 -0
  61. gemmapy-2.0.7/gemmapy/sdk/models/dataset28.py +84 -0
  62. gemmapy-2.0.7/gemmapy/sdk/models/dataset29.py +84 -0
  63. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/dataset3.py +1 -1
  64. gemmapy-2.0.7/gemmapy/sdk/models/dataset30.py +84 -0
  65. gemmapy-2.0.7/gemmapy/sdk/models/dataset31.py +84 -0
  66. gemmapy-2.0.7/gemmapy/sdk/models/dataset32.py +84 -0
  67. gemmapy-2.0.7/gemmapy/sdk/models/dataset33.py +84 -0
  68. gemmapy-2.0.7/gemmapy/sdk/models/dataset34.py +84 -0
  69. gemmapy-2.0.7/gemmapy/sdk/models/dataset35.py +84 -0
  70. gemmapy-2.0.7/gemmapy/sdk/models/dataset36.py +84 -0
  71. gemmapy-2.0.7/gemmapy/sdk/models/dataset37.py +84 -0
  72. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/dataset4.py +1 -1
  73. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/dataset5.py +1 -1
  74. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/dataset6.py +1 -1
  75. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/dataset7.py +1 -1
  76. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/dataset8.py +1 -1
  77. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/dataset9.py +1 -1
  78. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/dataset_arg.py +1 -1
  79. gemmapy-2.0.7/gemmapy/sdk/models/dataset_permissions_value_object.py +136 -0
  80. gemmapy-2.0.7/gemmapy/sdk/models/design_preflight_report.py +240 -0
  81. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/diff_ex_result_set_summary_value_object.py +56 -30
  82. gemmapy-2.0.7/gemmapy/sdk/models/differential_analysis_run_request.py +162 -0
  83. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/differential_expression_analysis_result_by_gene_value_object.py +28 -28
  84. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/differential_expression_analysis_result_set_value_object.py +1 -1
  85. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/differential_expression_analysis_result_value_object.py +28 -2
  86. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/differential_expression_analysis_value_object.py +56 -30
  87. gemmapy-2.0.7/gemmapy/sdk/models/entity_ref.py +136 -0
  88. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/experiment_expression_levels_value_object.py +1 -1
  89. gemmapy-2.0.7/gemmapy/sdk/models/experimental_design_value_object.py +292 -0
  90. gemmapy-2.0.7/gemmapy/sdk/models/experimental_factor_entry.py +246 -0
  91. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/experimental_factor_value_object.py +1 -1
  92. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/expression_experiment_set_value_object.py +1 -1
  93. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/expression_experiment_sub_set_group_value_object.py +1 -1
  94. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/expression_experiment_sub_set_with_groups_value_object.py +1 -1
  95. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/expression_experiment_subset_with_factor_values_object.py +1 -1
  96. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/expression_experiment_value_object.py +123 -71
  97. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/expression_experiment_with_search_result_value_object.py +123 -71
  98. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/external_database_value_object.py +1 -1
  99. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/factor_value_basic_value_object.py +1 -1
  100. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/factor_value_value_object.py +1 -1
  101. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/filter_arg_array_design.py +1 -1
  102. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/filter_arg_expression_analysis_result_set.py +1 -1
  103. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/filter_arg_expression_experiment.py +1 -1
  104. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/filtered_and_inferred_and_paginated_response_data_object_expression_experiment_value_object.py +1 -1
  105. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/filtered_and_paginated_response_data_object_array_design_value_object.py +1 -1
  106. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/filtered_and_paginated_response_data_object_composite_sequence_value_object.py +1 -1
  107. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/filtered_and_paginated_response_data_object_differential_expression_analysis_result_set_value_object.py +1 -1
  108. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/filtered_and_paginated_response_data_object_expression_experiment_value_object.py +1 -1
  109. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/filtered_and_paginated_response_data_object_gene_value_object.py +1 -1
  110. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/geeq_value_object.py +470 -2
  111. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/gene.py +1 -1
  112. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/gene1.py +1 -1
  113. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/gene2.py +1 -1
  114. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/gene3.py +1 -1
  115. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/gene4.py +1 -1
  116. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/gene5.py +1 -1
  117. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/gene6.py +1 -1
  118. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/gene7.py +1 -1
  119. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/gene8.py +1 -1
  120. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/gene9.py +1 -1
  121. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/gene_arg.py +1 -1
  122. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/gene_element_expressions_value_object.py +1 -1
  123. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/gene_ontology_term_value_object.py +1 -1
  124. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/gene_set_value_object.py +1 -1
  125. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/gene_value_object.py +76 -22
  126. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/measurement_value_object.py +1 -1
  127. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/one_of_search_result_value_object_object_result_object.py +1 -1
  128. gemmapy-2.0.7/gemmapy/sdk/models/ontology_term_simple_value_object.py +136 -0
  129. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/ontology_term_value_object.py +1 -1
  130. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/paginated_response_data_object_composite_sequence_value_object.py +1 -1
  131. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/paginated_response_data_object_experiment_expression_levels_value_object.py +1 -1
  132. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/paginated_response_data_object_expression_experiment_value_object.py +1 -1
  133. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/paginated_response_data_object_gene_value_object.py +1 -1
  134. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/paginated_results_response_data_object_differential_expression_analysis_result_set_value_object.py +1 -1
  135. gemmapy-2.0.7/gemmapy/sdk/models/permissions_update_request.py +110 -0
  136. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/physical_location_value_object.py +1 -1
  137. gemmapy-2.0.7/gemmapy/sdk/models/pipeline_status_value_object.py +370 -0
  138. gemmapy-2.0.7/gemmapy/sdk/models/pipeline_step_value_object.py +214 -0
  139. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/platform.py +1 -1
  140. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/platform1.py +1 -1
  141. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/platform2.py +1 -1
  142. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/platform3.py +1 -1
  143. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/platform4.py +1 -1
  144. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/platform5.py +1 -1
  145. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/platform_arg.py +1 -1
  146. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/probe.py +1 -1
  147. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/protocol_value_object.py +1 -1
  148. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/quantitation_type.py +1 -1
  149. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/quantitation_type1.py +1 -1
  150. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/quantitation_type2.py +1 -1
  151. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/quantitation_type3.py +1 -1
  152. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/quantitation_type4.py +1 -1
  153. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/quantitation_type5.py +1 -1
  154. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/quantitation_type_arg.py +1 -1
  155. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/quantitation_type_value_object.py +1 -1
  156. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/queried_and_filtered_and_inferred_and_limited_response_data_object_annotation_with_usage_statistics_value_object.py +1 -1
  157. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/queried_and_filtered_and_inferred_and_limited_response_data_object_array_design_with_usage_statistics_value_object.py +1 -1
  158. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/queried_and_filtered_and_inferred_and_limited_response_data_object_category_with_usage_statistics_value_object.py +1 -1
  159. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/queried_and_filtered_and_inferred_and_paginated_response_data_object_differential_expression_analysis_result_by_gene_value_object.py +1 -1
  160. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/queried_and_filtered_and_inferred_and_paginated_response_data_object_expression_experiment_with_search_result_value_object.py +1 -1
  161. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/queried_and_filtered_and_inferred_response_data_object_taxon_with_usage_statistics_value_object.py +1 -1
  162. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/queried_and_filtered_and_paginated_response_data_object_expression_experiment_value_object.py +1 -1
  163. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/query_arg.py +1 -1
  164. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/response_data_object_api_info_value_object.py +1 -1
  165. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/response_data_object_cell_type_assignment_value_object.py +1 -1
  166. gemmapy-2.0.7/gemmapy/sdk/models/response_data_object_curation_details_value_object.py +136 -0
  167. gemmapy-2.0.7/gemmapy/sdk/models/response_data_object_dataset_permissions_value_object.py +136 -0
  168. gemmapy-2.0.7/gemmapy/sdk/models/response_data_object_design_preflight_report.py +136 -0
  169. gemmapy-2.0.7/gemmapy/sdk/models/response_data_object_experimental_design_value_object.py +136 -0
  170. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/response_data_object_expression_experiment_sub_set_group_value_object.py +1 -1
  171. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/response_data_object_expression_experiment_sub_set_with_groups_value_object.py +1 -1
  172. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/response_data_object_expression_experiment_value_object.py +1 -1
  173. gemmapy-2.0.7/gemmapy/sdk/models/response_data_object_geeq_value_object.py +136 -0
  174. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/response_data_object_list_annotation_search_result_value_object.py +1 -1
  175. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/response_data_object_list_array_design_value_object.py +1 -1
  176. gemmapy-2.0.7/gemmapy/sdk/models/response_data_object_list_audit_event_value_object.py +136 -0
  177. gemmapy-2.0.7/gemmapy/sdk/models/response_data_object_list_bibliographic_reference_value_object.py +136 -0
  178. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/response_data_object_list_bio_assay_value_object.py +1 -1
  179. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/response_data_object_list_cell_level_characteristics_value_object.py +1 -1
  180. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/response_data_object_list_differential_expression_analysis_value_object.py +1 -1
  181. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/response_data_object_list_experiment_expression_levels_value_object.py +1 -1
  182. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/response_data_object_list_expression_experiment_sub_set_group_value_object.py +1 -1
  183. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/response_data_object_list_expression_experiment_sub_set_with_groups_value_object.py +1 -1
  184. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/response_data_object_list_gene_ontology_term_value_object.py +1 -1
  185. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/response_data_object_list_gene_value_object.py +1 -1
  186. gemmapy-2.0.7/gemmapy/sdk/models/response_data_object_list_ontology_term_simple_value_object.py +136 -0
  187. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/response_data_object_list_physical_location_value_object.py +1 -1
  188. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/response_data_object_list_taxon_value_object.py +1 -1
  189. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/response_data_object_long.py +1 -1
  190. gemmapy-2.0.7/gemmapy/sdk/models/response_data_object_ontology_term_value_object.py +136 -0
  191. gemmapy-2.0.7/gemmapy/sdk/models/response_data_object_pipeline_status_value_object.py +136 -0
  192. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/response_data_object_set_annotation_value_object.py +1 -1
  193. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/response_data_object_set_quantitation_type_value_object.py +1 -1
  194. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/response_data_object_simple_svd_value_object.py +1 -1
  195. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/response_data_object_single_cell_dimension_value_object.py +1 -1
  196. gemmapy-2.0.7/gemmapy/sdk/models/response_data_object_task_status_value_object.py +136 -0
  197. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/response_error_object.py +1 -1
  198. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/search_result_type.py +1 -1
  199. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/search_result_value_object_expression_experiment_value_object.py +56 -4
  200. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/search_result_value_object_object.py +56 -4
  201. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/search_results_response_data_object.py +1 -1
  202. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/search_settings_value_object.py +1 -1
  203. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/simple_svd_value_object.py +1 -1
  204. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/single_cell_dimension_value_object.py +46 -18
  205. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/sort_arg_array_design.py +1 -1
  206. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/sort_arg_expression_analysis_result_set.py +1 -1
  207. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/sort_arg_expression_experiment.py +1 -1
  208. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/sort_value_object.py +1 -1
  209. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/statement_value_object.py +28 -2
  210. gemmapy-2.0.7/gemmapy/sdk/models/subset_ref.py +164 -0
  211. gemmapy-2.0.7/gemmapy/sdk/models/summary.py +266 -0
  212. gemmapy-2.0.7/gemmapy/sdk/models/task_status_value_object.py +292 -0
  213. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/taxon.py +1 -1
  214. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/taxon1.py +1 -1
  215. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/taxon10.py +1 -1
  216. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/taxon11.py +1 -1
  217. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/taxon12.py +1 -1
  218. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/taxon2.py +1 -1
  219. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/taxon3.py +1 -1
  220. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/taxon4.py +1 -1
  221. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/taxon5.py +1 -1
  222. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/taxon6.py +1 -1
  223. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/taxon7.py +1 -1
  224. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/taxon8.py +1 -1
  225. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/taxon9.py +1 -1
  226. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/taxon_arg.py +1 -1
  227. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/taxon_value_object.py +1 -1
  228. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/taxon_with_usage_statistics_value_object.py +1 -1
  229. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/vector_element_value_object.py +1 -1
  230. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/well_composed_error.py +1 -1
  231. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/well_composed_error_body.py +1 -1
  232. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/models/well_composed_warning.py +1 -1
  233. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/rest.py +1 -1
  234. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy.egg-info/PKG-INFO +9 -10
  235. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy.egg-info/SOURCES.txt +49 -1
  236. gemmapy-2.0.7/gemmapy.egg-info/top_level.txt +9 -0
  237. gemmapy-2.0.7/pyproject.toml +28 -0
  238. gemmapy-2.0.7/setup.cfg +4 -0
  239. gemmapy-2.0.7/tests/____test_basic1.py +145 -0
  240. {gemmapy-2.0.3 → gemmapy-2.0.7}/tests/test_basic.py +56 -5
  241. gemmapy-2.0.3/gemmapy.egg-info/top_level.txt +0 -1
  242. gemmapy-2.0.3/pyproject.toml +0 -3
  243. gemmapy-2.0.3/setup.cfg +0 -25
  244. {gemmapy-2.0.3 → gemmapy-2.0.7}/LICENSE.md +0 -0
  245. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/__init__.py +0 -0
  246. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/_validators.py +0 -0
  247. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy/sdk/api/__init__.py +0 -0
  248. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy.egg-info/dependency_links.txt +0 -0
  249. {gemmapy-2.0.3 → gemmapy-2.0.7}/gemmapy.egg-info/requires.txt +0 -0
@@ -1,9 +1,10 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: gemmapy
3
- Version: 2.0.3
3
+ Version: 2.0.7
4
4
  Summary: a Python Wrapper for the Gemma API
5
5
  Keywords: gemma,bioinformatics
6
- Requires-Python: >3.10
6
+ Requires-Python: >=3.10
7
+ Description-Content-Type: text/x-rst
7
8
  License-File: LICENSE.md
8
9
  Requires-Dist: certifi>=14.05.14
9
10
  Requires-Dist: six>=1.10
@@ -30,22 +31,20 @@ public studies, referencing thousands of published papers.
30
31
  Installation instructions
31
32
  -------------------------
32
33
  .. This is a content of docs/install.rst. Update it whenever install.rst changes.
33
-
34
- The package requires Python3.10+.
35
34
 
36
- #. Install it from a local copy
35
+ The package requires Python 3.10+.
36
+
37
+ #. Install it from PyPI
37
38
 
38
39
  .. code-block:: bash
39
40
 
40
- git clone git@github.com:PavlidisLab/gemmapy.git
41
- cd gemmapy
42
- pip install .
41
+ pip install gemmapy
43
42
 
44
- #. Install it from PyPI
43
+ #. Install it from a local copy
45
44
 
46
45
  .. code-block:: bash
47
46
 
48
- pip install gemmapy
47
+ pip install git+https://github.com/PavlidisLab/gemmapy.git
49
48
 
50
49
 
51
50
  Usage
@@ -12,22 +12,20 @@ public studies, referencing thousands of published papers.
12
12
  Installation instructions
13
13
  -------------------------
14
14
  .. This is a content of docs/install.rst. Update it whenever install.rst changes.
15
-
16
- The package requires Python3.10+.
17
15
 
18
- #. Install it from a local copy
16
+ The package requires Python 3.10+.
17
+
18
+ #. Install it from PyPI
19
19
 
20
20
  .. code-block:: bash
21
21
 
22
- git clone git@github.com:PavlidisLab/gemmapy.git
23
- cd gemmapy
24
- pip install .
22
+ pip install gemmapy
25
23
 
26
- #. Install it from PyPI
24
+ #. Install it from a local copy
27
25
 
28
26
  .. code-block:: bash
29
27
 
30
- pip install gemmapy
28
+ pip install git+https://github.com/PavlidisLab/gemmapy.git
31
29
 
32
30
 
33
31
  Usage
File without changes
@@ -0,0 +1,87 @@
1
+ # Configuration file for the Sphinx documentation builder.
2
+ #
3
+ # This file only contains a selection of the most common options. For a full
4
+ # list see the documentation:
5
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html
6
+
7
+ # -- Path setup --------------------------------------------------------------
8
+
9
+ # If extensions (or modules to document with autodoc) are in another directory,
10
+ # add these directories to sys.path here. If the directory is relative to the
11
+ # documentation root, use os.path.abspath to make it absolute, like shown here.
12
+ #
13
+ import os
14
+ import sys
15
+ sys.path.insert(0, os.path.abspath('..'))
16
+
17
+
18
+ # -- Project information -----------------------------------------------------
19
+
20
+ project = 'GemmaPy'
21
+ copyright = '2022, The University of British Columbia'
22
+ author = 'D. Vavilov'
23
+
24
+ # The full version, including alpha/beta/rc tags
25
+ release = '0.0.1'
26
+
27
+
28
+ # -- General configuration ---------------------------------------------------
29
+
30
+ # Add any Sphinx extension module names here, as strings. They can be
31
+ # extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
32
+ # ones.
33
+ extensions = [
34
+ 'sphinx.ext.autodoc',
35
+ 'sphinx.ext.autosummary',
36
+ 'sphinx.ext.viewcode',
37
+ 'sphinx_autodoc_typehints',
38
+ 'sphinx.ext.githubpages',
39
+ ]
40
+
41
+ # Add any paths that contain templates here, relative to this directory.
42
+ templates_path = ['_templates']
43
+
44
+ # List of patterns, relative to source directory, that match files and
45
+ # directories to ignore when looking for source files.
46
+ # This pattern also affects html_static_path and html_extra_path.
47
+ exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
48
+
49
+
50
+ # -- Options for HTML output -------------------------------------------------
51
+
52
+ # The theme to use for HTML and HTML Help pages. See the documentation for
53
+ # a list of builtin themes.
54
+ #
55
+ # Pydata theme
56
+ html_theme = 'alabaster'
57
+ #html_theme = 'sphinx_rtd_theme'
58
+ #html_theme = "pydata_sphinx_theme"
59
+
60
+ # pydata_sphinx
61
+ html_theme_options = { "show_prev_next": False }
62
+
63
+ # alabaster
64
+ html_theme_options = {
65
+ 'page_width': '80%',
66
+ 'sidebar_width': '20%'
67
+ }
68
+ #html_css_files = ['pydata-custom.css']
69
+ #html_logo = "_static/logo-company.png"
70
+
71
+ # Add any paths that contain custom static files (such as style sheets) here,
72
+ # relative to this directory. They are copied after the builtin static files,
73
+ # so a file named "default.css" will overwrite the builtin "default.css".
74
+ html_static_path = ['_static']
75
+
76
+ autosummary_generate = True # Turn on sphinx.ext.autosummary
77
+ autoclass_content = "both" # Add __init__ doc (ie. params) to class summaries
78
+ html_show_sourcelink = True # Remove 'view source code' from top of page (for html, not python)
79
+ autodoc_inherit_docstrings = True # If no docstring, inherit from base class
80
+ set_type_checking_flag = True # Enable 'expensive' imports for sphinx_autodoc_typehints
81
+ #nbsphinx_allow_errors = True # Continue through Jupyter errors
82
+ #autodoc_typehints = "description" # Sphinx-native method. Not as good as sphinx_autodoc_typehints
83
+ #add_module_names = False # Remove namespaces from class/method signatures
84
+
85
+ #autodoc_mock_imports = ['gemmapy.sdk']
86
+ #autosummary_mock_imports = ['gemmapy.sdk']
87
+ #autosummary_imported_members = False
@@ -70,6 +70,7 @@ def process_annotations(d:list):
70
70
  "term_name": sub.field_in_list(d,"term_name"),
71
71
  "term_URI": sub.field_in_list(d,"term_uri"),
72
72
  "object_class": sub.field_in_list(d,"object_class"),
73
+ "evidence_code": sub.field_in_list(d,'evidence_code')
73
74
  })
74
75
 
75
76
  return df
@@ -421,6 +422,8 @@ def process_expression(d, dataset, api):
421
422
  # more non-uniformities
422
423
  df = sub.read_tsv(d)
423
424
  m_cols = list(df.columns)
425
+ m_cols = [x.replace(".","") for x in m_cols]
426
+ df.columns = m_cols
424
427
  # we use the order returned by get_dataset_samples as authoritative which makes
425
428
  # it a bit awkward when we need to access a property left out of the processed output
426
429
  # this could be simplified by ordering by ids but I don't want to break
@@ -436,17 +439,18 @@ def process_expression(d, dataset, api):
436
439
 
437
440
  sample_names = samples.sample_name
438
441
 
439
- sample_internal_names = [x.replace("|",".").replace("-",".").replace(" ","") for x in sample_internal_names]
440
-
442
+ sample_internal_names = [x.replace("|","").replace("-","").replace(" ","").replace(".","").replace("/","") for x in sample_internal_names]
443
+
441
444
  def find_match(x):
442
- match = None
443
- for i in range(len(m_cols)):
444
- if m_cols[i].find(x+"_") != -1:
445
- match = i
446
- return match
447
-
445
+ pattern = r"(?<![A-Za-z])" + re.escape(x) + r"_"
446
+ o = [i for i, col in enumerate(m_cols) if re.search(pattern, col)]
447
+ if (len(o)==0 | len(o)>1):
448
+ return None
449
+ else:
450
+ return o[0]
451
+
448
452
  sample_matches = [find_match(x) for x in sample_internal_names]
449
-
453
+
450
454
 
451
455
  rename_dict = sub.make_dict([m_cols[i] for i in sample_matches],sample_names)
452
456
 
@@ -476,7 +480,31 @@ def process_samples(d:list):
476
480
  for x in sub.field_in_list(d,"sample","factor_value_objects")]
477
481
 
478
482
  }).sort_values(by= ['sample_ID'],ignore_index=True)
479
-
483
+
484
+ return df
485
+
486
+ def process_publications(d:list):
487
+
488
+ df = pd.DataFrame({
489
+ "publication_ID": sub.field_in_list(d,"id"),
490
+ "title": sub.field_in_list(d,"title"),
491
+ "authors": sub.field_in_list(d,"author_list"),
492
+ "publication": sub.field_in_list(d,"publication"),
493
+ "publication_date": sub.field_in_list(d,"publication_date"),
494
+ "publisher": sub.field_in_list(d,"publisher"),
495
+ "volume": sub.field_in_list(d,"volume"),
496
+ "issue": sub.field_in_list(d,"issue"),
497
+ "pages": sub.field_in_list(d,"pages"),
498
+ "abstract": sub.field_in_list(d,"abstract_text"),
499
+ "pubmed_ID": sub.field_in_list(d,"citation","pubmed_accession"),
500
+ "pubmed_URL": sub.field_in_list(d,"citation","pubmed_url"),
501
+ "citation": sub.field_in_list(d,"citation","citation"),
502
+ "pub_accession": sub.field_in_list(d,"pub_accession"),
503
+ "mesh_terms": sub.field_in_list(d,"mesh_terms"),
504
+ "chemicals_terms": sub.field_in_list(d,"chemicals_terms"),
505
+ "retracted": sub.field_in_list(d,"retracted"),
506
+ })
507
+
480
508
  return df
481
509
 
482
510
  def process_datasets(d:list):
@@ -146,7 +146,7 @@ def process_FactorValueBasicValueObject(d):
146
146
  "predicate.URI":[np.nan],
147
147
  "object":[np.nan],
148
148
  "object_URI":[np.nan],
149
- "summary":[np.nan],
149
+ "summary":[access_field(d,"summary")],
150
150
  "ID":[access_field(d,'id')],
151
151
  "factor_ID":[access_field(d,"experimental_factor_id")],
152
152
  "factor_category":[access_field(d,"experimental_factor_category","category")],
@@ -2,53 +2,113 @@
2
2
  """
3
3
  Gemma python API (https://gemma.msl.ubc.ca/rest/v2/)
4
4
  """
5
-
6
- from gemmapy import sdk
7
- from gemmapy import _processors as ps
8
- from gemmapy import _validators as vs
9
- from gemmapy import _subprocessors as sub
5
+ import enum
6
+ import json
7
+ import logging
8
+ import os
9
+ import subprocess
10
+ import warnings
11
+ import warnings
12
+ from getpass import getpass
13
+ from io import StringIO
10
14
  from typing import Optional, List, Callable
11
- from pandas import DataFrame
12
- import pandas as pd
13
- import numpy as np
15
+
14
16
  import anndata as ad
17
+ import numpy as np
18
+ import pandas as pd
15
19
  from anndata import AnnData
16
- from io import StringIO
17
- import warnings
18
- import json
20
+ from pandas import DataFrame
21
+
22
+ from gemmapy import _processors as ps
23
+ from gemmapy import _subprocessors as sub
24
+ from gemmapy import _validators as vs
25
+ from gemmapy import sdk
26
+
27
+ logger = logging.getLogger(__name__)
19
28
 
29
+ class GemmaPath(enum.Enum):
30
+ PROD = "prod"
31
+ DEV = "dev"
32
+ STAGING = "staging"
20
33
 
21
34
  class GemmaPy(object):
22
35
  """
23
36
  Main API class
24
37
  """
25
38
 
26
- def __init__(self, auth:list|tuple=None, path="prod"):
39
+ def __init__(self, auth: Optional[list | tuple] = None,
40
+ path: Optional[GemmaPath | str] = None):
27
41
  """
28
42
  :param list auth: (optional) A list or tuple of credential strings, e.g.
29
- (your_username, your_password)
30
- :param bool devel: (optional) If True development version of Gemma API will be
31
- used. Default is False.
43
+ (your_username, your_password). Note that you may also define your Gemma
44
+ credentials using `GEMMA_USERNAME` and `GEMMA_PASSWORD` environment
45
+ variables. For a more secure approach, you can also provide a
46
+ `GEMMA_PASSWORD_CMD` variable that produces your password
47
+ (e.g. `pass gemma` using https://www.passwordstore.org/). If only a
48
+ username is supplied, a password prompt will be used.
49
+ :param str path: (optional) Override the path to use for the REST API.
50
+ You may use one of the enumerated values in GemmaPath or a string.
51
+ Three special values are recognized: "prod", "staging" and "dev",
52
+ although only "prod" is publicly accessible. The default is the value
53
+ from the OpenAPI specification used to generate the SDK, which is
54
+ usually equivalent to PROD.
32
55
  """
33
56
 
34
57
  configuration = sdk.Configuration()
35
- if path == "prod":
36
- pass
37
- # configuration.host = 'https://gemma.msl.ubc.ca/rest/v2'
38
- elif path == 'dev':
58
+ if path == GemmaPath.PROD or path == 'prod':
59
+ logger.debug("Using production endpoint.")
60
+ configuration.host = 'https://gemma.msl.ubc.ca/rest/v2'
61
+ elif path == GemmaPath.DEV or path == 'dev':
39
62
  configuration.host = 'https://dev.gemma.msl.ubc.ca/rest/v2'
40
- elif path == 'staging':
63
+ elif path == GemmaPath.STAGING or path == 'staging':
41
64
  configuration.host = "https://staging-gemma.msl.ubc.ca/rest/v2"
42
- else:
65
+ elif path is not None:
43
66
  configuration.host = path
44
-
67
+ else:
68
+ # use the default configuration in the openapi.json file
69
+ pass
45
70
 
46
71
  if auth is not None:
72
+ if len(auth) != 1 and len(auth) != 2:
73
+ raise ValueError(
74
+ 'There must be exactly one or two values in the auth parameter.')
47
75
  configuration.username = auth[0]
48
- configuration.password = auth[1]
76
+ if len(auth) == 2:
77
+ configuration.password = auth[1]
78
+ else:
79
+ configuration.password = getpass(
80
+ f'Supply your password for {configuration.username}@{configuration.host}: ')
81
+ elif os.environ.get('GEMMA_USERNAME'):
82
+ logger.debug(
83
+ 'Reading username for %s from $GEMMA_USERNAME.',
84
+ configuration.host)
85
+ configuration.username = os.getenv('GEMMA_USERNAME')
86
+ if os.getenv('GEMMA_PASSWORD'):
87
+ logger.debug("Reading password for %s@%s from $GEMMA_PASSWORD.",
88
+ configuration.username, configuration.host)
89
+ configuration.password = os.getenv('GEMMA_PASSWORD')
90
+ elif os.getenv('GEMMA_PASSWORD_CMD'):
91
+ logger.debug(
92
+ "Reading password for %s@%s from $GEMMA_PASSWORD_CMD (%s).",
93
+ configuration.username, configuration.host,
94
+ os.getenv('GEMMA_PASSWORD_CMD'))
95
+ password = subprocess.run(os.getenv('GEMMA_PASSWORD_CMD'),
96
+ shell=True, check=True,
97
+ stdout=subprocess.PIPE,
98
+ text=True).stdout
99
+ configuration.password = password.splitlines()[0]
100
+ else:
101
+ logger.debug(
102
+ 'Could not read GEMMA_PASSWORD nor GEMMA_PASSWORD_CMD from environment, the password will be prompted.')
103
+ configuration.password = getpass(
104
+ f'Supply your password for {configuration.username}@{configuration.host}: ')
49
105
 
50
106
  # create an instance of the API class
51
107
  self.raw = sdk.DefaultApi(sdk.ApiClient(configuration))
108
+ try:
109
+ self.raw.get_api_info()
110
+ except:
111
+ warnings.warn("Unable to connect to API")
52
112
 
53
113
 
54
114
  # /resultSets/count get_number_of_result_sets ------
@@ -512,8 +572,47 @@ class GemmaPy(object):
512
572
  response = self.raw.get_dataset_samples(dataset, use_processed_quantitation_type = use_processed_quantitation_type, **kwargs)
513
573
  df = ps.process_samples(response.data)
514
574
  return df
515
-
516
- # datasets/{dataset}/svd ---
575
+
576
+ # /datasets/{dataset}/publications, get_dataset_all_publications ------
577
+ def get_dataset_all_publications(self, dataset:str|int, **kwargs)->DataFrame:
578
+ """
579
+ Retrieve all publications associated with a dataset
580
+
581
+
582
+ :param dataset: A numerical dataset identifier or a dataset short name
583
+ :type dataset: str|int
584
+ :param **kwargs: Additional arguments to pass to raw.get_dataset_all_publications
585
+ :return: A DataFrame with one row per publication associated with the
586
+ dataset (the primary publication and any related references).
587
+
588
+ The fields of the DataFrame are:
589
+ - publication_ID: Internal Gemma ID for the bibliographic reference
590
+ - title: Title of the publication
591
+ - authors: Author list as a single string
592
+ - publication: Journal or venue name
593
+ - publication_date: Date of publication
594
+ - publisher: Publisher name
595
+ - volume: Journal volume
596
+ - issue: Journal issue
597
+ - pages: Page range
598
+ - abstract: Abstract text
599
+ - pubmed_ID: PubMed accession ID
600
+ - pubmed_URL: PubMed URL
601
+ - citation: Formatted citation string
602
+ - pub_accession: Accession in the source publication database
603
+ - mesh_terms: List of MeSH terms
604
+ - chemicals_terms: List of chemicals terms
605
+ - retracted: Whether the publication has been retracted
606
+ :rtype: DataFrame
607
+
608
+ """
609
+ response = self.raw.get_dataset_all_publications(dataset, **kwargs)
610
+ df = ps.process_publications(response.data)
611
+ ps.attach_attributes(df, response.to_dict())
612
+
613
+ return df
614
+
615
+ # datasets/{dataset}/svd ---
517
616
  # not implemented
518
617
 
519
618
  # datasets, get_datasets ------
@@ -1283,18 +1382,17 @@ class GemmaPy(object):
1283
1382
 
1284
1383
  text = [get_text(x) for x in categories.factor_ID]
1285
1384
 
1286
-
1287
1385
  if meta_type =='text':
1288
1386
  design_frame = pd.DataFrame({
1289
- categories.factor_category[i]:text[i] for i in range(len(text))
1387
+ categories.factor_category.tolist()[i]:text[i] for i in range(len(text))
1290
1388
  })
1291
1389
  elif meta_type == 'uri':
1292
1390
  design_frame = pd.DataFrame({
1293
- categories.factor_category_URI[i]:factor_URIs[i] for i in range(len(factor_URIs))
1391
+ categories.factor_category_URI.tolist()[i]:factor_URIs[i] for i in range(len(factor_URIs))
1294
1392
  })
1295
1393
  elif meta_type =='both':
1296
- merged_name = [["|".join([categories.factor_category[i],
1297
- categories.factor_category_URI[i]])] for i in range(len(text))]
1394
+ merged_name = [["|".join([categories.factor_category.tolist()[i],
1395
+ categories.factor_category_URI.tolist()[i]])] for i in range(len(text))]
1298
1396
 
1299
1397
  merged_col = [["|".join([text[i][j],factor_URIs[i][j]])
1300
1398
  for j in range(len(text[i]))] for i in range(len(text))]
@@ -1323,7 +1421,7 @@ class GemmaPy(object):
1323
1421
  result_set].subset_factor.drop_duplicates()
1324
1422
  # result set should have the same subset for all contrasts
1325
1423
  assert len(subset) == 1
1326
- if subset[0].shape[0]!=0:
1424
+ if subset.tolist()[0].shape[0]!=0:
1327
1425
  subset_ids = subset[0].ID
1328
1426
 
1329
1427
  in_subset = [any(sub.list_in_list(x.ID, subset_ids)) for x in factor_values]
@@ -1516,12 +1614,12 @@ class GemmaPy(object):
1516
1614
  # probe ids are usually unique but there are exceptions
1517
1615
 
1518
1616
  unique_probes = packed_info['exp'].Probe
1519
- append = pd.Series(sub.rep(0,len(unique_probes)))
1617
+ append = pd.Series(sub.rep(0,len(unique_probes)), index = unique_probes.index)
1520
1618
  dups = unique_probes.duplicated()
1521
1619
  while dups.any():
1522
1620
  append[dups] = append[dups]+1
1523
1621
  dups = (unique_probes + append.astype('string')).duplicated()
1524
-
1622
+
1525
1623
  append = append.astype('string')
1526
1624
  append[append=='0'] = ""
1527
1625
  unique_probes = unique_probes + append
@@ -7,7 +7,7 @@
7
7
 
8
8
  This website documents the usage of the [Gemma RESTful API](https://gemma.msl.ubc.ca/rest/v2/). Here you can find example script usage of the API, as well as graphical interface for each endpoint, with description of its parameters and the endpoint URL. Use of this webpage and the Gemma Web services, including the REST API, is subject to [these terms and conditions](https://pavlidislab.github.io/Gemma/terms.html). Please read these in full before continuing to use this webpage or any other part of the Gemma system. You can [consult the CHANGELOG.md file](https://gemma.msl.ubc.ca/resources/restapidocs/CHANGELOG.md) to view release notes and recent changes to the Gemma RESTful API. # noqa: E501
9
9
 
10
- OpenAPI spec version: 2.9.1
10
+ OpenAPI spec version: 2.9.4
11
11
  Contact: pavlab-support@msl.ubc.ca
12
12
  Generated by: https://github.com/swagger-api/swagger-codegen.git
13
13
  """
@@ -20,6 +20,7 @@ from gemmapy.sdk.api.default_api import DefaultApi
20
20
  from gemmapy.sdk.api_client import ApiClient
21
21
  from gemmapy.sdk.configuration import Configuration
22
22
  # import models into sdk package
23
+ from gemmapy.sdk.models.analysis_ref import AnalysisRef
23
24
  from gemmapy.sdk.models.annotation_search_result_value_object import AnnotationSearchResultValueObject
24
25
  from gemmapy.sdk.models.annotation_value_object import AnnotationValueObject
25
26
  from gemmapy.sdk.models.annotation_with_usage_statistics_value_object import AnnotationWithUsageStatisticsValueObject
@@ -29,8 +30,10 @@ from gemmapy.sdk.models.array_design_with_usage_statistics_value_object import A
29
30
  from gemmapy.sdk.models.audit_event_value_object import AuditEventValueObject
30
31
  from gemmapy.sdk.models.bibliographic_reference_value_object import BibliographicReferenceValueObject
31
32
  from gemmapy.sdk.models.bio_assay_value_object import BioAssayValueObject
33
+ from gemmapy.sdk.models.bio_material_factor_value_assignment import BioMaterialFactorValueAssignment
32
34
  from gemmapy.sdk.models.bio_material_value_object import BioMaterialValueObject
33
35
  from gemmapy.sdk.models.bio_sequence_value_object import BioSequenceValueObject
36
+ from gemmapy.sdk.models.blocker import Blocker
34
37
  from gemmapy.sdk.models.build_info_value_object import BuildInfoValueObject
35
38
  from gemmapy.sdk.models.category_with_usage_statistics_value_object import CategoryWithUsageStatisticsValueObject
36
39
  from gemmapy.sdk.models.cell_level_characteristics_value_object import CellLevelCharacteristicsValueObject
@@ -40,6 +43,8 @@ from gemmapy.sdk.models.citation_value_object import CitationValueObject
40
43
  from gemmapy.sdk.models.composite_sequence_arg import CompositeSequenceArg
41
44
  from gemmapy.sdk.models.composite_sequence_value_object import CompositeSequenceValueObject
42
45
  from gemmapy.sdk.models.contrast_result_value_object import ContrastResultValueObject
46
+ from gemmapy.sdk.models.curation_details_update_request import CurationDetailsUpdateRequest
47
+ from gemmapy.sdk.models.curation_details_value_object import CurationDetailsValueObject
43
48
  from gemmapy.sdk.models.database_entry_arg import DatabaseEntryArg
44
49
  from gemmapy.sdk.models.database_entry_value_object import DatabaseEntryValueObject
45
50
  from gemmapy.sdk.models.dataset import Dataset
@@ -56,7 +61,24 @@ from gemmapy.sdk.models.dataset18 import Dataset18
56
61
  from gemmapy.sdk.models.dataset19 import Dataset19
57
62
  from gemmapy.sdk.models.dataset2 import Dataset2
58
63
  from gemmapy.sdk.models.dataset20 import Dataset20
64
+ from gemmapy.sdk.models.dataset21 import Dataset21
65
+ from gemmapy.sdk.models.dataset22 import Dataset22
66
+ from gemmapy.sdk.models.dataset23 import Dataset23
67
+ from gemmapy.sdk.models.dataset24 import Dataset24
68
+ from gemmapy.sdk.models.dataset25 import Dataset25
69
+ from gemmapy.sdk.models.dataset26 import Dataset26
70
+ from gemmapy.sdk.models.dataset27 import Dataset27
71
+ from gemmapy.sdk.models.dataset28 import Dataset28
72
+ from gemmapy.sdk.models.dataset29 import Dataset29
59
73
  from gemmapy.sdk.models.dataset3 import Dataset3
74
+ from gemmapy.sdk.models.dataset30 import Dataset30
75
+ from gemmapy.sdk.models.dataset31 import Dataset31
76
+ from gemmapy.sdk.models.dataset32 import Dataset32
77
+ from gemmapy.sdk.models.dataset33 import Dataset33
78
+ from gemmapy.sdk.models.dataset34 import Dataset34
79
+ from gemmapy.sdk.models.dataset35 import Dataset35
80
+ from gemmapy.sdk.models.dataset36 import Dataset36
81
+ from gemmapy.sdk.models.dataset37 import Dataset37
60
82
  from gemmapy.sdk.models.dataset4 import Dataset4
61
83
  from gemmapy.sdk.models.dataset5 import Dataset5
62
84
  from gemmapy.sdk.models.dataset6 import Dataset6
@@ -64,12 +86,18 @@ from gemmapy.sdk.models.dataset7 import Dataset7
64
86
  from gemmapy.sdk.models.dataset8 import Dataset8
65
87
  from gemmapy.sdk.models.dataset9 import Dataset9
66
88
  from gemmapy.sdk.models.dataset_arg import DatasetArg
89
+ from gemmapy.sdk.models.dataset_permissions_value_object import DatasetPermissionsValueObject
90
+ from gemmapy.sdk.models.design_preflight_report import DesignPreflightReport
67
91
  from gemmapy.sdk.models.diff_ex_result_set_summary_value_object import DiffExResultSetSummaryValueObject
92
+ from gemmapy.sdk.models.differential_analysis_run_request import DifferentialAnalysisRunRequest
68
93
  from gemmapy.sdk.models.differential_expression_analysis_result_by_gene_value_object import DifferentialExpressionAnalysisResultByGeneValueObject
69
94
  from gemmapy.sdk.models.differential_expression_analysis_result_set_value_object import DifferentialExpressionAnalysisResultSetValueObject
70
95
  from gemmapy.sdk.models.differential_expression_analysis_result_value_object import DifferentialExpressionAnalysisResultValueObject
71
96
  from gemmapy.sdk.models.differential_expression_analysis_value_object import DifferentialExpressionAnalysisValueObject
97
+ from gemmapy.sdk.models.entity_ref import EntityRef
72
98
  from gemmapy.sdk.models.experiment_expression_levels_value_object import ExperimentExpressionLevelsValueObject
99
+ from gemmapy.sdk.models.experimental_design_value_object import ExperimentalDesignValueObject
100
+ from gemmapy.sdk.models.experimental_factor_entry import ExperimentalFactorEntry
73
101
  from gemmapy.sdk.models.experimental_factor_value_object import ExperimentalFactorValueObject
74
102
  from gemmapy.sdk.models.expression_experiment_set_value_object import ExpressionExperimentSetValueObject
75
103
  from gemmapy.sdk.models.expression_experiment_sub_set_group_value_object import ExpressionExperimentSubSetGroupValueObject
@@ -107,13 +135,17 @@ from gemmapy.sdk.models.gene_set_value_object import GeneSetValueObject
107
135
  from gemmapy.sdk.models.gene_value_object import GeneValueObject
108
136
  from gemmapy.sdk.models.measurement_value_object import MeasurementValueObject
109
137
  from gemmapy.sdk.models.one_of_search_result_value_object_object_result_object import OneOfSearchResultValueObjectObjectResultObject
138
+ from gemmapy.sdk.models.ontology_term_simple_value_object import OntologyTermSimpleValueObject
110
139
  from gemmapy.sdk.models.ontology_term_value_object import OntologyTermValueObject
111
140
  from gemmapy.sdk.models.paginated_response_data_object_composite_sequence_value_object import PaginatedResponseDataObjectCompositeSequenceValueObject
112
141
  from gemmapy.sdk.models.paginated_response_data_object_experiment_expression_levels_value_object import PaginatedResponseDataObjectExperimentExpressionLevelsValueObject
113
142
  from gemmapy.sdk.models.paginated_response_data_object_expression_experiment_value_object import PaginatedResponseDataObjectExpressionExperimentValueObject
114
143
  from gemmapy.sdk.models.paginated_response_data_object_gene_value_object import PaginatedResponseDataObjectGeneValueObject
115
144
  from gemmapy.sdk.models.paginated_results_response_data_object_differential_expression_analysis_result_set_value_object import PaginatedResultsResponseDataObjectDifferentialExpressionAnalysisResultSetValueObject
145
+ from gemmapy.sdk.models.permissions_update_request import PermissionsUpdateRequest
116
146
  from gemmapy.sdk.models.physical_location_value_object import PhysicalLocationValueObject
147
+ from gemmapy.sdk.models.pipeline_status_value_object import PipelineStatusValueObject
148
+ from gemmapy.sdk.models.pipeline_step_value_object import PipelineStepValueObject
117
149
  from gemmapy.sdk.models.platform import Platform
118
150
  from gemmapy.sdk.models.platform1 import Platform1
119
151
  from gemmapy.sdk.models.platform2 import Platform2
@@ -141,11 +173,18 @@ from gemmapy.sdk.models.queried_and_filtered_and_paginated_response_data_object_
141
173
  from gemmapy.sdk.models.query_arg import QueryArg
142
174
  from gemmapy.sdk.models.response_data_object_api_info_value_object import ResponseDataObjectApiInfoValueObject
143
175
  from gemmapy.sdk.models.response_data_object_cell_type_assignment_value_object import ResponseDataObjectCellTypeAssignmentValueObject
176
+ from gemmapy.sdk.models.response_data_object_curation_details_value_object import ResponseDataObjectCurationDetailsValueObject
177
+ from gemmapy.sdk.models.response_data_object_dataset_permissions_value_object import ResponseDataObjectDatasetPermissionsValueObject
178
+ from gemmapy.sdk.models.response_data_object_design_preflight_report import ResponseDataObjectDesignPreflightReport
179
+ from gemmapy.sdk.models.response_data_object_experimental_design_value_object import ResponseDataObjectExperimentalDesignValueObject
144
180
  from gemmapy.sdk.models.response_data_object_expression_experiment_sub_set_group_value_object import ResponseDataObjectExpressionExperimentSubSetGroupValueObject
145
181
  from gemmapy.sdk.models.response_data_object_expression_experiment_sub_set_with_groups_value_object import ResponseDataObjectExpressionExperimentSubSetWithGroupsValueObject
146
182
  from gemmapy.sdk.models.response_data_object_expression_experiment_value_object import ResponseDataObjectExpressionExperimentValueObject
183
+ from gemmapy.sdk.models.response_data_object_geeq_value_object import ResponseDataObjectGeeqValueObject
147
184
  from gemmapy.sdk.models.response_data_object_list_annotation_search_result_value_object import ResponseDataObjectListAnnotationSearchResultValueObject
148
185
  from gemmapy.sdk.models.response_data_object_list_array_design_value_object import ResponseDataObjectListArrayDesignValueObject
186
+ from gemmapy.sdk.models.response_data_object_list_audit_event_value_object import ResponseDataObjectListAuditEventValueObject
187
+ from gemmapy.sdk.models.response_data_object_list_bibliographic_reference_value_object import ResponseDataObjectListBibliographicReferenceValueObject
149
188
  from gemmapy.sdk.models.response_data_object_list_bio_assay_value_object import ResponseDataObjectListBioAssayValueObject
150
189
  from gemmapy.sdk.models.response_data_object_list_cell_level_characteristics_value_object import ResponseDataObjectListCellLevelCharacteristicsValueObject
151
190
  from gemmapy.sdk.models.response_data_object_list_differential_expression_analysis_value_object import ResponseDataObjectListDifferentialExpressionAnalysisValueObject
@@ -154,13 +193,17 @@ from gemmapy.sdk.models.response_data_object_list_expression_experiment_sub_set_
154
193
  from gemmapy.sdk.models.response_data_object_list_expression_experiment_sub_set_with_groups_value_object import ResponseDataObjectListExpressionExperimentSubSetWithGroupsValueObject
155
194
  from gemmapy.sdk.models.response_data_object_list_gene_ontology_term_value_object import ResponseDataObjectListGeneOntologyTermValueObject
156
195
  from gemmapy.sdk.models.response_data_object_list_gene_value_object import ResponseDataObjectListGeneValueObject
196
+ from gemmapy.sdk.models.response_data_object_list_ontology_term_simple_value_object import ResponseDataObjectListOntologyTermSimpleValueObject
157
197
  from gemmapy.sdk.models.response_data_object_list_physical_location_value_object import ResponseDataObjectListPhysicalLocationValueObject
158
198
  from gemmapy.sdk.models.response_data_object_list_taxon_value_object import ResponseDataObjectListTaxonValueObject
159
199
  from gemmapy.sdk.models.response_data_object_long import ResponseDataObjectLong
200
+ from gemmapy.sdk.models.response_data_object_ontology_term_value_object import ResponseDataObjectOntologyTermValueObject
201
+ from gemmapy.sdk.models.response_data_object_pipeline_status_value_object import ResponseDataObjectPipelineStatusValueObject
160
202
  from gemmapy.sdk.models.response_data_object_set_annotation_value_object import ResponseDataObjectSetAnnotationValueObject
161
203
  from gemmapy.sdk.models.response_data_object_set_quantitation_type_value_object import ResponseDataObjectSetQuantitationTypeValueObject
162
204
  from gemmapy.sdk.models.response_data_object_simple_svd_value_object import ResponseDataObjectSimpleSVDValueObject
163
205
  from gemmapy.sdk.models.response_data_object_single_cell_dimension_value_object import ResponseDataObjectSingleCellDimensionValueObject
206
+ from gemmapy.sdk.models.response_data_object_task_status_value_object import ResponseDataObjectTaskStatusValueObject
164
207
  from gemmapy.sdk.models.response_error_object import ResponseErrorObject
165
208
  from gemmapy.sdk.models.search_result_type import SearchResultType
166
209
  from gemmapy.sdk.models.search_result_value_object_expression_experiment_value_object import SearchResultValueObjectExpressionExperimentValueObject
@@ -174,6 +217,9 @@ from gemmapy.sdk.models.sort_arg_expression_analysis_result_set import SortArgEx
174
217
  from gemmapy.sdk.models.sort_arg_expression_experiment import SortArgExpressionExperiment
175
218
  from gemmapy.sdk.models.sort_value_object import SortValueObject
176
219
  from gemmapy.sdk.models.statement_value_object import StatementValueObject
220
+ from gemmapy.sdk.models.subset_ref import SubsetRef
221
+ from gemmapy.sdk.models.summary import Summary
222
+ from gemmapy.sdk.models.task_status_value_object import TaskStatusValueObject
177
223
  from gemmapy.sdk.models.taxon import Taxon
178
224
  from gemmapy.sdk.models.taxon1 import Taxon1
179
225
  from gemmapy.sdk.models.taxon10 import Taxon10