pyDEA.core.utils package¶
Submodules¶
pyDEA.core.utils.dea_utils module¶
This module contains various utility functions and constants.
- 
pyDEA.core.utils.dea_utils.FILE_TYPES¶
- list of tuple of str, str - list of supported input file parameters. 
- 
pyDEA.core.utils.dea_utils.SOLUTION_XLSX_FILE¶
- list of tuple of str, str - list of supported solution file formats (xlsx). 
- 
pyDEA.core.utils.dea_utils.SOLUTION_XLS_FILE¶
- list of tuple of str, str - list of supported solution file formats (xls). - Note - This list does not contain csv format since for solution files we create a folder with all csv files inside. 
- 
pyDEA.core.utils.dea_utils.TEXT_FOR_PANEL¶
- str - text displayed in the label on the data tab before path to input data file. 
- 
pyDEA.core.utils.dea_utils.TEXT_FOR_FILE_LBL¶
- str - text displayed in the label on the solution tab before path to input data file. 
- 
pyDEA.core.utils.dea_utils.ZERO_TOLERANCE¶
- double - is used to check if a value is non-zero. All values greater than ZERO_TOLERANCE are considered to be strictly positive. 
- 
pyDEA.core.utils.dea_utils.VALID_COEFF¶
- int - constant used to indicate valid data entry. 
- 
pyDEA.core.utils.dea_utils.WARNING_COEFF¶
- int - constant used to indicate valid data entry that is zero. 
- 
pyDEA.core.utils.dea_utils.NOT_VALID_COEFF¶
- int - constant used to indicate invalid data entry. 
- 
pyDEA.core.utils.dea_utils.EMPTY_COEFF¶
- int - constant used to indicate empty data entry. 
- 
pyDEA.core.utils.dea_utils.CELL_DESTROY¶
- int - constant used to indicate that cell of a table was destroyed. 
- 
pyDEA.core.utils.dea_utils.CHANGE_CATEGORY_NAME¶
- int - constant used to indicate that name of the category was changed. 
- 
pyDEA.core.utils.dea_utils.INPUT_OBSERVER¶
- int - constant used to indicate the observer for input categories. 
- 
pyDEA.core.utils.dea_utils.OUTPUT_OBSERVER¶
- int - constant used to indicate the observer for output categories. 
- 
pyDEA.core.utils.dea_utils.XPAD_VALUE¶
- int - horizontal padding. 
- 
pyDEA.core.utils.dea_utils.YPAD_VALUE¶
- int - vertical padding. 
- 
pyDEA.core.utils.dea_utils.bg_color¶
- hex - background colour for all widgets. 
- 
pyDEA.core.utils.dea_utils.TMP_FOLDER¶
- str - name of the folder where all pickled files will be stored and then removed. 
- 
class pyDEA.core.utils.dea_utils.ObserverStringVar(*args, **kw)[source]¶
- Bases: - tkinter.StringVar- This class extends StringVar and adds two data structures to it for storing input and output categories. - 
output_categories¶
- list of str - list with output categories 
 - 
input_categories¶
- list of str - list with input categories 
 
- 
- 
pyDEA.core.utils.dea_utils.auto_name_if_needed(params, output_format, new_output_dir='')[source]¶
- Creates an automatic name for solution file based on current parameter values, if OUTPUT_FILE is empty or set to auto. - Parameters: - params (Parameters) – parameters
- output_format (str) – output format of solution file that should be used. Allowed values: xls, xlsx, csv
- new_output_dir (str, optional) – directory where solution must be stored. It should be specified if it is different from current folder. Defaults to empty string.
 - Returns: - automatic name if OUTPUT_FILE is empty or set to auto in parameters. - Return type: - str - Raises: - ValueError– if output_format is not ‘xls’, ‘xlsx’ or ‘csv’.
