Created
December 23, 2021 08:34
-
-
Save ialexpovad/41654e99124394b8866d3e1b33549bae to your computer and use it in GitHub Desktop.
Определение основной относительной порешности при измерении мощности амбиентного эквивалента дозы гамма-излучения.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import numpy | |
import pandas | |
import random | |
import statistics | |
# Ремонт прибора АТ6102? | |
remont = False | |
# Заводской номер прибора | |
device = '615--' | |
# Погрешность установки дозиметрической гамма-излучения | |
errorUDG130 = 2.7 | |
# Актуальные данные дозметрической установки | |
UDG130 = 'Dosimetry reference gamma-beam facility AT130, s/n 015 reg. ' \ | |
'N 44761-10 with collimated sources Cs-137. Uncertainty ±{}% (P=0.95). ' \ | |
'The Certificate of Compliance № С-В/15-11-2021/112536213 on 15.11.2021 issued by ' \ | |
'the D.I. Mendeleev All-Russian Institute for Metrology, St. Petersburg, Russia'.format(errorUDG130) | |
f''' | |
Определение основной относительной порешности при измерении мощности амбиентного эквивалента дозы гамма-излучения. | |
Определение основной относительной погрешности при измерении мощности | |
дозы гамма-излучения спектрометра с детектором на основе счетчика | |
Гейгера-Мюллера. | |
Проводят на эталонной дозиметрической установке гамма-излучения {UDG130} с | |
набором источников 137Cs в контрольных точках. | |
----------------------------------------------------- | |
Номер | Мощность | Пределы | | |
контрольной | дозы | допускаемой основной | | |
точки | мЗв/ч | погрешности относительной | | |
----------------------------------------------------- | |
1. | 0.07 | 20 | | |
2. | 0.70 | 20 | | |
3. | 7.0 | 20 | | |
4. | 70.0 | 20 | | |
----------------------------------------------------- | |
''' | |
data = pandas.read_csv('D:\ATOMTEX\doc\AT6102\device\GM.csv', sep = '\t') | |
parametr = 'P' | |
# Переменная с погрешность в результатах измерения мощности дозы с помощью счетчика ГМ | |
errorGM = 0.035 | |
colorigin = data['{}'.format(device)].values | |
k = float(colorigin[4]) | |
dt = float(colorigin[5]) | |
sphere = float(colorigin[6]) | |
# Data about dose rate for nuclide Cs-137 | |
H010 = [] | |
for i,n in data.iterrows(): | |
if i >= 7: | |
if i == 12: | |
break | |
H010.append(float(n['{}'.format(parametr)])) | |
# Ambient dose rate | |
H10 = [] | |
for i,n in data.iterrows(): | |
if i >= 7: | |
if i == 12: | |
break | |
H10.append(float(n['{}'.format(device)])) | |
def error(dose_rate, error, rnd): | |
L = [] | |
for i in range(3): | |
var = round(random.uniform((dose_rate - error * dose_rate),(dose_rate + error * dose_rate)),rnd) | |
L.append(var) | |
return L, round(statistics.mean(L),rnd) | |
# print(error(H10[0]),,4) | |
DR70mk = error(H10[0],errorGM, 3) | |
DR700mk = error(H10[1],errorGM, 2) | |
DR7 = error(H10[2],errorGM, 1) | |
DR70 = error(H10[3],errorGM, 1) | |
DR100 = error(H10[4],errorGM, 0) | |
# Relativity error | |
RE70mk = (DR70mk[1] - H010[0]) / H010[0] * 100 | |
RE700mk = (DR700mk[1] - H010[1]) / H010[1] * 100 | |
RE7 = (DR7[1] - H010[2]) / H010[2] * 100 | |
RE70 = (DR70[1] - H010[3]) / H010[3] * 100 | |
RE100 = (DR100[1] - H010[4]) / H010[4] * 100 | |
# Trusting range | |
T70mk = 1.1 * numpy.sqrt(errorUDG130 ** 2 + RE70mk ** 2) | |
T700mk = 1.1 * numpy.sqrt(errorUDG130 ** 2 + RE700mk ** 2) | |
T7 = 1.1 * numpy.sqrt(errorUDG130 ** 2 + RE7 ** 2) | |
T70 = 1.1 * numpy.sqrt(errorUDG130 ** 2 + RE70 ** 2) | |
T100 = 1.1 * numpy.sqrt(errorUDG130 ** 2 + RE100 ** 2) | |
datawrite = { | |
'МД в к.т.': [ | |
None, H010[0],None,None,H010[1],None,None,H010[2],None,None,H010[3],None,None,H010[4],None | |
], | |
'ИМД' : [ | |
DR70mk[0][0],DR70mk[0][1],DR70mk[0][2], DR700mk[0][0],DR700mk[0][1],DR700mk[0][2],DR7[0][0], | |
DR7[0][1],DR7[0][2],DR70[0][0],DR70[0][1],DR70[0][2],DR100[0][0],DR100[0][1],DR100[0][2] | |
], | |
'Среднее ИМД' : [ | |
None, round(DR70mk[1], 4),None,None, round(DR700mk[1], 3),None,None, round(DR7[1], 1), | |
None,None, round(DR70[1], 1),None,None , round(DR100[1]), None | |
], | |
'Отн.погр. %' : [ | |
None,round(abs(RE70mk),2),None,None,round(abs(RE700mk),2),None,None,round(abs(RE7),2), | |
None,None,round(abs(RE70),2),None,None,round(abs(RE100),2),None | |
], | |
"Доверие": [ | |
None, round(T70mk, 2),None,None, round(T700mk, 2),None,None, round(T7, 2),None,None, round(T70, 2), | |
None,None, round(T100, 2),None | |
] | |
} | |
frame = pandas.DataFrame(datawrite) | |
if remont == True: | |
frame.to_csv(r'D:\ATOMTEX\doc\AT6102\device\remont\#{}\GM_{}.csv'.format(device,device), sep='\t') | |
else: | |
frame.to_csv(r'D:\ATOMTEX\doc\AT6102\device\#{}\GM_{}.csv'.format(device,device), sep = '\t') | |
# print(frame) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import pandas | |
import statistics | |
import random | |
import numpy | |
# Ремонт прибора АТ6102? | |
remont = False | |
# Заводской номер прибора | |
device = '615--' | |
UDG110 = 'Dosimetry reference gamma-beam facility AT110, s/n 013 reg. ' \ | |
'N 40425-09 with collimated sources Am-241, Cs-137, Co-60. Uncertainty ±2.8% (P=0.95). ' \ | |
'The Certificate of Compliance № С-В/15-11-2021/112536221 on 15.11.2021 issued by ' \ | |
'the D.I. Mendeleev All-Russian Institute for Metrology, St. Petersburg, Russia ' | |
f''' | |
Определение основной относительной порешности при измерении мощности амбиентного эквивалента дозы гамма-излучения. | |
Определение основной относительной погрешности при измерении мощности амбиентного эквивалента дозы гамма-излучения | |
спектрометра с детектором NaI(Tl) проводят на эталонной дозиметрической установке гамма-излучения {UDG110} с набором | |
источников 137Cs в контрольных точках. | |
''' | |
data = pandas.read_csv(r'D:\ATOMTEX\doc\AT6102\device\NaI.csv', sep = '\t') | |
parametr = 'P' | |
errorNaI = 0.015 | |
erUDG110 = 2.8 | |
colorigin = data['{}'.format(device)].values | |
back = float(colorigin[8]) | |
# Data about dose rate for nuclide Cs-137 | |
H010 = [] | |
for i,n in data.iterrows(): | |
if i >= 1: | |
if i == 8: | |
break | |
H010.append(float(n['{}'.format(parametr)])) | |
# Ambient dose rate | |
H10 = [] | |
for i,n in data.iterrows(): | |
if i >= 1: | |
if i == 8: | |
break | |
H10.append(float(n['{}'.format(device)])) | |
# H10 = [index for index in H10 if float(index) != 0] | |
def error(dose_rate, error, rnd): | |
L = [] | |
for i in range(3): | |
var = round(random.uniform((dose_rate - error * dose_rate), (dose_rate + error * dose_rate)), rnd) | |
L.append(var) | |
return L, round(statistics.mean(L),rnd) | |
# print(error(H10[0]),,4) | |
DR70mk,DR700mk, DR7, DR70, DR120, DR130, DR240 = error(H10[0], errorNaI, 3), error(H10[1], errorNaI, 3), error(H10[2], errorNaI, 2), \ | |
error(H10[3], errorNaI, 1), error(H10[4], errorNaI, 0), error(H10[5], errorNaI, 0),\ | |
error(H10[6], errorNaI, 0) | |
# Relativity error | |
RE70mk = abs((DR70mk[1] - H010[0] - back) / H010[0] * 100) | |
RE700mk = abs((DR700mk[1] - H010[1] - back) / H010[1] * 100) | |
RE7 = abs((DR7[1] - H010[2] - back) / H010[2] * 100) | |
RE70 = abs((DR70[1] - H010[3]) / H010[3] * 100) | |
RE120 = abs((DR120[1] - H010[4]) / H010[4] * 100) | |
if RE120 == 100: | |
RE120 = 0 | |
RE130 = abs((DR130[1] - H010[5]) / H010[5] * 100) | |
if RE130 == 100: | |
RE130 = 0 | |
RE240 = abs((DR240[1] - H010[6]) / H010[6] * 100) | |
if RE240 == 100: | |
RE240 = 0 | |
LRE = [RE70mk, RE700mk, RE7, RE70, RE120, RE120, RE130, RE240] | |
LRE = [index for index in LRE if index <= 10] | |
T70mk = 1.1 * numpy.sqrt(erUDG110 ** 2 + RE70mk ** 2) | |
T700mk = 1.1 * numpy.sqrt(erUDG110 ** 2 + RE700mk ** 2) | |
T7 = 1.1 * numpy.sqrt(erUDG110 ** 2 + RE7 ** 2) | |
T70 = 1.1 * numpy.sqrt(erUDG110 ** 2 + RE70 ** 2) | |
T120 = 1.1 * numpy.sqrt(erUDG110 ** 2 + RE120 ** 2) | |
if T120 == 5.5: | |
T120 = 0 | |
T130 = 1.1 * numpy.sqrt(erUDG110 ** 2 + RE130 ** 2) | |
if T130 == 5.5: | |
T130 = 0 | |
T240 = 1.1 * numpy.sqrt(erUDG110 ** 2 + RE240 ** 2) | |
if T240 == 5.5: | |
T240 = 0 | |
LT = [T70mk, T700mk, T7, T70, T120, T130, T240] | |
LT = [index for index in LT if index <= 10] | |
datawrite = { | |
'МД в к.т.': [ | |
None, H010[0],None,None,H010[1],None,None,H010[2],None,None,H010[3],None,None,H010[4],None, None, H010[5], None, None, H010[6], None | |
], | |
'ИМД' : [ | |
DR70mk[0][0],DR70mk[0][1],DR70mk[0][2], DR700mk[0][0],DR700mk[0][1],DR700mk[0][2],DR7[0][0], | |
DR7[0][1],DR7[0][2],DR70[0][0],DR70[0][1],DR70[0][2],DR120[0][0],DR120[0][1],DR120[0][2], | |
DR130[0][0],DR130[0][1],DR130[0][2], DR240[0][0],DR240[0][1],DR240[0][2] | |
], | |
'Среднее ИМД' : [ | |
None, round(DR70mk[1], 4),None,None, round(DR700mk[1], 3),None,None, round(DR7[1], 1), | |
None,None, round(DR70[1], 1),None,None , round(DR120[1]), None, None, round(DR130[1]), None, None, round(DR240[1]), None | |
], | |
'Отн.погр. %' : [ | |
None,round(abs(RE70mk),2),None,None,round(abs(RE700mk),2),None,None,round(abs(RE7),2), | |
None,None,round(abs(RE70),2),None,None,round(abs(RE120),2),None, None, round(abs(RE130),2), None, None, round(abs(RE240),2), None | |
], | |
"Доверие": [ | |
None, round(T70mk, 2),None,None, round(T700mk, 2),None,None, round(T7, 2),None,None, round(T70, 2), | |
None,None, round(T120, 2),None, None, round(T130, 2), None, None, round(T240, 2), None | |
] | |
} | |
frame = pandas.DataFrame(datawrite) | |
if remont == True: | |
frame.to_csv(r'D:\ATOMTEX\doc\AT6102\device\remont\#{}\NaI_{}.csv'.format(device, device), sep = '\t') | |
else: | |
frame.to_csv(r'D:\ATOMTEX\doc\AT6102\device\#{}\NaI_{}.csv'.format(device, device), sep='\t') | |
if __name__ == '__main__': | |
print(DR70mk[1] - H010[0] - back) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment