Skip to content
Snippets Groups Projects
Commit fc56fad2 authored by Ute Becker's avatar Ute Becker :relaxed:
Browse files

Auswerteprogramme TL1 und TL2

parent 76a13d06
No related branches found
No related tags found
No related merge requests found
# -*- coding: utf-8 -*-
"""
Created on Wed Jul 5 09:51:18 2023
@author: becker07
"""
#!/usr/bin/env python
import os
import time
import datetime
import elabapi_python
from elabapi_python.rest import ApiException
import requests
import json
import couchdb
import numpy as np
from urllib3.exceptions import InsecureRequestWarning
from urllib3 import disable_warnings
couch = couchdb.Server('http://a73434.berlin.ptb.de:5984')
db = couch['vl_db'] # existing
#########################
# CONFIG #
#########################
API_HOST_URL = 'https://elabftw.ptb.de/api/v2'
# replace with your api key
API_KEY = 'a2c6b77fdd5b19b35b3043dbfd5ac73883c4265ab210a3672037ace64a6207cfa4231a0a834ed30c19be8'
# number of days to look back
#########################
# END CONFIG #
#########################
# Configure the api client
configuration = elabapi_python.Configuration()
configuration.api_key['api_key'] = API_KEY
configuration.api_key_prefix['api_key'] = 'Authorization'
configuration.host = API_HOST_URL
configuration.debug = False
configuration.verify_ssl = True
# create an instance of the API class
api_client = elabapi_python.ApiClient(configuration)
# fix issue with Authorization header not being properly set by the generated lib
api_client.set_default_header(header_name='Authorization', header_value=API_KEY)
# create an instance of Experiments
experimentsApi = elabapi_python.ExperimentsApi(api_client)
uploadsApi = elabapi_python.UploadsApi(api_client)
# create an instance of Tags
api_instance = elabapi_python.TagsApi(api_client)
# calculate the date
today = datetime.date.today()
########
elab_id=640
cers = ["75562_0001","75563_0001","75564_0001","75565_0001","75566_0001","75567_0001","75568_0001","75569_0001","75570_0001","75571_0001","75572_0001","75573_0001"] # Beispiel: cers = ["75511_0001","75512_0001"]
TL1_2= "FM1" #### FM1 oder TLA
year = "2024"
kk= "KK"
commentar = ''
################################
# get experiment with ID xxxx
exp = experimentsApi.get_experiment(elab_id)
print('='*72)
print('\n ******** Experiment {} (Original): \n'.format(elab_id), exp)
print('\n ******** Experiment-Body ', exp.body)
print('\n ******** Experiment-Tags ', exp.userid)
print('='*72)
#################################
if kk == "KK":
type_k = "-kk-"
tag_type = "KK"
#################################
if TL1_2 == "TLA":
tl="-tl2"
json_file = "cal-" + year + tl + type_k + cers[0]
print(json_file)
doc = db.get(json_file)
STD1 ="TLA"
STD2 ="TL2"
tab_begin=' </p><table style="border-collapse:collapse;width:100%;height:100%;"><tr style="height:16px;"><td style="width:33.3222%;height:16px;">DB-Link</td><td style="width:33.3222%;height:16px;">p-upstream</td><td style="width:33.3222%;height:16px;">Gas</td></tr>'
else :
tl="-fm1"
json_file = "cal-" + year + tl + type_k + cers[0]
print(json_file)
doc = db.get(json_file)
Type_k =(doc["Calibration"]["Type"])
STD1 ="TLV"
STD2 ="FM1"
tab_begin=' </p><table style="border-collapse:collapse;width:100%;height:100%;"><tr style="height:16px;"><td style="width:33.3222%;height:16px;">DB-Link</td><td style="width:33.3222%;height:16px;">Ventil</td><td style="width:33.3222%;height:16px;">Gas</td></tr>'
# Die Überschrift wird zusammengesetzt
title1=doc["Calibration"]["Customer"]["Sign"]
body_title = STD1 + ' / ' + STD2 + ' Kalibrierung [' + title1 + ']'
# Die Tabelle wird zusammengesetzt
body_begin='<p> '
#tab_begin=' </p><table style="border-collapse:collapse;width:100%;height:100%;"><tr style="height:16px;"><td style="width:33.3222%;height:16px;">DB-Link</td><td style="width:33.3222%;height:16px;">p-upstream</td><td style="width:33.3222%;height:16px;">Gas</td></tr>'
text1='<tr style="height:16px;"><td style="width:33.3222%;height:16px;"><a href="http://a73434.berlin.ptb.de:5984/_utils/#database/vl_db/'
text1_1='tl2'
text1_2='-'
text1_3='kk'
text1_4='-'
text2='" target="_blank" rel="noreferrer noopener">cal-'
text3='</a></td><td style="width:33.3222%;height:16px;">'
text4='</td><td style="width:33.3222%;height:16px;">'
text5='</td></tr>'
tab_end='</table><p> </p><p> </p>'
# Die Tags werden zusammengesetzt
json_file_tag = "cal-" + year + tl + type_k + cers[0]
doc_tag = db.get(json_file_tag)
ReferenceNo =doc_tag["Calibration"]["Presettings"]["CommonReferenceNo"]
print('stopp')
Type_k =(doc_tag["Calibration"]["Type"])
CustomerSign =(doc_tag["Calibration"]["Customer"]["Sign"])
len_cers=len(cers)
val = ""
size = len_cers
tab_body = [val] * size
p_up = [val] * size
gas = [val] * size
vent = [val] * size
print('111111111', tab_body)
if TL1_2 == 'TLA':
i = 0
while i < len(cers):
json_file = "cal-" + year + tl + type_k + cers[i]
print(json_file)
doc = db.get(json_file)
p_up[i]=doc["Calibration"]["Result"]["Formula"]["PressureUpstream"]
gas[i]=doc["Calibration"]["ToDo"]["Gas"]
body=text1 + json_file + text2+ year +tl + type_k + cers[i]+ text3 + p_up[i] + text4 + gas[i] + text5
tab_body[i] = body
p_up[i]=np.array(doc["Calibration"]["Result"]["Formula"]["PressureUpstream"])
i += 1
else :
i = 0
while i < len(cers):
json_file = "cal-" + year + tl + type_k + cers[i]
print(json_file)
x = cers[i][:5]
doc = db.get(json_file)
name_plot= "Scan_" + x + ".pdf"
file_plot= 'C:/Users/becker07/python/TL1/' + name_plot
name_Scan_json= "Scan" + x + ".pdf"
file_json= 'C:/Users/becker07/python/TL1/' + name_Scan_json
attachment = db.get_attachment(doc, "Scan.pdf").read()
with open(file_json, 'wb') as pdf_object:
pdf_object.write(attachment)
uploadsApi.post_upload('experiments', elab_id, file=file_json, comment='Plot: Signal und Offset vom Leck')
os.remove(file_json)
gas[i]=doc["Calibration"]["ToDo"]["Gas"]
vent[i]=doc["Calibration"]["Result"]["Formula"]["Valve"]
body=text1 + json_file + text2 + year + tl + type_k + cers[i]+ text3 + vent[i] + text4 + gas[i] + text5
tab_body[i] = body
i += 1
text_all= ''.join(tab_body)
body_tab=body_begin + commentar + tab_begin + text_all + tab_end
now = datetime.datetime.now()
#new_body='<p>Neu von UteXX x({})</p>'.format(now.strftime('%Y-%m-%d %H:%M:%S'))
data_body = { 'body': body_tab}
data_title = {'title': body_title}
print('elab_id= ', elab_id)
# === Modifizieren der Einträge (hier Eintrag "body") ===
response_body = experimentsApi.patch_experiment(elab_id, body=data_body)
response_title = experimentsApi.patch_experiment(elab_id, body=data_title)
data_tag={ 'tag': ReferenceNo}
response_tag = api_instance.post_tag('experiments', elab_id, body=data_tag)
data_tag={ 'tag': Type_k}
response_tag = api_instance.post_tag('experiments', elab_id, body=data_tag)
data_tag={ 'tag': STD1}
response_tag = api_instance.post_tag('experiments', elab_id, body=data_tag)
data_tag={ 'tag': STD2}
response_tag = api_instance.post_tag('experiments', elab_id, body=data_tag)
data_tag={ 'tag': CustomerSign}
response_tag = api_instance.post_tag('experiments', elab_id, body=data_tag)
#response = experimentsApi.patch_experiment(elab_id, tags=new_tags)
print('='*72)
# === der modifizierte Zustand ===
print('\n******** Experiment {} (modifiziert): \n'.format(elab_id), response_body)
print('='*72)
# -*- coding: utf-8 -*-
"""
Created on Fri Jul 1 12:12:37 2022
@author: becker07
"""
from matplotlib import pyplot as plt
from statistics import mean
from datetime import datetime
from IPython.display import Markdown as md
import numpy as np
import math
import statistics
import pandas as pd
import json
import couchdb
couch = couchdb.Server('http://a73434.berlin.ptb.de:5984')
db = couch['vl_db'] # existing
## Eingabe von:
# - Kalibrierscheinnummer
# - Jahr der Kalibrierung
# - laufende Nummer der Kalibrierung
cal_cert = "75552"
year = "2024"
no = "0001"
json_file = "cal-" + year + "-tl2-kk-" + cal_cert + "_" + no
doc = db.get(json_file)
# Die Daten aus dem File mit der entsprechenden Kalibrierscheinnummer werden eingelesen:
# datum, time, p_up und alle Temperaturen,
datei = cal_cert + "PTB" + year
datei_S = cal_cert + "PTB" + year + "_S"
print(json_file)
datei_pkt = pd.read_csv(datei, sep="\t", decimal = ',' )
datei_S_pkt = pd.read_csv(datei_S, sep="\t", decimal = ',' )
datum=datei_pkt["Datum"]
time=datei_pkt["Zeit"]
p_up=datei_pkt["Druck"]
p_up=np.array(p_up)
p_up = np.asarray(p_up, dtype=float)
q_tab=datei_pkt["q_mol"]
T_room=datei_pkt["Raumtemperatur"]
T_h2o=datei_pkt["T-H2O"]
T_wv=datei_pkt["T-WV"]
T_tl=datei_pkt["T-TL"]
T_rv=datei_pkt["T-RV"]
p_atm=datei_pkt["Umgebungsdruck p_0"]*100 # Umrechnung in Pa
m_sz = datei_pkt["m-SZ"]
m1_drift = datei_pkt["m1_D"]
m2_drift = datei_pkt["m2_D"]
print(p_atm)
# Die Werte der Sägezähne befinden sich im File "Kalibrierscheinnummer_S".
# Da pro Messpunkt 2 Sägezähne gefahren werden, existieren auch für jeden Messpunkt
# jeweils zwei Zeiten t_i und zwei Hübe l_1
l_1=datei_S_pkt["pos1_i"]
l_2=datei_S_pkt["pos2_i"]
l_pos= l_1-l_2
l_i=datei_S_pkt["h_i"]
t_i=datei_S_pkt["t_i"]
# Im File Datei_S sind die einzelnen Hübe l_i der Nadel in einer Spalte gespeichert, der Hub l
# muss daher in Hub l_1 und l_2 aufgegliedert werden, da in der Regel 2 Sägezähne gefahren werden.
l_1=l_pos[0::2] # Begonnen wird in der Spalte beim Element 0 bis zum Ende der Spalte in zweier Schritte
l_2=l_pos[1::2] # Begonnen wird in der Spalte beim Element 1 bis zum Ende der Spalte in zweier Schritte
#l_1=np.genfromtxt(datei_S,skip_header=1,usecols=(2)) #### wenn nur 1 SZ vorhanden
# Das gleiche gilt für die Zeit t_i
t_1=t_i[0::2] # Begonnen wird in der Spalte beim Element 0 bis zum Ende der Spalte in zweier Schritte
t_2=t_i[1::2] # Begonnen wird in der Spalte beim Element 1 bis zum Ende der Spalte in zweier Schritte
#t_1=np.genfromtxt(datei_S,skip_header=1,usecols=(3))#### wenn nur 1 SZ vorhanden
# Temperatur
lis_T_h2o = T_h2o.tolist()
lis_T_room = T_room.tolist()
lis_T_tl = T_tl.tolist()
lis_T_wv = T_wv.tolist()
lis_T_rv = T_rv.tolist()
# Druck
lis_p_atm = p_atm.tolist()
lis_p_up = p_up.tolist()
# Drift
lis_m1_drift = m1_drift.tolist()
lis_m2_drift = m2_drift.tolist()
lis_m_sz = m_sz.tolist()
# Datum
lis_date = datum.tolist()
lis_dtime = time.tolist()
lis_l1 = l_1.tolist()
lis_l2 = l_2.tolist()
lis_t1 = t_1.tolist()
lis_t2 = t_2.tolist()
print(lis_l1 ,lis_l2 ,lis_t1 ,lis_t2 )
datum_meas = lis_date[0:1]
print(lis_T_room)
doc["Calibration"]["Measurement"]["Values"]={"Temperature": [{"Unit": "C","Type": "T-H2O ","Comment":"Temperatur T ","Value": lis_T_h2o},
{"Unit": "C","Type": "T-Room","Comment":"Temperatur T","Value": lis_T_room},
{"Unit": "C","Type": "T-TL ","Comment":"Temperatur T","Value": lis_T_tl},
{"Unit": "C","Type": "T-WV ","Comment":"Temperatur T","Value": lis_T_wv},
{"Unit": "C","Type": "T-RV ","Comment":"Temperatur T","Value": lis_T_rv}],
"Pressure": [{"Unit": "mbar","Type": "Atmosparic pressure ","Value": lis_p_atm},
{"Unit": "bar","Type": "Upstream pressure ","Value": lis_p_up}],
"Time": [{"Unit": "s","Type": "Zeit des ersten Sägezahns ","Value": lis_t1},
{"Unit": "s","Type": "Zeit des zweiten Sägezahns ","Value": lis_t2}],
"L": [{"Unit": "mm","Type": "Hub des ersten Sägezahns ","Value": lis_l1},
{"Unit": "mm","Type": "Hub des zweiten Sägezahns ","Value": lis_l2}],
"Drift": [{"Unit": "mbar/s","Type": "Steigung des Sägezahns ","Value": lis_m_sz},
{"Unit": "mbar/s","Type": "Drift des ersten Sägezahns ","Value": lis_m1_drift},
{"Unit": "mbar/s","Type": "Drift des zweiten Sägezahns ","Value": lis_m2_drift}],
"DateTime": [{"Unit": "yyyy-mm-dd","Type": "Date ","Value": lis_date},
{"Unit": "hh:mm","Type": "Time ","Value": lis_dtime}]}
doc["Calibration"]["Measurement"]["Date"]=[{"Type": "measurement","Value":datum_meas}]
db.save(doc)
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment