Skip to content

Commit

Permalink
flake8 passing
Browse files Browse the repository at this point in the history
  • Loading branch information
cameronmartino committed Jan 9, 2020
1 parent 8cea719 commit f5f18bc
Show file tree
Hide file tree
Showing 7 changed files with 55 additions and 51 deletions.
2 changes: 1 addition & 1 deletion deicode/q2/plugin_setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
from deicode.rpca import rpca, auto_rpca
from deicode._rpca_defaults import (DESC_RANK, DESC_MSC, DESC_MFC,
DESC_ITERATIONS, DESC_MFF)
from qiime2.plugin import (Properties, Int, Float, Choices, Str)
from qiime2.plugin import (Properties, Int, Float)
from q2_types.feature_table import FeatureTable, Frequency
from q2_types.distance_matrix import DistanceMatrix
from q2_types.ordination import PCoAResults
Expand Down
12 changes: 12 additions & 0 deletions deicode/q2/tests/test_method.py
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,18 @@ def test_rpca(self):
self.assertFalse(np.isnan(ord_test.features).any(axis=None))
self.assertFalse(np.isnan(ord_test.samples).any(axis=None))

def test_auto_rpca(self):
"""Tests the basic validity of the actual auto_rpca()."""
ord_test, dist_test = auto_rpca(table=self.test_table)
# Validate types of the RPCA outputs
self.assertIsInstance(ord_test, OrdinationResults)
self.assertIsInstance(dist_test, DistanceMatrix)
# Ensure that no NaNs are in the OrdinationResults
# NOTE that we have to use the DataFrame .any() functions instead of
# python's built-in any() functions -- see #29 for details on this
self.assertFalse(np.isnan(ord_test.features).any(axis=None))
self.assertFalse(np.isnan(ord_test.samples).any(axis=None))


class Test_qiime2_rpca(unittest.TestCase):

Expand Down
17 changes: 9 additions & 8 deletions deicode/rpca.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ def frequency_filter(val, id_, md):
# get new n-comp when applicable
n_components = opt.s.shape[0]
# get PC column labels for the skbio OrdinationResults
rename_cols = ['PC' + str(i+1) for i in range(n_components)]
rename_cols = ['PC' + str(i + 1) for i in range(n_components)]
# get completed matrix for centering
X = opt.sample_weights @ opt.s @ opt.feature_weights.T
# center again around zero after completion
Expand Down Expand Up @@ -106,20 +106,21 @@ def frequency_filter(val, id_, md):

return ord_res, dist_res


def auto_rpca(table: biom.Table,
min_sample_count: int = DEFAULT_MSC,
min_feature_count: int = DEFAULT_MFC,
min_feature_frequency: float = DEFAULT_MFF,
max_iterations: int = DEFAULT_ITERATIONS) -> (
skbio.OrdinationResults,
skbio.DistanceMatrix):
skbio.OrdinationResults,
skbio.DistanceMatrix):
"""Runs RPCA but with auto estimation of the
rank peramater.
"""
ord_res, dist_res = rpca(table,
n_components = 'auto',
min_sample_count = min_sample_count,
min_feature_count = min_feature_count,
min_feature_frequency = min_feature_frequency,
max_iterations = max_iterations)
n_components='auto',
min_sample_count=min_sample_count,
min_feature_count=min_feature_count,
min_feature_frequency=min_feature_frequency,
max_iterations=max_iterations)
return ord_res, dist_res
66 changes: 31 additions & 35 deletions deicode/scripts/_standalone_rpca.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import os
import click
from typing import Union
from biom import load_table
from deicode.rpca import rpca as _rpca
from deicode.rpca import auto_rpca as _auto_rpca
Expand All @@ -14,38 +13,34 @@
def deicode():
pass


@deicode.command('rpca')
@click.option('--in-biom',
help='Input table in biom format.',
required=True)
@click.option('--output-dir',
help='Location of output files.',
required=True)
@click.option(
'--n_components',
default=DEFAULT_RANK,
show_default=True,
help=DESC_RANK)
@click.option(
'--min-sample-count',
default=DEFAULT_MSC,
show_default=True,
help=DESC_MSC)
@click.option(
'--min-feature-count',
default=DEFAULT_MFC,
show_default=True,
help=DESC_MFC)
@click.option(
'--min-feature-frequency',
default=DEFAULT_MFF,
show_default=True,
help=DESC_MFF)
@click.option(
'--max_iterations',
default=DEFAULT_ITERATIONS,
show_default=True,
help=DESC_ITERATIONS)
@click.option('--n_components',
default=DEFAULT_RANK,
show_default=True,
help=DESC_RANK)
@click.option('--min-sample-count',
default=DEFAULT_MSC,
show_default=True,
help=DESC_MSC)
@click.option('--min-feature-count',
default=DEFAULT_MFC,
show_default=True,
help=DESC_MFC)
@click.option('--min-feature-frequency',
default=DEFAULT_MFF,
show_default=True,
help=DESC_MFF)
@click.option('--max_iterations',
default=DEFAULT_ITERATIONS,
show_default=True,
help=DESC_ITERATIONS)
def rpca(in_biom: str,
output_dir: str,
n_components: int,
Expand All @@ -59,11 +54,11 @@ def rpca(in_biom: str,
table = load_table(in_biom)
# run the RPCA wrapper
ord_res, dist_res = _rpca(table,
n_components,
min_sample_count,
min_feature_count,
min_feature_frequency,
max_iterations)
n_components,
min_sample_count,
min_feature_count,
min_feature_frequency,
max_iterations)

# If it doesn't already exist, create the output directory.
# Note that there is technically a race condition here: it's ostensibly
Expand All @@ -81,6 +76,7 @@ def rpca(in_biom: str,
ord_res.write(os.path.join(output_dir, 'ordination.txt'))
dist_res.write(os.path.join(output_dir, 'distance-matrix.tsv'))


@deicode.command('auto-rpca')
@click.option('--in-biom',
help='Input table in biom format.',
Expand Down Expand Up @@ -121,10 +117,10 @@ def auto_rpca(in_biom: str,
table = load_table(in_biom)
# run the RPCA wrapper
ord_res, dist_res = _auto_rpca(table,
min_sample_count,
min_feature_count,
min_feature_frequency,
max_iterations)
min_sample_count,
min_feature_count,
min_feature_frequency,
max_iterations)

# If it doesn't already exist, create the output directory.
# Note that there is technically a race condition here: it's ostensibly
Expand Down
4 changes: 2 additions & 2 deletions deicode/scripts/tests/test_standalone_rpca.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@ def test_standalone_rpca_rank_est(self):
out_ = os_path_sep.join(in_.split(os_path_sep)[:-1])
runner = CliRunner()
result = runner.invoke(sdc.commands['auto-rpca'],
['--in-biom', in_,
'--output-dir', out_])
['--in-biom', in_,
'--output-dir', out_])
# Read the results
dist_res = pd.read_csv(get_data_path('distance-matrix.tsv'), sep='\t',
index_col=0)
Expand Down
4 changes: 0 additions & 4 deletions deicode/testing.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,3 @@
import numpy as np
from scipy.stats import norm
from skbio.stats.composition import closure
from numpy.random import poisson, lognormal, normal
from pandas.testing import assert_series_equal


Expand Down
1 change: 0 additions & 1 deletion deicode/tests/test_optspace.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
OptSpace,
svd_sort,
rank_estimate)
from deicode.preprocessing import rclr
import numpy as np
from numpy.linalg import norm
import unittest
Expand Down

0 comments on commit f5f18bc

Please sign in to comment.