コード例 #1
0
ファイル: measurements.py プロジェクト: ecabuk/vlf
    def plot_profile(self):
        if not self.canvas_initiated:
            self.init_profile_canvas()

        data = {}

        for station in DB_SESSION.query(Station).with_parent(self.profile).order_by(Station.point.asc()):
            distance = int(self.profile.interval) * (int(station.point) - 1)
            for measurement in station.measurements:
                freq = '%.2f' % measurement.freq
                if freq not in data:
                    data[freq] = [[], [], []]
                data[freq][0].append(distance)
                data[freq][1].append(measurement.in_phase)
                data[freq][2].append(measurement.quadrature)

        for f in data:
            self.axes.plot(data[f][0], data[f][1], label="%.2f kHz IP" % float(f))
            self.axes.hold(True)
            self.axes.plot(data[f][0], data[f][2], label="%.2f kHz OP" % float(f))
            self.axes.hold(True)
        self.axes.hold(False)

        # Title
        self.figure.suptitle('Profile #%d' % (
            int(self.profile.id)
        ))

        self.axes.grid(True, which='both')

        self.axes.set_xlabel(translate('MeasurementsView', 'Distance'))
        self.axes.set_ylabel(translate('MeasurementsView', '% HS/HP'))

        self.axes.legend(loc='upper right', shadow=True)
コード例 #2
0
ファイル: command.py プロジェクト: Javran/twig
def lookForCommand(cmd):
	# before looking up, translate cmd if I can recognize what it is
	cmd = translate( cmd, twig_command.alias_table)
	cmd = translate( cmd, twitter_command.alias_table)
	
	# first we do some introspect to find methods in module twig_command
	# a valid function should have a leading 'cmd'
	valid_function = lambda f: \
				inspect.isfunction(f) and \
				f.__name__[:3] == 'cmd' and \
				f.__name__[3:] != ''
	func_list = inspect.getmembers( twig_command, valid_function )

	# check first if we have the required method
	# commands are not case sensive
	for func_name, func in func_list:
		if func_name[3:].lower() == cmd.lower():
			return func

	# a valid method should begin with 'twiCmd'
	valid_method = lambda m: \
				inspect.ismethod(m) and \
				m.__name__[:6] == 'twiCmd' and \
				m.__name__[6:] != ''
	meth_list = inspect.getmembers( twitter_command.TwitterAPIWrapper, valid_method )

	# check if required method is inside TwitterAPIWrapper
	# commands are not case sensive
	for meth_name, meth in meth_list:
		if meth_name[6:].lower() == cmd.lower():
			return meth
	return None
コード例 #3
0
 def _translate_text(self, source):
     trans_obj = self.pool.get("ir.translation")
     trans = trans_obj.search(
         self.cr,
         self.uid,
         [
             ("res_id", "=", self.report_id),
             ("type", "=", "report"),
             ("src", "=", source),
             ("lang", "=", self.context["lang"] or self.context["user_lang"]),
         ],
     )
     if not trans:
         # trans_obj.create(self.cr, self.uid, {'src':source,'type':'report','lang':self._get_lang(),'res_id':self.report_id,'name':('ir.actions.report.xml,%s' % source)[:128]})
         trans_obj.create(
             self.cr,
             self.uid,
             {
                 "src": source,
                 "type": "report",
                 "lang": self._get_lang(),
                 "res_id": self.report_id,
                 "name": "ir.actions.report.xml",
             },
         )
     return translate(self.cr, "ir.actions.report.xml", "report", self._get_lang(), source) or source
コード例 #4
0
def checkMessages(phenny, input):  #filter through each message in the channel
    if input.sender in phenny.channels:
        if input.groups()[0][0] == '.' or (
                phenny.nick + ': '
                or phenny.nick + ', ') in input.groups()[0].split(' ')[0]:
            #do not translate if it is a begiak function
            return

        translations = {}
        for i in follows:
            if caseless_equal(i.nick, input.nick):
                if (i.nick, i.dir) not in translations:
                    #this user is being followed, translate them
                    direction = '-'.join(i.dir)
                    translations[(i.nick,
                                  i.dir)] = translate(phenny, input.group(0),
                                                      i.dir[0], i.dir[1])
                    translations[(i.nick,
                                  i.dir)] = translations[(i.nick,
                                                          i.dir)].replace(
                                                              '*', '')
                if translations[(i.nick, i.dir)] != input.group(0):
                    #don't bother sending a notice if the input is the same as the output
                    phenny.msg(
                        i.sender, i.nick + ' (' + '-'.join(i.dir) + '): ' +
                        translations[(i.nick, i.dir)])
コード例 #5
0
ファイル: twig_command.py プロジェクト: Javran/twig
def cmdAlias(account, params, r):
	"""
		# help
		% get alias of a give command
		% format: .alias <cmd>
		% cmd is the command name without leading '.'
		% e.g.: .alias @
		% a list will be returned:
		% # alias:
		% A [@,at,mention]
		% which means '.@' '.at' and '.mention' are all identical
		* when called as function, return the alias list
	"""
	if len( params ) == 0:
		r.l("!bad argument")
		return
	table = {}
	table.update( twitter_command.alias_table )
	table.update( twig_command.alias_table )
	cmd = tools.translate( params, table )
	alist = [cmd]
	for k, v in table.iteritems():
		if v == cmd:
			alist.append( k )
	alist.sort()
	r.l( ("cmd", cmd) )
	r.l( "alias:" )
	r.l( alist )
	return alist
コード例 #6
0
 def _translate_text(self, source):
     trans_obj = self.pool.get('ir.translation')
     trans = trans_obj.search(self.cr,self.uid,[('res_id','=',self.report_id),('type','=','report'),('src','=',source),('lang','=',self.context['lang'] or self.context['user_lang'])])
     if not trans:
         #trans_obj.create(self.cr, self.uid, {'src':source,'type':'report','lang':self._get_lang(),'res_id':self.report_id,'name':('ir.actions.report.xml,%s' % source)[:128]})
         trans_obj.create(self.cr, self.uid, {'src':source,'type':'report','lang':self._get_lang(),'res_id':self.report_id,'name':'ir.actions.report.xml'})
     return translate(self.cr, 'ir.actions.report.xml', 'report', self._get_lang(), source) or source
コード例 #7
0
def apertium_translate(phenny, input):
    '''Translates a phrase using APy.'''
    pairRE = langRE + r'-' + langRE
    line = strict_check(
        r'((?:' + pairRE + r'(?:\|' + pairRE + r')*' + r' ?)+)\s+(.*)',
        input.group(2), apertium_translate)
    if (len(line.group(2)) > 350) and (not input.admin):
        raise GrumbleError('Phrase must be under 350 characters.')

    blocks = line.group(1).split(' ')
    for block in blocks:
        pairs = block.split('|')
        translated = line.group(2)
        for (input_lang, output_lang) in [pair.split('-') for pair in pairs]:
            if input_lang == output_lang:
                raise GrumbleError(
                    'Stop trying to confuse me! Pick different languages ;)')
            try:
                translated = web.decode(
                    translate(phenny, translated, input_lang, output_lang))
            except GrumbleError as err:
                phenny.say('{:s}-{:s}: {:s}'.format(input_lang, output_lang,
                                                    str(err)))
                return
        phenny.reply(web.decode(translated))
コード例 #8
0
 def _translate_text(self, source):
     trans_obj = self.pool.get('ir.translation')
     trans = trans_obj.search(self.cr,self.uid,[('res_id','=',self.report_id),('type','=','report'),('src','=',source),('lang','=',self.context['lang'] or self.context['user_lang'])])
     if not trans:
         #trans_obj.create(self.cr, self.uid, {'src':source,'type':'report','lang':self._get_lang(),'res_id':self.report_id,'name':('ir.actions.report.xml,%s' % source)[:128]})
         trans_obj.create(self.cr, self.uid, {'src':source,'type':'report','lang':self._get_lang(),'res_id':self.report_id,'name':'ir.actions.report.xml'})
     return translate(self.cr, 'ir.actions.report.xml', 'report', self._get_lang(), source) or source
コード例 #9
0
ファイル: inclinometer.py プロジェクト: ecabuk/vlf
 def _confirm_box(msg):
     confirm = QtGui.QMessageBox()
     confirm.setIcon(QtGui.QMessageBox.Warning)
     confirm.setWindowTitle(translate('InclinometerView', 'Confirmation'))
     confirm.setText(msg)
     confirm.setStandardButtons(QtGui.QMessageBox.No | QtGui.QMessageBox.Yes)
     confirm.setDefaultButton(QtGui.QMessageBox.No)
     return confirm.exec()
コード例 #10
0
ファイル: standard_report.py プロジェクト: Yajo/c2c-rd-addons
 def _(self, source):
     """ 
         Handle translations. 
         Because cr and context['lang'] are not available in local context (but in object properties) you can not use c2c_reporting_tools.translation._() in reports
         Use self._() insead
     """
     frame = inspect.stack()[1][0]        
     filename= frame.f_code.co_filename
     result = tools.translate(self.cr, filename, 'code', self.lang, source) or source 
     return result
コード例 #11
0
 def __call__(self, source):
     frame = inspect.stack()[1][0]
     cr = frame.f_locals.get('cr')
     lang = frame.f_locals.get('context', {}).get('lang', False)
     filename= frame.f_code.co_filename
     if not (lang and cr):
         result = source
     else:
         result = tools.translate(cr, filename, 'code', lang, source) or source
     return result
コード例 #12
0
ファイル: measurements.py プロジェクト: ecabuk/vlf
    def measure(self):
        # Do not run if there is working workers
        if self.is_measuring():
            return

        # Change measure button
        self.button_measure.setText(translate("MeasurementsView", 'Working'))
        self.button_measure.setEnabled(False)
        self.button_measure.setStyleSheet('color: red;')

        # Force Qt to change button
        QtCore.QCoreApplication.processEvents()

        # Delete old measurements
        for measurement in self.station.measurements:
            DB_SESSION.delete(measurement)
        DB_SESSION.commit()

        frequencies = self.get_selected_frequencies()
        for freq in frequencies:
            Process(target=self.worker,
                    args=(freq, self.worker_count, self.worker_lock, self.tilt_x, self.tilt_y)).start()

        # Wait for the worker initialization
        sleep(5)

        # TODO: Add a timeout to prevent dead lock
        while True:
            if not self.is_measuring():
                break
            sleep(1)

        self.station.time = datetime.now()
        DB_SESSION.commit()
        self.model.set_station(self.station)

        # Set measure button
        self.button_measure.setText(translate("MeasurementsView", 'Remeasure'))
        self.button_measure.setEnabled(True)
        self.button_measure.setStyleSheet('')

        # Enable next station button
        self.button_next_station.setEnabled(True)
コード例 #13
0
 def __call__(self, source):
     frame = inspect.stack()[1][0]
     cr = frame.f_locals.get('cr')
     lang = frame.f_locals.get('context', {}).get('lang', False)
     filename = frame.f_code.co_filename
     if not (lang and cr):
         result = source
     else:
         result = tools.translate(cr, filename, 'code', lang,
                                  source) or source
     return result
コード例 #14
0
 def _(self, source):
     """ 
         Handle translations. 
         Because cr and context['lang'] are not available in local context (but in object properties) you can not use c2c_reporting_tools.translation._() in reports
         Use self._() insead
     """
     frame = inspect.stack()[1][0]
     filename = frame.f_code.co_filename
     result = tools.translate(self.cr, filename, 'code', self.lang,
                              source) or source
     return result
コード例 #15
0
ファイル: measurements.py プロジェクト: ecabuk/vlf
    def set_station(self, station):
        self.station = station

        # Set table model
        self.model.set_station(station)

        # Current Point
        self.label_current_point_val.setText(str(self.station.point))

        # Distance
        self.label_distance_val.setText("%d m" % (int(self.profile.interval) * (int(self.station.point) - 1)))

        # Frames
        self.label_frames_val.setText(str(self.station.frames))

        # Resolution
        self.label_resolution_val.setText(str(self.station.resolution))

        # Disable next button if next station not exist
        self.button_next_station.setEnabled(bool(self.station.has_measurements()))

        # Disable prev button if prev station not exist
        prev_station = self.get_prev_station()
        self.button_prev_station.setEnabled(bool(prev_station))

        # (Re)Measure Button Text
        self.button_measure.setText(
            translate("MeasurementsView", 'Remeasure') if self.station.has_measurements()
            else translate("MeasurementsView", 'Measure')
        )

        # Selected Transmitters
        for row_id in range(self.tx_model.rowCount()):
            idx = self.tx_model.index(row_id, 1)
            if self.tx_model.itemData(idx) in self.get_selected_frequencies():
                self.table_tx.selectionModel().select(
                    idx,
                    QtGui.QItemSelectionModel.Select | QtGui.QItemSelectionModel.Rows
                )
コード例 #16
0
ファイル: eleda.py プロジェクト: KaiCode2/phenny
def test(phenny, input): #filter through each message in the channel
	if input.sender == '#apertium' or input.sender == '#apertium_test':
		if input.groups()[0][0] == '.' or 'begiak: ' in input.groups()[0].split(' ')[0]:
			#do not translate if it is a begiak function
			return
		
		for i in follows:
			if i.nick != '':
				if i.nick == input.nick:
					#this user is being followed, translate them
					direction = '-'.join(i.dir)
					translation = translate(input.group(0), i.dir[0], i.dir[1])
					translation = translation.replace('*', '')
					if translation != input.group(0):
						#don't bother sending a notice if the input is the same as the output
						phenny.write(['NOTICE', i.sender], i.nick + ' (' + '-'.join(i.dir) + '): ' + translation)