- 
pyDEA.core.utils.dea_utils.calculate_nb_pages(nb_data_rows, nb_table_rows)[source]¶
- Calculates number of pages given number of data rows and number of rows in the table. - Note - first row is reserved for categories. - Parameters: - nb_data_rows (int) – number of data rows. Warning It must be a positive number. Otherwise the function will return incorrect value. 
- nb_table_rows (int) – number of rows in the table. Warning It must be a positive number. Otherwise the function will return incorrect value. 
 - Returns: - number of pages - Return type: - int - Example - >>> calculate_nb_pages(100, 10) >>> 12 >>> calculate_nb_pages(25, 20) >>> 2 >>> calculate_nb_pages(0, 20) >>> 1 >>> calculate_nb_pages(10, 25): >>> 1 
- nb_data_rows (int) – 
- 
pyDEA.core.utils.dea_utils.calculate_start_row_index(curr_page, nb_table_rows)[source]¶
- Calculates row index of data that will be displayed given current page and number of rows in the table. - Note - The first row of the table is reserved for displaying categories. - Parameters: - curr_page (int) – current page number. Pages start from 1.
- nb_table_rows (int) – number of rows in the table.
 - Returns: - data row index - Return type: - int 
- 
pyDEA.core.utils.dea_utils.center_window(widget, width=None, height=None)[source]¶
- Centres widget in the middle of the screen. - Parameters: - widget (Tk object) – widget that needs to be centred.
- width (int, optional) – width of the widget that should be used. If not specified, widget width is used.
- height (int, optional) – height of the widget that should be used. If not specified, widget width is used.
 
- 
pyDEA.core.utils.dea_utils.change_to_unique_name_if_needed(file_name)[source]¶
- Given a file name, this function checks if there is a file with such a name, and generates a new unique name if the file exists. - Parameters: - file_name (str) – file name - Returns: - if given file does not exist, this file name is returned. If given file exists, the unique incremented file name is returned. - Return type: - str 
- 
pyDEA.core.utils.dea_utils.check_categories(categories_to_ckeck, categories, message='')[source]¶
- Raises ValueError if at least one of the given categories is not present in categories list. - Parameters: - categories_to_ckeck (list of str) – list of categories that must be checked.
- categories (list of str) – list of current categories.
- message (str, optional) – message that must be shown if ValueError is raised.
 - Raises: - ValueError– if at least one of the categories is not present in the list of current categories.- Example - >>> check_categories(['I1', 'I2'], ['I1', 'O1', 'O2']) >>> ValueError >>> check_categories(['I1', 'O2'], ['I1', 'O1', 'O2']) >>> 
- 
pyDEA.core.utils.dea_utils.check_input_and_output_categories(input_data)[source]¶
- Raises ValueError if input or output categories are empty. - Parameters: - input_data (InputData) – objects that stores all input data. - Raises: - ValueError– if input or output categories are empty.
- 
pyDEA.core.utils.dea_utils.clean_up_pickled_files()[source]¶
- Removes mps-files from current folder and p-files from temporary folder. 
- 
pyDEA.core.utils.dea_utils.contraint_is_price_ratio_type(bounds_key)[source]¶
- Checks if given parameter is a tuple with two elements. In the case of price ratio weight restrictions key of bounds dictionary will be a tuple with two elements. - Parameters: - of str (tuple) – tuple with elements. - Returns: - true if given element is a tuple with two elements, false otherwise. - Return type: - bool 
- 
pyDEA.core.utils.dea_utils.create_bounds(constraints, categories)[source]¶
- Creates proper data structures after parsing all constraints. - Parameters: - constraints (list of str) – list of constraints to parse.
- categories (set of str) – set of current categories.
 - Returns: - dict of str to tuple of double, double or dict of tuple of str, str to tuple of double, double: dictionary with parsed values of constraints. - Raises: - ValueError– if some of the constraints cannot be parsed.- Example - >>> categories = set(['I1', 'I2', 'O1', 'O2']) >>> constraints = ['I1 <= 10', 'I1 >= 2', 'O1 >= 3', 'O2 <= 7'] >>> create_bounds(constraints, categories) >>> {'I1': (2, 10), 'O1': (3, None), 'O2': (None, 7)} >>> ratio_bounds = ['I1/I2 <= 10', 'I1/I2 >= 1', 'O2/O1 >= 0.2', 'O1/O2 <= 0.5'] >>> create_bounds(ratio_bounds, categories) >>> {('I1', 'I2'): (1, 10), ('O2', 'O1'): (0.2, None), ('O1', 'O2'): (None, 0.5)} 
