def export_fits(dataset, path, column_names=None, shuffle=False, selection=False, progress=None, virtual=True, sort=None, ascending=True):
    """
    :param DatasetLocal dataset: dataset to export
    :param str path: path for file
    :param lis[str] column_names: list of column names to export or None for all columns
    :param bool shuffle: export rows in random order
    :param bool selection: export selection or not
    :param progress: progress callback that gets a progress fraction as argument and should return True to continue,
            or a default progress bar when progress=True
    :param: bool virtual: When True, export virtual columns
    :return:
    """
    if shuffle:
        random_index_name = "random_index"
        while random_index_name in dataset.get_column_names():
            random_index_name += "_new"

    column_names = column_names or dataset.get_column_names(virtual=virtual, strings=True)
    logger.debug("exporting columns(fits): %r" % column_names)
    N = len(dataset) if not selection else dataset.selected_length(selection)
    data_types = []
    data_shapes = []
    ucds = []
    units = []
    for column_name in column_names:
        if column_name in dataset.get_column_names(strings=True):
            column = dataset.columns[column_name]
            shape = (N,) + column.shape[1:]
            dtype = column.dtype
            if dataset.dtype(column_name) == str_type:
                max_length = dataset[column_name].apply(lambda x: len(x)).max(selection=selection)
                dtype = np.dtype('S'+str(int(max_length)))
        else:
            dtype = np.float64().dtype
            shape = (N,)
        ucds.append(dataset.ucds.get(column_name))
        units.append(dataset.units.get(column_name))
        data_types.append(dtype)
        data_shapes.append(shape)

    if shuffle:
        column_names.append(random_index_name)
        data_types.append(np.int64().dtype)
        data_shapes.append((N,))
        ucds.append(None)
        units.append(None)
    else:
        random_index_name = None

    # TODO: all expressions can have missing values.. how to support that?
    null_values = {key: dataset.columns[key].fill_value for key in dataset.get_column_names() if dataset.is_masked(key) and dataset.dtype(key).kind != "f"}
    vaex.file.colfits.empty(path, N, column_names, data_types, data_shapes, ucds, units, null_values=null_values)
    if shuffle:
        del column_names[-1]
        del data_types[-1]
        del data_shapes[-1]
    dataset_output = vaex.file.other.FitsBinTable(path, write=True)
    _export(dataset_input=dataset, dataset_output=dataset_output, path=path, random_index_column=random_index_name,
            column_names=column_names, selection=selection, shuffle=shuffle,
            progress=progress, sort=sort, ascending=ascending)
    dataset_output.close_files()
def export_fits(dataset, path, column_names=None, shuffle=False, selection=False, progress=None, virtual=True, sort=None, ascending=True):
    """
    :param DatasetLocal dataset: dataset to export
    :param str path: path for file
    :param lis[str] column_names: list of column names to export or None for all columns
    :param bool shuffle: export rows in random order
    :param bool selection: export selection or not
    :param progress: progress callback that gets a progress fraction as argument and should return True to continue,
            or a default progress bar when progress=True
    :param: bool virtual: When True, export virtual columns
    :return:
    """
    if shuffle:
        random_index_name = "random_index"
        while random_index_name in dataset.get_column_names():
            random_index_name += "_new"

    column_names = column_names or dataset.get_column_names(virtual=virtual, strings=True)
    logger.debug("exporting columns(fits): %r" % column_names)
    N = len(dataset) if not selection else dataset.selected_length(selection)
    data_types = []
    data_shapes = []
    ucds = []
    units = []
    for column_name in column_names:
        if column_name in dataset.get_column_names(strings=True):
            column = dataset.columns[column_name]
            shape = (N,) + column.shape[1:]
            dtype = column.dtype
            if dataset.dtype(column_name) == str_type:
                max_length = dataset[column_name].apply(lambda x: len(x)).max(selection=selection)
                dtype = np.dtype('S'+str(int(max_length)))
        else:
            dtype = np.float64().dtype
            shape = (N,)
        ucds.append(dataset.ucds.get(column_name))
        units.append(dataset.units.get(column_name))
        data_types.append(dtype)
        data_shapes.append(shape)

    if shuffle:
        column_names.append(random_index_name)
        data_types.append(np.int64().dtype)
        data_shapes.append((N,))
        ucds.append(None)
        units.append(None)
    else:
        random_index_name = None

    # TODO: all expressions can have missing values.. how to support that?
    null_values = {key: dataset.columns[key].fill_value for key in dataset.get_column_names() if dataset.is_masked(key) and dataset.dtype(key).kind != "f"}
    vaex.file.colfits.empty(path, N, column_names, data_types, data_shapes, ucds, units, null_values=null_values)
    if shuffle:
        del column_names[-1]
        del data_types[-1]
        del data_shapes[-1]
    dataset_output = vaex.file.other.FitsBinTable(path, write=True)
    _export(dataset_input=dataset, dataset_output=dataset_output, path=path, random_index_column=random_index_name,
            column_names=column_names, selection=selection, shuffle=shuffle,
            progress=progress, sort=sort, ascending=ascending)
    dataset_output.close_files()