コード例 #17
0
def apertium_translate(phenny, input):
    '''Translates a phrase using APy.'''
    line = strict_check(r'((?:' + langRE + r'-' + langRE + r' ?)+)\s+(.*)',
                        input.group(2), apertium_translate)
    if (len(line.group(2)) > 350) and (not input.admin):
        raise GrumbleError('Phrase must be under 350 characters.')

    pairs = [tuple(langs.split('-')) for langs in line.group(1).split(' ')]
    for (input_lang, output_lang) in pairs:
        if input_lang == output_lang:
            raise GrumbleError('Stop trying to confuse me! Pick different languages ;)')
        try:
            translated = translate(phenny, line.group(2), input_lang, output_lang)
            phenny.reply(web.decode(translated))
        except GrumbleError as err:
            phenny.say('{:s}-{:s}: {:s}'.format(input_lang, output_lang, str(err)))
コード例 #18
0
def apertium_translate(phenny, input):
    """Translates a phrase using the apertium API"""
    line = input.group(2)
    if not line:
        raise GrumbleError("Need something to translate!")
    #line = line.encode('utf-8')

    pairs = []
    guidelines = line.split('|')
    if len(guidelines) > 1:
        for guideline in guidelines[1:]:
            #phenny.say(guideline)
            pairs.append(guideline.strip().split('-'))
    guidelines = guidelines[0]
    #phenny.say("guidelines: "+str(guidelines))
    stuff = re.search('(.*) ([a-z]+-[a-z]+)', guidelines)
    #phenny.say('groups: '+str(stuff.groups()))
    pairs.insert(0, stuff.group(2).split('-'))
    translate_me = stuff.group(1)
    #phenny.say(str(pairs))

    #output_lang = line.split(' ')[-1]
    #input_lang = line.split(' ')[-2]
    #translate_me = ' '.join(line.split(' ')[:-2])

    if (len(translate_me) > 350) and (not input.admin):
        raise GrumbleError('Phrase must be under 350 characters.')

    msg = translate_me
    finalmsg = False
    translated = ""
    for (input_lang, output_lang) in pairs:
        if input_lang == output_lang:
            raise GrumbleError(
                'Stop trying to confuse me!  Pick different languages ;)')
        msg = translate(msg, input_lang, output_lang)
        if not msg:
            raise GrumbleError('The %s to %s translation failed, sorry!' %
                               (input_lang, output_lang))
        msg = web.decode(msg)  # msg.replace('&#39;', "'")
        this_translated = "(%s-%s) %s" % (input_lang, output_lang, msg)
        translated = msg

    #if not finalmsg:
    #   finalmsg = translated
    #phenny.reply(finalmsg)
    phenny.reply(translated)
コード例 #19
0
ファイル: eleda.py プロジェクト: frankier/phenny
def checkMessages(phenny, input): #filter through each message in the channel
	if input.sender in phenny.channels:
		if input.groups()[0][0] == '.' or (phenny.nick + ': ' or phenny.nick + ', ') in input.groups()[0].split(' ')[0]:
			#do not translate if it is a begiak function
			return

		translations = {}
		for i in follows:
			if i.nick == input.nick:
				if (i.nick, i.dir) not in translations:
					#this user is being followed, translate them
					direction = '-'.join(i.dir)
					translations[(i.nick, i.dir)] = translate(phenny, input.group(0), i.dir[0], i.dir[1])
					translations[(i.nick, i.dir)] = translations[(i.nick, i.dir)].replace('*', '')
				if translations[(i.nick, i.dir)] != input.group(0):
					#don't bother sending a notice if the input is the same as the output
					phenny.msg(i.sender, i.nick + ' (' + '-'.join(i.dir) + '): ' + translations[(i.nick, i.dir)])
コード例 #20
0
ファイル: apertium_translate.py プロジェクト: KaiCode2/phenny
def apertium_translate(phenny, input): 
   """Translates a phrase using the apertium API"""
   line = input.group(2)
   if not line:
      raise GrumbleError("Need something to translate!")
   #line = line.encode('utf-8')

   pairs = []
   guidelines = line.split('|')
   if len(guidelines) > 1:
      for guideline in guidelines[1:]:
         #phenny.say(guideline)
         pairs.append(guideline.strip().split('-'))
   guidelines = guidelines[0]
   #phenny.say("guidelines: "+str(guidelines))
   stuff = re.search('(.*) ([a-z]+-[a-z]+)', guidelines)
   #phenny.say('groups: '+str(stuff.groups()))
   pairs.insert(0, stuff.group(2).split('-'))
   translate_me = stuff.group(1)
   #phenny.say(str(pairs))

   #output_lang = line.split(' ')[-1]
   #input_lang = line.split(' ')[-2]
   #translate_me = ' '.join(line.split(' ')[:-2])

   if (len(translate_me) > 350) and (not input.admin): 
      raise GrumbleError('Phrase must be under 350 characters.')

   msg = translate_me
   finalmsg = False
   translated = ""
   for (input_lang, output_lang) in pairs:
      if input_lang == output_lang: 
         raise GrumbleError('Stop trying to confuse me!  Pick different languages ;)')
      msg = translate(msg, input_lang, output_lang)
      if not msg:
         raise GrumbleError('The %s to %s translation failed, sorry!' % (input_lang, output_lang))
      msg = web.decode(msg) # msg.replace('&#39;', "'")
      this_translated = "(%s-%s) %s" % (input_lang, output_lang, msg)
      translated = msg

   #if not finalmsg:
   #   finalmsg = translated
   #phenny.reply(finalmsg)
   phenny.reply(translated)
コード例 #21
0
    def add_row(self, table, point, point_row) :
        [reference, pack_comment, pack_sampling_comment, J21_comment, metal_weight, organic_weight, date] = point
        comment = (pack_comment if pack_comment else '') + '\t ' + (pack_sampling_comment if pack_sampling_comment else '') + '\t ' + (J21_comment if J21_comment else '')
            
        filtered_comment = ''
        if comment!='' :
            dissociated_comment = [translate(information).replace("\n",", ") for information in comment.split("\t")]
            need_to_be_removed = []
            for information in dissociated_comment:
                if information!="":
                    if "Scan" in information or "#" in information or 'RAS' in information or 'ras' in information:
                        need_to_be_removed.append(information)
                    else :
                        try :
                            int(information)
                            need_to_be_removed.append(information)
                        except ValueError :
                            pass
            for element in need_to_be_removed:
                dissociated_comment.remove(element)
            if len(dissociated_comment):
                filtered_comment = ', '.join(dissociated_comment)
        if metal_weight and metal_weight<500:
            filtered_comment += "Métaux < 500mg"
        if organic_weight and organic_weight<2500:
            filtered_comment += "Orga < 2500mg"
        
        table.cell(point_row*2+1, 0).width = self.table_width 
        table.cell(point_row*2+1, 0).merge(table.cell(point_row*2+2, 0)).paragraphs[0].add_run(reference).alignment = 1
        table.cell(point_row*2+1, 1).width = self.table_width * 0.02
        table.cell(point_row*2+1, 1).paragraphs[0].add_run("Mét")
        table.cell(point_row*2+2, 1).paragraphs[0].add_run("Orga")
        table.cell(point_row*2+1, 2).width = self.table_width * 0.02
        table.cell(point_row*2+1, 2).paragraphs[0].add_run("1" if metal_weight else "0")
        table.cell(point_row*2+2, 2).paragraphs[0].add_run("1" if organic_weight else "0")
        table.cell(point_row*2+1, 3).merge(table.cell(point_row*2+2, 3))
        table.cell(point_row*2+1, 3).width = self.table_width *0.8
        table.cell(point_row*2+1, 4).width = self.table_width * 0.02

        table.cell(point_row*2+1, 5).width = self.table_width * 0.6
        table.cell(point_row*2+1, 5).merge(table.cell(point_row*2+2, 5)).paragraphs[0].add_run(filtered_comment)
        table.cell(point_row*2+1, 6).width = self.table_width * 0.02
        table.cell(point_row*2+1, 6).merge(table.cell(point_row*2+2, 6))
コード例 #22
0
ファイル: inclinometer.py プロジェクト: ecabuk/vlf
 def on_button_zero_set_clicked(self):
     ret = self._confirm_box(
         translate('InclinometerView', 'Do you really want to set the current position to zero?'))
     if ret == QtGui.QMessageBox.Yes:
         inclinometer.set_zero()
コード例 #23
0
def create_survie_dataframe(campaigns_dict, chemistry_measurepoint_list,
                            pack_list):
    '''
    Créé une dataframe qui contient les données de l'onglet 'survie' de l'Excel
    :param head_dataframe: cf initialization.py
    :param list_campaigns: list des references de campagne
    :param dict_mp: {'ref_campagne': [mp, ...], ...}
    :return:
    '''
    global_matrix = []
    for campaign_id in campaigns_dict:
        matrix = []
        survival_dict = survival(pack_list)
        for place_id in campaigns_dict[campaign_id]["place"]:
            for measurepoint_id in campaigns_dict[campaign_id]["place"][
                    place_id]["measurepoint"]:
                if measurepoint_id in chemistry_measurepoint_list:
                    two_chemistry_pack_in_measurepoint = False
                    measurepoint_done = False
                    for pack_id in campaigns_dict[campaign_id]["place"][
                            place_id]["measurepoint"][measurepoint_id]["pack"]:
                        if campaigns_dict[campaign_id]["place"][place_id][
                                "measurepoint"][measurepoint_id]["pack"][
                                    pack_id] == 'chemistry':
                            if "duplicate" in campaigns_dict[campaign_id]["place"][
                                    place_id] and "chemistry" in campaigns_dict[
                                        campaign_id]["place"][place_id][
                                            "duplicate"] and len(
                                                list(
                                                    campaigns_dict[campaign_id]
                                                    ["place"][place_id]
                                                    ["duplicate"]
                                                    ["chemistry"].keys())) > 1:
                                number = float(
                                    str(campaigns_dict[campaign_id]["place"]
                                        [place_id]["number"]) + '.' +
                                    str(campaigns_dict[campaign_id]["place"]
                                        [place_id]["measurepoint"]
                                        [measurepoint_id]["number"]))
                            elif "duplicate" in campaigns_dict[campaign_id][
                                    "place"][
                                        place_id] and "chemistry" in campaigns_dict[
                                            campaign_id]["place"][place_id][
                                                "duplicate"] and len(
                                                    list(campaigns_dict[
                                                        campaign_id]["place"]
                                                         [place_id]
                                                         ["duplicate"]
                                                         ["chemistry"].keys())
                                                ) == 1:
                                number = campaigns_dict[campaign_id]["place"][
                                    place_id]["number"]
                                two_chemistry_pack_in_measurepoint = True
                            else:
                                number = campaigns_dict[campaign_id]["place"][
                                    place_id]["number"]
                            if two_chemistry_pack_in_measurepoint:
                                if measurepoint_done and matrix[-1][-1] == 'ND':
                                    matrix[-1] = [
                                        campaigns_dict[campaign_id]["number"],
                                        number,
                                        translate(campaigns_dict[campaign_id]
                                                  ["place"][place_id]["name"]),
                                        campaigns_dict[campaign_id]["place"]
                                        [place_id]["agency"] if "agency"
                                        in campaigns_dict[campaign_id]["place"]
                                        [place_id] else 'ND',
                                        survival_dict[pack_id]
                                        if pack_id in survival_dict else 'ND'
                                    ]
                                elif not measurepoint_done:
                                    measurepoint_done = True
                                    matrix.append([
                                        campaigns_dict[campaign_id]["number"],
                                        number,
                                        translate(campaigns_dict[campaign_id]
                                                  ["place"][place_id]["name"]),
                                        campaigns_dict[campaign_id]["place"]
                                        [place_id]["agency"] if "agency"
                                        in campaigns_dict[campaign_id]["place"]
                                        [place_id] else 'ND',
                                        survival_dict[pack_id]
                                        if pack_id in survival_dict else 'ND'
                                    ])
                            else:
                                matrix.append([
                                    campaigns_dict[campaign_id]["number"],
                                    number,
                                    translate(campaigns_dict[campaign_id]
                                              ["place"][place_id]["name"]),
                                    campaigns_dict[campaign_id]["place"]
                                    [place_id]["agency"]
                                    if "agency" in campaigns_dict[campaign_id]
                                    ["place"][place_id] else 'ND',
                                    survival_dict[pack_id]
                                    if pack_id in survival_dict else 'ND'
                                ])

        global_matrix.append(matrix)

    if len(global_matrix) > 1:
        list_dataframe = []
        for campaign in global_matrix:
            df = pd.DataFrame(campaign,
                              columns=[
                                  'Campagne', 'Numéro', 'Station de mesure',
                                  'Code Agence', 'Survie biotest chimie'
                              ])
            list_dataframe.append(df)
        df_values = pd.concat(list_dataframe)
    else:
        df_values = pd.DataFrame(global_matrix[0])
        df_values.columns = [
            'Campagne', 'Numéro', 'Station de mesure', 'Code Agence',
            'Survie biotest chimie'
        ]
    df_survie = df_values.sort_values(['Numéro', 'Campagne'])

    return df_survie