- 
pyDEA.core.utils.dea_utils.create_params_str(params)[source]¶
- Creates string from values of ORIENTATION and RETURN_TO_SCALE specified in parameters. - Parameters: - params (Parameters) – parameters. 
- 
pyDEA.core.utils.dea_utils.find_category_name_in_restrictions(val)[source]¶
- Finds category name in the given constraint. - Parameters: - val (str) – string that contains one category name. - Returns: - category name and index. Index is 0 if category name is on the left hand side of the constraint, non-zero if category name is on the right hand side. In the latter case, index correspond to the position of the category name in the constraint. - Return type: - tuple of str, int - Example - >>> find_category_name_in_restrictions('I1 <= 7') >>> ('I1', 0) >>> find_category_name_in_restrictions(' I1 <= 7.8 ') >>> ('I1', 0) >>> find_category_name_in_restrictions(' category name with spaces <= 7.8 ') >>> ('category name with spaces', 0) >>> find_category_name_in_restrictions('7.8 >= I2') >>> ('I2', 7) >>> find_category_name_in_restrictions('7.8 >= I2') >>> ('I2', 13) >>> find_category_name_in_restrictions('I1/O2 >= 0.5') >>> ('I1/O2', 0) - Warning - It is assumed that given constraint is a valid constraint with category name. If invalid value is given, the function will fail or return incorrect value 
- 
pyDEA.core.utils.dea_utils.format_data(data)[source]¶
- Formats floating point number to 6 digits. - Parameters: - data (double) – data that must be formatted - Returns: - formatted data. - Return type: - str - Example - >>> format_data(1.222222222222222) >>> '1.222222' >>> format_data('str') >>> 'str' >>> format_data(0.123456789) >>> '0.123457' >>> format_data('0.05') >>> '0.050000' 
- 
pyDEA.core.utils.dea_utils.get_logger()[source]¶
- Gets a logger with all configuration specified in file ini-file. - Returns: - configured logger - Return type: - logger 
- 
pyDEA.core.utils.dea_utils.get_price_ratio_categories(val)[source]¶
- Parses price ratio categories. - Parameters: - val (str) – string with price ratio categories. - Returns: - tuple with categories in numerator and denominator respectively. - Return type: - tuple of str, str - Example - >>> get_price_ratio_categories('I1/ I2') >>> ('I1', 'I2') >>> get_price_ratio_categories(' I1 / I2 ') >>> ('I1', 'I2') >>> get_price_ratio_categories(' name with spaces / I2') >>> ('name with spaces', 'I2') - Warning - If val does not contain / or has more than one /, the function will fail with assert. 
- 
pyDEA.core.utils.dea_utils.is_efficient(efficiency_score, lambda_variable)[source]¶
- Checks if dmu with given efficiency score and value of lambda variable is efficient. - Parameters: - efficiency_score (double) – efficiency spyDEA.core.
- lambda_variable (double) – value of lambda variable corresponding to DMU under consideration.
 - Returns: - True if DMU is efficient, False otherwise. - Return type: - bool - Example - >>> is_efficient(1, 1) True >>> is_efficient(0.5, 0) False >>> is_efficient(0.9999999, 1) True >>> is_efficient(1.0000001, 1) True 
- 
pyDEA.core.utils.dea_utils.is_valid_coeff(coeff)[source]¶
- Checks if given coefficient is valid. Valid coefficient is positive floating point or integer number. - Parameters: - coeff (double) – data coefficient. - Returns: - 1, if coefficient is valid, 0 if coefficient is zero, -1, if coefficient is invalid. - Return type: - int 
- 
pyDEA.core.utils.dea_utils.on_canvas_resize(canvas)[source]¶
- This function updates scroll region of the canvas. It should be called on canvas resize. - Parameters: - canvas (Canvas) – canvas 
- 
pyDEA.core.utils.dea_utils.parse_constraint(constraint, split_str, new_bounds_lb, new_bounds_ub, categories)[source]¶
- Parses weight restriction constraint. This is internal utility function that is used in create_bounds(). - Parameters: - constraint (str) – constraint that needs to be parsed.
- split_str (str) – ‘>=’ or ‘<=’.
- (dict of tuple of str, str to str or empty (new_bounds_ub) – dictionary): dictionary where parsed constraint will be written. This dictionary will be filled if split_str is ‘>=’.
- (dict of tuple of str, str to str or empty – dictionary): dictionary where parsed constraint will be written. This dictionary will be filled if split_str is ‘<=’.
- categories (set of str) – set of current categories.
 - Returns: - True if split_str was found in constraint, False otherwise. - Return type: - bool - Raises: - ValueError– if constraint cannot be parsed.- Example - >>> new_bounds_lb = dict() >>> new_bounds_ub = dict() >>> s = set(['I1', 'I2', 'O1', 'O2']) >>> constr = 'I1 >= 5' >>> parse_constraint(constr, '>=', new_bounds_lb, new_bounds_ub, s) >>> True >>> new_bounds_lb >>> {'I1': 5} >>> new_bounds_ub >>> {} 
- 
pyDEA.core.utils.dea_utils.parse_price_ratio(elem, value, constraint, categories, bounds)[source]¶
- Parses price ratio constraints and writes result to bounds. This function is internal utility function that is used for parsing weight restrictions in parse_constraint(). - Parameters: - elem (str) – string that describes left hand side of price ratio constraint.
- value (str) – string that describes right hand side of price ratio constraint.
- constraint (str) – string that describes entire constraint.
- categories (set of str) – set of current categories.
- bounds (dict of tuple of str, str to str or empty dictionary) – dictionary where parsed constraint will be written.
 - Raises: - ValueError– if constraint cannot be parsed.- Example - >>> bounds = dict() >>> s = set(['I1', 'I2', 'O1', 'O2']) >>> parse_price_ratio('I1/I2', '5', 'I1/I2 >= 5', s, bounds) >>> bounds >>> {('I1', 'I2'): 5} 
- 
pyDEA.core.utils.dea_utils.validate_category_name(name, category_index, current_categories)[source]¶
- Checks if given category name is valid. Name is valid if it is not a number, if it does not contain semicolon and if it is not duplicated. - Parameters: - name (str) – category name.
- category_index (int) – index of this category in the list of current categories.
- current_categories (list of str) – list of current categories.
 - Returns: - given category name if this name is valid, empty string otherwise. - Return type: - str - Example - >>> validate_category_name('I1n', 0, ['I1n', 'I2', 'O2]) >>> 'I1n' >>> validate_category_name('I1n;', 0, ['I1n;', 'I2', 'O2]) >>> '' >>> validate_category_name('1.2', 0, ['1.2', 'I2', 'O2]) >>> '' >>> validate_category_name('I1n', 0, ['I1n', 'I1n', 'O2]) >>> '' 
pyDEA.core.utils.model_builder module¶
This module contains function responsible for creating several models and parameters in the case when RETURN_TO_SCALE or ORIENTATION is set to both.
- 
pyDEA.core.utils.model_builder.build_models(params, model_input)[source]¶
- Creates several models and parameters in the case when RETURN_TO_SCALE or ORIENTATION is set to both. If neither RETURN_TO_SCALE nor ORIENTATION is set to both, then no new models will be created, a copy of the given model and parameters will be returned. - Parameters: - params (Parameters) – parameters.
- model_input (InputData) – data instance.
 - Returns: - tuple with two lists. The first list contains all created models, the second list contains corresponding parameters. - Return type: - tuple of list of ModelBase, list of Parameters 
