calm-data-generator 2.2.1__tar.gz → 2.3.1__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 (199) hide show
  1. calm_data_generator-2.3.1/AUTHORS +32 -0
  2. {calm_data_generator-2.2.1/calm_data_generator.egg-info → calm_data_generator-2.3.1}/PKG-INFO +157 -81
  3. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/README.md +144 -73
  4. calm_data_generator-2.3.1/calm_data_generator/__init__.py +48 -0
  5. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/cli.py +1 -1
  6. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/docs/API.md +23 -21
  7. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/docs/API_ES.md +22 -8
  8. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/docs/CLINICAL_GENERATOR_REFERENCE.md +82 -3
  9. calm_data_generator-2.3.1/calm_data_generator/docs/COMPLEX_GENERATOR_REFERENCE.md +357 -0
  10. calm_data_generator-2.3.1/calm_data_generator/docs/COMPLEX_GENERATOR_REFERENCE_ES.md +359 -0
  11. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/docs/DOCUMENTATION.md +51 -21
  12. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/docs/DOCUMENTATION_ES.md +35 -6
  13. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/docs/REAL_GENERATOR_REFERENCE.md +59 -30
  14. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/docs/REAL_GENERATOR_REFERENCE_ES.md +57 -26
  15. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/docs/REPORTS_REFERENCE.md +91 -11
  16. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/docs/REPORTS_REFERENCE_ES.md +95 -11
  17. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/docs/SCENARIO_INJECTOR_REFERENCE.md +15 -13
  18. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/docs/SCENARIO_INJECTOR_REFERENCE_ES.md +16 -16
  19. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/docs/STREAM_GENERATOR_REFERENCE.md +2 -1
  20. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/docs/STREAM_GENERATOR_REFERENCE_ES.md +1 -1
  21. calm_data_generator-2.3.1/calm_data_generator/generators/clinical/Clinic.py +529 -0
  22. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/generators/clinical/ClinicGeneratorBlock.py +9 -9
  23. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/generators/clinical/ClinicReporter.py +2 -3
  24. calm_data_generator-2.3.1/calm_data_generator/generators/clinical/_demographic_mixin.py +319 -0
  25. calm_data_generator-2.3.1/calm_data_generator/generators/clinical/_gene_expression_mixin.py +260 -0
  26. calm_data_generator-2.3.1/calm_data_generator/generators/clinical/_longitudinal_mixin.py +410 -0
  27. calm_data_generator-2.3.1/calm_data_generator/generators/clinical/_omics_params_mixin.py +44 -0
  28. calm_data_generator-2.3.1/calm_data_generator/generators/clinical/_protein_expression_mixin.py +137 -0
  29. calm_data_generator-2.3.1/calm_data_generator/generators/clinical/_reporting_mixin.py +95 -0
  30. calm_data_generator-2.3.1/calm_data_generator/generators/clinical/_target_omics_mixin.py +303 -0
  31. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/generators/complex/ComplexGenerator.py +2 -2
  32. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/generators/configs.py +54 -4
  33. calm_data_generator-2.3.1/calm_data_generator/generators/drift/DriftInjector.py +510 -0
  34. calm_data_generator-2.3.1/calm_data_generator/generators/drift/_data_quality_drift.py +444 -0
  35. calm_data_generator-2.3.1/calm_data_generator/generators/drift/_drift_utils.py +708 -0
  36. calm_data_generator-2.3.1/calm_data_generator/generators/drift/_feature_drift.py +712 -0
  37. calm_data_generator-2.3.1/calm_data_generator/generators/drift/_label_drift.py +606 -0
  38. calm_data_generator-2.3.1/calm_data_generator/generators/drift/_structural_drift.py +781 -0
  39. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/generators/dynamics/ScenarioInjector.py +13 -8
  40. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/generators/persistence_models.py +7 -5
  41. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/generators/stream/StreamBlockGenerator.py +18 -7
  42. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/generators/stream/StreamGenerator.py +18 -11
  43. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/generators/stream/StreamReporter.py +18 -18
  44. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/generators/tabular/CustomPluginAdapter.py +27 -20
  45. calm_data_generator-2.3.1/calm_data_generator/generators/tabular/RealGenerator.py +920 -0
  46. calm_data_generator-2.3.1/calm_data_generator/generators/tabular/_generate_pipeline.py +686 -0
  47. calm_data_generator-2.3.1/calm_data_generator/generators/tabular/_synth_latent.py +678 -0
  48. calm_data_generator-2.3.1/calm_data_generator/generators/tabular/_synth_privacy.py +204 -0
  49. calm_data_generator-2.3.1/calm_data_generator/generators/tabular/_synth_scvi.py +764 -0
  50. calm_data_generator-2.3.1/calm_data_generator/generators/tabular/_synth_tabular.py +1142 -0
  51. calm_data_generator-2.3.1/calm_data_generator/generators/tabular/_synth_timeseries.py +428 -0
  52. calm_data_generator-2.3.1/calm_data_generator/generators/tabular/_synth_utils.py +784 -0
  53. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/presets/BalancePreset.py +21 -4
  54. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/presets/ConceptDriftPreset.py +20 -3
  55. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/presets/CopulaPreset.py +11 -2
  56. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/presets/DataQualityAuditPreset.py +11 -2
  57. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/presets/DiffusionPreset.py +12 -2
  58. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/presets/DriftScenarioPreset.py +20 -3
  59. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/presets/FastPreset.py +6 -1
  60. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/presets/FastPrototypePreset.py +11 -2
  61. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/presets/GradualDriftPreset.py +20 -3
  62. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/presets/HighFidelityPreset.py +18 -2
  63. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/presets/ImbalancePreset.py +22 -19
  64. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/presets/LongitudinalHealthPreset.py +17 -2
  65. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/presets/OmicsIntegrationPreset.py +18 -2
  66. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/presets/RareDiseasePreset.py +18 -2
  67. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/presets/ScenarioInjectorPreset.py +17 -5
  68. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/presets/SeasonalTimeSeriesPreset.py +27 -7
  69. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/presets/SingleCellQualityPreset.py +8 -1
  70. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/presets/TimeSeriesPreset.py +20 -2
  71. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/presets/__init__.py +11 -12
  72. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/presets/base.py +2 -1
  73. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/reports/DiscriminatorReporter.py +26 -28
  74. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/reports/ExternalReporter.py +6 -13
  75. calm_data_generator-2.3.1/calm_data_generator/reports/LocalIndexGenerator.py +161 -0
  76. calm_data_generator-2.3.1/calm_data_generator/reports/QualityReporter.py +558 -0
  77. calm_data_generator-2.3.1/calm_data_generator/reports/Visualizer.py +32 -0
  78. calm_data_generator-2.3.1/calm_data_generator/reports/__init__.py +25 -0
  79. calm_data_generator-2.3.1/calm_data_generator/reports/_comparison.py +350 -0
  80. calm_data_generator-2.3.1/calm_data_generator/reports/_correlation.py +97 -0
  81. calm_data_generator-2.3.1/calm_data_generator/reports/_dimensionality.py +120 -0
  82. calm_data_generator-2.3.1/calm_data_generator/reports/_distribution.py +209 -0
  83. calm_data_generator-2.3.1/calm_data_generator/reports/_metrics_cards.py +163 -0
  84. calm_data_generator-2.3.1/calm_data_generator/reports/_ml_utility_mixin.py +239 -0
  85. calm_data_generator-2.3.1/calm_data_generator/reports/_privacy_metrics_mixin.py +221 -0
  86. calm_data_generator-2.3.1/calm_data_generator/reports/_quality_scoring_mixin.py +262 -0
  87. calm_data_generator-2.3.1/calm_data_generator/reports/_sequence.py +244 -0
  88. calm_data_generator-2.3.1/calm_data_generator/reports/_single_cell_mixin.py +150 -0
  89. calm_data_generator-2.3.1/calm_data_generator/reports/_statistical_similarity_mixin.py +172 -0
  90. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/reports/base.py +1 -3
  91. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/tutorials/clinical_generator.py +45 -23
  92. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/tutorials/correlation_drift.py +8 -16
  93. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/tutorials/real_block_generator.py +6 -4
  94. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/tutorials/real_generator.py +21 -1
  95. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/tutorials/reports_deep_dive.py +40 -11
  96. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/tutorials/scenario_injector.py +5 -4
  97. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/tutorials/stream_generator.py +6 -6
  98. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1/calm_data_generator.egg-info}/PKG-INFO +157 -81
  99. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator.egg-info/SOURCES.txt +35 -1
  100. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator.egg-info/requires.txt +10 -5
  101. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/pyproject.toml +27 -10
  102. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/requirements.txt +10 -5
  103. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/tests/test_accessors.py +3 -3
  104. calm_data_generator-2.3.1/tests/test_cli.py +95 -0
  105. calm_data_generator-2.3.1/tests/test_clinic_block_generator.py +59 -0
  106. calm_data_generator-2.3.1/tests/test_clinical_advanced.py +28 -0
  107. calm_data_generator-2.3.1/tests/test_clinical_correlation_matrix.py +371 -0
  108. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/tests/test_comprehensive.py +10 -62
  109. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/tests/test_comprehensive_reporting.py +8 -6
  110. calm_data_generator-2.3.1/tests/test_configs_validation.py +109 -0
  111. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/tests/test_differentiation_factor.py +28 -24
  112. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/tests/test_drift_injector_math.py +5 -4
  113. calm_data_generator-2.3.1/tests/test_fit_sample_api.py +95 -0
  114. calm_data_generator-2.3.1/tests/test_migration.py +98 -0
  115. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/tests/test_presets.py +15 -15
  116. calm_data_generator-2.3.1/tests/test_quality_metrics.py +204 -0
  117. calm_data_generator-2.3.1/tests/test_real_block_generator.py +99 -0
  118. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/tests/test_reporters_extended.py +78 -8
  119. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/tests/test_reporting_fix.py +6 -4
  120. calm_data_generator-2.3.1/tests/test_scgft_reporter.py +137 -0
  121. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/tests/test_scvi_quality_regression.py +20 -16
  122. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/tests/test_single_call.py +5 -4
  123. calm_data_generator-2.3.1/tests/test_stream_block_generator.py +99 -0
  124. calm_data_generator-2.2.1/calm_data_generator/__init__.py +0 -31
  125. calm_data_generator-2.2.1/calm_data_generator/docs/COMPLEX_GENERATOR_REFERENCE.md +0 -222
  126. calm_data_generator-2.2.1/calm_data_generator/docs/COMPLEX_GENERATOR_REFERENCE_ES.md +0 -221
  127. calm_data_generator-2.2.1/calm_data_generator/generators/clinical/Clinic.py +0 -1877
  128. calm_data_generator-2.2.1/calm_data_generator/generators/drift/DriftInjector.py +0 -3632
  129. calm_data_generator-2.2.1/calm_data_generator/generators/tabular/QualityReporter.py +0 -5
  130. calm_data_generator-2.2.1/calm_data_generator/generators/tabular/RealGenerator.py +0 -5121
  131. calm_data_generator-2.2.1/calm_data_generator/reports/LocalIndexGenerator.py +0 -224
  132. calm_data_generator-2.2.1/calm_data_generator/reports/QualityReporter.py +0 -931
  133. calm_data_generator-2.2.1/calm_data_generator/reports/Visualizer.py +0 -940
  134. calm_data_generator-2.2.1/calm_data_generator/reports/__init__.py +0 -15
  135. calm_data_generator-2.2.1/tests/test_clinic_block_generator.py +0 -77
  136. calm_data_generator-2.2.1/tests/test_clinical_advanced.py +0 -40
  137. calm_data_generator-2.2.1/tests/test_migration.py +0 -82
  138. calm_data_generator-2.2.1/tests/test_quality_metrics.py +0 -70
  139. calm_data_generator-2.2.1/tests/test_real_block_generator.py +0 -131
  140. calm_data_generator-2.2.1/tests/test_scgft_reporter.py +0 -127
  141. calm_data_generator-2.2.1/tests/test_stream_block_generator.py +0 -127
  142. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/LICENSE +0 -0
  143. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/MANIFEST.in +0 -0
  144. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/docs/CAUSAL_ENGINE_REFERENCE.md +0 -0
  145. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/docs/CAUSAL_ENGINE_REFERENCE_ES.md +0 -0
  146. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/docs/CLINICAL_BLOCK_GENERATOR_REFERENCE.md +0 -0
  147. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/docs/CLINICAL_BLOCK_GENERATOR_REFERENCE_ES.md +0 -0
  148. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/docs/CLINICAL_GENERATOR_REFERENCE_ES.md +0 -0
  149. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/docs/DRIFT_INJECTOR_REFERENCE.md +0 -0
  150. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/docs/DRIFT_INJECTOR_REFERENCE_ES.md +0 -0
  151. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/docs/PRESETS_REFERENCE.md +0 -0
  152. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/docs/PRESETS_REFERENCE_ES.md +0 -0
  153. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/docs/REAL_BLOCK_GENERATOR_REFERENCE.md +0 -0
  154. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/docs/REAL_BLOCK_GENERATOR_REFERENCE_ES.md +0 -0
  155. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/docs/STREAM_BLOCK_GENERATOR_REFERENCE.md +0 -0
  156. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/docs/STREAM_BLOCK_GENERATOR_REFERENCE_ES.md +0 -0
  157. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/generators/__init__.py +0 -0
  158. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/generators/base.py +0 -0
  159. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/generators/clinical/__init__.py +0 -0
  160. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/generators/complex/__init__.py +0 -0
  161. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/generators/drift/__init__.py +0 -0
  162. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/generators/dynamics/CausalEngine.py +0 -0
  163. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/generators/dynamics/__init__.py +0 -0
  164. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/generators/stream/GeneratorFactory.py +0 -0
  165. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/generators/stream/__init__.py +0 -0
  166. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/generators/tabular/RealBlockGenerator.py +2 -2
  167. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/generators/tabular/__init__.py +0 -0
  168. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/generators/utils/__init__.py +0 -0
  169. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/generators/utils/propagation.py +0 -0
  170. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/logger.py +0 -0
  171. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/tutorials/advanced_drifts.py +0 -0
  172. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/tutorials/clinic_generator.py +0 -0
  173. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/tutorials/clinical_block_generator.py +0 -0
  174. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/tutorials/drift_injector.py +0 -0
  175. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/tutorials/stream_block_generator.py +0 -0
  176. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator/tutorials/tutorial_advanced_methods.py +0 -0
  177. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator.egg-info/dependency_links.txt +0 -0
  178. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator.egg-info/entry_points.txt +0 -0
  179. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/calm_data_generator.egg-info/top_level.txt +0 -0
  180. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/setup.cfg +0 -0
  181. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/tests/test_anndata_support.py +0 -0
  182. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/tests/test_block_generators_extended.py +0 -0
  183. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/tests/test_causal_engine.py +0 -0
  184. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/tests/test_clinical_regression.py +0 -0
  185. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/tests/test_complex_generator.py +0 -0
  186. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/tests/test_correlation_propagation.py +0 -0
  187. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/tests/test_custom_plugin_adapter.py +0 -0
  188. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/tests/test_discriminator_reporter.py +0 -0
  189. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/tests/test_disease_effects_fix.py +0 -0
  190. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/tests/test_drift_correlations.py +0 -0
  191. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/tests/test_drift_injector_advanced.py +0 -0
  192. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/tests/test_functional_drift.py +0 -0
  193. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/tests/test_imbalance.py +0 -0
  194. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/tests/test_real_generator_persistence.py +0 -0
  195. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/tests/test_river_integration.py +0 -0
  196. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/tests/test_scenario_extended.py +0 -0
  197. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/tests/test_tabular_extended.py +0 -0
  198. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/tests/test_timeseries_extended.py +0 -0
  199. {calm_data_generator-2.2.1 → calm_data_generator-2.3.1}/tests/test_timeseries_real.py +0 -0