コード例 #24
0
def load_data(reference):
    campaigns_dict, measurepoint_list, chemistry_measurepoint_list, chemistry_pack_list, _, _, tox_measurepoint_list, _, agency_code_list, J_dict = initialize(
        [reference])

    agency_data = QueryScript(
        f"SELECT code, network, hydroecoregion, latitude, longitude FROM {env.DATABASE_RAW}.Agency  WHERE code IN {tuple(agency_code_list) if len(agency_code_list)>1 else '('+(str(agency_code_list[0]) if len(agency_code_list) else '0')+')'};"
    ).execute()
    context_data = QueryScript(
        f"SELECT measurepoint_id, recordedAt, temperature, conductivity, ph, oxygen, type, comment, step, barrel FROM {env.DATABASE_RAW}.MeasureExposureCondition WHERE measurepoint_id IN {tuple(measurepoint_list) if len(measurepoint_list)>1 else '('+str(measurepoint_list[0])+')'}"
    ).execute()
    temperatures_data = QueryScript(
        f"SELECT measurepoint_id, sensor1_min, sensor1_average, sensor1_max, sensor2_min, sensor2_average, sensor2_max, sensor3_min, sensor3_average, sensor3_max, all_sensor_average   FROM {env.DATABASE_TREATED}.average_temperature WHERE version=  {env.CHOSEN_VERSION()} and measurepoint_id IN {tuple(measurepoint_list) if len(measurepoint_list)>1 else '('+str(measurepoint_list[0])+')'}"
    ).execute()
    geographic_data = QueryScript(
        f"SELECT id, latitudeSpotted, longitudeSpotted, lambertX, lambertY, city, zipcode, stream FROM {env.DATABASE_RAW}.Measurepoint WHERE id IN {tuple(measurepoint_list) if len(measurepoint_list)>1 else '('+str(measurepoint_list[0])+')'}"
    ).execute()
    place_reference_data = QueryScript(
        f"SELECT Place.id, Place.reference FROM {env.DATABASE_RAW}.Measurepoint JOIN {env.DATABASE_RAW}.Place ON Place.id= Measurepoint.place_id WHERE Measurepoint.id IN {tuple(measurepoint_list) if len(measurepoint_list)>1 else '('+str(measurepoint_list[0])+')'}"
    ).execute()
    conform_threshold = QueryScript(
        f"SELECT parameter, min, max FROM {env.DATABASE_TREATED}.r1 WHERE version={env.CHOSEN_VERSION()}"
    ).execute()
    conform_chemistry_portion_test = QueryScript(
        f"SELECT Measurepoint.id, sampling_weight, organic_total_weight, (sampling_weight - metal_tare_bottle_weight)>500, (organic_total_weight-organic_tare_bottle_weight)>2500 FROM {env.DATABASE_RAW}.Pack JOIN {env.DATABASE_RAW}.Measurepoint ON Measurepoint.id=Pack.measurepoint_id WHERE Measurepoint.id IN {tuple(measurepoint_list) if len(measurepoint_list)>1 else '('+str(measurepoint_list[0])+')'} and Pack.nature='chemistry'"
    ).execute()
    chemistry_survival = survival(chemistry_pack_list)

    place_dict = {}
    year = None
    week_start_number = None
    week_end_number = None
    for campaign_id in campaigns_dict:
        place_dict = campaigns_dict[campaign_id]["place"]
    for place_id in place_dict:
        for place, reference in place_reference_data:
            if place_id == place:
                place_dict[place_id]["reference"] = reference
                place_dict[place_id]["reference_photo"] = f"{reference}-01"
            elif int(place_id) == place:
                number = round((place_id - int(place_id)) * 10)
                place_dict[place_id][
                    "reference_photo"] = f"{reference}-{number if number>9 else '0'+str(number) }"
        for code, network, hydroecoregion, latitudeTh, longitudeTh in agency_data:
            if "agency" in place_dict[place_id] and place_dict[place_id][
                    "agency"] == code:
                if network:
                    place_dict[place_id]["network"] = network
                if hydroecoregion:
                    place_dict[place_id]["hydroecoregion"] = hydroecoregion
                if latitudeTh:
                    place_dict[place_id]["latitudeTh"] = latitudeTh
                if longitudeTh:
                    place_dict[place_id]["longitudeTh"] = longitudeTh
        if "condition" not in place_dict[place_id]:
            place_dict[place_id]["condition"] = {
                "temperature_min": None,
                "temperature_max": None,
                "alimentation_average_temperature_min": None,
                "alimentation_average_temperature_max": None,
                "reproduction_average_temperature_min": None,
                "reproduction_average_temperature_max": None,
                "chemistry_average_temperature_min": None,
                "chemistry_average_temperature_max": None,
                "chemistry_temperature_max": None,
                "average_temperature": None,
                "J0": {},
                "J7": {},
                "J14": {},
                "J21": {},
                "JN": {}
            }
        place_dict[place_id]["not conform"] = []
        for measurepoint_id in place_dict[place_id]["measurepoint"]:

            ### Add chemistry _survival
            for pack_id in place_dict[place_id]["measurepoint"][
                    measurepoint_id]["pack"]:
                if chemistry_survival and pack_id in chemistry_survival:
                    place_dict[place_id][
                        "chemistry_survival"] = chemistry_survival[pack_id]
            ### Add temperature data
            for mp_id, sensor1_min, sensor1_average, sensor1_max, sensor2_min, sensor2_average, sensor2_max, sensor3_min, sensor3_average, sensor3_max, all_sensor_average in temperatures_data:
                if measurepoint_id == mp_id:

                    if sensor1_average:
                        if place_dict[place_id]["condition"][
                                "alimentation_average_temperature_min"]:
                            place_dict[place_id]["condition"][
                                "alimentation_average_temperature_min"] = min(
                                    sensor1_average,
                                    place_dict[place_id]["condition"]
                                    ["alimentation_average_temperature_min"])
                        else:
                            place_dict[place_id]["condition"][
                                "alimentation_average_temperature_min"] = sensor1_average
                        if place_dict[place_id]["condition"][
                                "alimentation_average_temperature_max"]:
                            place_dict[place_id]["condition"][
                                "alimentation_average_temperature_max"] = max(
                                    sensor1_average,
                                    place_dict[place_id]["condition"]
                                    ["alimentation_average_temperature_max"])
                        else:
                            place_dict[place_id]["condition"][
                                "alimentation_average_temperature_max"] = sensor1_average

                    if sensor2_average:
                        if place_dict[place_id]["condition"][
                                "reproduction_average_temperature_min"]:
                            place_dict[place_id]["condition"][
                                "reproduction_average_temperature_min"] = min(
                                    sensor2_average,
                                    place_dict[place_id]["condition"]
                                    ["reproduction_average_temperature_min"])
                        else:
                            place_dict[place_id]["condition"][
                                "reproduction_average_temperature_min"] = sensor2_average
                        if place_dict[place_id]["condition"][
                                "reproduction_average_temperature_max"]:
                            place_dict[place_id]["condition"][
                                "reproduction_average_temperature_max"] = max(
                                    sensor2_average,
                                    place_dict[place_id]["condition"]
                                    ["reproduction_average_temperature_max"])
                        else:
                            place_dict[place_id]["condition"][
                                "reproduction_average_temperature_max"] = sensor2_average

                    if sensor3_average:
                        if place_dict[place_id]["condition"][
                                "chemistry_average_temperature_min"]:
                            place_dict[place_id]["condition"][
                                "chemistry_average_temperature_min"] = min(
                                    sensor3_average,
                                    place_dict[place_id]["condition"]
                                    ["chemistry_average_temperature_min"])
                        else:
                            place_dict[place_id]["condition"][
                                "chemistry_average_temperature_min"] = sensor3_average
                        if place_dict[place_id]["condition"][
                                "chemistry_average_temperature_max"]:
                            place_dict[place_id]["condition"][
                                "chemistry_average_temperature_max"] = max(
                                    sensor3_average,
                                    place_dict[place_id]["condition"]
                                    ["chemistry_average_temperature_max"])
                        else:
                            place_dict[place_id]["condition"][
                                "chemistry_average_temperature_max"] = sensor3_average
                    if sensor3_max:
                        if place_dict[place_id]["condition"][
                                "chemistry_temperature_max"]:
                            place_dict[place_id]["condition"][
                                "chemistry_temperature_max"] = max(
                                    sensor3_max, place_dict[place_id]
                                    ["condition"]["chemistry_temperature_max"])
                        else:
                            place_dict[place_id]["condition"][
                                "chemistry_temperature_max"] = sensor3_max
                    if sensor1_min or sensor2_min or sensor3_min:
                        last_value, sensor1_min, sensor2_min, sensor3_min = [
                            element if element != None else 100
                            for element in [
                                place_dict[place_id]["condition"]
                                ["temperature_min"], sensor1_min, sensor2_min,
                                sensor3_min
                            ]
                        ]
                        place_dict[place_id]["condition"][
                            "temperature_min"] = round(
                                min(last_value, sensor1_min, sensor2_min,
                                    sensor3_min), 1)
                    if sensor1_max or sensor2_max or sensor3_max:
                        last_value, sensor1_max, sensor2_max, sensor3_max = [
                            element if element != None else -100
                            for element in [
                                place_dict[place_id]["condition"]
                                ["temperature_max"], sensor1_max, sensor2_max,
                                sensor3_max
                            ]
                        ]
                        place_dict[place_id]["condition"][
                            "temperature_max"] = max(last_value, sensor1_max,
                                                     sensor2_max, sensor3_max)
                    if all_sensor_average and not place_dict[place_id][
                            "condition"]["average_temperature"]:
                        place_dict[place_id]["condition"][
                            "average_temperature"] = round(
                                all_sensor_average, 1)

            ### Add context data
            for mp_id, recordedAt, temperature, conductivity, ph, oxygen, barrel_type, comment, step, barrel in context_data:
                not_good_one = False
                if step == 50:
                    if barrel != "R0":
                        not_good_one = True
                if measurepoint_id == mp_id and not not_good_one:
                    if barrel_type:
                        place_dict[place_id]["barrel_type"] = barrel_type
                    for J in J_dict[place_id]:
                        if J != "J28" and J != "N" and J_dict[place_id][J][
                                "full_date"] and J_dict[place_id][J][
                                    "full_date"] == recordedAt:
                            if not week_start_number:
                                week_start_number = J_dict[place_id][J][
                                    "full_date"].isocalendar()[1]
                            elif J_dict[place_id][J]["full_date"].isocalendar(
                            )[1] < week_start_number:
                                week_start_number = J_dict[place_id][J][
                                    "full_date"].isocalendar()[1]
                            if not week_end_number:
                                week_end_number = J_dict[place_id][J][
                                    "full_date"].isocalendar()[1]
                            elif J_dict[place_id][J]["full_date"].isocalendar(
                            )[1] > week_end_number:
                                week_end_number = J_dict[place_id][J][
                                    "full_date"].isocalendar()[1]
                            if conductivity:
                                place_dict[place_id]["condition"][J][
                                    "conductivity"] = conductivity
                            if ph:
                                place_dict[place_id]["condition"][J]["ph"] = ph
                            if oxygen:
                                place_dict[place_id]["condition"][J][
                                    "oxygen"] = oxygen
                            if temperature:
                                place_dict[place_id]["condition"][J][
                                    "temperature"] = temperature
                            if comment:
                                dissociated_comment = [
                                    translate(information).replace("\n", ", ")
                                    for information in comment.split("\t")
                                ]
                                need_to_be_removed = []
                                for information in dissociated_comment:
                                    if information != "":
                                        if (len(information) >= 10
                                                and information[:10]
                                                == "Vandalisme"
                                            ) or (len(information) >= 23
                                                  and information[:23]
                                                  == 'Système non récupérable'
                                                  ) or (len(information) >= 16
                                                        and information[:16]
                                                        == 'Perte du système'):
                                            place_dict[place_id][
                                                "vandalism"] = True
                                        if information[
                                                -1] == "%" or "Scan" in information or "#" in information or 'RAS' in information:
                                            need_to_be_removed.append(
                                                information)
                                        else:
                                            try:
                                                int(information)
                                                need_to_be_removed.append(
                                                    information)
                                            except ValueError:
                                                pass
                                for element in need_to_be_removed:
                                    dissociated_comment.remove(element)
                                if len(dissociated_comment):
                                    place_dict[place_id]["condition"][J][
                                        "comment"] = '. '.join(
                                            dissociated_comment)

                            place_dict[place_id]["condition"][J]["date"] = (
                                J_dict[place_id][J]["full_date"]
                            ).strftime("%d/%m/%Y %H:%M")
                            if not year:
                                year = J_dict[place_id][J]["full_date"].year

            ### Add geographic data
            for mp_id, latitudeSpotted, longitudeSpotted, lambertX, lambertY, city, zipcode, stream in geographic_data:
                if mp_id == measurepoint_id:
                    if latitudeSpotted and longitudeSpotted and not "latitudeSpotted" in place_dict[
                            place_id]:
                        place_dict[place_id][
                            "latitudeSpotted"] = f"{latitudeSpotted}".replace(
                                ',', '.')
                        place_dict[place_id][
                            "longitudeSpotted"] = f"{longitudeSpotted}".replace(
                                ',', '.')
                        lambertXSpotted, lambertYSpotted = convert_gps_into_lambert(
                            latitudeSpotted, longitudeSpotted)
                        place_dict[place_id][
                            "lambertXSpotted"] = f"{round(lambertXSpotted,1)}".replace(
                                ',', '.')
                        place_dict[place_id][
                            "lambertYSpotted"] = f"{round(lambertYSpotted,1)}".replace(
                                ',', '.')
                    if lambertX and lambertY and not "lambertX" in place_dict[
                            place_id]:
                        place_dict[place_id][
                            "lambertX"] = f"{lambertX}".replace(',', '.')
                        place_dict[place_id][
                            "lambertY"] = f"{lambertY}".replace(',', '.')

                    if city:
                        place_dict[place_id]["city"] = translate(city)
                    if zipcode:
                        place_dict[place_id]["zipcode"] = zipcode
                    if stream:
                        place_dict[place_id]["stream"] = f"{stream}".replace(
                            ',', '.')

            ### Add conformity
            for parameter, min_treshold, max_threshold in conform_threshold:

                ### chemistry conformity
                if measurepoint_id in chemistry_measurepoint_list:
                    if parameter == 'Température moyenne (chimie)':
                        if place_dict[place_id]["condition"][
                                "chemistry_average_temperature_min"] and min_treshold > place_dict[
                                    place_id]["condition"][
                                        "chemistry_average_temperature_min"]:
                            if not "min_average_temperature_chemistry" in place_dict[
                                    place_id]["not conform"]:
                                place_dict[place_id]["not conform"].append(
                                    "min_average_temperature_chemistry")
                        if place_dict[place_id]["condition"][
                                "chemistry_average_temperature_max"] and place_dict[
                                    place_id]["condition"][
                                        "chemistry_average_temperature_max"] > max_threshold:
                            if not "max_average_temperature_chemistry" in place_dict[
                                    place_id]["not conform"]:
                                place_dict[place_id]["not conform"].append(
                                    "max_average_temperature_chemistry")
                        if place_dict[place_id]["condition"][
                                "chemistry_average_temperature_max"] and place_dict[
                                    place_id]["condition"][
                                        "chemistry_temperature_max"] > 21:
                            if not "max_temperature_chemistry" in place_dict[
                                    place_id]["not conform"]:
                                place_dict[place_id]["not conform"].append(
                                    "max_temperature_chemistry")
                    if parameter == 'Oxygène (chimie)':
                        for J in place_dict[place_id]["condition"]:
                            if J[0] == 'J' and place_dict[place_id][
                                    "condition"][J] and "oxygen" in place_dict[
                                        place_id]["condition"][J]:
                                if place_dict[place_id]["condition"][J][
                                        "oxygen"] and min_treshold > place_dict[
                                            place_id]["condition"][J]["oxygen"]:
                                    if not "oxygen_chemistry" in place_dict[
                                            place_id]["not conform"]:
                                        place_dict[place_id][
                                            "not conform"].append(
                                                "oxygen_chemistry")
                    if parameter == 'Conductivité (chimie)':
                        for J in place_dict[place_id]["condition"]:
                            if J[0] == 'J' and place_dict[place_id][
                                    "condition"][
                                        J] and "conductivity" in place_dict[
                                            place_id]["condition"][J]:
                                if place_dict[place_id]["condition"][J][
                                        "conductivity"]:
                                    if min_treshold > place_dict[place_id][
                                            "condition"][J]["conductivity"]:
                                        if not "min_conductivity_chemistry" in place_dict[
                                                place_id]["not conform"]:
                                            place_dict[place_id][
                                                "not conform"].append(
                                                    "min_conductivity_chemistry"
                                                )
                                    if place_dict[place_id]["condition"][J][
                                            "conductivity"] > max_threshold:
                                        if not "max_conductivity_chemistry" in place_dict[
                                                place_id]["not conform"]:
                                            place_dict[place_id][
                                                "not conform"].append(
                                                    "max_conductivity_chemistry"
                                                )
                    if parameter == 'pH (chimie)':
                        for J in place_dict[place_id]["condition"]:
                            if J[0] == 'J' and place_dict[place_id][
                                    "condition"][J] and "ph" in place_dict[
                                        place_id]["condition"][J]:
                                if place_dict[place_id]["condition"][J]["ph"]:
                                    if min_treshold > place_dict[place_id][
                                            "condition"][J]["ph"]:
                                        if not "min_ph_chemistry" in place_dict[
                                                place_id]["not conform"]:
                                            place_dict[place_id][
                                                "not conform"].append(
                                                    "min_ph_chemistry")
                                    if place_dict[place_id]["condition"][J][
                                            "ph"] > max_threshold:
                                        if not "max_ph_chemistry" in place_dict[
                                                place_id]["not conform"]:
                                            place_dict[place_id][
                                                "not conform"].append(
                                                    "max_ph_chemistry")

                ### toxicity conformity
                if measurepoint_id in tox_measurepoint_list:
                    if parameter == 'Température moyenne (toxicité)':
                        if place_dict[place_id]["condition"][
                                "alimentation_average_temperature_min"]:
                            if min_treshold > place_dict[place_id]["condition"][
                                    "alimentation_average_temperature_min"]:
                                if not "min_temperature_alimentation" in place_dict[
                                        place_id]["not conform"]:
                                    place_dict[place_id]["not conform"].append(
                                        "min_temperature_alimentation")
                            if place_dict[place_id]["condition"][
                                    "alimentation_average_temperature_max"] > max_threshold:
                                if not "max_temperature_alimentation" in place_dict[
                                        place_id]["not conform"]:
                                    place_dict[place_id]["not conform"].append(
                                        "max_temperature_alimentation")
                        if place_dict[place_id]["condition"][
                                "reproduction_average_temperature_min"]:
                            if min_treshold > place_dict[place_id]["condition"][
                                    "reproduction_average_temperature_min"]:
                                if not "min_temperature_reproduction" in place_dict[
                                        place_id]["not conform"]:
                                    place_dict[place_id]["not conform"].append(
                                        "min_temperature_reproduction")
                            if place_dict[place_id]["condition"][
                                    "reproduction_average_temperature_max"] > max_threshold:
                                if not "max_temperature_reproduction" in place_dict[
                                        place_id]["not conform"]:
                                    place_dict[place_id]["not conform"].append(
                                        "max_temperature_reproduction")
                    if parameter == 'Oxygène (toxicité)':
                        for J in place_dict[place_id]["condition"]:
                            if J[0] == 'J' and place_dict[place_id][
                                    "condition"][J] and "oxygen" in place_dict[
                                        place_id]["condition"][J]:
                                if place_dict[place_id]["condition"][J][
                                        "oxygen"] and min_treshold > place_dict[
                                            place_id]["condition"][J]["oxygen"]:
                                    if not "oxygen_tox" in place_dict[
                                            place_id]["not conform"]:
                                        place_dict[place_id][
                                            "not conform"].append("oxygen_tox")
                    if parameter == 'Conductivité (toxicité)':
                        for J in place_dict[place_id]["condition"]:
                            if J[0] == 'J' and place_dict[place_id][
                                    "condition"][
                                        J] and "conductivity" in place_dict[
                                            place_id]["condition"][J]:
                                if place_dict[place_id]["condition"][J][
                                        "conductivity"]:
                                    if min_treshold > place_dict[place_id][
                                            "condition"][J]["conductivity"]:
                                        if not "min_conductivity_tox" in place_dict[
                                                place_id]["not conform"]:
                                            place_dict[place_id][
                                                "not conform"].append(
                                                    "min_conductivity_tox")
                                    if place_dict[place_id]["condition"][J][
                                            "conductivity"] > max_threshold:
                                        if not "max_conductivity_tox" in place_dict[
                                                place_id]["not conform"]:
                                            place_dict[place_id][
                                                "not conform"].append(
                                                    "max_conductivity_tox")
                    if parameter == 'pH (toxicité)':
                        for J in place_dict[place_id]["condition"]:
                            if J[0] == 'J' and place_dict[place_id][
                                    "condition"][J] and "ph" in place_dict[
                                        place_id]["condition"][J]:
                                if place_dict[place_id]["condition"][J]["ph"]:
                                    if min_treshold > place_dict[place_id][
                                            "condition"][J]["ph"]:
                                        if not "min_ph_tox" in place_dict[
                                                place_id]["not conform"]:
                                            place_dict[place_id][
                                                "not conform"].append(
                                                    "min_ph_tox")
                                    if place_dict[place_id]["condition"][J][
                                            "ph"] > max_threshold:
                                        if not "max_ph_tox" in place_dict[
                                                place_id]["not conform"]:
                                            place_dict[place_id][
                                                "not conform"].append(
                                                    "max_ph_tox")
            ### Add chemistry portion validation
            for mp_id, metal_weight, organic_weight, metal_result, organic_result in conform_chemistry_portion_test:
                if mp_id == measurepoint_id:
                    if metal_weight:
                        place_dict[place_id][
                            "chemistry metal portion validation"] = metal_result
                    if organic_weight:
                        place_dict[place_id][
                            "chemistry organic portion validation"] = organic_result

    return place_dict, year, week_start_number, week_end_number
