Skip to content

Instantly share code, notes, and snippets.

@ialexpovad
Created December 23, 2021 08:34
Show Gist options
  • Save ialexpovad/41654e99124394b8866d3e1b33549bae to your computer and use it in GitHub Desktop.
Save ialexpovad/41654e99124394b8866d3e1b33549bae to your computer and use it in GitHub Desktop.
Определение основной относительной порешности при измерении мощности амбиентного эквивалента дозы гамма-излучения.
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)
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