Mercurial > repos > immport-devteam > run_flock
diff run_flock/runFlockMFI.py @ 2:b6b4d08b6858 draft default tip
"planemo upload for repository https://github.com/ImmPortDB/immport-galaxy-tools/tree/master/flowtools/run_flock commit 7e94637827c3637229f3b568fa7f9d38428d6607"
author | azomics |
---|---|
date | Fri, 17 Jul 2020 09:06:54 -0400 |
parents | 81f9b44f5242 |
children |
line wrap: on
line diff
--- a/run_flock/runFlockMFI.py Mon Feb 27 13:30:23 2017 -0500 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,125 +0,0 @@ -#!/usr/bin/env python -###################################################################### -# Copyright (c) 2016 Northrop Grumman. -# All rights reserved. -###################################################################### -# version 2 -from __future__ import print_function - -import sys -import os -from argparse import ArgumentParser -import pandas as pd -from scipy.stats import gmean - - -def run_FLOCK(input_file, method, bins, density, output_file, mfi_file, - mfi_calc, profile, tool_directory): - run_command = tool_directory + "/bin/" + method + " " + input_file - if bins: - run_command += " " + bins - if density: - run_command += " " + density - - os.system(run_command) - - move_command = "mv flock_results.txt " + output_file - os.system(move_command) - - # Here add some way to calculate the count and tack it on to profile file. - flockdf = pd.read_table(output_file) - if mfi_calc == "mfi": - MFIs = flockdf.groupby('Population').mean().round(decimals=2) - elif mfi_calc == "gmfi": - MFIs = flockdf.groupby('Population').agg(lambda x: gmean(list(x))).round(decimals=2) - else: - MFIs = flockdf.groupby('Population').median().round(decimals=2) - - with open(mfi_file, "w") as outf: - MFIs.to_csv(outf, sep="\t", float_format='%.0f') - - (events, columns) = flockdf.shape - fstats = {} - fstats['population'] = flockdf.iloc[:, -1:].iloc[:, 0] - fstats['population_freq'] = fstats['population'].value_counts() - fstats['population_freq_sort'] = fstats['population_freq'].sort_index() - fstats['population_per'] = (fstats['population'].value_counts(normalize=True) * 100).round(decimals=2) - fstats['population_per_sort'] = fstats['population_per'].sort_index() - fstats['population_all'] = pd.concat([fstats['population_freq_sort'], fstats['population_per_sort']], axis=1) - fstats['population_all'].columns = ['Count', 'Percentage'] - fstats['population_all']['Population_ID'] = fstats['population_all'].index - - flock_profile = pd.read_table('profile.txt') - profile_pop = flock_profile.merge(fstats['population_all'], on='Population_ID') - profile_pop.to_csv(profile, sep="\t", float_format='%.2f', index=False) - -# get_profile = "mv profile.txt " + profile -# os.system(get_profile) - return - - -if __name__ == "__main__": - parser = ArgumentParser( - prog="runFlockMFI", - description="Run Flock on text file and generate centroid file") - - parser.add_argument( - '-i', - dest="input_file", - required=True, - help="File location for the FCS file.") - - parser.add_argument( - '-m', - dest="method", - required=True, - help="Run flock1 or flock2.") - - parser.add_argument( - '-M', - dest="mfi_calc", - required=True, - help="what to calculate for centroids.") - - parser.add_argument( - '-b', - dest="bins", - required=False, - help="Number of Bins.") - - parser.add_argument( - '-d', - dest="density", - required=False, - help="Density.") - - parser.add_argument( - '-o', - dest="output_file", - required=True, - help="File location for the output file.") - - parser.add_argument( - '-t', - dest="tool_directory", - required=True, - help="File location for the output file.") - - parser.add_argument( - '-c', - dest="centroids", - required=True, - help="File location for the output centroid file.") - - parser.add_argument( - '-p', - dest="profile", - required=True, - help="File location for the output profile file.") - - args = parser.parse_args() - run_FLOCK(args.input_file, args.method, args.bins, - args.density, args.output_file, args.centroids, args.mfi_calc, - args.profile, args.tool_directory) - - sys.exit(0)