timestep_limit = 5
            else:
                timestep_limit = 4
    elif dataset == Dataset.INHOUSE:
        timestep_limit = 2
        if evaluate == Evaluate.TEST:
            if patient == 40 or patient == 87 or patient == 100 or patient == 110:
                timestep_limit = 3
            elif patient == 122:
                timestep_limit = 4
            else:
                timestep_limit = 2
        elif evaluate == Evaluate.TRAINING:
            if patient == 27:
                timestep_limit = 3
    else:
        raise ValueError(f'Invalid dataset type given: {dataset}')

    return timestep_limit


if __name__ == '__main__':
    args = argparse.ArgumentParser(description='PyTorch Template')
    args.add_argument('-c', '--config', default=None, type=str, help='config file path (default: None)')
    args.add_argument('-r', '--resume', default=None, type=str, help='path to latest checkpoint (default: None)')
    args.add_argument('-d', '--device', default=None, type=str, help='indices of GPUs to enable (default: all)')
    args.add_argument('-e', '--evaluate', default=Evaluate.TEST, type=Evaluate, help='Either "training" or "test"; Determines the prefix of the folders to use')
    args.add_argument('-m', '--dataset_type', default=Dataset.ISBI, type=Dataset, help='Dataset to use')
    config = ConfigParser(*parse_cmd_args(args))
    main(config)
if __name__ == '__main__':
    args = argparse.ArgumentParser(description='PyTorch Template')
    args.add_argument('-c',
                      '--config',
                      default=None,
                      type=str,
                      help='config file path (default: None)')
    args.add_argument('-r',
                      '--resume',
                      default=None,
                      type=str,
                      help='path to latest checkpoint (default: None)')
    args.add_argument('-d',
                      '--device',
                      default=None,
                      type=str,
                      help='indices of GPUs to enable (default: all)')

    # custom cli options to modify configuration from default values given in json file.
    CustomArgs = collections.namedtuple('CustomArgs', 'flags type target')
    options = [
        CustomArgs(['--lr', '--learning_rate'],
                   type=float,
                   target=('optimizer', 'args', 'lr')),
        CustomArgs(['--bs', '--batch_size'],
                   type=int,
                   target=('data_loader', 'args', 'batch_size'))
    ]
    config = ConfigParser(*parse_cmd_args(args, options))
    main(config)