Skip to content

Commit

Permalink
subset and filter method
Browse files Browse the repository at this point in the history
  • Loading branch information
colinvwood committed Sep 13, 2024
1 parent 17607bd commit aba502e
Show file tree
Hide file tree
Showing 2 changed files with 102 additions and 3 deletions.
58 changes: 55 additions & 3 deletions q2_qsip2/plugin_setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,14 @@

import importlib

from qiime2.plugin import Citations, List, Metadata, Plugin, Str
from qiime2.plugin import Citations, Int, List, Metadata, Plugin, Str
from q2_types.feature_table import FeatureTable, Frequency

from q2_qsip2 import __version__
from q2_qsip2.workflow import standard_workflow, create_qsip_data
from q2_qsip2.types import QSIP2Data, Unfiltered, Filtered, EAF
from q2_qsip2.workflow import (
standard_workflow, create_qsip_data, subset_and_filter
)
from q2_qsip2.visualizers._visualizers import (
plot_weighted_average_densities, plot_sample_curves, plot_density_outliers,
show_comparison_groups
Expand Down Expand Up @@ -78,7 +80,9 @@
outputs=[
('qsip_data', QSIP2Data[Unfiltered])
],
input_descriptions={},
input_descriptions={
'table': 'The qSIP feature table.'
},
parameter_descriptions={
'sample_metadata': 'The sample-level metadata.',
'source_metadata': 'The source-level metadata.',
Expand All @@ -98,6 +102,54 @@
)
)

plugin.methods.register_function(
function=subset_and_filter,
inputs={
'qsip_data': QSIP2Data[Unfiltered]
},
parameters={
'unlabeled_sources': List[Str],
'labeled_sources': List[Str],
'min_unlabeled_sources': Int,
'min_labeled_sources': Int,
'min_unlabeled_fractions': Int,
'min_labeled_fractions': Int
},
outputs=[
('filtered_qsip_data', QSIP2Data[Filtered])
],
input_descriptions={
'qsip_data': 'Your unfiltered qSIP2 data.'
},
parameter_descriptions={
'unlabeled_sources': 'The IDs of the unlabeled sources to retain.',
'labeled_sources': 'The IDs of the labeled sources to retain.',
'min_unlabeled_sources': (
'The minimum number of unlabeled sources a feature must be '
'present in to be retained.'
),
'min_labeled_sources': (
'The minimum number of labeled sources a feature must be present '
'in to be retained.'
),
'min_unlabeled_fractions': (
'The minimum number of fractions a feature must be present in '
'to be considered present in an unlabeled source.'
),
'min_labeled_fractions': (
'The minimum number of fractions a feature must be present in '
'to be considered present in a labeled source.'
)
},
output_descriptions={
'filtered_qsip_data': 'Your subsetted and filtered qSIP2 data.'
},
name='Subset sources and filter features to prepare for comparison.',
description=(
'Placeholder.'
)
)

plugin.visualizers.register_function(
function=plot_weighted_average_densities,
inputs={
Expand Down
47 changes: 47 additions & 0 deletions q2_qsip2/workflow.py
Original file line number Diff line number Diff line change
Expand Up @@ -122,3 +122,50 @@ def create_qsip_data(
)

return R_qsip_obj

def subset_and_filter(
qsip_data: RS4,
unlabeled_sources: list[str],
labeled_sources: list[str],
min_unlabeled_sources: int,
min_labeled_sources: int,
min_unlabeled_fractions: int,
min_labeled_fractions: int
) -> RS4:
'''
Subsets the qsip data object to include only those sources listed in
`unlabeled_sources` and `labeled_sources`, and to include only those
features that pass the minimum prevalence parameters.
Parameters
----------
qsip_data : RS4
The "qsip_data" object.
unlabeled_sources : list[str]
The IDs of the unlabeled sources to retain.
labeled_sources : list[str]
The IDs of the labeled sources to retain.
min_unlabeled_sources : int
The minimum number of unlabeled sources a feature must be present in
to be retained.
min_labeled_sources : int
The minimum number of labeled sources a feature must be present in
to be retained.
min_unlabeled_fractions : int
The minimum number of fractions a feature must be present in
to be considered present in an unlabeled source.
min_labeled_fractions : int
The minimum number of fractions a feature must be present in
to be considered present in a labeled source.
'''
filtered_qsip_data = qsip2.run_feature_filter(
qsip_data,
unlabeled_source_mat_ids=unlabeled_sources,
labeled_source_mat_ids=labeled_sources,
min_unlabeled_sources=min_unlabeled_sources,
min_labeled_sources=min_labeled_sources,
min_unlabeled_fractions=min_unlabeled_fractions,
min_labeled_fractions=min_labeled_fractions
)

return filtered_qsip_data

0 comments on commit aba502e

Please sign in to comment.