pyDEA.core.utils.model_factory module¶
This module contains classes responsible for creating a proper DEA model.
- 
class pyDEA.core.utils.model_factory.EnvelopmentModelFactory[source]¶
- Bases: - pyDEA.core.utils.model_factory.ModelFactoryBase- A factory class responsible for creating envelopment model. - 
classmethod add_extra(model, weakly_disposal_categories, non_discr_categories, orientation)[source]¶
- See base class. 
 - 
classmethod get_basic_model(model_input, concrete_model, weakly_disposal_categories, params)[source]¶
- See base class. 
 - 
classmethod get_input_oriented_model(use_super_efficiency, non_discr_categories)[source]¶
- See base class. 
 - 
static get_lower_bound_generator(use_super_efficiency)[source]¶
- Returns a function for lower bound generation for envelopment model. - Parameters: - use_super_efficiency (bool) – true if super efficiency model should be created, false otherwise. - Returns: - function for lower bound generation. - Return type: - func 
 - 
classmethod get_output_oriented_model(use_super_efficiency, non_discr_categories)[source]¶
- See base class. 
 - 
static get_upper_bound_generator_for_env_model(use_super_efficiency)[source]¶
- Returns a function for upper bound generation for envelopment model. - Parameters: - use_super_efficiency (bool) – true if super efficiency model should be created, false otherwise. - Returns: - function for upper bound generation. - Return type: - func 
 
- 
classmethod 
- 
class pyDEA.core.utils.model_factory.ModelFactoryBase[source]¶
- Bases: - object- Abstract base class for factory classes responsible for creating a DEA model. - 
classmethod add_extra(model, weakly_disposal_categories, non_discr_categories, orientation)[source]¶
- Helper method that is called after get_basic_model. - Parameters: - model (ModelBase) – model to decorate.
- weakly_disposal_categories (list of str) – list of weakly disposal categories. If empty, all categories are considered strongly disposal.
- non_discr_categories (list of str) – list of non-discretionary categories. If empty, all categories are considered discretionary.
- orientation (str) – string that describes orientation of the model. Possible values: “input” or “output”.
 - Returns: - decorated DEA model. - Return type: - ModelBased 
 - 
classmethod create_model(params, model_input)[source]¶
- Allocated a proper DEA model given parameters and input data. - Parameters: - params (Parameters) – model parameters.
- model_input (InputData) – object that stores input data.
 - Returns: - allocated DEA model. - Return type: 
 - 
classmethod get_VRS_model(model)[source]¶
- Decorates a given model with VRS constraints or variables. - Parameters: - model (ModelBase) – model to decorate. - Returns: - decorated VRS DEA model. - Return type: - ModelBase 
 - 
classmethod get_abs_restriction_model(model, bounds)[source]¶
- Decorates a given model with absolute weight restrictions. - Parameters: - model (ModelBase) – model to decorate.
- bounds (dict of str to tuple of double, double or dict of tuple of str, str to tuple of double, double) – dictionary with parsed values of constraints.
 - Returns: - decorated DEA model with absolute weight restrictions. - Return type: 
 - 
classmethod get_basic_model(model_input, concrete_model, weakly_disposal_categories, params)[source]¶
- Returns allocated basic CRS DEA model. - Parameters: - model_input (InputData) – object that stores input data.
- concrete_model (InputOrientedModel or OutputOrientedModel) – input- or output-oriented model used in ModelBase.
- weakly_disposal_categories (list of str) – list of weakly disposal categories. If empty, all categories are considered strongly disposal.
- params (Parameters) – model parameters.
 - Returns: - allocated DEA model. - Return type: 
 - 
