TDCRPy 0.0.6__py3-none-any.whl → 0.0.8__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
TDCRPy/TDCRoptimize.py ADDED
@@ -0,0 +1,99 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Created on Wed Jul 5 10:04:53 2023
4
+
5
+ @author: romain.coulon
6
+ """
7
+
8
+ import numpy as np
9
+ import TDCRPy as td
10
+ import scipy.optimize as opt
11
+ import sys, time
12
+ sys.path.insert(1, 'G:\Python_modules\BIPM_RI_PyModules')
13
+ import TDCRcalculation as tc
14
+
15
+
16
+
17
+ def eff(TDCR_measure, TAB, TBC, TAC, Rad, kB):
18
+
19
+ N=50000
20
+ L=1
21
+ # r=opt.minimize_scalar(td.TDCRPy, args=(TDCR_measure, TAB, TBC, TAC, Rad, "1", N, kB, 0.98, 1000, "res", "sym"), method='golden')#,options={'xatol': 1e-7, 'disp': True, 'maxiter':100})
22
+ # r=opt.minimize_scalar(td.TDCRPy, args=(TDCR_measure, TAB, TBC, TAC, Rad, "1", N, kB, 0.98, 1000, "res", "sym"), method='brent')
23
+ r=opt.minimize_scalar(td.TDCRPy, args=(TDCR_measure, TAB, TBC, TAC, Rad, "1", N, kB, 0.98, 1000, "res", "sym"), method='bounded', bounds=[0.5, 2])
24
+
25
+ # r=opt.minimize(td.TDCRPy, L, args=(TDCR_measure, TAB, TBC, TAC, Rad, "1", N, kB, 0.98, 1000, "res", "sym"), method='nelder-mead',options={'xatol': 1e-7, 'disp': True, 'maxiter':100})
26
+ L=r.x
27
+ print(r)
28
+ #L=(L*0.995, L*1.021, L*0.988) # Free paramete in keV-1
29
+ # L = (L, L, L)
30
+ # r=opt.minimize(td.TDCRPy, L, args=(TDCR_measure, TAB, TBC, TAC, Rad, "1", N, kB, 0.98, 1000, "res", "asym"), method='nelder-mead',options={'xatol': 1e-7, 'disp': True, 'maxiter':100})
31
+ # L=r.x
32
+ # print(r)
33
+ out=td.TDCRPy(L,TDCR_measure, TAB, TBC, TAC, Rad, "1", N, kB, 0.98, 1000, "eff", "sym")
34
+ return np.mean(L), L, out[2], out[2], out[3]
35
+
36
+ def TicTocGenerator():
37
+ """
38
+ Generator that returns time differences
39
+ """
40
+ ti = 0 # initial time
41
+ tf = time.time() # final time
42
+ while True:
43
+ ti = tf
44
+ tf = time.time()
45
+ yield tf-ti # returns the time difference
46
+
47
+ TicToc = TicTocGenerator() # create an instance of the TicTocGen generator
48
+
49
+ # This will be the main function through which we define both tic() and toc()
50
+ def toc(tempBool=True):
51
+ """
52
+ Prints the time difference yielded by generator instance TicToc
53
+ """
54
+
55
+ tempTimeInterval = next(TicToc)
56
+ if tempBool:
57
+ print( "Elapsed time: %f seconds.\n" %tempTimeInterval )
58
+
59
+ def tic():
60
+ """
61
+ Records a time in TicToc, marks the beginning of a time interval
62
+ """
63
+ toc(False)
64
+
65
+
66
+ """
67
+ TEST
68
+ """
69
+
70
+ Rad="Co-60" # list of radionuclides (Na-24)
71
+ kB =1.0e-5 # Birks constant in cm/keV
72
+ TDCR_measure = 0.977667386529166 # Measured TDCR value
73
+ TAB = 0.992232838598821
74
+ TBC = 0.992343419459002
75
+ TAC = 0.99275350064608
76
+
77
+
78
+
79
+ tic()
80
+ F1, FFF, eff1, eff2 = tc.I2calc(TDCR_measure, TAB, TBC, TAC, Rad, kB)
81
+ toc()
82
+
83
+ print("/nanalytical model")
84
+ print("free parameter = ", F1)
85
+ print("free parameters = ", FFF)
86
+ print("Double count rate efficiency (sym) = ", eff1)
87
+ print("Double count rate efficiency (asym) = ", eff2)
88
+
89
+
90
+ tic()
91
+ F1, FFF, eff1, eff2, u = eff(TDCR_measure, TAB, TBC, TAC, Rad, kB)
92
+ toc()
93
+
94
+ print("/nstochastic model")
95
+ print("free parameter = ", F1)
96
+ print("free parameters = ", FFF)
97
+ print("Double count rate efficiency (sym) = ", eff1)
98
+ print("Double count rate efficiency (asym) = ", eff2)
99
+ print("u(eff) = ", u)
TDCRPy/__init__.py ADDED
@@ -0,0 +1,3 @@
1
+ from TDCRPy import TDCRPy
2
+ from TDCRPy import TDCR_model_lib
3
+ from TDCRPy import TDCRoptimize
TDCRPy/decay.py ADDED
@@ -0,0 +1,29 @@
1
+ """
2
+ This program aims to calculate the relative composition of radionuclides
3
+ decaying in chain using the Bateman model implemented in the radioactivedecay module form (MIT)
4
+
5
+ Romain Coulon, Jialin Hu
6
+ Bureau International des Poids et Mesures
7
+ """
8
+
9
+ # pip install radioactivedecay
10
+ import radioactivedecay as rd
11
+ import matplotlib.pyplot as plt
12
+
13
+ rad = "Ra-223" # Radionuclide
14
+ A0 = 1 # Inital activity
15
+ unit = 'Bq' # unit for the activity
16
+ decaytime = 2 # decay time
17
+ unitt = 'd' # unit for the time
18
+
19
+ rad_t0 = rd.Inventory({rad: A0}, unit)
20
+ rad_t1 = rad_t0.decay(decaytime, unitt)
21
+ rad_t1.activities(unit)
22
+ print(rad_t1)
23
+
24
+ decayGraph = rad_t0.plot(decaytime, unitt, yunits=unit)
25
+ plt.savefig('decayGraph.png')
26
+
27
+ nuc = rd.Nuclide(rad)
28
+ decayChain = nuc.plot()
29
+ plt.savefig('decayChain.png')
TDCRPy/test.py ADDED
@@ -0,0 +1,12 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Created on Thu Jul 13 19:15:23 2023
4
+
5
+ @author: romain.coulon
6
+ """
7
+ import TDCRPy
8
+
9
+ TDCRPy.TDCRPy(1, 0.5, 0.5, 0.5, 0.5, "H-3", "1", 10, 0.00001, 1,10, "eff", "sym", Display=True)
10
+
11
+
12
+ TDCRPy.TDCRPy(L, TD, TAB, TBC, TAC, Rad, pmf_1, N, kB, RHO, nE, mode, mode2)
TDCRPy/test1.py ADDED
@@ -0,0 +1,87 @@
1
+ # -*- coding: utf-8 -*-
2
+ """
3
+ Created on Mon May 15 15:41:41 2023
4
+
5
+ @author: romain.coulon
6
+ """
7
+
8
+
9
+
10
+ import zipfile
11
+ import numpy as np
12
+
13
+ file = 'decayData/All-nuclides_Ensdf.zip'
14
+ z = zipfile.ZipFile(file)
15
+
16
+ with z.open('Ag-108m.txt') as f:
17
+ data = f.readlines()
18
+ nL = np.size(data)
19
+
20
+ ## fomatage en list de vecteur pour chaque line du fichier ENSDF
21
+ for i in range(nL): # boucle dans data
22
+ data[i] = str(data[i]) # conversion en string
23
+ data[i] = data[i].replace("b'",'') # on enlève les caratères de formatage
24
+ data[i] = data[i].replace("\\r\\n'",'') # on enlève les caratères de formatage
25
+ for i in range(nL):
26
+ data[i] = data[i].split()
27
+
28
+ for i in range(nL):
29
+ if i>0 and ("L" in data[i]) and ("AUGER" in data[i]) and ("|]" in data[i-1]):
30
+ data.insert(i,[data[i][0], 'T'])
31
+
32
+ ## Définir des repères
33
+ index_auger = [] # indice de
34
+ daugther = [] # liste des filles
35
+ index_end = [] # indice dernier valeur pour une fille
36
+ posi = [] # indice des blocs transitions
37
+ for i, p in enumerate(data): # boucle dans le fichier
38
+ if 'DECAY' in p:
39
+ daugther.append(p[0]) # liste des filles
40
+ if 'Auger' in p:
41
+ index_auger.append(i) # repère de ligne pour ensuite définir l'ensemble des blocs
42
+ if len(p)==2:
43
+ posi.append(i) # repère de ligne pour ensuite définir les blocs (2)
44
+ # if 'L' in p
45
+ # posi:
46
+ if 'P' in p:
47
+ index_end.append(i) # repère de fin pour ensuite définir l'ensemble des blocs
48
+ posi.append(i)
49
+
50
+ ## Filtrage des données utiles et formatage
51
+ energy = []
52
+ prob = []
53
+ Type = []
54
+ Fille = []
55
+ for i in range(len(posi)-1): # bloucle dans les blocs
56
+ start = posi[i]+1 # indice debut du bloc
57
+ end = posi[i+1] # indice fin du bloc
58
+ d = data[start:end] # Le bloc
59
+ e_b = [] # Energie des transitions du bloc
60
+ prob_b = [] # Proba des transitions du bloc
61
+ Type_b = [] # Types des transitions du bloc
62
+ Fille_b = [] # Fille des transitions du bloc
63
+ #e2 = []
64
+ if start == end:
65
+ continue
66
+ if start-1 in index_end:
67
+ #e = []
68
+ continue
69
+ for n, p1 in enumerate(d):
70
+ #e2 = []
71
+ if '-' in p1[2]: # traitement des intervals de nombres réels
72
+ x = p1[2].split('-')
73
+ p1[2] = round((float(x[1])+float(x[0]))/2,3) # Moyenne
74
+ if '|]' in p1: # traitment des accolades
75
+ if len(p1)>6: # repère de la ligne portant la proba pour le groupe
76
+ prob_b.append(float(p1[4]))
77
+ e_b.append(float(p1[2]))
78
+ else:
79
+ e_b.append(float(p1[2]))
80
+ prob_b.append(float(p1[3]))
81
+
82
+ if len(prob_b)==1 and len(e_b)>1:
83
+ e_b = [np.mean(e_b)]
84
+
85
+ print(e_b)
86
+ print(prob_b)
87
+ print(" ")
@@ -0,0 +1,88 @@
1
+ Metadata-Version: 2.1
2
+ Name: TDCRPy
3
+ Version: 0.0.8
4
+ Summary: TDCR model
5
+ Home-page: https://github.com/RomainCoulon/TDCRPy
6
+ Author: RomainCoulon (Romain Coulon)
7
+ Author-email: <romain.coulon@bipm.org>
8
+ License: UNKNOWN
9
+ Keywords: python,TDCR,Monte-Carlo,radionuclide,scintillation,counting
10
+ Platform: UNKNOWN
11
+ Classifier: Development Status :: 2 - Pre-Alpha
12
+ Classifier: Intended Audience :: Science/Research
13
+ Classifier: License :: OSI Approved :: MIT License
14
+ Classifier: Natural Language :: English
15
+ Classifier: Natural Language :: French
16
+ Classifier: Programming Language :: Python :: 3
17
+ Classifier: Operating System :: Unix
18
+ Classifier: Operating System :: MacOS :: MacOS X
19
+ Classifier: Operating System :: Microsoft :: Windows
20
+ Classifier: Topic :: Scientific/Engineering :: Physics
21
+ Description-Content-Type: text/markdown
22
+ License-File: LICENCE.md
23
+ Requires-Dist: numpy
24
+ Requires-Dist: scipy
25
+ Requires-Dist: sys
26
+ Requires-Dist: time
27
+ Requires-Dist: urllib
28
+ Requires-Dist: zipfile
29
+ Requires-Dist: re
30
+
31
+ # TDCRPy
32
+
33
+ TDCRPy is a Python code to calculate detection efficiency of a liquide scintillation counter using 3-photomultiplier tubes.
34
+ The calculation is based on the photo-physical model called of the Triple-to-Double-Coincidence-Ratio method (TDCR) [[1]](#1) and a Monte-Carlo sampling allowing to adress complexe decay schemes and radionuclide mixtures. The process is summarized in the figure below.
35
+
36
+ <img src="./FlowChart.jpg" alt="drawing" width="500"/>
37
+
38
+ ## Nuclear decay
39
+
40
+ The code directly reads decay data from the Decay Data Evaluation Project (DDEP) web interface [[2]](#2) that is recommanded to be used by the radionuclide metrology community. The PenNuc format [[3]](#3) is used to simulate decays and the $\beta$ spectra from the BetaShape code [[4]](#4) are used. The BetaShape code estimates accurate $\beta$ spectra by taking the atomic exchange effect and also simulate accurately electron capture decay [[5]](#5). It has been demonstrated to offer significant improvement in the context of liquid scintillation counting [[6]](#6).
41
+
42
+ ## Atomic relaxation
43
+
44
+ The atomic relaxation from missing electrons in the inner-shell following electron capture and internal conversion is simulated by ENSDF data on the DDEP web interface.
45
+
46
+ ## Interaction
47
+
48
+ The interaction of $\gamma$ rays, electrons and positrons are simulated using response kernels calculated by the Monte-Carlo code MCNP6 developped by Los Alamos [[13]](#13).
49
+
50
+ ## Scintillation
51
+
52
+ The stopping power of electrons between 20 keV and 1000 keV is a mixture of a radiative loss model [[7]](#7) and a collision model [[8]](#8) that has been validated agaisnt the NIST model ESTAR [[9]](#9) recommanded by the ICRU Report 37 [[10]](#10). At low energy - between 10 eV and 20 keV - the model from Tan and Xia [[11]](#11) is implemented.
53
+
54
+ The stopping power of $\alpha$ particles of energy comprises between 1 keV and 8 MeV comes from the NIST code ASTAR [[9]](#9) recommanded in the ICRU Report 49 [[12]](#12). For energy below 1 keV, an extrapolation is made.
55
+
56
+ ## Statistical model
57
+
58
+ ...
59
+
60
+ ## References
61
+
62
+ <a id="1">[1]</a> Ryszard Broda, Krzysztof Pochwalski, Tomasz Radoszewski, Calculation of liquid-scintillation detector efficiency, *Applied Radiation and Isotopes* **39**:2, 1988, 159-164, https://doi.org/10.1016/0883-2889(88)90161-X
63
+
64
+ <b id="2">[2]</b> http://www.lnhb.fr/ddep_wg/
65
+
66
+ <c id="3">[3]</c> E. García-Toraño, V. Peyres, F. Salvat, PenNuc: Monte Carlo simulation of the decay of radionuclides, *Computer Physics Communications* **245**, 2019, 106849 https://doi.org/10.1016/j.cpc.2019.08.002
67
+
68
+ <c id="4">[4]</c> X. Mougeot, Erratum: Reliability of usual assumptions in the calculation of $\beta$ and $\bar{\mu}$ spectra, *Physical Review C* **91**, 2015, 055504, https://doi.org/10.1103/PhysRevC.92.059902
69
+
70
+ <c id="5">[5]</c> X. Mougeot, Towards high-precision calculation of electron capture decays, *Applied Radiation and Isotopes* **154**, 2019, 108884, https://doi.org/10.1016/j.apradiso.2019.108884
71
+
72
+ <c id="6">[6]</c> K. Kossert, X. Mougeot, Improved activity standardization of <sup>90</sup>Sr/<sup>90</sup>Y by means of liquid scintillation counting, *Applied Radiation and Isotopes* **168**, 2021, 109478, https://doi.org/10.1016/j.apradiso.2020.109478
73
+
74
+ <c id="7">[7]</c> S.M. Seltzer, M.R. Berger, M. R., Evaluation of the collision stopping power of elements and compounds for electrons and positrons, *Applied Radiation and Isotopes* **33**:11, 1982, 1189-1218, https://doi.org/10.1016/0020-708x(82)90244-7
75
+
76
+ <c id="8">[8]</c> M.O. El-Ghossain, Calculations Of Stopping Power, And Range Of Electrons Interaction With Different Material And Human Body Parts, *International Journal of Scientific & Technology Research* **6**:1 2017. https://www.ijstr.org/final-print/jan2017/Calculations-Of-Stopping-Power-And-Range-Of-Electrons-Interaction-With-Different-Material-And-Human-Body-Parts.pdf
77
+
78
+ <c id="9">[9]</c> M.J. Berger, J.S. Coursey, M.A. Zucker and J. Chang,Stopping-Power & Range Tables for Electrons, Protons, and Helium Ions, *NIST Standard Reference Database 124*, 2017, https://dx.doi.org/10.18434/T4NC7P
79
+
80
+ <c id="10">[10]</c> ICRU Report 37, *Stopping Powers for Electrons and Positrons*
81
+
82
+ <c id="11">[11]</c> Z. Tan, Y. Xia, Stopping power and mean free path for low-energy electrons in ten scintillators over energy range of 20–20,000 eV, *Applied Radiation and Isotopes* **70**, 2012, 296-300, https://doi.org/10.1016/j.apradiso.2011.08.012
83
+
84
+ <c id="12">[12]</c> ICRU Report 49, *Stopping Power and Ranges for Protons and Alpha Particles*, https://www.icru.org/report/stopping-power-and-ranges-for-protons-and-alpha-particles-report-49/
85
+
86
+ <c id="13">[13]</c> https://mcnp.lanl.gov/
87
+
88
+
@@ -0,0 +1,23 @@
1
+ Code/Activity_TDCR.py,sha256=wcllEOJbeEOexAYzcFGQx2luIBhxSU3LtpEalRmNziw,11530
2
+ Code/EfficiencyProfils.py,sha256=-ZUPva1dU7lMRcKbQAewX9QyiTDwCiNQDoaQiw7dOI4,4829
3
+ Code/TDCRPy.py,sha256=igN-xE3ixC27R0aaZHQ832wp8w5UV0iDjx_1cEc8Kvk,23214
4
+ Code/TDCR_model_lib.py,sha256=bF2S2L3L5c4y2Bg6G1tG1PVR7mJJ1L6UU7G0IEHNsTY,79829
5
+ Code/TDCRoptimize.py,sha256=2CssmP_SZSe6C_Bkgei3hon21RPytH4DetMbXi-e6wk,3171
6
+ Code/__init__.py,sha256=IQBC9crikuuGlHfxIdP65CrgSHgl9U8z2jSYduNpWB0,93
7
+ Code/decay.py,sha256=Lnq-kj-6Xs2Rw9w3Y3LlK_ffFip1QzemHdesiug0Wko,817
8
+ Code/test.py,sha256=3r8LxXmQwlHNIefMswwUCy3OoHHKDVK8A3izerGT15U,292
9
+ Code/test1.py,sha256=rGA9d1cgArhAfxRAAdtiz-vPGQ0Ns3HEdN8sCwydHYM,3250
10
+ TDCRPy/Activity_TDCR.py,sha256=wcllEOJbeEOexAYzcFGQx2luIBhxSU3LtpEalRmNziw,11530
11
+ TDCRPy/EfficiencyProfils.py,sha256=-ZUPva1dU7lMRcKbQAewX9QyiTDwCiNQDoaQiw7dOI4,4829
12
+ TDCRPy/TDCRPy.py,sha256=lrsngHHgBxuOdOmUqxEEbMHjpHnSF8ZP-ZUknfPs37c,23207
13
+ TDCRPy/TDCR_model_lib.py,sha256=bF2S2L3L5c4y2Bg6G1tG1PVR7mJJ1L6UU7G0IEHNsTY,79829
14
+ TDCRPy/TDCRoptimize.py,sha256=2CssmP_SZSe6C_Bkgei3hon21RPytH4DetMbXi-e6wk,3171
15
+ TDCRPy/__init__.py,sha256=IQBC9crikuuGlHfxIdP65CrgSHgl9U8z2jSYduNpWB0,93
16
+ TDCRPy/decay.py,sha256=Lnq-kj-6Xs2Rw9w3Y3LlK_ffFip1QzemHdesiug0Wko,817
17
+ TDCRPy/test.py,sha256=3r8LxXmQwlHNIefMswwUCy3OoHHKDVK8A3izerGT15U,292
18
+ TDCRPy/test1.py,sha256=rGA9d1cgArhAfxRAAdtiz-vPGQ0Ns3HEdN8sCwydHYM,3250
19
+ TDCRPy-0.0.8.dist-info/LICENCE.md,sha256=fuYzrZRiOAjJBzA1tsGQwojCgGROArb2Ec48GDTjlWM,1086
20
+ TDCRPy-0.0.8.dist-info/METADATA,sha256=CU_LjClcOCPImFHxekh2IA_RxqPwuLem6ek03GO7j-I,5761
21
+ TDCRPy-0.0.8.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
22
+ TDCRPy-0.0.8.dist-info/top_level.txt,sha256=5dSMF0KOskVmT0QGz9KnqcD9Ccc2Dkq0Sa8FOZk-7Ck,5
23
+ TDCRPy-0.0.8.dist-info/RECORD,,
@@ -1,31 +0,0 @@
1
- Metadata-Version: 2.1
2
- Name: TDCRPy
3
- Version: 0.0.6
4
- Summary: TDCR model
5
- Home-page: UNKNOWN
6
- Author: RomainCoulon (Romain Coulon)
7
- Author-email: <romain.coulon@bipm.org>
8
- License: UNKNOWN
9
- Keywords: python,TDCR,Monte-Carlo,radionuclide,scintillation,counting
10
- Platform: UNKNOWN
11
- Classifier: Development Status :: 2 - Pre-Alpha
12
- Classifier: Intended Audience :: Science/Research
13
- Classifier: License :: OSI Approved :: MIT License
14
- Classifier: Natural Language :: English
15
- Classifier: Natural Language :: French
16
- Classifier: Programming Language :: Python :: 3
17
- Classifier: Operating System :: Unix
18
- Classifier: Operating System :: MacOS :: MacOS X
19
- Classifier: Operating System :: Microsoft :: Windows
20
- Classifier: Topic :: Scientific/Engineering :: Physics
21
- License-File: LICENCE.md
22
- Requires-Dist: numpy
23
- Requires-Dist: scipy
24
- Requires-Dist: sys
25
- Requires-Dist: time
26
- Requires-Dist: urllib
27
- Requires-Dist: zipfile
28
- Requires-Dist: re
29
-
30
- UNKNOWN
31
-
@@ -1,14 +0,0 @@
1
- Code/Activity_TDCR.py,sha256=wcllEOJbeEOexAYzcFGQx2luIBhxSU3LtpEalRmNziw,11530
2
- Code/EfficiencyProfils.py,sha256=-ZUPva1dU7lMRcKbQAewX9QyiTDwCiNQDoaQiw7dOI4,4829
3
- Code/TDCRPy.py,sha256=ffOfmaqWdk5PWoVDep8zs_VoQLUhUCQePC0oAbPOYVs,23202
4
- Code/TDCR_model_lib.py,sha256=vl0pMsGG3FKAmfpnHfjUX8mokay1dvlH99GHYd9BnsI,79115
5
- Code/TDCRoptimize.py,sha256=2CssmP_SZSe6C_Bkgei3hon21RPytH4DetMbXi-e6wk,3171
6
- Code/__init__.py,sha256=IQBC9crikuuGlHfxIdP65CrgSHgl9U8z2jSYduNpWB0,93
7
- Code/decay.py,sha256=Lnq-kj-6Xs2Rw9w3Y3LlK_ffFip1QzemHdesiug0Wko,817
8
- Code/test.py,sha256=rbvsRbDGzSifUU1dSUA7CHkU58Qt8z8U42A9hGdIMOQ,212
9
- Code/test1.py,sha256=rGA9d1cgArhAfxRAAdtiz-vPGQ0Ns3HEdN8sCwydHYM,3250
10
- TDCRPy-0.0.6.dist-info/LICENCE.md,sha256=fuYzrZRiOAjJBzA1tsGQwojCgGROArb2Ec48GDTjlWM,1086
11
- TDCRPy-0.0.6.dist-info/METADATA,sha256=2i9g8aqPHJVoECr8P8yaquCvQXmXzjyV8cfNhyTnIZY,950
12
- TDCRPy-0.0.6.dist-info/WHEEL,sha256=2wepM1nk4DS4eFpYrW1TTqPcoGNfHhhO_i5m4cOimbo,92
13
- TDCRPy-0.0.6.dist-info/top_level.txt,sha256=5dSMF0KOskVmT0QGz9KnqcD9Ccc2Dkq0Sa8FOZk-7Ck,5
14
- TDCRPy-0.0.6.dist-info/RECORD,,
File without changes