コード例 #25
0
ファイル: repositoryInfo.py プロジェクト: Gaibe/KoGit
 def getRepoInfo(self):
     return translate(32023) + ' ' + self.name\
      + '\n' + translate(32024) + ' ' + self.ownerName\
      + '\n' + translate(32025) + ' ' + self.addonName\
      + '\n' + translate(32026) + ' ' + self.getRepoPathToAddon()
コード例 #26
0
ファイル: xl_tox.py プロジェクト: CDL-Biomae/report-generator
def create_tox_dataframe(campaigns_dict, measurepoint_list):
    list_dataframe = []
    data = QueryScript(f"SELECT measurepoint_id, round(male_survival_7_days), round(alimentation, 1), round(neurotoxicity, 1), round(female_survivor), number_days_exposition, number_female_concerned, round(percent_inhibition_fecondite, 1), number_female_analysis, molting_cycle,number_female_concerned_area,endocrine_disruption, molting_cycle_conformity, surface_retard_conformity FROM {env.DATABASE_TREATED}.toxtable WHERE version=  {env.CHOSEN_VERSION()} AND measurepoint_id IN {tuple(measurepoint_list) if len(measurepoint_list)>1 else '('+(str(measurepoint_list[0]) if len(measurepoint_list) else '0')+')'};").execute()
    for campaign_id in campaigns_dict:
        matrix =[]
        for place_id in campaigns_dict[campaign_id]["place"]:
            temp = [None]*20
            if "duplicate" in campaigns_dict[campaign_id]["place"][place_id] and ("alimentation" in campaigns_dict[campaign_id]["place"][place_id]["duplicate"] or "neurology" in campaigns_dict[campaign_id]["place"][place_id]["duplicate"] or "reproduction" in campaigns_dict[campaign_id]["place"][place_id]["duplicate"]):
                for measurepoint_id in campaigns_dict[campaign_id]["place"][place_id]["measurepoint"]:
                    number = float(str(campaigns_dict[campaign_id]["place"][place_id]["number"])+'.'+str(campaigns_dict[campaign_id]["place"][place_id]["measurepoint"][measurepoint_id]["number"]))
                    for mp_id, male_survival_7_days, alimentation, neurotoxicity, female_survivor, number_days_exposition, number_female_concerned, percent_inhibition_fecondite, number_female_analysis, molting_cycle, number_female_concerned_area, endocrine_disruption, molting_cycle_conformity, surface_retard_conformity in data :
                        if measurepoint_id==mp_id and measurepoint_id in measurepoint_list :
                            for index in range(4):
                                temp[index] = [campaigns_dict[campaign_id]["number"], number, translate(campaigns_dict[campaign_id]["place"][place_id]["name"]), campaigns_dict[campaign_id]["place"][place_id]["agency"] if "agency" in campaigns_dict[campaign_id]["place"][place_id] else 'ND'][index]
                            temp[5], temp[6] = male_survival_7_days if male_survival_7_days else 'NA', alimentation if male_survival_7_days else None
                            if neurotoxicity != None:
                                temp[7] = neurotoxicity if male_survival_7_days else None
                            if female_survivor or number_days_exposition:
                                for index in range(9,20):
                                    temp[index] = [female_survivor, number_days_exposition, number_female_concerned, percent_inhibition_fecondite if percent_inhibition_fecondite and female_survivor else "NA", number_female_analysis, molting_cycle, number_female_concerned_area, endocrine_disruption  if endocrine_disruption else "NA", measurepoint_id, molting_cycle_conformity, surface_retard_conformity][index-9]
                    matrix.append(temp)
                    temp = [None]*20
            else :
                number = campaigns_dict[campaign_id]["place"][place_id]["number"]
                for measurepoint_id in campaigns_dict[campaign_id]["place"][place_id]["measurepoint"]:
                    for mp_id, male_survival_7_days, alimentation, neurotoxicity, female_survivor, number_days_exposition, number_female_concerned, percent_inhibition_fecondite, number_female_analysis, molting_cycle, number_female_concerned_area, endocrine_disruption, molting_cycle_conformity, surface_retard_conformity in data :
                        if measurepoint_id==mp_id :
                            for index in range(4):
                                temp[index] = [campaigns_dict[campaign_id]["number"], number, translate(campaigns_dict[campaign_id]["place"][place_id]["name"]), campaigns_dict[campaign_id]["place"][place_id]["agency"] if "agency" in campaigns_dict[campaign_id]["place"][place_id] else 'ND'][index]
                            temp[5], temp[6] = male_survival_7_days if male_survival_7_days else 'NA', alimentation if male_survival_7_days else None
                            if neurotoxicity !=None :
                                temp[7] = neurotoxicity if male_survival_7_days else None
                            if female_survivor or number_days_exposition :
                                for index in range(9,20):
                                    temp[index] = [female_survivor, number_days_exposition, number_female_concerned, percent_inhibition_fecondite if percent_inhibition_fecondite and female_survivor else "NA" , number_female_analysis, molting_cycle, number_female_concerned_area, endocrine_disruption if endocrine_disruption else "NA", measurepoint_id, molting_cycle_conformity, surface_retard_conformity][index-9]
                matrix.append(temp)
        df = pd.DataFrame(matrix)
        df.columns = ['Campagne', 'Numéro', 'Station de mesure', 'Code Agence','','Survie Male - 7 jours', 'Alimentation',
                'Neurotoxicité AChE','', 'Survie Femelle','Nombre jours exposition in situ',
                'n','Fécondité','n','Cycle de mue','n','Perturbation endocrinienne','', '', '']
        list_dataframe.append(df)
    df_values = pd.concat(list_dataframe)
    df_sorted = df_values.sort_values(['Numéro', 'Campagne'])
    return df_sorted