classmethod get_input_oriented_model(use_super_efficiency, non_discr_categories)[source]¶
- Returns input-oriented model used in ModelBase. - Parameters: - use_super_efficiency (bool) – true if super efficiency model should be created, false otherwise.
- non_discr_categories (list of str) – list of non-discretionary categories. If empty, all categories are considered discretionary.
 - Returns: - allocated input-oriented model. - Return type: 
 - 
classmethod get_output_oriented_model(use_super_efficiency, non_discr_categories)[source]¶
- Returns output-oriented model used in ModelBase. - Parameters: - use_super_efficiency (bool) – true if super efficiency model should be created, false otherwise.
- non_discr_categories (list of str) – list of non-discretionary categories. If empty, all categories are considered discretionary.
 - Returns: - allocated output-oriented model. - Return type: 
 - 
classmethod get_price_ratio_model(model, bounds)[source]¶
- Decorates a given model with price ratio weight restrictions. - Parameters: - model (ModelBase) – model to decorate.
- bounds (dict of str to tuple of double, double or dict of tuple of str, str to tuple of double, double) – dictionary with parsed values of constraints.
 - Returns: - decorated DEA model with price ratio weight restrictions. - Return type: 
 - 
classmethod get_virtual_restriction_model(model, bounds)[source]¶
- Decorates a given model with virtual weight restrictions. - Parameters: - model (ModelBase) – model to decorate.
- bounds (dict of str to tuple of double, double or dict of tuple of str, str to tuple of double, double) – dictionary with parsed values of constraints.
 - Returns: - decorated DEA model with virtual weight restrictions. - Return type: 
 
- 
classmethod 
- 
class pyDEA.core.utils.model_factory.MultiplierModelFactory[source]¶
- Bases: - pyDEA.core.utils.model_factory.ModelFactoryBase- A factory class responsible for creating multiplier model. - 
classmethod add_extra(model, weakly_disposal_categories, non_discr_categories, orientation)[source]¶
- See base class. 
 - 
classmethod get_basic_model(model_input, concrete_model, weakly_disposal_categories, params)[source]¶
- See base class. 
 - 
classmethod get_input_oriented_model(use_super_efficiency, non_discr_categories)[source]¶
- See base class. 
 
- 
classmethod 
- 
pyDEA.core.utils.model_factory.add_input_and_output_categories(params, model_input)[source]¶
- Adds input and output categories specified in parameters to a given InputData object. - Parameters: - params (Parameters) – model parameters.
- model_input (InputData) – object that stores input data.
 - Raises: - ValueError– if input or output (or both) categories are missing.
- 
pyDEA.core.utils.model_factory.create_model(params, model_input)[source]¶
- Allocates a proper DEA model based on given parameters and input data. This function must be used for creating DEA model. It calls appropriate factory class. - Parameters: - params (Parameters) – model parameters.
- model_input (InputData) – object that stores input data.
 - Raises: - ValueError– if DEA form parameter has invalid value. Allowed values are env and multi.- Returns: - allocated DEA model. - Return type: 
pyDEA.core.utils.progress_recorders module¶
This module contains classes responsible for updating solution progress.
- 
class pyDEA.core.utils.progress_recorders.GuiProgress(progress_bar, nb_models, nb_sheets)[source]¶
- Bases: - pyDEA.core.utils.progress_recorders.NullProgress- This class updates progress bar while a given problem is being solved. - 
progress_bar¶
- ProgressBar - progress bar. 
 - 
step_size¶
- double - progress bar increment. 
 - Parameters: - progress_bar (ProgressBar) – progress bar.
- nb_models (int) – total number of DEA models, can take values 1, 2 or 4.
- nb_sheets (int) – number of sheets in solution.
 