@@ -0,0 +1,32 @@
1
+ CALM-Data-Generator — Authors and Contributors
2
+ ==============================================
3
+
4
+ Project contact: calmdatagenerator@outlook.es
5
+
6
+ Authorship is documented here and in the project files (pyproject.toml,
7
+ CITATION.cff, README). It is independent of who administers the GitHub
8
+ repository, and the commit history remains the permanent record of
9
+ individual contributions.
10
+
11
+
12
+ Original author
13
+ ---------------
14
+ Alejandro Belda Fernandez <a.beldafernandez@um.es>
15
+ Created the library and led its development through version 2.3.0.
16
+ Universidad de Murcia.
17
+
18
+
19
+ Current maintainer
20
+ ------------------
21
+ Antonio Guillen Teruel <a.guillenteruel@um.es>
22
+ Maintains the project from version 2.3.0 onwards.
23
+ Universidad de Murcia.
24
+
25
+
26
+ Contributors
27
+ ------------
28
+ Nasim El Arifi Ahmed <nasim.e.a@um.es>
29
+ Author of scGFT Evaluator (https://github.com/nasim23ea/scgft-evaluator),
30
+ the Graph Fourier Transform-based single-cell evaluation integrated into
31
+ QualityReporter via the `use_scgft` option.
32
+ Universidad de Murcia.
@@ -1,11 +1,12 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: calm-data-generator
3
- Version: 2.2.1
3
+ Version: 2.3.1
4
4
  Summary: CALM-Data-Generator: A Python library for synthetic data generation with support for drift injection and clinical data.
5
5
  Author-email: Alejandro Belda Fernandez <alejandrobeldafernandez@gmail.com>
6
+ Maintainer-email: Antonio Guillen Teruel <a.guillenteruel@um.es>, CALM-Data-Generator project <calmdatagenerator@outlook.es>
6
7
  License: MIT
7
- Project-URL: Homepage, https://github.com/AlejandroBeldaFernandez/Calm-Data_Generator
8
- Project-URL: Bug Tracker, https://github.com/AlejandroBeldaFernandez/Calm-Data_Generator/issues
8
+ Project-URL: Homepage, https://github.com/AlejandroBeldaFernandez/Calm-Data-Generator
9
+ Project-URL: Bug Tracker, https://github.com/AlejandroBeldaFernandez/Calm-Data-Generator/issues
9
10
  Keywords: synthetic-data,machine-learning,generative-ai,data-science,drift-detection,clinical-data,privacy
10
11
  Classifier: Development Status :: 4 - Beta
11
12
  Classifier: Intended Audience :: Developers
@@ -21,6 +22,7 @@ Classifier: Operating System :: OS Independent
21
22
  Requires-Python: >=3.10
22
23
  Description-Content-Type: text/markdown
23
24
  License-File: LICENSE
25
+ License-File: AUTHORS
24
26
  Requires-Dist: numpy<2.0.0,>=1.26.4
25
27
  Requires-Dist: pandas<2.4.0,>=2.3.0
26
28
  Requires-Dist: scipy<1.15.0,>=1.14.0
@@ -33,8 +35,8 @@ Requires-Dist: sdmetrics<0.28.0,>=0.27.0
33
35
  Requires-Dist: numba<0.63.0,>=0.62.0
34
36
  Requires-Dist: llvmlite<0.46.0,>=0.45.0
35
37
  Requires-Dist: scikit-learn<1.8.0,>=1.7.0
36
- Requires-Dist: torch<2.3.0,>=2.2.0
37
- Requires-Dist: torchvision<0.18.0,>=0.17.0
38
+ Requires-Dist: torch>=2.2.0
39
+ Requires-Dist: torchvision>=0.17.0
38
40
  Requires-Dist: lightgbm<4.7.0,>=4.6.0
39
41
  Requires-Dist: imbalanced-learn<0.15.0,>=0.14.0
40
42
  Requires-Dist: copulae<0.8.0,>=0.7.9
@@ -44,8 +46,6 @@ Requires-Dist: scanpy<1.11.0,>=1.10.0
44
46
  Requires-Dist: lightning<2.4.0,>=2.3.0
45
47
  Requires-Dist: torchmetrics<1.9.0,>=1.8.0
46
48
  Requires-Dist: plotly<6.6.0,>=6.5.0
47
- Requires-Dist: cell-gears<0.2.0,>=0.1.2
48
- Requires-Dist: torch-geometric<2.8.0,>=2.7.0
49
49
  Requires-Dist: huggingface-hub<1.0.0,>=0.36.0
50
50
  Requires-Dist: transformers<5.0.0,>=4.22.1
51
51
  Requires-Dist: xgboost<2.2.0,>=2.1.0
@@ -56,8 +56,13 @@ Requires-Dist: fsspec<2026.0.0,>=2025.12.0
56
56
  Requires-Dist: scgft-evaluator<0.2.0,>=0.1.0
57
57
  Provides-Extra: stream
58
58
  Requires-Dist: river>=0.21.0; extra == "stream"
59
+ Provides-Extra: gears
60
+ Requires-Dist: torch-geometric>=2.7.0; extra == "gears"
61
+ Requires-Dist: cell-gears<0.2.0,>=0.1.2; extra == "gears"
62
+ Provides-Extra: privacy
63
+ Requires-Dist: anonymeter<2.0.0,>=1.0.0; extra == "privacy"
59
64
  Provides-Extra: full
60
- Requires-Dist: calm-data-generator[stream]; extra == "full"
65
+ Requires-Dist: calm-data-generator[gears,privacy,stream]; extra == "full"
61
66
  Dynamic: license-file
62
67
 
63
68
  # CALM-Data-Generator
@@ -75,7 +80,7 @@ Dynamic: license-file
75
80
  **CALM-Data-Generator** is a comprehensive Python library for synthetic data generation with advanced features for:
76
81
  - **Clinical/Medical Data** - Generate realistic patient demographics, genes, proteins
77
82
  - **Tabular Data Synthesis** - CTGAN, TVAE, CART, and more
78
- - **Time Series** - TimeGAN, DGAN
83
+ - **Time Series** - TimeGAN, TimeVAE, FourierFlows
79
84
  - **Single-Cell** - scVI, GEARS (Perturbation Prediction)
80
85
  - **Latent Differentiation** - Force class separability in TVAE & scVI
81
86
  - **Flexible Clipping** - Strict or permissive data range enforcement
@@ -290,7 +295,7 @@ synthetic_df = preset.generate(data=adata_df, n_samples=500)
290
295
  ```
291
296
 
292
297
  ## Key Libraries & Ecosystem
293
-
298
+
294
299
  | Library | Role | Usage in Calm-Data-Generator |
295
300
  | :--- | :--- | :--- |
296
301
  | **Synthcity** | Deep Learning Engine | Powers `CTGAN`, `TVAE`, `DDPM`, `TimeGAN`. Handling privacy & fidelity. |
@@ -334,47 +339,74 @@ Minimalist view of the system's core components and data flow.
334
339
  ---
335
340
 
336
341
  ## Installation
337
-
342
+
338
343
  > [!WARNING]
339
- > The installation might be **heavy (~2-3 GB)** and take a few minutes depending on your internet connection. We strongly recommend using a fresh virtual environment.
340
-
344
+ > The installation is **heavy (~2-3 GB)** and may take several minutes. Use a fresh virtual environment.
345
+
341
346
  ### Versioning Strategy
342
-
347
+
343
348
  - **GitHub (Recommended for latest features)**: The `main` branch contains the most up-to-date version with the latest bug fixes and features.
344
349
  - **PyPI (Stable)**: Releases on PyPI are stable versions updated less frequently for major changes.
345
-
346
- ### Standard Installation (PyPI - Stable)
347
- The library is available on PyPI. For the most stable experience, we recommend using a virtual environment:
350
+
351
+ ### Step 1 Install PyTorch for your hardware
352
+
353
+ PyTorch must be installed **before** the library so pip resolves the correct wheel (CPU, CUDA, or ROCm).
348
354
 
349
355
  ```bash
350
- # 1. Create and activate a virtual environment
351
- python3 -m venv venv
352
- source venv/bin/activate
356
+ # CPU Mac Intel, CI environments, no GPU
357
+ pip install "torch>=2.2.0" "torchvision>=0.17.0"
353
358
 
354
- # 2. Upgrade pip, setuptools and wheel (Crucial for successful installation)
355
- pip install --upgrade pip setuptools wheel
359
+ # CUDA 12.4 Linux / Windows with NVIDIA GPU
360
+ pip install "torch>=2.2.0" "torchvision>=0.17.0" --index-url https://download.pytorch.org/whl/cu124
356
361
 
357
- # 3. Install the core library (optimized for speed)
362
+ # ROCm 6.1 Linux with AMD GPU
363
+ pip install "torch>=2.2.0" "torchvision>=0.17.0" --index-url https://download.pytorch.org/whl/rocm6.1
364
+
365
+ # Mac Apple Silicon (M1/M2/M3) — MPS is auto-detected, no special wheel needed
366
+ pip install "torch>=2.2.0" "torchvision>=0.17.0"
367
+ ```
368
+
369
+ > Replace `cu124` with your installed CUDA version (e.g. `cu118`, `cu121`). Find yours with `nvidia-smi`.
370
+
371
+ ### Step 2 — Install the library
372
+
373
+ ```bash
374
+ pip install --upgrade pip setuptools wheel
358
375
  pip install calm-data-generator
359
376
  ```
360
377
 
361
- ### Installation Extras
362
- Depending on your needs, you can install additional capabilities:
378
+ ### Optional extras
379
+
363
380
  ```bash
364
- # For Stream Generator (River)
381
+ # River streaming support
365
382
  pip install "calm-data-generator[stream]"
366
383
 
384
+ # GEARS perturbation prediction (requires PyG wheels — see below)
385
+ pip install "calm-data-generator[gears]"
367
386
 
387
+ # Singling-Out privacy risk metric (anonymeter)
388
+ pip install "calm-data-generator[privacy]"
368
389
 
369
- # Full suite
390
+ # Full suite (stream + gears + privacy)
370
391
  pip install "calm-data-generator[full]"
371
392
  ```
372
393
 
373
- > [!NOTE]
374
- > **Performance & Stability Note**: We have optimized the dependency tree since version 1.0.0 by pinning specific versions such as `pydantic`, `xgboost`, and `cloudpickle`. This improves compatibility and reduces installation issues.
394
+ > **GEARS / PyTorch Geometric** requires platform-specific wheels from the PyG index.
395
+ > Install them **before** `calm-data-generator[gears]`:
396
+ > ```bash
397
+ > # Get your torch version first
398
+ > python -c "import torch; print(torch.__version__)"
399
+ >
400
+ > # CPU example (replace torch-2.2.0 and +cpu with your version and platform)
401
+ > pip install torch-geometric --find-links https://data.pyg.org/whl/torch-2.2.0+cpu.html
402
+ >
403
+ > # CUDA 12.4 example
404
+ > pip install torch-geometric --find-links https://data.pyg.org/whl/torch-2.2.0+cu124.html
405
+ >
406
+ > pip install "calm-data-generator[gears]"
407
+ > ```
375
408
 
376
409
  **From source (GitHub - Latest Updates):**
377
- Use this method to get the latest bug fixes and features not yet released on PyPI.
378
410
 
379
411
  ```bash
380
412
  # Option A: Install directly from GitHub
@@ -410,11 +442,19 @@ pip install calm-data-generator
410
442
  2. Install "Desktop development with C++"
411
443
  3. Then retry installation
412
444
 
413
- **PyTorch CPU-only (no GPU):**
414
- ```bash
415
- pip install torch --index-url https://download.pytorch.org/whl/cpu
416
- pip install calm-data-generator
445
+ **Windows Long Path error during installation:**
446
+
447
+ Some packages (e.g. `orbax-checkpoint`) contain very deep directory structures that exceed the Windows default 260-character path limit. If you see an error like:
417
448
  ```
449
+ OSError: [Errno 2] No such file or directory: 'C:\...\very\long\path'
450
+ HINT: This error might have occurred since this system does not have Windows Long Path support enabled.
451
+ ```
452
+ Enable long paths via PowerShell (run as Administrator):
453
+ ```powershell
454
+ New-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" `
455
+ -Name "LongPathsEnabled" -Value 1 -PropertyType DWORD -Force
456
+ ```
457
+ Then restart your machine and retry installation. Alternatively, install your virtual environment in a short root path (e.g. `C:\venv\`) to reduce total path length.
418
458
 
419
459
  **Dependency conflicts:** Use a clean virtual environment:
420
460
  ```bash
@@ -457,36 +497,43 @@ synthetic = gen.generate(
457
497
  print(f"Generated {len(synthetic)} samples")
458
498
  ```
459
499
 
500
+ ### Simpler API: `fit()` / `sample()`
501
+
502
+ For the common case — train once, sample as many times as you want — use the sklearn-style wrapper:
503
+
504
+ ```python
505
+ gen = RealGenerator(auto_report=False).fit(data, method="cart", target_col="label")
506
+
507
+ small_batch = gen.sample(100)
508
+ large_batch = gen.sample(10_000) # reuses the fitted model, no retraining
509
+
510
+ # Chaining works too:
511
+ synthetic = RealGenerator().fit(data, method="ctgan").sample(1000)
512
+ ```
513
+
460
514
  ### GPU Acceleration
461
515
 
462
- **Methods with GPU support:**
516
+ GPU is **auto-detected** at runtime in the order CUDA → MPS → CPU. No parameter is needed for most methods.
517
+
518
+ | Method | Device support | Notes |
519
+ | ------ | -------------- | ----- |
520
+ | `scvi`, `scanvi` | CUDA · MPS · CPU | Auto-detected via Lightning accelerator |
521
+ | `gears` | CUDA · MPS · CPU | Auto-detected via PyTorch device |
522
+ | `ctgan`, `tvae`, `rtvae`, `ddpm`, `timegan`, `timevae`, `fflows`, `dpgan`, `pategan`, `great` | CUDA · CPU | Auto-detected internally by Synthcity |
523
+ | `cart`, `rf`, `lgbm`, `xgboost`, `gmm`, `copula`, `windowed_copula`, `kde`, `smote`, `adasyn`, `hmm`, `bn` | CPU only | Statistical / tree-based, no GPU path |
463
524
 
464
- | Method | GPU Support | Parameter |
465
- |--------|-------------|-----------|
466
- | `ctgan`, `tvae` | Yes — CUDA/MPS | `enable_gpu=True` |
467
- | `diffusion` | Yes — PyTorch | Auto-detected |
468
- | `ddpm` | Yes — PyTorch + Synthcity | Auto-detected |
469
- | `timegan` | Yes — PyTorch + Synthcity | Auto-detected |
470
- | `timevae` | Yes — PyTorch + Synthcity | Auto-detected |
471
- | `fflows` | Yes — PyTorch + Synthcity | Auto-detected |
525
+ **Mac Apple Silicon (M1/M2/M3):** MPS is used automatically for `scvi`, `scanvi`, and `gears` when `torch.backends.mps.is_available()` returns `True`. Install the standard CPU wheel — no special MPS wheel is required.
472
526
 
473
- | `smote`, `adasyn`, `cart`, `rf`, `lgbm`, `gmm`, `copula` | No — CPU only | - |
527
+ To override the device explicitly:
474
528
 
475
529
  ```python
476
- synthetic = gen.generate(
477
- data=data,
478
- n_samples=1000,
479
- method='ctgan',
480
- epochs=300,
481
- enable_gpu=True,
482
-
483
- )
484
- ```
530
+ # Force CPU for scVI/scANVI
531
+ gen.generate(data=data, n_samples=1000, method='scvi', accelerator='cpu')
485
532
 
486
- > **Note:** Requires PyTorch with CUDA support:
487
- > ```bash
488
- > pip install torch --index-url https://download.pytorch.org/whl/cu118
489
- > ```
533
+ # Force a specific device for GEARS
534
+ gen.generate(data=data, n_samples=1000, method='gears', device='cuda')
535
+ gen.generate(data=data, n_samples=1000, method='gears', device='mps')
536
+ ```
490
537
 
491
538
  ### Generate Clinical Data
492
539
 
@@ -579,7 +626,7 @@ synthetic = gen.generate(
579
626
  target_col='cell_type',
580
627
  epochs=100,
581
628
  n_latent=10,
582
-
629
+
583
630
  )
584
631
 
585
632
 
@@ -646,6 +693,14 @@ reporter.generate_report(
646
693
  # Results JSON (including compared_data_files) saved to ./quality_report/report_results.json
647
694
  ```
648
695
 
696
+ For a fast, in-memory check without writing any file (quality scores, KS/MMD/Wasserstein
697
+ statistical tests, and TSTR if you pass a `target_column`), use `evaluate()` instead:
698
+
699
+ ```python
700
+ result = reporter.evaluate(real_data, synthetic, target_column="target")
701
+ print(result["quality_scores"], result["statistical_metrics"])
702
+ ```
703
+
649
704
  For **single-cell data**, enable [scGFT](https://github.com/nasim23ea/scgft-evaluator) evaluation (Graph Fourier Transform-based manifold preservation metrics):
650
705
 
651
706
  ```python
@@ -682,29 +737,36 @@ reporter.generate_comprehensive_report(
682
737
 
683
738
  ## Synthesis Methods
684
739
 
685
- | Method | Type | Description | Requirements / Notes |
686
- |--------|------|-------------|----------------------|
687
- | `cart` | ML | CART-based iterative synthesis (fast) | Base installation |
688
- | `rf` | ML | Random Forest synthesis | Base installation |
689
- | `lgbm` | ML | LightGBM-based synthesis | Base installation (Requires `lightgbm`) |
690
- | `ctgan` | DL | Conditional GAN for tabular data | Requires `synthcity` |
691
- | `tvae` | DL | Variational Autoencoder | Requires `synthcity` |
692
- | `diffusion` | DL | Tabular Diffusion (custom, fast) | Base installation (PyTorch) |
693
- | `ddpm` | DL | Synthcity TabDDPM (advanced) | Requires `synthcity` |
694
- | `timegan` | Time Series | TimeGAN for sequential data | Requires `synthcity` |
695
- | `timevae` | Time Series | TimeVAE for sequential data | Requires `synthcity` |
696
- | `fflows` | Time Series | FourierFlows normalizing flows for temporal data, stable for periodic series | Requires `synthcity` |
697
- | `bn` | DL / Probabilistic | Bayesian Network models causal dependencies between features | Requires `synthcity` |
698
- | `smote` | Augmentation | SMOTE oversampling | Base installation |
699
- | `adasyn` | Augmentation | ADASYN adaptive sampling | Base installation |
700
-
701
-
702
- | `copula` | Copula | Copula-based synthesis | Base installation |
703
- | `gmm` | Statistical | Gaussian Mixture Models | Base installation |
704
- | `scvi` | Single-Cell | scVI (Variational Inference) for RNA-seq | Requires `scvi-tools` |
705
- | `conditional_drift` | Drift-Aware | Temporal conditioning via TVAE/CTGAN | Requires `synthcity` |
706
- | `windowed_copula` | Drift-Aware | Gaussian Copula interpolated across time windows | Base installation |
707
- | `hmm` | Drift-Aware | Hidden Markov Modeldrift via regime transitions | Requires `hmmlearn` |
740
+ | Method | Type | Description | Requirements |
741
+ | ------ | ---- | ----------- | ------------ |
742
+ | `cart` | ML | CART-based iterative synthesis (fast) | Base |
743
+ | `rf` | ML | Random Forest synthesis | Base |
744
+ | `lgbm` | ML | LightGBM-based synthesis | Base |
745
+ | `xgboost` | ML | XGBoost-based synthesis | Base |
746
+ | `gmm` | Statistical | Gaussian Mixture Models | Base |
747
+ | `kde` | Statistical | Kernel Density Estimation (numeric only) | Base |
748
+ | `copula` | Statistical | Gaussian Copula synthesis | Base |
749
+ | `windowed_copula` | Drift-Aware | Gaussian Copula interpolated across time windows | Base |
750
+ | `hmm` | Drift-Aware | Hidden Markov Model drift via regime transitions | Base |
751
+ | `smote` | Augmentation | SMOTE oversampling | Base |
752
+ | `adasyn` | Augmentation | ADASYN adaptive sampling | Base |
753
+ | `resample` | Augmentation | Weighted resampling from original data | Base |
754
+ | `ctgan` | DL | Conditional GAN for tabular data | `synthcity` |
755
+ | `tvae` | DL | Variational Autoencoder | `synthcity` |
756
+ | `rtvae` | DL | Robust TVAE | `synthcity` |
757
+ | `great` | DL | GReaT — LLM-based tabular generation | `synthcity` |
758
+ | `bn` | Probabilistic | Bayesian Network causal dependencies | `synthcity` |
759
+ | `diffusion` | DL | Tabular Diffusion (custom, lightweight) | Base (PyTorch) |
760
+ | `ddpm` | DL | TabDDPM advanced diffusion | `synthcity` |
761
+ | `dpgan` | DL + Privacy | Differentially private GAN | `synthcity` |
762
+ | `pategan` | DL + Privacy | PATE-GANteacher-ensemble privacy | `synthcity` |
763
+ | `timegan` | Time Series | TimeGAN for sequential data | `synthcity` |
764
+ | `timevae` | Time Series | TimeVAE for sequential data | `synthcity` |
765
+ | `fflows` | Time Series | FourierFlows — normalizing flows, stable for periodic series | `synthcity` |
766
+ | `conditional_drift` | Drift-Aware | Temporal stage conditioning via TVAE/CTGAN | `synthcity` |
767
+ | `scvi` | Single-Cell | scVI (VAE) for RNA-seq expression data | `scvi-tools` |
768
+ | `scanvi` | Single-Cell | scANVI — semi-supervised, label-aware scVI | `scvi-tools` |
769
+ | `gears` | Single-Cell | GEARS — perturbation prediction via GNN | `[gears]` extra |
708
770
 
709
771
 
710
772
  ---
@@ -754,6 +816,20 @@ Explore the full documentation in the `calm_data_generator/docs/` directory:
754
816
 
755
817
  ---
756
818
 
819
+ ## Authors
820
+
821
+ **Originally created by** [Alejandro Belda Fernandez](mailto:a.beldafernandez@um.es) (Universidad de Murcia), who led the development of the library through version 2.3.0.
822
+
823
+ **Currently maintained by** [Antonio Guillen Teruel](mailto:a.guillenteruel@um.es) (Universidad de Murcia), from version 2.3.0 onwards.
824
+
825
+ The single-cell evaluation integrated via `use_scgft` is powered by [scGFT Evaluator](https://github.com/nasim23ea/scgft-evaluator), authored by [Nasim El Arifi Ahmed](mailto:nasim.e.a@um.es) (Universidad de Murcia).
826
+
827
+ See [AUTHORS](AUTHORS) for the full attribution and [CITATION.cff](CITATION.cff) if you need to cite this software in academic work.
828
+
829
+ **Contact:** [calmdatagenerator@outlook.es](mailto:calmdatagenerator@outlook.es) — for questions about the library. For bugs and feature requests, please open an [issue](https://github.com/AlejandroBeldaFernandez/Calm-Data-Generator/issues).
830
+
831
+ ---
832
+
757
833
  ## License
758
834
 
759
835
  MIT License - see [LICENSE](LICENSE) file