コード例 #27
0
def create_edi_dataframe(campaign, place_dict, chemistry_measurepoint_list, chemistry_pack_list, chemistry_7j_measurepoint_list, chemistry_21j_measurepoint_list):
    '''
    Créé une dataframe à partir d'un référence de campagne.
    Les colonnes vides sont supprimées
    :param place_dict:
    :return: dataframe:
    '''
    measurepoint_data = QueryScript(f"SELECT id, reference, name, city, zipcode, r0_threshold, r0_sample_taken, r0_aspect, r0_iridescence, r0_foam, r0_leafs, r0_sludge, r0_other_bodies, r0_color, r0_clearness, r0_odor, r0_shadow, r0_weather, r0_hydrological_situation, r0_scale, r0_secchi, r0_air_temperature, r0_oxygen_saturation, r21_threshold, r21_sample_taken, r21_aspect, r21_iridescence, r21_foam, r21_leafs, r21_sludge, r21_other_bodies, r21_color, r21_clearness, r21_odor, r21_shadow, r21_weather, r21_hydrological_situation, r21_scale, r21_secchi, r21_air_temperature, r21_oxygen_saturation FROM {env.DATABASE_RAW}.Measurepoint WHERE id IN {tuple(chemistry_measurepoint_list) if len(chemistry_measurepoint_list)>1 else '('+(str(chemistry_measurepoint_list[0]) if len(chemistry_measurepoint_list) else '0')+')'}").execute()
    dates_data = QueryScript(f"SELECT measurepoint_id, date_id, date FROM {env.DATABASE_TREATED}.key_dates WHERE measurepoint_id IN {tuple(chemistry_measurepoint_list) if len(chemistry_measurepoint_list)>1 else '('+(str(chemistry_measurepoint_list[0]) if len(chemistry_measurepoint_list) else '0')+')'}").execute()
    conditions_data = QueryScript(f"SELECT measurepoint_id, recordedAt, temperature, conductivity, ph, oxygen, comment FROM {env.DATABASE_RAW}.MeasureExposureCondition WHERE measurepoint_id IN {tuple(chemistry_measurepoint_list) if len(chemistry_measurepoint_list)>1 else '('+(str(chemistry_measurepoint_list[0]) if len(chemistry_measurepoint_list) else '0')+')'}").execute()
    pack_data = QueryScript(f"SELECT id, sampling_weight, metal_tare_bottle_weight, organic_tare_bottle_weight, organic_total_weight, sampling_comment  FROM {env.DATABASE_RAW}.Pack WHERE id IN {tuple(chemistry_pack_list) if len(chemistry_pack_list)>1 else '('+(str(chemistry_pack_list[0]) if len(chemistry_pack_list) else '0')+')'}").execute()
    survival_dict = survival(chemistry_pack_list)
    matrix= []
    for place_id in place_dict :
        temp = [None]*74
        start_time = None
        end_time = None
        temp[15] = "biomae"
        temp[41] = "biomae"
        if "agency" in place_dict[place_id]:
            temp[1] = place_dict[place_id]["agency"]
        for measurepoint_id in place_dict[place_id]["measurepoint"]:
            for mp_id, date_id, date in dates_data:
                if mp_id==measurepoint_id:
                    if date_id==6 and date and not start_time:
                        start_time=date
                        temp[14] = date.strftime("%d/%m/%Y %H:%M:%S")
                        temp[0] = date
                    if date_id==7 and date and not end_time:
                        end_time=date
                        temp[40] = date.strftime("%d/%m/%Y %H:%M:%S")
            place_dict[place_id]["measurepoint"][measurepoint_id]["start_time"] = start_time
            place_dict[place_id]["measurepoint"][measurepoint_id]["end_time"] = end_time
            if end_time and start_time:
                # temp[9] = (datetime.datetime.strptime(temp[40], '%d/%m/%Y')-datetime.datetime.strptime(temp[14], '%d/%m/%Y'))
                time_delay = end_time - start_time
                minutes =  round(time_delay.seconds%3600/60)
                seconds = time_delay.seconds%60
                temp[9] = (str(time_delay.days*24+round(time_delay.seconds/3600)) + ':') + (str(minutes) if minutes>9 else '0' +str(minutes)) + ':' + (str(seconds) if seconds>9 else '0' +str(seconds))

            for mp_id, reference, name, city, zipcode, r0_threshold, r0_sample_taken, r0_aspect, r0_iridescence, r0_foam, r0_leafs, r0_sludge, r0_other_bodies, r0_color, r0_clearness, r0_odor, r0_shadow, r0_weather, r0_hydrological_situation, r0_scale, r0_secchi, r0_air_temperature, r0_oxygen_saturation, r21_threshold, r21_sample_taken, r21_aspect, r21_iridescence, r21_foam, r21_leafs, r21_sludge, r21_other_bodies, r21_color, r21_clearness, r21_odor, r21_shadow, r21_weather, r21_hydrological_situation, r21_scale, r21_secchi, r21_air_temperature, r21_oxygen_saturation in measurepoint_data:
                if mp_id==measurepoint_id:
                    try :
                        int(zipcode)
                        temp[5] = translate(city)
                    except ValueError:
                        temp[5] = translate(zipcode)
                    except TypeError:
                        pass
                    temp[8] = reference
                    temp[6] = translate(name)
                    temp[20] = r0_oxygen_saturation
                    temp[21] = r0_air_temperature
                    temp[22] = r0_threshold
                    temp[23] = r0_sample_taken
                    temp[24] = r0_aspect
                    temp[25] = r0_iridescence
                    temp[26] = r0_foam
                    temp[27] = r0_leafs
                    temp[28] = r0_sludge
                    temp[29] = r0_other_bodies
                    temp[30] = r0_color
                    temp[31] = r0_clearness
                    temp[32] = r0_odor
                    temp[33] = r0_shadow
                    temp[34] = r0_weather
                    temp[35] = r0_hydrological_situation
                    temp[36] = r0_scale
                    temp[37] = r0_secchi

                    temp[46] = r21_oxygen_saturation
                    temp[47] = r21_air_temperature
                    temp[48] = r21_threshold
                    temp[49] = r21_sample_taken
                    temp[50] = r21_aspect
                    temp[51] = r21_iridescence
                    temp[52] = r21_foam
                    temp[53] = r21_leafs
                    temp[54] = r21_sludge
                    temp[55] = r21_other_bodies
                    temp[56] = r21_color
                    temp[57] = r21_clearness
                    temp[58] = r21_odor
                    temp[59] = r21_shadow
                    temp[60] = r21_weather
                    temp[61] = r21_hydrological_situation
                    temp[62] = r21_scale
                    temp[63] = r21_secchi
            for mp_id, recordedAt, temperature, conductivity, ph, oxygen, comment in conditions_data:
                if mp_id==measurepoint_id:
                    if mp_id==2788:
                        print(place_dict[place_id]["measurepoint"][measurepoint_id]['end_time']== recordedAt, temperature)
                    if recordedAt == place_dict[place_id]["measurepoint"][measurepoint_id]["start_time"] and not temp[16]:
                        temp[16]=temperature
                        temp[17]=ph
                        temp[18]=conductivity
                        temp[19]=oxygen
                    
                    if recordedAt == place_dict[place_id]["measurepoint"][measurepoint_id]["end_time"] and not temp[42]:
                        temp[42]=temperature
                        temp[43]=ph
                        temp[44]=conductivity
                        temp[45]=oxygen
                        if comment:
                            dissociated_comment = [information.replace("\n",", ") for information in comment.split("\t")]
                            need_to_be_removed = []
                            for information in dissociated_comment:
                                if information!="":
                                    if len(information)>=10 and information[:10]=="Vandalisme":
                                        place_dict[place_id]["vandalism"] = True
                                    if information[-1]=="%" or "Scan" in information or "#" in information or 'RAS' in information:
                                        need_to_be_removed.append(information)
                                    else :
                                        try :
                                            int(information)
                                            need_to_be_removed.append(information)
                                        except ValueError :
                                            pass
                            for element in need_to_be_removed:
                                dissociated_comment.remove(element)
                            if len(dissociated_comment):
                                temp[65] = '. '.join([translate(information) for information in dissociated_comment]) 
            for pack_id in place_dict[place_id]["measurepoint"][measurepoint_id]["pack"]:
                if place_dict[place_id]["measurepoint"][measurepoint_id]["pack"][pack_id]=='chemistry':
                    if pack_id in survival_dict:
                        temp[64]=survival_dict[pack_id]
                    for pack,sampling_weight, metal_tare_bottle_weight, organic_tare_bottle_weight, organic_total_weight, comment in pack_data:
                        if pack==pack_id:
                            temp[66]= metal_tare_bottle_weight
                            temp[67]= sampling_weight
                            if sampling_weight and metal_tare_bottle_weight :
                                temp[68]= sampling_weight - metal_tare_bottle_weight
                            temp[69]= organic_tare_bottle_weight
                            temp[70]= organic_total_weight
                            if organic_tare_bottle_weight and organic_total_weight :
                                temp[71]= organic_total_weight - organic_tare_bottle_weight
                            if comment :
                                dissociated_comment = [information.replace("\n",", ") for information in comment.split("\t")]
                                need_to_be_removed = []
                                for information in dissociated_comment:
                                    if information!="":
                                        if len(information)>=10 and information[:10]=="Vandalisme":
                                            place_dict[place_id]["vandalism"] = True
                                        if information[-1]=="%" or "Scan" in information or "#" in information or 'RAS' in information:
                                            need_to_be_removed.append(information)
                                        else :
                                            try :
                                                int(information)
                                                need_to_be_removed.append(information)
                                            except ValueError :
                                                pass
                                for element in need_to_be_removed:
                                    dissociated_comment.remove(element)
                                if len(dissociated_comment):
                                    if temp[65]:
                                        temp[65] += '. '.join([translate(information) if information else '' for information in dissociated_comment]) 
                                    else :
                                        temp[65] = '. '.join([translate(information) if information else '' for information in dissociated_comment]) 


        matrix.append(temp)
                    

    df = pd.DataFrame(matrix)
    df.columns = ["Mois", "Code Agence  Station", "Code Plvt EDI", "N° Prélèvement", "Département", "Commune", "Lieu prel", "", "Réfèrence BIOMAE",	"Durée du prélèvement","Taux de Lyophylisation (à patir de l'Eppendorf)",	"Taux de Lyophylisation (à patir du flacon verre)", "N° Prélèvement Eau Sup Encagement", "", "Date d'encagement", "Préleveur","Température de l'Eau", "Potentiel en Hydrogène (pH)", "Conductivité à  25°C", "Oxygène dissous", "Taux de saturation en oxygène", "Température de l'air", "Seuil", "Type de prélèvement","Aspect","Irisations sur l'eau", "Présence de mousse de détergents à la surface", "Présence de produits ligneux ou herbacés frais", "Boue", "Autres corps", "Couleur", "Clarté", "Odeur", "Ombre", "Conditions météorologiques pendant le prélèvement", "Situation hydrologique apparente", "Echelle", "Secchi", "N° Prélèvement Eau Sup", "",	"Date de prélèvement",	"Préleveur","Température de l'Eau", "Potentiel en Hydrogène (pH)", "Conductivité à 25°C","Oxygène dissous", "Taux de saturation en oxygène", "Température de l'air", "Seuil", "Type de prélèvement","Aspect","Irisations sur l'eau", "Présence de mousse de détergents à la surface", "Présence de produits ligneux ou herbacés frais", "Boue", "Autres corps", "Couleur", "Clarté", "Odeur", "Ombre", "Conditions météorologiques pendant le prélèvement", "Situation hydrologique apparente", "Echelle", "Secchi", "Taux de survie", "Commentaires", "Tare Eppendorf en mg", "Eppendorf + Echantillon en mg", "Echantillon métaux en mg", "Tare Flacon Verre en mg", "Flacon Verre + Echantillon en mg", "Echantillon organique en mg", "Eppendorf + Echantillon Lyophilisé en mg", "Flacon Verre + Echantillon Lyophilisé en mg"]

    return df
