コード例 #1
0
 def read_first_frame(self):
     time = self._read_line_time()
     all_values = []
     self.res_plong.add_reach(REACH_NAME)
     for i in range(self.nb_sections):
         pk_id, pk, values = self._read_line_resultat()
         if pk_id != i + 1:
             self.error('Unexpected section number: %i (instead of %i)' %
                        (pk_id, i + 1))
         if i == 0:
             # There is at least 3 compulsory layers: water, bottom (= first top layer elevation) and rigid bed
             self.nb_layers = len(values) - 2
             if self.nb_layers < 1:
                 raise CourlisException('No layer could be found!')
             for j in range(len(values)):
                 if j == 0:
                     var_name = 'Z_water'
                 elif j == len(values) - 1:
                     var_name = 'Z_rb'
                 else:
                     var_name = 'Z_%i' % j
                 self.res_plong.add_variable(var_name)
         self.res_plong.add_section(REACH_NAME, pk)
         all_values.append(values)
     self.res_plong.add_frame(time, {REACH_NAME: np.array(all_values)})
コード例 #2
0
 def get_variable_with_section(self, reach_name, section, varname):
     pos_var = self.variable_names.index(varname)
     try:
         pos_section = self.model[reach_name].index(section)
     except ValueError:
         raise CourlisException('River reach `%s` not found (among: %s)' % (reach_name, list(self.model.keys())))
     result = []
     for time in self.time_serie:
         result.append(self.data[time][reach_name][pos_section, pos_var])
     return np.array(result)
コード例 #3
0
 def __enter__(self):
     for i, encoding in enumerate(ReadOptFile.ENCODINGS):
         try:
             self.file = open(self.filename, 'r', encoding=encoding)
             self.lines = self.file.readlines()
             break
         except UnicodeDecodeError as e:
             if i == len(self.filename) - 1:
                 raise CourlisException("Encoding not supported\n%s" % e)
     self._read_data()
     return self
コード例 #4
0
 def error(self, message, show_line=True):
     error_message = message + '\n'
     if show_line:
         error_message += 'Guilty line n°%i:\n' % self.current_line_id
         error_message += self.lines[self.current_line_id - 1].rstrip('\n')
     raise CourlisException(error_message)
コード例 #5
0
 def add_frame(self, time, values):
     if time in self.time_serie:
         raise CourlisException('Time %f already exists' % time)
     self.data[time] = values
     self.time_serie.append(time)
     self.nb_frames += 1
コード例 #6
0
 def add_variable(self, varname):
     if varname in self.variable_names:
         raise CourlisException('Variable `%s` already exists' % varname)
     self.variable_names.append(varname)
     self.nb_variables += 1