コード例 #1
0
ファイル: setting.py プロジェクト: YoderLab/MMAP
    def create_setting_from_file(cls, args):
        """
        TODO: switch between assembler(genovo/xgenovo)+glimmer+blast and MINE

        ignore metasim for now
        do we need  assembler(genovo/xgenovo)+glimmer+blast+MINE?
        """
#         print type(args.control_file), dir(args.control_file)
#         print args.control_file.closed, args.control_file.name
        try:

            if args.control_file is "control":
                print "Use control file at ./control"
#                 args.control_file = "control"
            control_file = os.path.abspath(args.control_file)

            path_utils.check_file(control_file)
            all_pars = parse_control_file2(control_file)

            if args.sub_command == "process":
                print "Subcommand: process"
                infile = os.path.abspath(args.infile)
                wdir = os.path.dirname(infile)

                path_utils.check_file(infile)
                path_utils.check_directory(wdir)
                setting = cls(wdir=wdir)

                if "genovo_pdir" in all_pars and "xgenovo_pdir" in all_pars:
                    raise NameError("Error!! both genovo_pdir and xgenovo_pdir exist in the control file.")
                if "genovo_pdir" in all_pars:
                    assembler_pdir_full = os.path.abspath(os.path.expanduser(all_pars["genovo_pdir"]))
                    assembler_prog = "genovo"
                elif "xgenovo_pdir" in all_pars:
                    assembler_pdir_full = os.path.abspath(os.path.expanduser(all_pars["xgenovo_pdir"]))
                    assembler_prog = "xgenovo"
                else:
                    raise NameError("Error! No assembler specified! genovo_pdir or xgenovo_pdir is required")

                glimmer_pdir_full = os.path.abspath(os.path.expanduser(all_pars["glimmer_pdir"]))
                blast_pdir_full = os.path.abspath(os.path.expanduser(all_pars["blast_pdir"]))
                blast_db_full = os.path.abspath(os.path.expanduser(all_pars["blast_db"]))

                path_utils.check_directory(assembler_pdir_full)
                path_utils.check_directory(glimmer_pdir_full)
                path_utils.check_directory(blast_pdir_full)
    #                 path_utils.check_directory(blast_db_full)

                setting.add_all(
                    assembler_infile=infile,
                    assembler_prog=assembler_prog,
                    assembler_pdir=assembler_pdir_full,
                    glimmer_pdir=glimmer_pdir_full,
                    blast_pdir=blast_pdir_full,
                    blast_db=blast_db_full
                )
                setting.check_parameters_program(assembler_prog)
                setting.check_parameters_program("glimmer")
                setting.check_parameters_program("blast")

                setting._set_master_file_tag()

            elif args.sub_command == "summary":
                print "Subcommand: summary "
                csv_dir = os.path.abspath(args.csv_dir)  # wdir
                path_utils.check_directory(csv_dir)
                wdir = csv_dir

                setting = cls(wdir=wdir, run_mine=True)
                mine_pdir_full = os.path.abspath(os.path.expanduser(all_pars["mine_pdir"]))
#                 infile = path_utils.check_wdir_prefix(all_pars["wdir"], )

                infile = setting.generate_default_outfile_name(args.mine_infile, ".csv")
                infile = os.path.abspath(infile)  # #FIXME, should be able to do it better

                csv_list = []
                for name in glob.glob(wdir + '/*.csv'):
                    if name.find(args.mine_infile) > 0:
                        continue
                    if name.find("Results.csv") > 0 :
                        continue
                    if name.find("tmp.csv") > 0 :
                        continue
                    print "Found CSV file: ", name
                    csv_list.append(name)

                print "Total: %d CSV files in %s.\nPlease remove unwanted *.csv file and restart." % (len(csv_list), wdir)

                setting.add_all(
                    mine_pdir=mine_pdir_full,
                    mine_infile=infile,
                    csv_files=csv_list,
                    mine_overwrite=args.mine_overwrite
                )
                setting.check_parameters_program("mine")

        except KeyError as e:
#             raise KeyError("Missing essential setting", e)
            print "ERROR: Missing essential setting %s in control file:%s" % (e, control_file)
            if args.debug > 1:
                raise
            sys.exit(5)

        except IOError as e:
            print e
            if args.debug > 1:
                raise
            sys.exit(6)


#        keys = controlfile.all_arguments.keys()
#        print keys
        for parameter in list_all_optionals:
            if parameter in all_pars.keys():
                if args.debug > 0:
                    print "ADDING: ", parameter, all_pars[parameter]
                setting.add(parameter, all_pars[parameter])


        setting.print_all(args.debug)

        return setting
コード例 #2
0
ファイル: run_component.py プロジェクト: YoderLab/MMAP
 def check_file_exist(self, filename, check_exist):
     warnings.warn("Deprecated method ", DeprecationWarning)
     if check_exist:
         path_utils.check_file(filename)