- 
pyDEA.core.utils.run_routine module¶
This module contains classes responsible for solving a given data instance either through terminal or GUI.
- 
class pyDEA.core.utils.run_routine.RunMethodBase[source]¶
- Bases: - object- This class is an abstract base class for other classes used for executing solution routine - create data instance, solve LPs, post-process solutions. - 
decorate_model(model_obj)[source]¶
- This method is called after a model has been created, implementation depends on a concrete class. - Parameters: - model_obj (ModelBase or any of its derivatives) – model - Returns: - decorated model - Return type: - (ModelBase or any of its derivatives) 
 - 
get_categories()[source]¶
- Returns current categories. - Returns: - list of current categories - Return type: - (list of str) 
 - 
get_coefficients()[source]¶
- Returns problem data coefficients. - Returns: - dictionary that maps DMU code to the list of coefficients. Coefficients must appear in the same order as categories. - Return type: - (dict of str to list of double) 
 - 
init_before_run(nb_models, coefficients)[source]¶
- Initialises appropriate data structures before solving LPs, implementation depends on a concrete class. - Parameters: - nb_models (int) – number of models, can take values 1, 2 or 4.
- coefficients (dict of str to list of float) – dictionary that maps DMU code to the list of coefficients
 
 - 
post_process_solutions(solutions, params, param_strs, all_ranks, run_date, total_seconds)[source]¶
- Post-processes solutions, implementation depends on a concrete class. - Parameters: - solutions (list of Solution) – list of obtained solutions.
- params (Parameter) – parameters.
- param_strs (list of str) – list of strings that describe each model.
- all_ranks (list of dict of str to double) – list that contains dictionaries that map DMU code to peel the onion rank.
- run_date (datetime) – date and time when the problem was solved.
- total_seconds (float) – time (in seconds) needed to solve the problem.
 
 - 
run(params)[source]¶
- Executes solution routine - create data instance, solve LPs, post-process solutions. - Parameters: - params (Parameters) – parameters of a given problem instance 
 
- 
- 
class pyDEA.core.utils.run_routine.RunMethodGUI(frame)[source]¶
- Bases: - pyDEA.core.utils.run_routine.RunMethodBase- This class implements running routing from GUI. - 
frame¶
- Tk Frame - main GUI frame. 
 - 
current_dmu¶
- StringVar - StringVar object that tracks when when DMU changes during solution process. 
 - 
increment¶
- double - progress bar increment. 
 - Parameters: - frame (Tk Frame) – main GUI frame. 
- 
- 
class pyDEA.core.utils.run_routine.RunMethodTerminal(params, sheet_name_usr, output_format, output_dir='')[source]¶
- Bases: - pyDEA.core.utils.run_routine.RunMethodBase- This class implements running routing from terminal. - 
params¶
- Parameters - parameters. 
 - 
sheet_name_usr¶
- str - sheet name from which input data must be read. 
 - 
output_dir¶
- str - path to directory where solution must be stored. 
 - 
output_format¶
- str - file extension for solution files. 
 - 
data¶
- list of str - list where the first element is DMU name, all other elements are coefficients. 
 - Parameters: - params (Parameters) – parameters.
- sheet_name_usr (str) – sheet name from which input data must be read.
- output_format (str) – file extension for solution files.
- output_dir (str, optional) – path to directory where solution must be stored. If not given, solution will be stored to current directory.
 
- 
- 
pyDEA.core.utils.run_routine.derive_returns_to_scale_classification(param_strs, solutions)[source]¶
- Add a dictionary that describes the DMUs’ returns-to-scale classification to the solution object. Note that for a given orientation (intput or ouput), the returns-to-scale of a DMU is the same for both the CRS and the VRS models. See the following algorithm for more detail: - For a DMUo
- If CRSeff of DMUo = VRSeff of DMUo then classify DMUo as CRS Else If sum of DMUo’s CRS lambdas < 1 then classify DMUo as IRS Else classify DMUo as DRS
 - Parameters: - param_strs (list of str) – list of strings that describe each model.
- solutions (list of Solution) – list of obtained solutions.
 - Returns: - RTS_classification – indicate frontier - for the DMUs. - Return type: - dict of dmu_code (str) to classification (str)