function [df] = get_rna_seq_data (datafile, params)
    %% Load Data
    rna = readtable(datafile);
    if ~isempty(params.discard_cols{:})  
        rna(:,  params.discard_cols) = []; 
    end
    %% Work with only numeric columns
    data_cols = varfun(@isnumeric, rna, 'output', 'uniform');
    cols = sum(data_cols);
    %% Delete rows where Gene Column is undefined
    rna_elements = rna{:, params.rna_element_col};
    rna_element_known = ~cellfun(@isempty, rna_elements, ...
                                   'UniformOutput', true);
    rows = sum(rna_element_known);
    %% Create a Dataframe style table - 
    % features are rna elements (along columns)
    df = table ('Size', [cols, rows], 'VariableTypes', ...
                            repmat({'double'}, 1, rows));
    %% Copy numeric data with samples as rows
    
    rna_elements = process_duplicate_genes (rna_elements(rna_element_known));
    df{:,:} = transpose(rna{rna_element_known, data_cols});
    df.Properties.VariableNames = transpose(rna_elements);
    df.Properties.RowNames = rna(:, data_cols).Properties.VariableNames;
    %% Identify Rows starting with 'C' and 'A'

    samples = df.Properties.RowNames;
   
    ctl = cellfun (@(x) ~isempty(regexp(x, params.re_ctl, 'once')), samples);
    abn = cellfun (@(x) ~isempty(regexp(x, params.re_abn, 'once')), samples);
    assert(size(samples, 1) == (sum(ctl) + sum(abn)))
    df.Y = zeros(size(samples));
    df.Y(abn) = 1;
end