import torch
import datetime


def tprint(s):
    '''
        print datetime and s
        @params:
            s (str): the string to be printed
    '''
    print('{}: {}'.format(
        datetime.datetime.now().strftime('%02y/%02m/%02d %H:%M:%S'), s),
          flush=True)


def to_tensor(data, cuda, exclude_keys=[]):
    '''
        Convert all values in the data into torch.tensor
    '''
    for key in data.keys():
        if key in exclude_keys:
            continue

        data[key] = torch.from_numpy(data[key])
        if cuda != -1:
            data[key] = data[key].cuda(cuda)

    return data


def select_subset(old_data, new_data, keys, idx, max_len=None):
    '''
        modifies new_data

        @param old_data target dict
        @param new_data source dict
        @param keys list of keys to transfer
        @param idx list of indices to select
        @param max_len (optional) select first max_len entries along dim 1
    '''

    for k in keys:
        new_data[k] = old_data[k][idx]
        if max_len is not None and len(new_data[k].shape) > 1:
            new_data[k] = new_data[k][:,:max_len]

    return new_data

c13aa6648b7da068b021d42cc90e9a70cd6dd589
<mask token>


def to_tensor(data, cuda, exclude_keys=[]):
    """
        Convert all values in the data into torch.tensor
    """
    for key in data.keys():
        if key in exclude_keys:
            continue
        data[key] = torch.from_numpy(data[key])
        if cuda != -1:
            data[key] = data[key].cuda(cuda)
    return data


<mask token>

<mask token>


def to_tensor(data, cuda, exclude_keys=[]):
    """
        Convert all values in the data into torch.tensor
    """
    for key in data.keys():
        if key in exclude_keys:
            continue
        data[key] = torch.from_numpy(data[key])
        if cuda != -1:
            data[key] = data[key].cuda(cuda)
    return data


def select_subset(old_data, new_data, keys, idx, max_len=None):
    """
        modifies new_data

        @param old_data target dict
        @param new_data source dict
        @param keys list of keys to transfer
        @param idx list of indices to select
        @param max_len (optional) select first max_len entries along dim 1
    """
    for k in keys:
        new_data[k] = old_data[k][idx]
        if max_len is not None and len(new_data[k].shape) > 1:
            new_data[k] = new_data[k][:, :max_len]
    return new_data

<mask token>


def tprint(s):
    """
        print datetime and s
        @params:
            s (str): the string to be printed
    """
    print('{}: {}'.format(datetime.datetime.now().strftime(
        '%02y/%02m/%02d %H:%M:%S'), s), flush=True)


def to_tensor(data, cuda, exclude_keys=[]):
    """
        Convert all values in the data into torch.tensor
    """
    for key in data.keys():
        if key in exclude_keys:
            continue
        data[key] = torch.from_numpy(data[key])
        if cuda != -1:
            data[key] = data[key].cuda(cuda)
    return data


def select_subset(old_data, new_data, keys, idx, max_len=None):
    """
        modifies new_data

        @param old_data target dict
        @param new_data source dict
        @param keys list of keys to transfer
        @param idx list of indices to select
        @param max_len (optional) select first max_len entries along dim 1
    """
    for k in keys:
        new_data[k] = old_data[k][idx]
        if max_len is not None and len(new_data[k].shape) > 1:
            new_data[k] = new_data[k][:, :max_len]
    return new_data

import torch
import datetime


def tprint(s):
    """
        print datetime and s
        @params:
            s (str): the string to be printed
    """
    print('{}: {}'.format(datetime.datetime.now().strftime(
        '%02y/%02m/%02d %H:%M:%S'), s), flush=True)


def to_tensor(data, cuda, exclude_keys=[]):
    """
        Convert all values in the data into torch.tensor
    """
    for key in data.keys():
        if key in exclude_keys:
            continue
        data[key] = torch.from_numpy(data[key])
        if cuda != -1:
            data[key] = data[key].cuda(cuda)
    return data


def select_subset(old_data, new_data, keys, idx, max_len=None):
    """
        modifies new_data

        @param old_data target dict
        @param new_data source dict
        @param keys list of keys to transfer
        @param idx list of indices to select
        @param max_len (optional) select first max_len entries along dim 1
    """
    for k in keys:
        new_data[k] = old_data[k][idx]
        if max_len is not None and len(new_data[k].shape) > 1:
            new_data[k] = new_data[k][:, :max_len]
    return new_data

import torch
import datetime


def tprint(s):
    '''
        print datetime and s
        @params:
            s (str): the string to be printed
    '''
    print('{}: {}'.format(
        datetime.datetime.now().strftime('%02y/%02m/%02d %H:%M:%S'), s),
          flush=True)


def to_tensor(data, cuda, exclude_keys=[]):
    '''
        Convert all values in the data into torch.tensor
    '''
    for key in data.keys():
        if key in exclude_keys:
            continue

        data[key] = torch.from_numpy(data[key])
        if cuda != -1:
            data[key] = data[key].cuda(cuda)

    return data


def select_subset(old_data, new_data, keys, idx, max_len=None):
    '''
        modifies new_data

        @param old_data target dict
        @param new_data source dict
        @param keys list of keys to transfer
        @param idx list of indices to select
        @param max_len (optional) select first max_len entries along dim 1
    '''

    for k in keys:
        new_data[k] = old_data[k][idx]
        if max_len is not None and len(new_data[k].shape) > 1:
            new_data[k] = new_data[k][:,:max_len]

    return new_data
