def parse_arguments(parser):
    """Read user arguments"""
    # 4895 is the voccabulary size in MIMIC-III
    parser.add_argument('--num_codes', type=int, default=4895,
                        help='Number of medical codes')
    parser.add_argument('--numeric_size', type=int, default=0,
                        help='Number of numeric input features, 0 if none')
    parser.add_argument('--use_time', action='store_true',
                        help='If argument is present the time input will be used')
    parser.add_argument('--emb_size', type=int, default=256,
                        help='Dimension of the visit embedding')
    parser.add_argument('--epochs', type=int, default=30,
                        help='Number of epochs')
    parser.add_argument('--max_seq_len', type=int, default=300,
                        help='Maximum number of visits after which the data is truncated\
                        (think max sequence length for padding)')
    parser.add_argument('--recurrent_size', type=int, default=256,
                        help='Dimension of hidden recurrent layers')
    parser.add_argument('--path_data_train', type=str, default='data/data_train.pkl',
                        help='Path to train data')
    parser.add_argument('--path_data_test', type=str, default='data/data_test.pkl',
                        help='Path to test data')
    parser.add_argument('--path_target_train', type=str, default='data/target_train.pkl',
                        help='Path to train target')
    parser.add_argument('--path_target_test', type=str, default='data/target_test.pkl',
                        help='Path to test target')
    parser.add_argument('--batch_size', type=int, default=100,
                        help='Batch Size')
    parser.add_argument('--dropout_input', type=float, default=0.4,
                        help='Dropout rate for embedding')
    parser.add_argument('--dropout_context', type=float, default=0.6,
                        help='Dropout rate for context vector')
    parser.add_argument('--l2', type=float, default=0.0001,
                        help='L2 regularization value')
    parser.add_argument('--out_directory', type=str, default='Model',
                        help='out_directory to save the model and the log file to')
    parser.add_argument('--allow_negative', action='store_true',
                        help='If argument is present the negative weights for embeddings/attentions\
                         will be allowed (original RETAIN implementation)')
    args = parser.parse_known_args()[0]

    return args