def main():
    # Define environment variables
    # Environment()

    # Get parameters from arguments
    parser = argparse.ArgumentParser(description='Model training')
    parser.add_argument('-c',
                        '--config_path',
                        type=str,
                        default=None,
                        help='Configuration file')
    parser.add_argument('-e',
                        '--exp_name',
                        type=str,
                        default=None,
                        help='Name of the experiment')
    parser.add_argument('-s',
                        '--shared_path',
                        type=str,
                        default='/data/module5',
                        help='Path to shared data folder')
    parser.add_argument('-l',
                        '--local_path',
                        type=str,
                        default='/home/master/sufav/results',
                        help='Path to local data folder')

    arguments = parser.parse_args()

    assert arguments.config_path is not None, 'Please provide a configuration' \
                                              'path using -c config/pathname' \
                                              ' in the command line'
    assert arguments.exp_name is not None, 'Please provide a name for the ' \
                                           'experiment using -e name in the ' \
                                           'command line'

    # Define the user paths
    shared_path = arguments.shared_path
    local_path = arguments.local_path
    dataset_path = os.path.join(local_path, 'Datasets')
    shared_dataset_path = os.path.join(shared_path, 'Datasets')
    experiments_path = os.path.join(local_path, getuser(), 'Experiments')
    # Note: this should not be used
    shared_experiments_path = os.path.join(shared_path, getuser(),
                                           'Experiments')

    usr_path = os.path.join('/home/', getuser())

    # Load configuration files
    configuration = Configuration(arguments.config_path, arguments.exp_name,
                                  dataset_path, shared_dataset_path,
                                  experiments_path, shared_experiments_path,
                                  usr_path)
    cf = configuration.load()

    # Train /test/predict with the network, depending on the configuration
    process(cf)

    # Copy result to shared directory
    configuration.copy_to_shared()