[med-svn] [Git][med-team/q2-sample-classifier][master] 8 commits: routine-update: New upstream version

Michael R. Crusoe (@crusoe) gitlab at salsa.debian.org
Tue Jun 25 03:18:51 BST 2024



Michael R. Crusoe pushed to branch master at Debian Med / q2-sample-classifier


Commits:
389271bf by Michael R. Crusoe at 2024-06-25T03:40:50+02:00
routine-update: New upstream version

- - - - -
ae87a6bf by Michael R. Crusoe at 2024-06-25T03:40:51+02:00
New upstream version 2024.5.0
- - - - -
b62cadbc by Michael R. Crusoe at 2024-06-25T03:40:53+02:00
Update upstream source from tag 'upstream/2024.5.0'

Update to upstream version '2024.5.0'
with Debian dir 8eae257f2cc536893a13f9fab566ba9425ca3d4f
- - - - -
a44847eb by Michael R. Crusoe at 2024-06-25T03:41:12+02:00
routine-update: Regenerate debian/control from debian/control.in

- - - - -
71ff9e36 by Michael R. Crusoe at 2024-06-25T03:49:55+02:00
d/patches/{convert-estimator,pandas2.0,sklearn-1.2.1}.patch: removed, applied upstream.

- - - - -
bde8f4a6 by Michael R. Crusoe at 2024-06-25T03:57:16+02:00
Only build for Python 3.11 until upstream catches up with Python 3.12.

- - - - -
705fbda4 by Michael R. Crusoe at 2024-06-25T04:16:43+02:00
routine-update: Regenerate debian/control from debian/control.in

- - - - -
fb5206a7 by Michael R. Crusoe at 2024-06-25T04:16:44+02:00
routine-update: Ready to upload to unstable

- - - - -


16 changed files:

- debian/changelog
- debian/control
- − debian/patches/convert-estimator.patch
- debian/patches/fix-autopkgtest.patch
- − debian/patches/pandas2.0.patch
- debian/patches/series
- − debian/patches/sklearn-1.2.1.patch
- debian/rules
- debian/tests/run-unit-test
- q2_sample_classifier/_version.py
- q2_sample_classifier/classify.py
- q2_sample_classifier/tests/test_actions.py
- q2_sample_classifier/tests/test_estimators.py
- q2_sample_classifier/tests/test_types_formats_transformers.py
- q2_sample_classifier/utilities.py
- q2_sample_classifier/visuals.py


Changes:

=====================================
debian/changelog
=====================================
@@ -1,3 +1,16 @@
+q2-sample-classifier (2024.5.0-1) unstable; urgency=medium
+
+  * Team upload.
+  * New upstream version
+  * Regenerate debian/control from debian/control.in (routine-update)
+  * d/patches/{convert-estimator,pandas2.0,sklearn-1.2.1}.patch:
+    removed, applied upstream.
+  * Only build for Python 3.11 until upstream catches up with Python
+    3.12.
+  * Regenerate debian/control from debian/control.in (routine-update)
+
+ -- Michael R. Crusoe <crusoe at debian.org>  Tue, 25 Jun 2024 04:16:44 +0200
+
 q2-sample-classifier (2024.2.0-1) unstable; urgency=medium
 
   * Team upload.


=====================================
debian/control
=====================================
@@ -8,7 +8,7 @@ Section: science
 Priority: optional
 Build-Depends: debhelper-compat (= 13),
                dh-sequence-python3,
-               qiime (>= 2024.2),
+               qiime (>= 2024.5),
                python3-all,
                python3-setuptools,
                python3-pytest <!nocheck>
@@ -25,9 +25,9 @@ Depends: ${shlibs:Depends},
          ${python3:Depends},
          python3-distutils,
          python3-sklearn,
-         qiime (>= 2024.2),
-         q2-types (>= 2024.2),
-         q2-feature-table (>= 2024.2)
+         qiime (>= 2024.5),
+         q2-types (>= 2024.5),
+         q2-feature-table (>= 2024.5)
 Description: QIIME 2 plugin for machine learning prediction of sample data
  QIIME 2 is a powerful, extensible, and decentralized microbiome analysis
  package with a focus on data and analysis transparency. QIIME 2 enables


=====================================
debian/patches/convert-estimator.patch deleted
=====================================
@@ -1,28 +0,0 @@
-Description: fix use of obsolete base_estimator AdaBoost attribute
- The AdaBoostRegressor base_estimator attribute has been renamed "estimator"
- in scikit 1.2 onwards.
-Author: Étienne Mollier <emollier at debian.org>
-Bug: https://github.com/qiime2/q2-sample-classifier/issues/227
-Last-Update: 2023-08-30
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- q2-sample-classifier.orig/q2_sample_classifier/tests/test_estimators.py
-+++ q2-sample-classifier/q2_sample_classifier/tests/test_estimators.py
-@@ -398,7 +398,7 @@
-             parameter_tuning=True, classification=True,
-             missing_samples='ignore', base_estimator="DecisionTree")
-         self.assertEqual(type(abe.named_steps.est), AdaBoostClassifier)
--        self.assertEqual(type(abe.named_steps.est.base_estimator),
-+        self.assertEqual(type(abe.named_steps.est.estimator),
-                          DecisionTreeClassifier)
- 
-     def test_train_adaboost_extra_trees(self):
-@@ -408,7 +408,7 @@
-             parameter_tuning=True, classification=True,
-             missing_samples='ignore', base_estimator="ExtraTrees")
-         self.assertEqual(type(abe.named_steps.est), AdaBoostClassifier)
--        self.assertEqual(type(abe.named_steps.est.base_estimator),
-+        self.assertEqual(type(abe.named_steps.est.estimator),
-                          ExtraTreeClassifier)
- 
-     # test some invalid inputs/edge cases


=====================================
debian/patches/fix-autopkgtest.patch
=====================================
@@ -2,18 +2,9 @@ Description: Fix autopkgtest errors that were failing due to sklearn changed API
 assignment of multi-dimensiondal array to pandas
 Author: Mohammed Bilal  <mdbilal at disroot.org>
 Last-Update: 2022-09-09
---- a/q2_sample_classifier/utilities.py
-+++ b/q2_sample_classifier/utilities.py
-@@ -258,7 +258,7 @@ def _extract_rfe_scores(rfecv):
-          for n in range(len(rfecv.grid_scores_)-1, -1, -1)]
-     if x[0] < 1:
-         x[0] = 1
--    return pd.Series(rfecv.grid_scores_, index=x, name='Accuracy')
-+    return pd.Series(rfecv.cv_results_['mean_test_score'], index=x, name='Accuracy')
- 
- 
- def nested_cross_validation(table, metadata, cv, random_state, n_jobs,
-@@ -523,13 +523,13 @@ def _extract_estimator_parameters(estima
+--- q2-sample-classifier.orig/q2_sample_classifier/utilities.py
++++ q2-sample-classifier/q2_sample_classifier/utilities.py
+@@ -524,13 +524,13 @@
      # (drop pipeline params and individual base estimators)
      estimator_params = {k: v for k, v in estimator.get_params().items() if
                          k.startswith('est__') and k != 'est__base_estimator'}
@@ -29,12 +20,3 @@ Last-Update: 2022-09-09
          rfep.savefig(join(output_dir, 'rfe_plot.png'))
          rfep.savefig(join(output_dir, 'rfe_plot.pdf'))
          plt.close('all')
-@@ -828,7 +828,7 @@ def _train_adaboost_base_estimator(table
-     return Pipeline(
-         [('dv', estimator.named_steps.dv),
-          ('est', adaboost_estimator(estimator.named_steps.est,
--                                    n_estimators, random_state=random_state))])
-+                                    n_estimators=n_estimators, random_state=random_state))])
- 
- 
- def _disable_feature_selection(estimator, optimize_feature_selection):


