| import sys, getopt | |
| import ddmr.utils.constants as C | |
| import os | |
| def parse_arguments(argv): | |
| try: | |
| opts, args = getopt.getopt(argv, "hg:b:l:r:d:t:i:f:x:p:q:", ["gpu-num=", | |
| "batch-size=", | |
| "loss=", | |
| "remote=", | |
| "debug=", | |
| "debug-training=", | |
| "debug-input-data=", | |
| "destination-folder=", | |
| "destination-folder-fix=", | |
| "training-dataset=", | |
| "test-dataset=", | |
| "help"]) | |
| except getopt.GetoptError: | |
| print('\n\t\t--gpu-num:\t\tGPU number to use' | |
| '\n\t\t--batch-size:\t\tsize of the training batch' | |
| '\n\t\t--loss:\t\tLoss function: ncc, mse, dssim' | |
| '\n\t\t--remote:\t\tExecuting the script in The Beast: "True"/"False". Def: False' | |
| '\n\t\t--debug:\t\tEnable debugging logs: "True"/"False". Def: False' | |
| '\n\t\t--debug-training:\t\tEnable debugging training logs: "True"/"False". Def: False' | |
| '\n\t\t--debug-input-data:\t\tEnable debugging input data logs: "True"/"False". Def: False' | |
| '\n\t\t--destination-folder:\t\tName of the folder where to save the generated training files' | |
| '\n\t\t--destination-folder-fixed:\t\tSame as --destination-folder but do not add the timestamp' | |
| '\n\t\t--training-dataset:\t\tPath to the training dataset file' | |
| '\n\t\t--test-dataset:\t\tPath to the test dataset file' | |
| '\n') | |
| sys.exit(2) | |
| for opt, arg in opts: | |
| if opt in ('--help', '-h'): | |
| print('\n\t\t--gpu-num:\t\tGPU number to use\n\t\t--batch-size:\t\tsize of the training batch' | |
| '\n\t\t--loss:\t\tLoss function: ncc, mse, dssim\n') | |
| continue | |
| elif opt in ('--gpu_num', '-g'): | |
| old = C.GPU_NUM | |
| C.GPU_NUM = arg | |
| os.environ['CUDA_VISIBLE_DEVICES'] = C.GPU_NUM | |
| print('\t\tGPU_NUM: {} -> {}'.format(old, C.GPU_NUM)) | |
| elif opt in ('--batch-size', '-b'): | |
| old = C.BATCH_SIZE | |
| C.BATCH_SIZE = int(arg) | |
| print('\t\tBATCH_SIZE: {} -> {}'.format(old, C.BATCH_SIZE)) | |
| elif opt in ('--destination-folder', '-f'): | |
| old = C.DESTINATION_FOLDER | |
| C.DESTINATION_FOLDER = arg + '_' + C.CUR_DATETIME | |
| print('\t\tDESTINATION_FOLDER: {} -> {}'.format(old, C.DESTINATION_FOLDER)) | |
| elif opt in ('--destination-folder-fixed', '-x'): | |
| old = C.DESTINATION_FOLDER | |
| C.DESTINATION_FOLDER = arg | |
| print('\t\tDESTINATION_FOLDER: {} -> {}'.format(old, C.DESTINATION_FOLDER)) | |
| elif opt in ('--training-dataset', '-p'): | |
| old = C.TRAINING_DATASET | |
| C.TRAINING_DATASET = arg | |
| print('\t\tTRAINING_DATASET: {} -> {}'.format(old, C.TRAINING_DATASET)) | |
| elif opt in ('--test-dataset', '-q'): | |
| old = C.TEST_DATASET | |
| C.TEST_DATASET = arg | |
| print('\t\tTEST_DATASET: {} -> {}'.format(old, C.TEST_DATASET)) | |
| elif opt in ('--remote', '-r'): | |
| old = C.REMOTE | |
| if arg.lower() in ('1', 'true', 't'): | |
| C.REMOTE = True | |
| else: | |
| C.REMOTE = False | |
| print('\t\tREMOTE: {} -> {}'.format(old, C.REMOTE)) | |
| elif opt in ('--debug', '-d'): | |
| old = C.DEBUG | |
| if arg.lower() in ('1', 'true', 't'): | |
| C.DEBUG = True | |
| else: | |
| C.DEBUG = False | |
| print('\t\tDEBUG: {} -> {}'.format(old, C.DEBUG)) | |
| elif opt in ('--debug-training', '-t'): | |
| old = C.DEBUG_TRAINING | |
| if arg.lower() in ('1', 'true', 't'): | |
| C.DEBUG_TRAINING = True | |
| else: | |
| C.DEBUG_TRAINING = False | |
| print('\t\tDEBUG_TRAINING: {} -> {}'.format(old, C.DEBUG_TRAINING)) | |
| elif opt in ('--debug-input-data', '-i'): | |
| old = C.DEBUG_INPUT_DATA | |
| if arg.lower() in ('1', 'true', 't'): | |
| C.DEBUG_INPUT_DATA = True | |
| else: | |
| C.DEBUG_INPUT_DATA = False | |
| print('\t\tDEBUG_INPUT_DATA: {} -> {}'.format(old, C.DEBUG_INPUT_DATA)) | |
| elif opt in ('--loss', '-l'): | |
| old = C.LOSS_FNC | |
| if arg in ('ncc', 'mse', 'dssim', 'dice'): | |
| C.LOSS_FNC = arg | |
| else: | |
| print('Invalid option for --loss. Expected: "mse", "ncc" or "dssim", got {}'.format(arg)) | |
| sys.exit(2) | |
| print('\t\tLOSS_FNC: {} -> {}'.format(old, C.LOSS_FNC)) | |