def test_filter_table_samples(self):
        """_filter_table_samples removes small samples from OTU table
        """

        otu_table = """# QIIME v%s OTU table\n#OTU ID\tsample1\tsample2\tsample3
0\t0\t2\t0
1\t1\t0\t0
2\t1\t1\t1""" % __version__
        otu_table = otu_table.split('\n')
        result = _filter_table_samples(otu_table, 2)
        self.assertEqual(result, "# QIIME v%s OTU table\n#OTU ID\tsample1\tsample2\n0\t0\t2\n1\t1\t0\n2\t1\t1" % __version__)
        result = _filter_table_samples(otu_table, 1)
        self.assertEqual(result, '\n'.join(otu_table))
        result = _filter_table_samples(otu_table, 3)
        self.assertEqual(result, "# QIIME v%s OTU table\n#OTU ID\tsample2\n0\t2\n1\t0\n2\t1" % __version__)
예제 #2
0
    def test_filter_table_samples(self):
        """_filter_table_samples removes small samples from OTU table
        """

        otu_table = """#Full OTU Counts
#OTU ID\tsample1\tsample2\tsample3
0\t0\t2\t0
1\t1\t0\t0
2\t1\t1\t1""".split('\n')
        result = _filter_table_samples(otu_table, 2)
        self.assertEqual(result, "#Full OTU Counts\n#OTU ID\tsample1\tsample2\n0\t0\t2\n1\t1\t0\n2\t1\t1")
        result = _filter_table_samples(otu_table, 1)
        self.assertEqual(result, '\n'.join(otu_table))
        result = _filter_table_samples(otu_table, 3)
        self.assertEqual(result, "#Full OTU Counts\n#OTU ID\tsample2\n0\t2\n1\t0\n2\t1")
예제 #3
0
    def test_filter_table_samples(self):
        """_filter_table_samples removes small samples from OTU table
        """

        otu_table = """#Full OTU Counts
#OTU ID\tsample1\tsample2\tsample3
0\t0\t2\t0
1\t1\t0\t0
2\t1\t1\t1""".split('\n')
        result = _filter_table_samples(otu_table, 2)
        self.assertEqual(
            result,
            "#Full OTU Counts\n#OTU ID\tsample1\tsample2\n0\t0\t2\n1\t1\t0\n2\t1\t1"
        )
        result = _filter_table_samples(otu_table, 1)
        self.assertEqual(result, '\n'.join(otu_table))
        result = _filter_table_samples(otu_table, 3)
        self.assertEqual(
            result, "#Full OTU Counts\n#OTU ID\tsample2\n0\t2\n1\t0\n2\t1")
예제 #4
0
def main():
    option_parser, opts, args = parse_command_line_parameters(**script_info)
    
    # process options (was originally process_options())
    filepath=opts.otu_table_fp
    filename=filepath.strip().split('/')[-1]
    filename=filename.split('.')[0]

    params={}
    params['otu_file'] = opts.otu_table_fp
    params['min_otu_count'] = opts.min_count
    params['min_otu_samples'] = opts.min_samples
    params['seqs_per_sample']=opts.seqs_per_sample
    seqs_per_sample=params['seqs_per_sample']
    otu_file=open(params['otu_file'], 'U')

    filtered_table_path=open(opts.output_otu_table_fp, 'w')
                                
    if opts.include_taxonomy:
        included_taxa = set(map(strip, split_tax(opts.include_taxonomy)))
    else:
        included_taxa = set()

    if opts.exclude_taxonomy:
        excluded_taxa = set(map(strip, split_tax(opts.exclude_taxonomy)))
    else:
        excluded_taxa=set()

    params['included_taxa']=included_taxa
    params['excluded_taxa']=excluded_taxa

    seq_sample_output=[]
    if seqs_per_sample and params['min_otu_count']==1 and \
            params['min_otu_samples']==2 and opts.include_taxonomy=='' and \
            opts.exclude_taxonomy=='':
        otu_file2=otu_file.readlines()
        filtered_table = _filter_table_samples(otu_file2,seqs_per_sample)
        filtered_table_path.write(filtered_table)
        filtered_table_path.close()
    elif seqs_per_sample and (params['min_otu_count']<>1 or \
            params['min_otu_samples']<>2 or opts.include_taxonomy<>'' or \
            opts.exclude_taxonomy<>''):
        raise ValueError, 'You cannot supply seqs per sample with other filtering options. These features are mutually exclusive.'
    else:
        filter_table(params,filtered_table_path,otu_file)