Esempio n. 1
0
    def get_data_and_trace_heads(self):
        if( self.f == None):
            raise Exception("File not open. Use open('path')")
        self.f.seek(3600,0)
        coef = self.check_coef()
        self.trace_bin_headers=None
        offset =self.bin_head.Samples*coef
        #print(offset)
        # all={}#pandas.DataFrame(index=np.arange(0,len(Heads.TraceBinHead().__dict__.keys())),columns=Heads.TraceBinHead().__dict__.keys())
        all= np.zeros((self.count_trace, len(Heads.TraceBinHead().__dict__.keys())), dtype=np.int32)
        data = np.zeros((self.count_trace, self.bin_head.Samples), dtype=np.float32)
        trace_head = Heads.TraceBinHead()
        start_tp=time()
        for i in range(0,self.count_trace):
            # start=time()

            b=trace_head.get_all_trace(self.f.read(240), self.order)
            step_count = b["TRACE_SAMPLE_COUNT"]
            all[i]=list(b.values())
            step_count=self.bin_head.Samples
            datas = (self.f.read(coef*step_count))
            sample= self.__get_sample(coef,datas)
            data[i]=sample
            # print(time()-start)
        self.data=data
        strat = time()
        self.trace_bin_headers = pandas.DataFrame(data=all,columns=Heads.TraceBinHead().__dict__.keys())#,orient='index')

       
        return self.data ,self.trace_bin_headers
Esempio n. 2
0
 def get_step_count(self):
     self.f.seek(3600, 0)
     trace_head = Heads.TraceBinHead()
     b = trace_head.get_all_trace(self.f.read(240), self.order)
     step_count = b["TRACE_SAMPLE_COUNT"]
     self.f.seek(3600, 0)
     return step_count
Esempio n. 3
0
 def open(self, path):
     self.path = path
     self.f = open(self.path, "rb")
     self.f.seek(0, 0)
     self.line_header = self.f.read(3200)
     b_h = self.f.read(400)
     format = struct.unpack(b'>h', b_h[24:26:])[0]
     # Check if valid.
     if format in [1, 2, 3, 4, 5, 8]:
         self.order = "big"
     # Else test little endian.
     else:
         format = struct.unpack(b'<h', b_h[24:26:])[0]
         if format in [1, 2, 3, 4, 5, 8]:
             self.order = "little"
         else:
             msg = 'Unable to determine the endianness of the file. ' + \
                   'Please specify it.'
             raise Exception(msg)
     # if (int.from_bytes(b_h[97:101:], "big") > 255):
     #     self.order = "little"
     # else:
     #     self.order = "big"
     # self.order="little"
     self.bin_head = Heads.BinHead(b_h, self.order)
     size_file = os.path.getsize(self.path)
     coef = self.check_coef()
     self.count_trace = (size_file - 3600) / (self.bin_head.Samples * coef +
                                              240)
     self.count_trace = int(self.count_trace)
Esempio n. 4
0
 def __get_step_count(self):
     """
     inner function don't call
     """
     trace_head = Heads.TraceBinHead()
     b = trace_head.get_all_trace(self.f.read(240), self.order)
     step_count = b["TRACE_SAMPLE_COUNT"]
     return step_count
Esempio n. 5
0
def get_null_trace():
    """
        inner function
    """
    ar = Heads.TraceBinHead()
    for i,k in ar.__dict__.items():
        ar.__dict__[i]=0
    return ar
Esempio n. 6
0
 def create_data_frame(self,series):
      """
         create dataFrame with input series, where columns is Trace  Heads
      input
         series with data for Trace Head
      return
         res = dataFrame 
      """
      res = pandas.DataFrame.from_dict(data=series,columns=Heads.TraceBinHead().__dict__.keys(),orient='index')
      return res
Esempio n. 7
0
 def read_bin_trace_specefic(self, param):
     self.f.seek(3600, 0)
     all=[]
     trace_head = Heads.TraceBinHead()
     for i in range(0, self.count_trace):
           cur  = self.f.tell()
           all.append(trace_head.get_specific_trace(self.f,self.order,cur,param))
           self.f.seek(cur+240,0)
           step_count = self.bin_head.Samples
           self.f.seek(step_count*self.check_coef(),1)
     return  pandas.DataFrame(all)
Esempio n. 8
0
 def get_step_count(self):
     """ 
     return sample count
     input
         - 
     return:
         step count - Trace Sample Count
     """
     self.f.seek(3600, 0)
     trace_head = Heads.TraceBinHead()
     b = trace_head.get_all_trace(self.f.read(240), self.order)
     step_count = b["TRACE_SAMPLE_COUNT"]
     self.f.seek(3600, 0)
     return step_count
