view txtdiagnosis.py @ 1:b94872d65050 draft default tip

"planemo upload for repository https://github.com/ImmPortDB/immport-galaxy-tools/tree/master/flowtools/txt_diagnosis commit 41bbf946c933eb16a0a7d0eac7928e7bf7f465ca"
author azomics
date Thu, 16 Jul 2020 07:35:26 -0400
parents
children
line wrap: on
line source

#!/usr/bin/env python
######################################################################
#                  Copyright (c) 2016 Northrop Grumman.
#                          All rights reserved.
######################################################################
import pandas as pd
from argparse import ArgumentParser
import sys


def is_number(s):
    try:
        float(s)
        return True
    except ValueError:
        return False


def error_report(input_file, fname, output_file):
    errors = 0
    df = pd.read_table(input_file)
    with open(output_file, "w") as outf:
        for cols in df.columns.values:
            if df[cols].count() != len(df[cols]):
                with open(input_file, "r") as checkfile:
                    fl = checkfile.readline()
                    count_lines = 1
                    for checklines in checkfile:
                        to_check = checklines.strip().split("\t")
                        count_lines += 1
                        for item in to_check:
                            if not is_number(item):
                                errors += 1
                                outf.write(" ".join(["WARNING: line", str(count_lines), "in", fname, "contains non-numeric results\n"]))
        if errors == 0:
            outf.write("No errors in the file.\n")
    return


if __name__ == "__main__":
    parser = ArgumentParser(
             prog="txtDiagnosis",
             description="Reports potential errors in text-converted FCS files")

    parser.add_argument(
            '-i',
            dest="input_file",
            required=True,
            help="File location for the text file.")

    parser.add_argument(
            '-n',
            dest="filename",
            required=True,
            help="Filename location for the text file.")

    parser.add_argument(
            '-o',
            dest="output_file",
            required=True,
            help="Name of the output file.")

    args = parser.parse_args()

    error_report(args.input_file, args.filename, args.output_file)