コード例 #28
0
def create_stations_dataframe(head_dataframe, campaigns_dict,
                              measurepoint_list, agency_code_list):

    df_renamed = head_dataframe.rename(columns={"Numéro": "#"})
    # place_length = len(place_list)
    campaigns_number = len(list(campaigns_dict.keys()))
    global_matrix = []
    agency_data = QueryScript(
        f"  SELECT code, network, hydroecoregion FROM {env.DATABASE_RAW}.Agency  WHERE code IN {tuple(agency_code_list) if len(agency_code_list)>1 else '('+(str(agency_code_list[0]) if len(agency_code_list) else '0')+')'};"
    ).execute()
    measurepoint_data = QueryScript(
        f"  SELECT id, stream, zipcode, city, latitude, longitude, lambertY, lambertX, latitudeSpotted, longitudeSpotted   FROM {env.DATABASE_RAW}.Measurepoint WHERE id IN {tuple(measurepoint_list) if len(measurepoint_list)>1 else '('+(str(measurepoint_list[0]) if len(measurepoint_list) else '0')+')'};"
    ).execute()
    for campaign_id in campaigns_dict:

        matrix = []
        for place_id in campaigns_dict[campaign_id]["place"]:

            temp = [None] * 8
            for code, network, hydroecoregion in agency_data:
                if "agency" in campaigns_dict[campaign_id]["place"][
                        place_id] and code == campaigns_dict[campaign_id][
                            "place"][place_id]["agency"]:
                    temp[0], temp[1] = translate(network), hydroecoregion

            for measurepoint_id in campaigns_dict[campaign_id]["place"][
                    place_id]["measurepoint"]:
                for row in measurepoint_data:
                    [
                        mp_id, stream, zipcode, city, latitude, longitude,
                        lambertY, lambertX, latitudeSpotted, longitudeSpotted
                    ] = [translate(x) for x in row]
                    if mp_id == measurepoint_id:
                        if not temp[2]:
                            temp[2] = stream
                        if not temp[3]:
                            temp[
                                3] = f"{zipcode} {city}" if zipcode and city else None
                        if not temp[4]:
                            temp[
                                4] = f"{latitude}, {longitude}" if latitude and longitude else None
                        if not temp[5]:
                            temp[
                                5] = f"Y {lambertY}, X {lambertX}" if lambertX and lambertY else None
                        if not temp[6] and latitudeSpotted and longitudeSpotted:
                            temp[6] = f"{latitudeSpotted}, {longitudeSpotted}"
                            lambertXSpotted, lambertYSpotted = convert_gps_into_lambert(
                                latitudeSpotted, longitudeSpotted)
                            temp[
                                7] = f"Y {round(lambertYSpotted,1)}, X {round(lambertXSpotted,1)}"

            matrix.append(temp)
        global_matrix.append(matrix)
    # matrix_filled = [[None]*8]
    # if campaigns_number>1:
    #     for campaign in global_matrix :
    #         for place_number in range(place_length) :
    #             for index, content in enumerate(campaign[place_number]):
    #                 if content and not matrix_filled[place_number][index]:
    #                     matrix_filled[place_number] = campaign[place_number]
    # if campaigns_number==1:
    #     matrix_filled=global_matrix[0]

    # for place_number, place in enumerate(matrix_filled) :
    #     for index, content in enumerate(place) :
    #         if not content :
    #             matrix_filled[place_number][index] = 'ND'
    columns = [
        'Type de réseau', 'Hydroécorégion', 'Masse d\'eau', 'Adresse',
        'Coordonnées de référence', 'Coordonnées de référence (Lambert 93)',
        'Coordonnées réelles', 'Coordonnées réelles (Lambert 93)'
    ]
    if len(global_matrix) > 1:
        list_dataframe = []
        for matrix in global_matrix:
            df = pd.DataFrame(matrix, columns=columns)
            list_dataframe.append(df)
        df_values = pd.concat(list_dataframe)
    else:
        df_values = pd.DataFrame(global_matrix[0], columns=columns)

    df_concat = pd.concat([df_renamed, df_values], axis=1)
    df_stations = df_concat.sort_values('#')

    return df_stations
コード例 #29
0
ファイル: inclinometer.py プロジェクト: ecabuk/vlf
 def on_button_zero_reset_clicked(self):
     ret = self._confirm_box(translate('InclinometerView', 'Do you really want to reset zero to factory settings?'))
     if ret == QtGui.QMessageBox.Yes:
         inclinometer.reset_zero()