Esempio n. 9
0
    def get_data_and_trace_heads(self):
        if (self.f == None):
            raise Exception("File not open. Use open('path')")
        self.f.seek(3600, 0)
        coef = self.check_coef()
        self.trace_bin_headers = None
        offset = self.bin_head.Samples * coef
        #print(offset)
        all = {
        }  #pandas.DataFrame(index=np.arange(0,len(Heads.TraceBinHead().__dict__.keys())),columns=Heads.TraceBinHead().__dict__.keys())
        data = []
        trace_head = Heads.TraceBinHead()
        start_tp = time()
        for i in range(0, self.count_trace):
            start = time()
            b = trace_head.get_all_trace(self.f.read(240), self.order)
            step_count = b["TRACE_SAMPLE_COUNT"]
            all[i] = b.values()
            step_count = self.bin_head.Samples
            datas = (self.f.read(coef * step_count))
            sample = self.__get_sample(coef, datas)
            data.append(sample)

        #print(time()-start_tp)
        self.data = np.array(data)
        # strat = time()
        self.trace_bin_headers = pandas.DataFrame.from_dict(
            data=all,
            columns=Heads.TraceBinHead().__dict__.keys(),
            orient='index')
        self.trace_bin_headers["IDX"] = np.arange(len(self.trace_bin_headers))
        # print(time() -strat)
        self.trace_bin_headers = self.delete_rows_cols(self.trace_bin_headers)
        self.trace_bin_headers = self.trace_bin_headers.drop(["spare"], axis=1)

        return self.data, self.trace_bin_headers
Esempio n. 10
0
 def load_all_file(self,path):
     with open(path ,"r+b") as f:
         self.f = mmap(f.fileno(), 0)
         self.f.seek(0, 0)
         self.line_header = self.f.read(3200)
         b_h = self.f.read(400)
         if (int.from_bytes(b_h[24:26:], "big") > 255):
             self.order = "little"
         else:
             self.order = "big"
         self.bin_head = Heads.BinHead(b_h, self.order)
         print(self.bin_head.__sizeof__())
         size_file = os.path.getsize(path)
         coef = self.check_coef()
         self.count_trace = (size_file - 3600) / (self.bin_head.Samples * coef + 240)
         self.count_trace = int(self.count_trace)
Esempio n. 11
0
def write(filename, Data,SegyTraceHeaders=pandas.DataFrame(), SegyHeader=None, text_head=None,order="big",dt=1000,SampleFormat=3):
        print("START WRITE")
        if (isinstance(SegyTraceHeaders, dict)):
            SegyTraceHeaders = create_head_traces(SegyTraceHeaders)
        elif (isinstance(SegyTraceHeaders, pandas.DataFrame)):
            pass
        else:
            raise Exception("Not definde type")
        file = open(filename, "wb")
        if (SegyHeader == None):
            bin_head = Heads.BinHead(bytearray(400), order)

        else:
            bin_head = SegyHeader
        coef = retCoef(SampleFormat)
        bin_head.Interval = dt
        try:
            bh_s = bin_head.Samples
        except Exception as e:
            bin_head.Samples = len(Data[0])
        bin_head.Format = SampleFormat
        if (text_head != None):
            file.write(text_head)
        else:
            file.write(bytearray(3200))

        if (SegyTraceHeaders.empty):
            segyTraceHeaders = get_null_trace()
        else:
            segyTraceHeaders = SegyTraceHeaders

        # segyTraceHeaders.TRACE_SAMPLE_COUNT = len(Data[0])
        Heads.writeBinHead(file, bin_head, order)
        all_c = bytearray()
        start = time()
        # df_dict = segyTraceHeaders.to_dict(orient='index')
        for i in range(0,len(Data)):
            if(i!=0 and i%1000000==0):
                file.write(all_c)
                all_c=bytearray()
            if(SegyTraceHeaders.empty):
               b = Heads.writeTraceHeadEmpty(file, segyTraceHeaders, order)
            else:
               b = Heads.writeTraceHead(file, segyTraceHeaders.iloc[i], order)
            a= Heads.writeData(file,Data[i],coef,order)
            try:
                all_c+=b+a
            except Exception as e:
                print(e)

        file.write(all_c)
        print(time() - start)
Esempio n. 12
0
def get_null_trace():
    ar = Heads.TraceBinHead()
    for i, k in ar.__dict__.items():
        ar.__dict__[i] = 0
    return ar
Esempio n. 13
0
 def create_data_frame(self, series):
     res = pandas.DataFrame.from_dict(
         data=series,
         columns=Heads.TraceBinHead().__dict__.keys(),
         orient='index')
     return res
Esempio n. 14
0
    def __get_step_count(self):

        trace_head = Heads.TraceBinHead()
        b = trace_head.get_all_trace(self.f.read(240), self.order)
        step_count = b["TRACE_SAMPLE_COUNT"]
        return step_count