duo.core package

Submodules

duo.core.constant module

class duo.core.constant.Endfb[source]

Bases: object

Avogadro = 6.022140857e+23
atomicMassUnit = 931494095.4
lightSpeed = 299792458
neutronMass = 1.00866491588

duo.core.dicom_decoder module

class duo.core.dicom_decoder.DECTDicomPair[source]

Bases: object

class duo.core.dicom_decoder.DicomFile[source]

Bases: object

class duo.core.dicom_decoder.dect_dicom_decoder[source]

Bases: object

CheckLowOrHighKVP(givenFileName)[source]
FindMixedFile(givenFileName)[source]
FindPairingFile(givenFileName)[source]
ProcessDirectory(dicomDir)[source]
ProcessDirectoryWithLowHighAndMixedImages(dicomDirLowAndHigh, mixedImageDicomDir)[source]
ProcessDirectoryWithMixedImage(mixedImageDicomDir)[source]

duo.core.duo_exception module

exception duo.core.duo_exception.DuoException[source]

Bases: Exception

duo.core.element module

class duo.core.element.Element(Z=0)[source]

Bases: object

Class that manages element-specific data.

Variables
  • AWR (float) – atomic weight ratio relative to neutron

  • xsTable (dictionary) – Each (key, value) pair is (process_id, a list of PhotoAtomicXS).

CalculateCSMicroXSAtE(energy)[source]
CalculateElectronXSAtE(energy)[source]
CalculatePEMicroXSAtE(energy)[source]
CalculateRLMicroXSAtE(energy)[source]
CalculateTotalMicroXSAtE(energy)[source]

It turns out photoatomic total xs should use linear-linear interpolation!!! We compared linear-linear with log-log. Using linear-linear, an almost perfect match between calculated and reference data was observed.

Reference: https://www-nds.iaea.org/exfor/servlet/efhelp/interp.html

According to Endfb photoatomic data notes:

WARNING - As a result the total cross section
MUST NOT be interpolated to define the
total between tabulated energies. The
ONLY consist way to define the total
between tabulated energies is to
interpolate all of the partials and
add them up.

So it is incorrect to directly interpolate self.xsTable["total_ref"] The total microscopic cross-section must be calculated on the fly.

Parameters

energy (float.) – Photon energy in keV.

GetAFromAWR()[source]
GetCSList()[source]
GetRLList()[source]
Show()[source]

duo.core.element_table module

class duo.core.element_table.ElementTable(dataPath)[source]

Bases: object

Class that manages all elements available.

Variables

elementList (dictionary) – Each (key, value) pair is (Z, Element). This variable is simply a reference to PhotoAtomicXSIOManager.elementList.

GetElementByZ(Z)[source]
Initialize()[source]

duo.core.image_viewer module

class duo.core.image_viewer.ImageViewer(argv)[source]

Bases: object

DisableDefaultKeyMap()[source]
OnClick(event)[source]
OnKeyPress(event)[source]
Plot()[source]
UpdateInfo()[source]

duo.core.material module

class duo.core.material.ElementComponent(Z)[source]

Bases: object

class duo.core.material.Material(name, elementTable)[source]

Bases: object

AddElement(Z, **kwargs)[source]
CalculateCSMacAtE(energy)[source]
CalculateElectronXSAtE(energy)[source]
CalculateMacAtE(energy)[source]
CalculateNumElectronPerAtom()[source]
CalculatePEMacAtE(energy)[source]
CalculateRLMacAtE(energy)[source]
CalculateTotalMicroXSAtEPerAtom(energy)[source]
CalculateZeffAtE(energy)[source]
Commit()[source]
Show()[source]
ShowInfo(energy)[source]

duo.core.mixture module

class duo.core.mixture.MaterialComponent(material)[source]

Bases: object

class duo.core.mixture.Mixture(name, elementTable)[source]

Bases: duo.core.material.Material

AddMaterial(otherMaterial, **kwargs)[source]
CalculateMixtureDensity()[source]
Commit()[source]

duo.core.photoatomic_xs module

class duo.core.photoatomic_xs.PhotoAtomicXS(energy, microXS)[source]

Bases: object

duo.core.search_interp module

duo.core.search_interp.InterpXSBinarySearch(xsList, energy)[source]
duo.core.search_interp.InterpXSLinearSearch(xsList, energy)[source]
duo.core.search_interp.LinLin(x0, y0, x1, y1, m)[source]
duo.core.search_interp.LogLog(x0, y0, x1, y1, m)[source]

duo.core.surface_fitting module

duo.core.surface_fitting.PolyFit2D(x, y, z, order=3)[source]
duo.core.surface_fitting.PolyVal2D(x, y, m)[source]

duo.core.timer module

class duo.core.timer.Timer[source]

Bases: object

GetElapsedTimeInSecond()[source]
StartOrResume()[source]
Stop()[source]
class duo.core.timer.TimerManager[source]

Bases: object

GetElapsedTimeInSecond(name)[source]
Show()[source]
StartOrResume(name)[source]
Stop(name)[source]

Module contents