=====================================
debian/patches/pandas2.0.patch deleted
=====================================
@@ -1,47 +0,0 @@
-Description: Port to Pandas 2.0
-Author: Andreas Tille <tille at debian.org>
-Last-Update: Sun, 18 Feb 2024 15:54:19 +0100
-
---- a/q2_sample_classifier/tests/test_estimators.py
-+++ b/q2_sample_classifier/tests/test_estimators.py
-@@ -117,7 +117,7 @@ class EstimatorsTests(SampleClassifierTe
-             index_col=0, names=['feature', 'importance'])
-         self.exp_pred = pd.read_csv(
-             self.get_data_path('predictions.tsv'), sep='\t', header=0,
--            index_col=0, squeeze=True)
-+            index_col=0).squeeze('columns')
-         index = pd.Index(['A', 'B', 'C', 'D'], name='id')
-         self.table_percnorm = qiime2.Artifact.import_data(
-             FeatureTable[PercentileNormalized], pd.DataFrame(
---- a/q2_sample_classifier/tests/test_types_formats_transformers.py
-+++ b/q2_sample_classifier/tests/test_types_formats_transformers.py
-@@ -84,8 +84,7 @@ class TestSemanticTypes(SampleClassifier
-         exp = pd.Series([True, False, True, False, True, False],
-                         name='outlier', index=exp_index)
-         obs = transformer(exp)
--        obs = pd.read_csv(str(obs), sep='\t', header=0, index_col=0,
--                          squeeze=True)
-+        obs = pd.read_csv(str(obs), sep='\t', header=0, index_col=0).squeeze('columns')
-         self.assertEqual(sorted(exp), sorted(obs))
- 
-     def test_boolean_format_to_pd_series(self):
-@@ -151,8 +150,7 @@ class TestSemanticTypes(SampleClassifier
-         exp = pd.Series([1, 2, 3, 4],
-                         name='prediction', index=['a', 'b', 'c', 'd'])
-         obs = transformer(exp)
--        obs = pd.read_csv(str(obs), sep='\t', header=0, index_col=0,
--                          squeeze=True)
-+        obs = pd.read_csv(str(obs), sep='\t', header=0, index_col=0).squeeze('columns')
-         pdt.assert_series_equal(obs, exp)
- 
-     def test_pd_series_to_Predictions_format_allow_nans(self):
-@@ -160,8 +158,7 @@ class TestSemanticTypes(SampleClassifier
-         exp = pd.Series([1, np.nan, 3, np.nan],
-                         name='prediction', index=['a', 'b', 'c', 'd'])
-         obs = transformer(exp)
--        obs = pd.read_csv(str(obs), sep='\t', header=0, index_col=0,
--                          squeeze=True)
-+        obs = pd.read_csv(str(obs), sep='\t', header=0, index_col=0).squeeze('columns')
-         pdt.assert_series_equal(obs, exp)
- 
-     def test_Predictions_format_to_pd_series(self):


=====================================
debian/patches/series
=====================================
@@ -1,7 +1,4 @@
 py2to3test.patch
 reduce-precision-in-tests.patch
 fix-autopkgtest.patch
-sklearn-1.2.1.patch
-convert-estimator.patch
 python3.12.patch
-pandas2.0.patch


=====================================
debian/patches/sklearn-1.2.1.patch deleted
=====================================
@@ -1,68 +0,0 @@
-Description: fix get_feature_names deprecation with sklearn 1.2.1
- Since sklearn 1.2.1, autopkgtest are failing due to occurrence of:
- AttributeError: 'DictVectorizer' object has no attribute 'get_feature_names'
- This function is replaced by get_feature_names_out.
-Author: Étienne Mollier <emollier at debian.org>
-Forwarded: https://github.com/qiime2/q2-sample-classifier/issues/227
-Last-Update: 2023-02-02
----
-This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/q2_sample_classifier/tests/test_estimators.py
-+++ b/q2_sample_classifier/tests/test_estimators.py
-@@ -135,7 +135,7 @@ class EstimatorsTests(SampleClassifierTe
-         dv = DictVectorizer()
-         dv.fit(dicts)
-         features = table.ids('observation')
--        self.assertEqual(set(dv.get_feature_names()), set(features))
-+        self.assertEqual(set(dv.get_feature_names_out()), set(features))
-         self.assertEqual(len(dicts), len(table.ids()))
-         for dict_row, (table_row, _, _) in zip(dicts, table.iter()):
-             for feature, count in zip(features, table_row):
---- a/q2_sample_classifier/utilities.py
-+++ b/q2_sample_classifier/utilities.py
-@@ -239,7 +239,7 @@ def _rfecv_feature_selection(feature_dat
-     # Describe top features
-     n_opt = rfecv.named_steps.est.n_features_
-     importance = _extract_important_features(
--        rfecv.named_steps.dv.get_feature_names(),
-+        rfecv.named_steps.dv.get_feature_names_out(),
-         rfecv.named_steps.est.ranking_)
-     importance = sort_importances(importance, ascending=True)[:n_opt]
- 
-@@ -253,9 +253,10 @@ def _extract_rfe_scores(rfecv):
-     # If using fractional step, step = integer of fraction * n_features
-     if rfecv.step < 1:
-         rfecv.step = int(rfecv.step * n_features)
--    # Need to manually calculate x-axis, as rfecv.grid_scores_ are a 1-d array
-+    # Need to manually calculate x-axis, as
-+    # rfecv.cv_results_['mean_test_score'] are a 1-d array
-     x = [n_features - (n * rfecv.step)
--         for n in range(len(rfecv.grid_scores_)-1, -1, -1)]
-+         for n in range(len(rfecv.cv_results_['mean_test_score'])-1, -1, -1)]
-     if x[0] < 1:
-         x[0] = 1
-     return pd.Series(rfecv.cv_results_['mean_test_score'], index=x, name='Accuracy')
-@@ -411,12 +412,12 @@ def _calculate_feature_importances(estim
-     # feature_importances_ or coef_ to report feature importance/weights
-     try:
-         importances = _extract_important_features(
--            estimator.named_steps.dv.get_feature_names(),
-+            estimator.named_steps.dv.get_feature_names_out(),
-             estimator.named_steps.est.feature_importances_)
-     # is there a better way to determine whether estimator has coef_ ?
-     except AttributeError:
-         importances = _extract_important_features(
--            estimator.named_steps.dv.get_feature_names(),
-+            estimator.named_steps.dv.get_feature_names_out(),
-             estimator.named_steps.est.coef_)
-     return importances
- 
-@@ -718,7 +719,7 @@ def _mean_feature_importance(importances
- def _null_feature_importance(table):
-     feature_extractor = DictVectorizer()
-     feature_extractor.fit(table)
--    imp = pd.DataFrame(index=feature_extractor.get_feature_names())
-+    imp = pd.DataFrame(index=feature_extractor.get_feature_names_out())
-     imp.index.name = "feature"
-     imp["importance"] = 1
-     return imp


=====================================
debian/rules
=====================================
@@ -6,6 +6,8 @@ export LC_ALL=C.UTF-8
 include /usr/share/dpkg/default.mk
 VERSION_UPSTREAM=$(shell echo $(DEB_VERSION_UPSTREAM) | sed -e 's/\(20[0-9][0-9]\.[0-9]\+\)\..*/\1/')
 
+export PYBUILD_DISABLE=python3.12
+
 debian/control: debian/control.in
 	echo "# This file is autogenerated from control.in to update versioned dependencies" > $@
 	sed -e"s/@DEB_VERSION_UPSTREAM@/$(VERSION_UPSTREAM)/g" $< >> $@


=====================================
debian/tests/run-unit-test
=====================================
@@ -17,7 +17,9 @@ if [ ! -f /usr/lib/python3/dist-packages/pytest_cov/__init__.py ] ; then
 fi
 
 # Run build-time tests
-for py in $(py3versions -s 2> /dev/null)
-do
-    ${py} -m pytest -v  --cov=${pkg}
-done
+# for py in $(py3versions -s 2> /dev/null)
+# do
+#     ${py} -m pytest -v  --cov=${pkg}
+# done
+#
+python3.11 -m pytest -v  --cov=${pkg}


=====================================
q2_sample_classifier/_version.py
=====================================
@@ -23,9 +23,9 @@ def get_keywords():
     # setup.py/versioneer.py will grep for the variable names, so they must
     # each be defined on a line of their own. _version.py will just call
     # get_keywords().
-    git_refnames = " (tag: 2024.2.0, Release-2024.2)"
-    git_full = "e32969bfe9c0e177ca0d5cfba270216c98bbbd9e"
-    git_date = "2024-02-16 21:57:23 +0000"
+    git_refnames = " (tag: 2024.5.0, Release-2024.5)"
+    git_full = "8fa3c948c14a8ff6668d92fa7cb05364679efc8f"
+    git_date = "2024-05-29 04:18:14 +0000"
     keywords = {"refnames": git_refnames, "full": git_full, "date": git_date}
     return keywords
 


=====================================
q2_sample_classifier/classify.py
=====================================
@@ -83,7 +83,7 @@ def metatable(ctx,
             raise ValueError('Missing samples in metadata: %r' %
                              table_ids.difference(metadata_ids))
         else:
-            metadata = metadata.loc[sample_ids]
+            metadata = metadata.loc[list(sample_ids)]
         if len(sample_ids) < len(table_ids):
             tab = tab.filter(
                 ids_to_keep=sample_ids, axis='sample', inplace=False)


=====================================
q2_sample_classifier/tests/test_actions.py
=====================================
@@ -59,7 +59,7 @@ class NowLetsTestTheActions(SampleClassifierTestPluginBase):
         self.assertEqual(y_train.name, 'bugs')
 
         # test if complete target column is covered
-        y_all = y_train.append(y_test).sort_index()
+        y_all = pd.concat([y_train, y_test]).sort_index()
         y_all.index.name = 'SampleID'
         pdt.assert_series_equal(y_all, self.md._series)
 


=====================================
q2_sample_classifier/tests/test_estimators.py
=====================================
@@ -117,7 +117,7 @@ class EstimatorsTests(SampleClassifierTestPluginBase):
             index_col=0, names=['feature', 'importance'])
         self.exp_pred = pd.read_csv(
             self.get_data_path('predictions.tsv'), sep='\t', header=0,
-            index_col=0, squeeze=True)
+            index_col=0).squeeze('columns')
         index = pd.Index(['A', 'B', 'C', 'D'], name='id')
         self.table_percnorm = qiime2.Artifact.import_data(
             FeatureTable[PercentileNormalized], pd.DataFrame(
@@ -135,7 +135,7 @@ class EstimatorsTests(SampleClassifierTestPluginBase):
         dv = DictVectorizer()
         dv.fit(dicts)
         features = table.ids('observation')
-        self.assertEqual(set(dv.get_feature_names()), set(features))
+        self.assertEqual(set(dv.get_feature_names_out()), set(features))
         self.assertEqual(len(dicts), len(table.ids()))
         for dict_row, (table_row, _, _) in zip(dicts, table.iter()):
             for feature, count in zip(features, table_row):
@@ -398,7 +398,7 @@ class EstimatorsTests(SampleClassifierTestPluginBase):
             parameter_tuning=True, classification=True,
             missing_samples='ignore', base_estimator="DecisionTree")
         self.assertEqual(type(abe.named_steps.est), AdaBoostClassifier)
-        self.assertEqual(type(abe.named_steps.est.base_estimator),
+        self.assertEqual(type(abe.named_steps.est.estimator),
                          DecisionTreeClassifier)
 
     def test_train_adaboost_extra_trees(self):
@@ -408,7 +408,7 @@ class EstimatorsTests(SampleClassifierTestPluginBase):
             parameter_tuning=True, classification=True,
             missing_samples='ignore', base_estimator="ExtraTrees")
         self.assertEqual(type(abe.named_steps.est), AdaBoostClassifier)
-        self.assertEqual(type(abe.named_steps.est.base_estimator),
+        self.assertEqual(type(abe.named_steps.est.estimator),
                          ExtraTreeClassifier)
 
     # test some invalid inputs/edge cases
@@ -504,7 +504,7 @@ class EstimatorsTests(SampleClassifierTestPluginBase):
             ls_pred_classes = prob.columns.tolist()
             ls_correct_range = [col for col in ls_pred_classes if
                                 prob[col].between(
-                                    0, 1, inclusive=True).all()]
+                                    0, 1, inclusive="both").all()]
             self.assertEqual(len(ls_correct_range), prob.shape[1],
                              msg='Predicted probabilities of class {}'
                              'are not in range [0,1]'.format(


=====================================
q2_sample_classifier/tests/test_types_formats_transformers.py
=====================================
@@ -85,7 +85,7 @@ class TestSemanticTypes(SampleClassifierTestPluginBase):
                         name='outlier', index=exp_index)
         obs = transformer(exp)
         obs = pd.read_csv(str(obs), sep='\t', header=0, index_col=0,
-                          squeeze=True)
+                          ).squeeze('columns')
         self.assertEqual(sorted(exp), sorted(obs))
 
     def test_boolean_format_to_pd_series(self):
@@ -152,7 +152,7 @@ class TestSemanticTypes(SampleClassifierTestPluginBase):
                         name='prediction', index=['a', 'b', 'c', 'd'])
         obs = transformer(exp)
         obs = pd.read_csv(str(obs), sep='\t', header=0, index_col=0,
-                          squeeze=True)
+                          ).squeeze('columns')
         pdt.assert_series_equal(obs, exp)
 
     def test_pd_series_to_Predictions_format_allow_nans(self):
@@ -161,7 +161,7 @@ class TestSemanticTypes(SampleClassifierTestPluginBase):
                         name='prediction', index=['a', 'b', 'c', 'd'])
         obs = transformer(exp)
         obs = pd.read_csv(str(obs), sep='\t', header=0, index_col=0,
-                          squeeze=True)
+                          ).squeeze('columns')
         pdt.assert_series_equal(obs, exp)
 
     def test_Predictions_format_to_pd_series(self):


=====================================
q2_sample_classifier/utilities.py
=====================================
@@ -239,7 +239,7 @@ def _rfecv_feature_selection(feature_data, targets, estimator,
     # Describe top features
     n_opt = rfecv.named_steps.est.n_features_
     importance = _extract_important_features(
-        rfecv.named_steps.dv.get_feature_names(),
+        rfecv.named_steps.dv.get_feature_names_out(),
         rfecv.named_steps.est.ranking_)
     importance = sort_importances(importance, ascending=True)[:n_opt]
 
@@ -249,16 +249,17 @@ def _rfecv_feature_selection(feature_data, targets, estimator,
 
 
 def _extract_rfe_scores(rfecv):
+    grid_scores_ = rfecv.cv_results_['mean_test_score']
     n_features = len(rfecv.ranking_)
     # If using fractional step, step = integer of fraction * n_features
     if rfecv.step < 1:
         rfecv.step = int(rfecv.step * n_features)
-    # Need to manually calculate x-axis, as rfecv.grid_scores_ are a 1-d array
+    # Need to manually calculate x-axis, grid_scores_ is a 1-d array
     x = [n_features - (n * rfecv.step)
-         for n in range(len(rfecv.grid_scores_)-1, -1, -1)]
+         for n in range(len(grid_scores_)-1, -1, -1)]
     if x[0] < 1:
         x[0] = 1
-    return pd.Series(rfecv.grid_scores_, index=x, name='Accuracy')
+    return pd.Series(grid_scores_, index=x, name='Accuracy')
 
 
 def nested_cross_validation(table, metadata, cv, random_state, n_jobs,
@@ -411,12 +412,12 @@ def _calculate_feature_importances(estimator):
     # feature_importances_ or coef_ to report feature importance/weights
     try:
         importances = _extract_important_features(
-            estimator.named_steps.dv.get_feature_names(),
+            estimator.named_steps.dv.get_feature_names_out(),
             estimator.named_steps.est.feature_importances_)
     # is there a better way to determine whether estimator has coef_ ?
     except AttributeError:
         importances = _extract_important_features(
-            estimator.named_steps.dv.get_feature_names(),
+            estimator.named_steps.dv.get_feature_names_out(),
             estimator.named_steps.est.coef_)
     return importances
 
@@ -718,7 +719,7 @@ def _mean_feature_importance(importances):
 def _null_feature_importance(table):
     feature_extractor = DictVectorizer()
     feature_extractor.fit(table)
-    imp = pd.DataFrame(index=feature_extractor.get_feature_names())
+    imp = pd.DataFrame(index=feature_extractor.get_feature_names_out())
     imp.index.name = "feature"
     imp["importance"] = 1
     return imp
@@ -827,8 +828,9 @@ def _train_adaboost_base_estimator(table, metadata, column, base_estimator,
 
     return Pipeline(
         [('dv', estimator.named_steps.dv),
-         ('est', adaboost_estimator(estimator.named_steps.est,
-                                    n_estimators, random_state=random_state))])
+         ('est', adaboost_estimator(estimator=estimator.named_steps.est,
+                                    n_estimators=n_estimators,
+                                    random_state=random_state))])
 
 
 def _disable_feature_selection(estimator, optimize_feature_selection):


=====================================
q2_sample_classifier/visuals.py
=====================================
@@ -167,9 +167,9 @@ def _plot_confusion_matrix(y_test, y_pred, classes, normalize, palette,
     predictions.loc["Overall Accuracy"] = ""
     predictions.loc["Baseline Accuracy"] = ""
     predictions.loc["Accuracy Ratio"] = ""
-    predictions.loc["Overall Accuracy"]["Overall Accuracy"] = accuracy
-    predictions.loc["Baseline Accuracy"]["Overall Accuracy"] = basline_accuracy
-    predictions.loc["Accuracy Ratio"]["Overall Accuracy"] = accuracy_ratio
+    predictions.loc["Overall Accuracy", "Overall Accuracy"] = accuracy
+    predictions.loc["Baseline Accuracy", "Overall Accuracy"] = basline_accuracy
+    predictions.loc["Accuracy Ratio", "Overall Accuracy"] = accuracy_ratio
 
     return predictions, confusion
 



View it on GitLab: https://salsa.debian.org/med-team/q2-sample-classifier/-/compare/11dcb446806e7c9a4050806410a2dcad3e9e2b81...fb5206a7488d6ddbdfb9ff05252f9f1c2d2a688d

-- 
This project does not include diff previews in email notifications.
View it on GitLab: https://salsa.debian.org/med-team/q2-sample-classifier/-/compare/11dcb446806e7c9a4050806410a2dcad3e9e2b81...fb5206a7488d6ddbdfb9ff05252f9f1c2d2a688d
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20240625/ca472e48/attachment-0001.htm>


More information about the debian-med-commit mailing list