stdev = numpy.std(dataLs[i])
                newKey2DataLs[key] += [meanValue, medianValue, stdev]
        sys.stderr.write("Done.\n")
        return PassingData(key2dataLs=newKey2DataLs,
                           header=keyColHeader + newValueColHeader)

    def run(self):

        if self.debug:
            import pdb
            pdb.set_trace()

        returnData = self.traverse()
        newReturnData = self.avgKey2DataLs(returnData.key2dataLs,
                                           no_of_key_columns=len(
                                               self.keyColumnLs),
                                           header=returnData.header)
        self.outputFinalData(self.outputFname,
                             newReturnData.key2dataLs,
                             returnData.delimiter,
                             header=newReturnData.header)


if __name__ == '__main__':
    main_class = ReduceMatrixByAverageColumnsWithSameKey
    po = ProcessOptions(sys.argv,
                        main_class.option_default_dict,
                        error_doc=main_class.__doc__)
    instance = main_class(po.arguments, **po.long_option2value)
    instance.run()