コード例 #30
0
def create_chemistry_dataframe(context_data, main_data, analysis_data, chemical_threshold_data, context_threshold_data, agency_data, contract_list=[]):
    global_matrix = []
    report_dict = {}
    contract_list
    for contract_key in contract_list  :
        report_dict[contract_key] = {
            'count':0,
            'survival_under_25_percent' : 0,
            'survival_under_50_percent' : 0,
            'vandalism' : 0,
            'out_of_water' : 0,
            'out_of_water_up_50_percent' : 0,
            'out_of_water_under_50_percent' : 0,
            'survival_under_25_percent_not_conform':0,
            'survival_under_25_percent_conform_preferred':0,
            'survival_under_25_percent_conform_compulsory':0,
            'not_totally_analysed':0,
            'survival_null':0
        }
    for agency_id, measurepoint_id, pack_id, reference, start_date, end_date, name, sensor3_min, sensor3_average, sensor3_max, sampling_weight, metal_tare_bottle_weight, organic_tare_bottle_weight, organic_total_weight, quantity,t0_reference, t0_sampling_weight, t0_metal_tare_bottle_weight, t0_organic_tare_bottle_weight, t0_organic_total_weight, t0_quantity, survival_percent in main_data:
        
        if end_date and start_date :
            chemistry_duration = "21j" if (end_date-start_date).days > 14 else "7j"
        current_network = None
        current_hydroecoregion = None
        current_agency_code = None
        if agency_id :
            for agency_Id, code, network, hydroecoregion in agency_data :
                if agency_Id==agency_id :
                    current_agency_code = code
                    current_network = network
                    current_hydroecoregion = hydroecoregion
                    break
        contract = reference.split('-')[0] + '-' + chemistry_duration
        if len(contract_list) and contract not in contract_list :
            continue
        
        report_dict[contract]['count'] += 1
        
        context_preferred_exceeded = False
        context_compulsory_exceeded = False
        vandalism = False
        out_of_water = False
        context_exceeded_list = []
        comment_list = []
        if sensor3_max and sensor3_max>21 :
            context_exceeded_list.append('Température haute')
            context_compulsory_exceeded = True
        for mp_id, recordedAt, temperature, conductivity, oxygen, pH, barrel, comment in context_data:
            comment = translate(comment)
            if mp_id==measurepoint_id and barrel and barrel[0]=='R':
                if comment :
                    if not comment.find('andalisme')==-1 and 'Vandalisme' not in comment_list :
                        comment_list.append('Vandalisme')
                        vandalism = True
                    if (not comment.find('vol')==-1 or not comment.find('Vol')==-1)  and 'Vol' not in comment_list :
                        comment_list.append('Vol')
                        vandalism = True
                    if not comment.find('non récupérable')==-1 and 'Système non récupérable' not in comment_list :
                        comment_list.append('Système non récupérable')
                        vandalism = True
                    if not comment.find("ors d'eau")==-1 and "Hors d'eau" not in comment_list :
                        comment_list.append("Hors d'eau")
                        out_of_water = True
                    if (not comment.find("Crue")==-1 or not comment.find("crue")==-1) and "Crue" not in comment_list :
                        comment_list.append("Crue")
                        out_of_water = True
                    if not comment.find("mbacle")==-1 and "Embacle" not in comment_list :
                        comment_list.append("Embacle")
                        out_of_water = True
                if temperature :
                    for threshold_name, _min, _max in context_threshold_data :
                        if threshold_name=='Température moyenne (chimie)':
                            if _min > temperature :
                                context_preferred_exceeded = True
                            if _max < temperature :
                                context_preferred_exceeded = True
                if conductivity :
                    for threshold_name, _min, _max in context_threshold_data :
                        if threshold_name=='Conductivité (chimie)':
                            if 100 > conductivity and not 'Conductivité basse' in context_exceeded_list:
                                if 50 > conductivity :
                                    context_exceeded_list.append('Conductivité basse')
                                    context_compulsory_exceeded = True
                                else :
                                    context_preferred_exceeded = True
                            if _max < conductivity :
                                context_preferred_exceeded = True
                if pH :
                    for threshold_name, _min, _max in context_threshold_data :
                        if threshold_name=='pH (chimie)':
                            if _min > pH and not 'pH bas' in context_exceeded_list:
                                context_exceeded_list.append('pH bas')
                                context_compulsory_exceeded = True
                            if _max < pH and not 'pH haut' in context_exceeded_list :
                                context_exceeded_list.append('pH haut')
                                context_compulsory_exceeded = True
                if oxygen :
                    for threshold_name, _min, _max in context_threshold_data :
                        if threshold_name=='Oxygène (chimie)':
                            if 7.5 > oxygen :
                                if 5 > oxygen and not 'Oxygène bas' in context_exceeded_list :
                                    context_exceeded_list.append('Oxygène bas')
                                    context_compulsory_exceeded = True
                                else :
                                    context_preferred_exceeded = True
                if recordedAt==start_date :
                    temperatureJ0 = temperature
                    oxygenJ0 = oxygen
                    pHJ0 = pH
                    conductivityJ0 = conductivity
                if recordedAt==end_date :
                    temperatureJ21 = temperature
                    oxygenJ21 = oxygen
                    pHJ21 = pH
                    conductivityJ21 = conductivity
        metal_element = []
        organic_element = []
        for packId, value, sandre_analysis, element_name in analysis_data:
            if pack_id==packId :
                for sandre_threshold, familly,  graduate_50_7j, graduate_50_21j in chemical_threshold_data :
                    if sandre_analysis==sandre_threshold :
                        if chemistry_duration == "21j" and graduate_50_21j and value > graduate_50_21j :
                            metal_element.append(translate(element_name)) if familly == 'Métaux' else organic_element.append(translate(element_name))
                        if chemistry_duration == "7j" and graduate_50_7j and value > graduate_50_7j :
                            metal_element.append(translate(element_name)) if familly == 'Métaux' else organic_element.append(translate(element_name))
        if survival_percent and survival_percent > 1:
            if survival_percent > 25 :
                if survival_percent < 50 :
                    report_dict[contract]['survival_under_50_percent'] += 1
                    if out_of_water :
                        report_dict[contract]['out_of_water_under_50_percent'] += 1
                elif out_of_water :
                    report_dict[contract]['out_of_water_up_50_percent'] += 1

            else :
                report_dict[contract]['survival_under_25_percent'] += 1
                if not context_preferred_exceeded and not context_compulsory_exceeded:
                    report_dict[contract]['survival_under_25_percent_conform_preferred'] += 1
                elif context_preferred_exceeded and not context_compulsory_exceeded:
                    report_dict[contract]['survival_under_25_percent_conform_compulsory'] += 1
                else :
                    report_dict[contract]['survival_under_25_percent_not_conform'] += 1
        else :
            report_dict[contract]['survival_null'] += 1
            if out_of_water :
                report_dict[contract]['out_of_water'] += 1
            elif vandalism :
                report_dict[contract]['vandalism'] += 1

        if organic_tare_bottle_weight and organic_total_weight :
            if (organic_total_weight-organic_tare_bottle_weight) <2000 :
                report_dict[contract]['not_totally_analysed'] += 1



        temp = [measurepoint_id, reference, start_date.strftime("%d/%m/%Y") if start_date else None, chemistry_duration, contract.split('-')[0], int(reference.split('-')[1]) if reference.split('-')[1][0]=='0' else int(reference.split('-')[2]), int(reference.split('-')[2]), translate(name), current_agency_code, sensor3_min, sensor3_average, sensor3_max, max([temperatureJ0 if temperatureJ0 else 0, temperatureJ21 if temperatureJ21 else 0]) if temperatureJ0 or temperatureJ21 else 'NA', (str(round(survival_percent))+'%') if survival_percent and  survival_percent > 1  else 'Non analysé', ', '.join(context_exceeded_list), ', '.join(comment_list), ', '.join(metal_element),', '.join(organic_element),current_network, current_hydroecoregion, temperatureJ0, temperatureJ21, conductivityJ0, conductivityJ21, oxygenJ0, oxygenJ21, pHJ0, pHJ21, metal_tare_bottle_weight, sampling_weight, (sampling_weight-metal_tare_bottle_weight) if sampling_weight and metal_tare_bottle_weight else "NA", quantity,(sampling_weight-metal_tare_bottle_weight)/quantity if sampling_weight and metal_tare_bottle_weight and quantity else "NA" , organic_tare_bottle_weight, organic_total_weight, (organic_total_weight-organic_tare_bottle_weight) if organic_tare_bottle_weight and organic_total_weight else 'NA', '', t0_reference, t0_metal_tare_bottle_weight, t0_sampling_weight, (t0_sampling_weight-t0_metal_tare_bottle_weight) if t0_metal_tare_bottle_weight and t0_sampling_weight else 'NA', t0_organic_tare_bottle_weight, t0_organic_total_weight, (t0_organic_total_weight-t0_organic_tare_bottle_weight) if t0_organic_tare_bottle_weight and t0_organic_total_weight else 'NA', t0_quantity]
        global_matrix.append(temp)
    df = pd.DataFrame(global_matrix, columns=['#', 'Code BIOMÆ', 'Jour de lancement', 'Durée',	'Bassin', 'Contrat', 'Campagne', 'Station de mesure', 'Code Agence', 'Température min sonde (°C)', 'Température Moyenne sonde (°C)', 'Température max sonde (°C)', 'Température max ponctuelle (°C)', 'Taux de survie (exprimé en %)', "Hors domaine d'application", "Problème d'expérimentation", "Métaux (Fort à très fort)",	"Composés organiques (Fort à très fort)", 'Type de réseau',	'Hydroécorégion', 'Température T+0 - Encagement sur site', 'Température T+21 - Site > Récupération', 'Conductivité T+0 - Encagement sur site', 'Conductivité T+21 - Site > Récupération', 'Oxygène T+0 - Encagement sur site', 'Oxygène T+21 - Site > Récupération', 'pH T+0 - Encagement sur site', 'pH T+21 - Site > Récupération', 'Tare échantillon métaux (mg)','Masse totale échantillon métaux (mg)', 'Masse Fraiche métaux (mg)', "Nombre de gammares dans l'echantillon", 'Poids moyen (mg)', 'Tare échantillon organiques (mg, sans bouchon)', 'Masse totale échantillon organiques (mg, sans bouchon)', 'Masse fraiche organiques (mg)', 'Poids moyen avant expo (contrôle)', 'Libellé T0', 'Tare échantillon métaux (mg)', 'Masse totale échantillon métaux (mg)', 'Masse Fraiche métaux (mg)', 'Tare échantillon organiques (mg, sans bouchon)', 'Masse totale échantillon organiques (mg, sans bouchon)',	'Masse fraiche organiques (mg)', "Nombre de gammares dans l'echantillon métaux"])
    
    report_dict['TOTAL-7j'] = {
        'count':sum([report_dict[key]['count'] if key[-2] == '7' else 0 for key in list(report_dict.keys())]),
        'survival_under_25_percent' : sum([report_dict[key]['survival_under_25_percent'] if key[-2] == '7' else 0 for key in list(report_dict.keys())]),
        'survival_under_50_percent' : sum([report_dict[key]['survival_under_50_percent'] if key[-2] == '7' else 0 for key in list(report_dict.keys())]),
        'vandalism' : sum([report_dict[key]['vandalism'] if key[-2] == '7' else 0 for key in list(report_dict.keys())]),
        'out_of_water' : sum([report_dict[key]['out_of_water'] if key[-2] == '7' else 0 for key in list(report_dict.keys())]),
        'out_of_water_under_50_percent' : sum([report_dict[key]['out_of_water_under_50_percent'] if key[-2] == '7' else 0 for key in list(report_dict.keys())]),
        'out_of_water_up_50_percent' : sum([report_dict[key]['out_of_water_up_50_percent'] if key[-2] == '7' else 0 for key in list(report_dict.keys())]),
        'survival_under_25_percent_not_conform':sum([report_dict[key]['survival_under_25_percent_not_conform'] if key[-2] == '7' else 0 for key in list(report_dict.keys())]),
        'survival_under_25_percent_conform_preferred':sum([report_dict[key]['survival_under_25_percent_conform_preferred'] if key[-2] == '7' else 0 for key in list(report_dict.keys())]),
        'survival_under_25_percent_conform_compulsory':sum([report_dict[key]['survival_under_25_percent_conform_compulsory'] if key[-2] == '7' else 0 for key in list(report_dict.keys())]),
        'not_totally_analysed':sum([report_dict[key]['not_totally_analysed'] if key[-2] == '7' else 0 for key in list(report_dict.keys())]),
        'survival_null':sum([report_dict[key]['survival_null'] if key[-2] == '7' else 0 for key in list(report_dict.keys())])
    }
    report_dict['TOTAL-21j'] = {
        'count':sum([report_dict[key]['count'] if key[-2] == '1' else 0 for key in list(report_dict.keys())]),
        'survival_under_25_percent' : sum([report_dict[key]['survival_under_25_percent'] if key[-2] == '1' else 0 for key in list(report_dict.keys())]),
        'survival_under_50_percent' : sum([report_dict[key]['survival_under_50_percent'] if key[-2] == '1' else 0 for key in list(report_dict.keys())]),
        'vandalism' : sum([report_dict[key]['vandalism'] if key[-2] == '1' else 0 for key in list(report_dict.keys())]),
        'out_of_water' : sum([report_dict[key]['out_of_water'] if key[-2] == '1' else 0 for key in list(report_dict.keys())]),
        'out_of_water_under_50_percent' : sum([report_dict[key]['out_of_water_under_50_percent'] if key[-2] == '1' else 0 for key in list(report_dict.keys())]),
        'out_of_water_up_50_percent' : sum([report_dict[key]['out_of_water_up_50_percent'] if key[-2] == '1' else 0 for key in list(report_dict.keys())]),
        'survival_under_25_percent_not_conform':sum([report_dict[key]['survival_under_25_percent_not_conform'] if key[-2] == '1' else 0 for key in list(report_dict.keys())]),
        'survival_under_25_percent_conform_preferred':sum([report_dict[key]['survival_under_25_percent_conform_preferred'] if key[-2] == '1' else 0 for key in list(report_dict.keys())]),
        'survival_under_25_percent_conform_compulsory':sum([report_dict[key]['survival_under_25_percent_conform_compulsory'] if key[-2] == '1' else 0 for key in list(report_dict.keys())]),
        'not_totally_analysed':sum([report_dict[key]['not_totally_analysed'] if key[-2] == '1' else 0 for key in list(report_dict.keys())]),
        'survival_null':sum([report_dict[key]['survival_null'] if key[-2] == '1' else 0 for key in list(report_dict.keys())])
    }
   


    report_matrix = []
    report_matrix = add_new_section(report_matrix, "Bilan", report_dict.keys())
    survival_under_25_percent_row = ["Survie inférieure à 25%"]
    for contract in report_dict.values() :
        survival_under_25_percent_row.append(contract['survival_under_25_percent'])
        survival_under_25_percent_row.append(contract['survival_under_25_percent']/contract['count']*100 if contract['count'] else 0)
        survival_under_25_percent_row.append('')
    report_matrix.append(survival_under_25_percent_row)

    survival_under_50_percent_row = ["Survie comprise entre 25% à 50%"]
    for contract in report_dict.values() :
        survival_under_50_percent_row.append((contract['survival_under_50_percent']-contract['out_of_water_under_50_percent']))
        survival_under_50_percent_row.append((contract['survival_under_50_percent']-contract['out_of_water_under_50_percent'])/contract['count']*100 if contract['count'] else 0)
        survival_under_50_percent_row.append('')
    report_matrix.append(survival_under_50_percent_row)

    survival_up_50_percent_row = ["Survie supérieure 50%"]
    for contract in report_dict.values() :
        survival_up_50_percent_row.append(contract['count']-contract['survival_under_25_percent']-contract['survival_under_50_percent']-contract['out_of_water_under_50_percent']-contract['out_of_water_up_50_percent'])
        survival_up_50_percent_row.append((contract['count']-contract['survival_under_25_percent']-contract['survival_under_50_percent']-contract['out_of_water_under_50_percent']-contract['out_of_water_up_50_percent'])/contract['count']*100 if contract['count'] else 0)
        survival_up_50_percent_row.append('')
    report_matrix.append(survival_up_50_percent_row)

    vandalism_row = ["Vandalisme"]
    for contract in report_dict.values() :
        vandalism_row.append(contract['vandalism'])
        vandalism_row.append(contract['vandalism']/contract['count']*100 if contract['count'] else 0)
        vandalism_row.append('')
    report_matrix.append(vandalism_row)

    out_of_water_row = ["Crues - Hors d'eau"]
    for contract in report_dict.values() :
        out_of_water_row.append(contract['out_of_water'])
        out_of_water_row.append(contract['out_of_water']/contract['count']*100 if contract['count'] else 0)
        out_of_water_row.append('')
    report_matrix.append(out_of_water_row)

    out_of_water_under_50_percent_row = ["Partiellement hors d'eau (25%)"]
    for contract in report_dict.values() :
        out_of_water_under_50_percent_row.append(contract['out_of_water_under_50_percent'])
        out_of_water_under_50_percent_row.append(contract['out_of_water_under_50_percent']/contract['count']*100 if contract['count'] else 0)
        out_of_water_under_50_percent_row.append('')
    report_matrix.append(out_of_water_under_50_percent_row)

    out_of_water_up_50_percent_row = ["Partiellement hors d'eau (50%)"]
    for contract in report_dict.values() :
        out_of_water_up_50_percent_row.append(contract['out_of_water_up_50_percent'])
        out_of_water_up_50_percent_row.append(contract['out_of_water_up_50_percent']/contract['count']*100 if contract['count'] else 0)
        out_of_water_up_50_percent_row.append('')
    report_matrix.append(out_of_water_up_50_percent_row)

    total_row = ["Total"]
    for contract in report_dict.values() :
        total_row.append(contract['count'])
        total_row.append(contract['count']/contract['count']*100 if contract['count'] else 0)
        total_row.append('')
    report_matrix.append(total_row)



    report_matrix = add_new_section(report_matrix, "Bilan", report_dict.keys())

    survival_under_25_percent_row = ["Survie inférieure à 25%"]
    for contract in report_dict.values() :
        survival_under_25_percent_row.append(contract['survival_under_25_percent'])
        survival_under_25_percent_row.append(contract['survival_under_25_percent']/contract['count']*100 if contract['count'] else 0)
        survival_under_25_percent_row.append('')
    report_matrix.append(survival_under_25_percent_row)

    survival_under_50_percent_row = ["Survie comprise entre 25% à 50%"]
    for contract in report_dict.values() :
        survival_under_50_percent_row.append((contract['survival_under_50_percent']))
        survival_under_50_percent_row.append((contract['survival_under_50_percent'])/contract['count']*100 if contract['count'] else 0)
        survival_under_50_percent_row.append('')
    report_matrix.append(survival_under_50_percent_row)

    survival_up_50_percent_row = ["Survie supérieure 50%"]
    for contract in report_dict.values() :
        survival_up_50_percent_row.append(contract['count']-contract['survival_under_25_percent']-contract['survival_under_50_percent'])
        survival_up_50_percent_row.append((contract['count']-contract['survival_under_25_percent']-contract['survival_under_50_percent'])/contract['count']*100 if contract['count'] else 0)
        survival_up_50_percent_row.append('')
    report_matrix.append(survival_up_50_percent_row)
    report_matrix.append(vandalism_row)
    report_matrix.append(out_of_water_row)
    report_matrix.append(total_row)


    report_matrix = add_new_section(report_matrix, "Bilan", report_dict.keys())
    report_matrix.append(survival_under_25_percent_row)
    survival_up_25_percent_row = ["Survie supérieure 25%"]
    for contract in report_dict.values() :
        survival_up_25_percent_row.append(contract['count']-contract['survival_under_25_percent'])
        survival_up_25_percent_row.append((contract['count']-contract['survival_under_25_percent'])/contract['count']*100 if contract['count'] else 0)
        survival_up_25_percent_row.append('')
    report_matrix.append(survival_up_25_percent_row)
    report_matrix.append(total_row)

    report_matrix = add_new_section(report_matrix, "Survie inférieure à 25%", report_dict.keys())
    not_conform_row = ["Conditions physico-chimiques non conformes"]
    for contract in report_dict.values() :
        not_conform_row.append(contract['survival_under_25_percent_not_conform'])
        not_conform_row.append((contract['survival_under_25_percent_not_conform'])/contract['count']*100 if contract['count'] else 0)
        not_conform_row.append('')
    report_matrix.append(not_conform_row)

    not_conform_preferred_row = ["Conditions physico-chimiques conformes 'de préférence'"]
    for contract in report_dict.values() :
        not_conform_preferred_row.append(contract['survival_under_25_percent_conform_preferred'])
        not_conform_preferred_row.append((contract['survival_under_25_percent_conform_preferred'])/contract['count']*100 if contract['count'] else 0)
        not_conform_preferred_row.append('')
    report_matrix.append(not_conform_preferred_row)
    not_conform_compulsory_row = ["Conditions physico-chimiques conformes 'obligatoire'"]
    for contract in report_dict.values() :
        not_conform_compulsory_row.append(contract['survival_under_25_percent_conform_compulsory'])
        not_conform_compulsory_row.append((contract['survival_under_25_percent_conform_compulsory'])/contract['count']*100 if contract['count'] else 0)
        not_conform_compulsory_row.append('')
    report_matrix.append(not_conform_compulsory_row)
    survival_under_25_percent_row[0]='Total'
    report_matrix.append(survival_under_25_percent_row)

    report_matrix = add_new_section(report_matrix, "Analyses chimiques", report_dict.keys())
    survival_null_row = ["Echantillon non analysé : vandalisme, survie nulle"]
    for contract in report_dict.values() :
        survival_null_row.append(contract['survival_null'])
        survival_null_row.append((contract['survival_null'])/contract['count']*100 if contract['count'] else 0)
        survival_null_row.append('')
    report_matrix.append(survival_null_row)
    not_totally_analysed_row = ["Echantillon partiellement analysé : survie faible"]
    for contract in report_dict.values() :
        not_totally_analysed_row.append(contract['not_totally_analysed'])
        not_totally_analysed_row.append((contract['not_totally_analysed'])/contract['count']*100 if contract['count'] else 0)
        not_totally_analysed_row.append('')
    report_matrix.append(not_totally_analysed_row)
    analysed_row = ["Echantillon partiellement analysé : survie faible"]
    for contract in report_dict.values() :
        analysed_row.append(contract['count']-contract['not_totally_analysed']-contract['survival_null'])
        analysed_row.append((contract['count']-contract['not_totally_analysed']-contract['survival_null'])/contract['count']*100 if contract['count'] else 0)
        analysed_row.append('')
    report_matrix.append(analysed_row)
    report_matrix.append(total_row)



    report_matrix = add_new_section(report_matrix, "Survie inférieure à 25%", report_dict.keys())
    report_matrix.append(not_conform_row)
    conform_row = ["Conditions physico-chimiques conformes"]
    for contract in report_dict.values() :
        conform_row.append(contract['survival_under_25_percent']-contract['survival_under_25_percent_not_conform'])
        conform_row.append((contract['survival_under_25_percent']-contract['survival_under_25_percent_not_conform'])/contract['count']*100 if contract['count'] else 0)
        conform_row.append('')
    report_matrix.append(conform_row)
    report_matrix.append(survival_under_25_percent_row)



    column_number = 1 + len(list(report_dict.keys()))*3
    report_matrix.insert(0,['7j' if index == 1 else '21j' if index == (column_number-1)/2 + 1  else '' for index in range(column_number)])
    report_df = pd.DataFrame(report_matrix, columns=[''] * column_number) 

    return df, report_df
