import pandas as pd
import numpy as np
import sys
# sys.path.append("C:/Users/iuliia/recoUI/serv")

class SequenceDataFrame:
    array_raw = None
    mat_df = None
    seq_df = None
    all_df = None
    sequence_seq = None
    type_seq = None
    phase_shift = None

    def read_raw_data(self, data):
        sub_arrays = [subarray for subarray in data]
        self.array_raw = sub_arrays[1]

    def read_dots(self, Np):
        mat_df = pd.DataFrame(self.array_raw, columns=['real', 'imag'])
        mat_df = mat_df.drop(mat_df.index[Np::(Np + 1)])
        mat_df = mat_df.reset_index(drop=True)
        mat_df = mat_df.dropna()

        columns = [mat_df.iloc[:, i:i + 2] for i in range(0, mat_df.shape[1], 2)]
        mat_df = pd.concat(columns, axis=1)
        mat_df['dot'] = mat_df['real'] + 1j * mat_df['imag']
        mat_df = mat_df[~mat_df['dot'].isna() & (mat_df['dot'] != '')]

        num_batches = len(mat_df) // Np
        index_values = np.repeat(np.arange(num_batches), Np)
        index_values = index_values[:len(mat_df)]

        mat_df['index'] = index_values

        self.mat_df = mat_df