Mercurial > repos > bgruening > nn_classifier
diff nn_classifier.xml @ 0:d638aa11a4f0 draft
planemo upload for repository https://github.com/bgruening/galaxytools/tools/sklearn commit 0e582cf1f3134c777cce3aa57d71b80ed95e6ba9
author | bgruening |
---|---|
date | Fri, 16 Feb 2018 09:17:36 -0500 |
parents | |
children | 478034e9826b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nn_classifier.xml Fri Feb 16 09:17:36 2018 -0500 @@ -0,0 +1,153 @@ +<tool id="nn_classifier" name="Nearest Neighbors Classification" version="@VERSION@"> + <description></description> + <macros> + <import>main_macros.xml</import> + </macros> + <expand macro="python_requirements"/> + <expand macro="macro_stdio"/> + <version_command>echo "@VERSION@"</version_command> + <command><![CDATA[ + python "$nnc_script" '$inputs' +]]> + </command> + <configfiles> + <inputs name="inputs"/> + <configfile name="nnc_script"> +<![CDATA[ +import sys +import json +import numpy as np +import sklearn.neighbors +import pandas +import pickle + +input_json_path = sys.argv[1] +params = json.load(open(input_json_path, "r")) + + +#if $selected_tasks.selected_task == "load": + +classifier_object = pickle.load(open("$infile_model", 'r')) + +data = pandas.read_csv("$selected_tasks.infile_data", sep='\t', header=0, index_col=None, parse_dates=True, encoding=None, tupleize_cols=False ) +prediction = classifier_object.predict(data) +prediction_df = pandas.DataFrame(prediction) +res = pandas.concat([data, prediction_df], axis=1) +res.to_csv(path_or_buf = "$outfile_predict", sep="\t", index=False) + +#else: + +data_train = pandas.read_csv("$selected_tasks.infile_train", sep='\t', header=0, index_col=None, parse_dates=True, encoding=None, tupleize_cols=False ) + +data = data_train.ix[:,0:len(data_train.columns)-1] +labels = np.array(data_train[data_train.columns[len(data_train.columns)-1]]) + +selected_algorithm = params["selected_tasks"]["selected_algorithms"]["selected_algorithm"] + +if selected_algorithm == "nneighbors": + classifier = params["selected_tasks"]["selected_algorithms"]["sampling_methods"]["sampling_method"] + sys.stdout.write(classifier) + options = params["selected_tasks"]["selected_algorithms"]["sampling_methods"]["options"] + sys.stdout.write(str(options)) +elif selected_algorithm == "ncentroid": + options = params["selected_tasks"]["selected_algorithms"]["options"] + classifier = "NearestCentroid" + +my_class = getattr(sklearn.neighbors, classifier) +classifier_object = my_class(**options) +classifier_object.fit(data,labels) + +pickle.dump(classifier_object,open("$outfile_fit", 'w+')) + +#end if + +]]> + </configfile> + </configfiles> + <inputs> + <expand macro="train_loadConditional" model="zip"><!--Todo: add sparse to targets--> + <param name="selected_algorithm" type="select" label="Classifier type"> + <option value="nneighbors">Nearest Neighbors</option> + <option value="ncentroid">Nearest Centroid</option> + </param> + <when value="nneighbors"> + <conditional name="sampling_methods"> + <param name="sampling_method" type="select" label="Neighbor selection method"> + <option value="KNeighborsClassifier" selected="true">K-nearest neighbors</option> + <option value="RadiusNeighborsClassifier">Radius-based</option> + </param> + <when value="KNeighborsClassifier"> + <expand macro="nn_advanced_options"> + <param argument="n_neighbors" type="integer" optional="true" value="5" label="Number of neighbors" help=" "/> + </expand> + </when> + <when value="RadiusNeighborsClassifier"> + <expand macro="nn_advanced_options"> + <param argument="radius" type="float" optional="true" value="1.0" label="Radius" + help="Range of parameter space to use by default for :meth ''radius_neighbors'' queries."/> + </expand> + </when> + </conditional> + </when> + <when value="ncentroid"> + <section name="options" title="Advanced Options" expanded="False"> + <param argument="metric" type="text" optional="true" value="euclidean" label="Metric" + help="The metric to use when calculating distance between instances in a feature array."/> + <param argument="shrink_threshold" type="float" optional="true" value="" label="Shrink threshold" + help="Floating point number for shrinking centroids to remove features."/> + </section> + </when> + </expand> + </inputs> + + <expand macro="output"/> + + <tests> + <test> + <param name="infile_train" value="train_set.tabular" ftype="tabular"/> + <param name="selected_task" value="train"/> + <param name="selected_algorithm" value="nneighbors"/> + <param name="sampling_method" value="KNeighborsClassifier" /> + <param name="algorithm" value="brute" /> + <output name="outfile_fit" file="nn_model01.txt"/> + </test> + <test> + <param name="infile_train" value="train_set.tabular" ftype="tabular"/> + <param name="selected_task" value="train"/> + <param name="selected_algorithm" value=""/> + <param name="selected_algorithm" value="nneighbors"/> + <param name="sampling_method" value="RadiusNeighborsClassifier" /> + <output name="outfile_fit" file="nn_model02.txt"/> + </test> + <test> + <param name="infile_train" value="train_set.tabular" ftype="tabular"/> + <param name="selected_task" value="train"/> + <param name="selected_algorithm" value="ncentroid"/> + <output name="outfile_fit" file="nn_model03.txt"/> + </test> + <test> + <param name="infile_model" value="nn_model01.txt" ftype="txt"/> + <param name="infile_data" value="test_set.tabular" ftype="tabular"/> + <param name="selected_task" value="load"/> + <output name="outfile_predict" file="nn_prediction_result01.tabular"/> + </test> + <test> + <param name="infile_model" value="nn_model02.txt" ftype="txt"/> + <param name="infile_data" value="test_set.tabular" ftype="tabular"/> + <param name="selected_task" value="load"/> + <output name="outfile_predict" file="nn_prediction_result02.tabular"/> + </test> + <test> + <param name="infile_model" value="nn_model03.txt" ftype="txt"/> + <param name="infile_data" value="test_set.tabular" ftype="tabular"/> + <param name="selected_task" value="load"/> + <output name="outfile_predict" file="nn_prediction_result03.tabular"/> + </test> + </tests> + <help><![CDATA[ +**What it does** +This module implements the k-nearest neighbors classification algorithms. +For more information check http://scikit-learn.org/stable/modules/neighbors.html + ]]></help> + <expand macro="sklearn_citation"/> +</tool>