コード例 #31
0
ファイル: spectrum.py プロジェクト: ecabuk/vlf
    def plot(self, data):
        render_lock.lock()
        option_lock.lock()
        if not self.canvas_initiated:
            self.init_canvas()

        # Plot
        ch = SETTINGS.value('spectrum/channels', '1,2')
        c = 0
        for ch in ch.split(','):
            self.axes.plot(
                data[c * 2], data[c * 2 + 1],
                color='r' if ch == '1' else 'b',
                label='Horizontal' if ch == '1' else 'Vertical'
            )
            c += 1
            self.axes.hold(True)
        self.axes.hold(False)

        # Title
        self.figure.suptitle('%s R=%d F=%d AH=%.2f AV=%.2f V=%d' % (
            datetime.now().strftime('%c'),
            SETTINGS.value('spectrum/resolution', 10, int),
            SETTINGS.value('spectrum/frames', 10, int),
            self.current_aa_h,
            self.current_aa_v,
            get_mic_vol()
        ))

        # Grid
        self.axes.grid(True, which='both')

        self.axes.set_xlim([SETTINGS.value('spectrum/x_min', 15000, int), SETTINGS.value('spectrum/x_max', 30000, int)])
        y_max = SETTINGS.value('spectrum/y_max', 0.1, float)
        if y_max > 0:
            self.axes.set_ylim([0, y_max])
        # Labels
        self.axes.set_xlabel(translate('SpectrumView', 'Frequency [kHz]'))
        self.axes.set_ylabel(translate('SpectrumView', 'Amplitude'))

        option_lock.unlock()

        # Transmitter indicators
        selected = SpectrumOptionsView.get_selected_frequencies()

        if len(selected):
            frequencies = []
            for tx in TRANSMITTERS:
                freq = float(tx[0])
                if freq in selected:
                    frequencies.append([freq, tx[1]])

            # Color Map
            scalar_color_map = cmx.ScalarMappable(
                norm=colors.Normalize(vmin=1, vmax=len(frequencies)),
                cmap=plt.get_cmap('Dark2')
            )
            clr_idx = 0
            for freq in frequencies:
                clr_idx += 1
                self.axes.axvline(
                    freq[0] * 1000,
                    linewidth=2,
                    color=scalar_color_map.to_rgba(clr_idx),
                    alpha=0.9,
                    linestyle='-',
                    label="%.2f kHz [%s]" % (freq[0], freq[1])
                )

        self.axes.legend(prop={'family': 'monospace', 'size': 'small'})

        self.axes.xaxis.set_major_formatter(HZ_2_KHZ_FORMATTER)

        # Refresh canvas
        self.canvas.draw()

        render_lock.unlock()

        # Start the calculation again
        render_wait.wakeAll()
コード例 #32
0
def create_head_dataframe(campaigns_dict):

    list_dataframe_normal = []
    list_dataframe_filtered = []
    matrix_filtered = []
    for campaign_id in campaigns_dict:
        matrix = []
        for place_id in campaigns_dict[campaign_id]["place"] :

            
            matrix.append([campaigns_dict[campaign_id]["number"], campaigns_dict[campaign_id]["place"][place_id]["number"], translate(campaigns_dict[campaign_id]["place"][place_id]["name"]), campaigns_dict[campaign_id]["place"][place_id]["agency"] if "agency" in campaigns_dict[campaign_id]["place"][place_id] else 'ND'])
        
        df_normal = pd.DataFrame(matrix)
        df_normal.columns = ['Campagne', 'Numéro', 'Station de mesure', 'Code Agence']
        list_dataframe_normal.append(df_normal)

    df_concat_normal = pd.concat(list_dataframe_normal)

    return df_concat_normal
コード例 #33
0
def create_head_special_dataframe(campaigns_dict, chemistry_measurepoint_list, chemistry_7j_measurepoint_list, chemistry_21j_measurepoint_list):
    list_dataframe = []
    list_dataframe_7j = []
    list_dataframe_21j = []
    for campaign_id in campaigns_dict:
        matrix = []
        matrix_7j = []
        matrix_21j = []
        df_normal = None
        df_7j = None
        df_21j = None
        for place_id in campaigns_dict[campaign_id]["place"] :
            seperate_chemistry = []
            if "duplicate" in campaigns_dict[campaign_id]["place"][place_id] :
                if "chemistry" in campaigns_dict[campaign_id]["place"][place_id]["duplicate"] and len(list(campaigns_dict[campaign_id]["place"][place_id]["duplicate"]["chemistry"].keys()))>1:
                    for measurepoint in campaigns_dict[campaign_id]["place"][place_id]["duplicate"]["chemistry"].values():
                        if measurepoint not in seperate_chemistry:
                            seperate_chemistry.append(measurepoint)

            
            if len(seperate_chemistry):
                for measurepoint_id in campaigns_dict[campaign_id]["place"][place_id]["measurepoint"]:
                    if measurepoint_id in seperate_chemistry :
                        matrix.append([campaigns_dict[campaign_id]["number"], str(campaigns_dict[campaign_id]["place"][place_id]["number"])+' - '+str(campaigns_dict[campaign_id]["place"][place_id]["measurepoint"][measurepoint_id]["number"]), translate(campaigns_dict[campaign_id]["place"][place_id]["name"]), campaigns_dict[campaign_id]["place"][place_id]["agency"] if "agency" in campaigns_dict[campaign_id]["place"][place_id] else 'ND'])
                        if measurepoint_id in chemistry_7j_measurepoint_list :
                            matrix_7j.append([campaigns_dict[campaign_id]["number"], str(campaigns_dict[campaign_id]["place"][place_id]["number"])+' - '+str(campaigns_dict[campaign_id]["place"][place_id]["measurepoint"][measurepoint_id]["number"]), translate(campaigns_dict[campaign_id]["place"][place_id]["name"]), campaigns_dict[campaign_id]["place"][place_id]["agency"] if "agency" in campaigns_dict[campaign_id]["place"][place_id] else 'ND'])
                        if measurepoint_id in chemistry_21j_measurepoint_list :
                            matrix_21j.append([campaigns_dict[campaign_id]["number"], str(campaigns_dict[campaign_id]["place"][place_id]["number"])+' - '+str(campaigns_dict[campaign_id]["place"][place_id]["measurepoint"][measurepoint_id]["number"]), translate(campaigns_dict[campaign_id]["place"][place_id]["name"]), campaigns_dict[campaign_id]["place"][place_id]["agency"] if "agency" in campaigns_dict[campaign_id]["place"][place_id] else 'ND'])
            
            else :
                in_list = False
                in_7j_list = False
                in_21j_list = False
                for measurepoint_id in campaigns_dict[campaign_id]["place"][place_id]["measurepoint"]:
                    if measurepoint_id in chemistry_measurepoint_list:
                        in_list = True
                        if measurepoint_id in chemistry_7j_measurepoint_list:
                            in_7j_list = True
                        if measurepoint_id in chemistry_21j_measurepoint_list:
                            in_21j_list = True

                if in_list :
                    matrix.append([campaigns_dict[campaign_id]["number"], campaigns_dict[campaign_id]["place"][place_id]["number"], translate(campaigns_dict[campaign_id]["place"][place_id]["name"]), campaigns_dict[campaign_id]["place"][place_id]["agency"] if "agency" in campaigns_dict[campaign_id]["place"][place_id] else 'ND'])
                    if in_7j_list :
                        matrix_7j.append([campaigns_dict[campaign_id]["number"], campaigns_dict[campaign_id]["place"][place_id]["number"], translate(campaigns_dict[campaign_id]["place"][place_id]["name"]), campaigns_dict[campaign_id]["place"][place_id]["agency"] if "agency" in campaigns_dict[campaign_id]["place"][place_id] else 'ND'])
                    if in_21j_list :
                        matrix_21j.append([campaigns_dict[campaign_id]["number"], campaigns_dict[campaign_id]["place"][place_id]["number"], translate(campaigns_dict[campaign_id]["place"][place_id]["name"]), campaigns_dict[campaign_id]["place"][place_id]["agency"] if "agency" in campaigns_dict[campaign_id]["place"][place_id] else 'ND'])


        if len(matrix):
            for row in matrix :
                df_normal = pd.DataFrame([row], columns=['Campagne', 'Numéro', 'Station de mesure', 'Code Agence'])
                list_dataframe.append(df_normal)
        if len(matrix_7j):
            for row in matrix_7j :
                df_7j = pd.DataFrame([row], columns=['Campagne', 'Numéro', 'Station de mesure', 'Code Agence'])
                list_dataframe_7j.append(df_7j)
        if len(matrix_21j):
            for row in matrix_21j :
                df_21j = pd.DataFrame([row], columns=['Campagne', 'Numéro', 'Station de mesure', 'Code Agence'])
                list_dataframe_21j.append(df_21j)
    if len(list_dataframe)>1 :
        df_concat = pd.concat(list_dataframe)
    elif len(list_dataframe)==1 :
        df_concat = list_dataframe[0]
    else :
        df_concat = None
    if len(list_dataframe_7j)>1 :
        df_concat_7j = pd.concat(list_dataframe_7j)
    elif len(list_dataframe_7j)==1 :
        df_concat_7j = list_dataframe_7j[0] 
    else :
        df_concat_7j = None
    if len(list_dataframe_21j)>1 :
        df_concat_21j = pd.concat(list_dataframe_21j)
    elif len(list_dataframe_21j)==1 :
        df_concat_21j = list_dataframe_21j[0]
    else :
        df_concat_21j = None
        
    return df_concat, df_concat_7j, df_concat_21j
コード例 #34
0
ファイル: spectrum_options.py プロジェクト: ecabuk/vlf
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.setupUi(self)

        # Initiate Channel Buttons
        self.ch_buttons()

        # Mic Volume
        self.bar_volume.setValue(get_mic_vol())

        # Resolution
        self.create_row(
            title=translate('SpectrumOptions', 'Resolution'),
            option_key='spectrum/resolution',
            default=10,
            min_=5,
            max_=100,
            step=5,
            format_='%d'
        )

        # Measurement Time
        self.create_row(
            title=translate('SpectrumOptions', 'Frames'),
            option_key='spectrum/frames',
            default=100,
            min_=10,
            max_=200,
            step=10,
            format_='%d'
        )

        # Y Max
        self.create_row(
            title=translate('SpectrumOptions', 'Y Max'),
            option_key='spectrum/y_max',
            default=0.1,
            min_=0,
            max_=1,
            step=0.05,
            format_='%.2f'
        )

        # X Min
        self.create_row(
            title=translate('SpectrumOptions', 'X Min'),
            option_key='spectrum/x_min',
            default=15000,
            min_=0,
            max_=47999,
            step=1000,
            format_='%d'
        )

        # X Max
        self.create_row(
            title=translate('SpectrumOptions', 'X Max'),
            option_key='spectrum/x_max',
            default=30000,
            min_=1,
            max_=48000,
            step=1000,
            format_='%d'
        )

        # Selected Transmitters
        self.tx_model = TransmittersTableModel()
        self.table_tx.setModel(self.tx_model)

        # Set Row Height
        v_header = self.table_tx.verticalHeader()
        v_header.setResizeMode(QtGui.QHeaderView.Fixed)
        v_header.setDefaultSectionSize(42)

        selected = self.get_selected_frequencies()
        for row_id in range(self.tx_model.rowCount()):
            idx = self.tx_model.index(row_id, 1)
            if self.tx_model.itemData(idx) in selected:
                self.table_tx.selectionModel().select(
                    idx,
                    QtGui.QItemSelectionModel.Select | QtGui.QItemSelectionModel.Rows
                )
        self.table_tx.selectionModel().selectionChanged.connect(self.changed_tx)