def export_fits ( dataset , path , column_names = None , shuffle = False , selection = False , progress = None , virtual = True , sort = None , ascending = True ) : if shuffle : random_index_name = "random_index" while random_index_name in dataset . get_column_names ( ) : random_index_name += "_new" column_names = column_names or dataset . get_column_names ( virtual = virtual , strings = True ) logger . debug ( "exporting columns(fits): %r" % column_names ) N = len ( dataset ) if not selection else dataset . selected_length ( selection ) data_types = [ ] data_shapes = [ ] ucds = [ ] units = [ ] for column_name in column_names : if column_name in dataset . get_column_names ( strings = True ) : column = dataset . columns [ column_name ] shape = ( N , ) + column . shape [ 1 : ] dtype = column . dtype if dataset . dtype ( column_name ) == str_type : max_length = dataset [ column_name ] . apply ( lambda x : len ( x ) ) . max ( selection = selection ) dtype = np . dtype ( 'S' + str ( int ( max_length ) ) ) else : dtype = np . float64 ( ) . dtype shape = ( N , ) ucds . append ( dataset . ucds . get ( column_name ) ) units . append ( dataset . units . get ( column_name ) ) data_types . append ( dtype ) data_shapes . append ( shape ) if shuffle : column_names . append ( random_index_name ) data_types . append ( np . int64 ( ) . dtype ) data_shapes . append ( ( N , ) ) ucds . append ( None ) units . append ( None ) else : random_index_name = None # TODO: all expressions can have missing values.. how to support that? null_values = { key : dataset . columns [ key ] . fill_value for key in dataset . get_column_names ( ) if dataset . is_masked ( key ) and dataset . dtype ( key ) . kind != "f" } vaex . file . colfits . empty ( path , N , column_names , data_types , data_shapes , ucds , units , null_values = null_values ) if shuffle : del column_names [ - 1 ] del data_types [ - 1 ] del data_shapes [ - 1 ] dataset_output = vaex . file . other . FitsBinTable ( path , write = True ) _export ( dataset_input = dataset , dataset_output = dataset_output , path = path , random_index_column = random_index_name , column_names = column_names , selection = selection , shuffle = shuffle , progress = progress , sort = sort , ascending = ascending ) dataset_output . close_files ( )
:param DatasetLocal dataset: dataset to export
    :param str path: path for file
    :param lis[str] column_names: list of column names to export or None for all columns
    :param bool shuffle: export rows in random order
    :param bool selection: export selection or not
    :param progress: progress callback that gets a progress fraction as argument and should return True to continue,
            or a default progress bar when progress=True
    :param: bool virtual: When True, export virtual columns
    :return:
: param DatasetLocal dataset : dataset to export : param str path : path for file : param lis [ str ] column_names : list of column names to export or None for all columns : param bool shuffle : export rows in random order : param bool selection : export selection or not : param progress : progress callback that gets a progress fraction as argument and should return True to continue or a default progress bar when progress = True : param : bool virtual : When True export virtual columns : return :