def loadXrayData():
	#Kalpha1, Kalpha2, Kbeta1, KalphaMean, AbsorptionK, Voltage
	elementWavelength = fg.readLines(FILE_XRAY_SOURCES_WAVELENGTHS)
	header = elementWavelength[0].strip().split("\t")
	xRayData = {}
	for line in elementWavelength[1:]:
		newElementWavelength = line.split("\t")
		xRayData[newElementWavelength[0]] = {header[1]: int(newElementWavelength[1]),
			header[6]: float(newElementWavelength[6]), header[7]: float(newElementWavelength[7])}
		xRayData[newElementWavelength[0]][header[2]] = {"Wavelength": float(newElementWavelength[2])}
		xRayData[newElementWavelength[0]][header[3]] = {"Wavelength": float(newElementWavelength[3])}
		xRayData[newElementWavelength[0]][header[4]] = {"Wavelength": float(newElementWavelength[4])}
		xRayData[newElementWavelength[0]][header[5]] = {"Wavelength": float(newElementWavelength[5])}
	elementEnergies = fg.readLines(FILE_XRAY_SOURCES_ENERGIES)
	headerEg = elementEnergies[0].strip().split("\t")
	for lineEg in elementEnergies[1:]:
		newElementEnergies = lineEg.split("\t")
		#xRayData[newElementEnergies[0]][headerEg[1]] = int(newElementEnergies[1])
		xRayData[newElementEnergies[0]][headerEg[8]] = float(newElementEnergies[8])
		xRayData[newElementEnergies[0]][headerEg[9]] = float(newElementEnergies[9])
		bf.setdict2(xRayData[newElementEnergies[0]], headerEg[2], 'Energy', float(newElementEnergies[2]))
		bf.setdict2(xRayData[newElementEnergies[0]], headerEg[3], 'Energy', float(newElementEnergies[3]))
		bf.setdict2(xRayData[newElementEnergies[0]], headerEg[4], 'Energy', float(newElementEnergies[4]))
		bf.setdict2(xRayData[newElementEnergies[0]], headerEg[5], 'Energy', float(newElementEnergies[5]))
		bf.setdict2(xRayData[newElementEnergies[0]], headerEg[6], 'Energy', float(newElementEnergies[6]))
		bf.setdict2(xRayData[newElementEnergies[0]], headerEg[7], 'Energy', float(newElementEnergies[7]))
		xRayData[newElementEnergies[0]]['KalphaMean']['Energy'] = (xRayData[newElementEnergies[0]]['Kalpha1']['Energy']
			+ xRayData[newElementEnergies[0]]['Kalpha2']['Energy']) / 2
	return xRayData
def initStressAnalysisSettings(*args):
    # default values
    settings = {
        "method": "ED",
        "showPlots": True,
        "showDeviation": False,
        "anode": "",
        "material": "Fe",
        "a0Val": 0.28665,
        "decList": np.array([]),
        "maxPsi": 45
    }  # 'ED', 'AD'
    if len(args) % 2 == 0:
        # set specified values
        for i in range(0, len(args), 2):
            if bf.hasKey(
                    settings,
                    args[i]):  # adding new entries is currently not allowed
                settings[args[i]] = args[i + 1]
    elif len(args) == 1:
        # file with settings is specified
        lines = fg.readLines(args[0])
        for line in lines:
            lineData = line.split('\t')
            if lineData[1].startswith('['):
                settings[lineData[0]] = bf.strArray2npArray(lineData[1])
            else:
                settings[lineData[0]] = eval(lineData[1])
    return settings
def initPeakfitSettings(*args):
    # default values
    settings = {
        "peakFunction": "Gauss",
        "withGraphic": 1,
        "peakZones": 1,
        "withCorrection": 0,
        "withFourier": 0,
        "bestWindow": 0,
        "onlyValues": 0,
        "toEnergies": 0,
        "par": 0,
        "parDeadTime": 0,
        "saveExcel": 0,
        "saveText": 1,
        "confInterval": 0
    }  # 'Gauss', 'Pearson7', 'Lorentz', 'PseudoVoigt'
    if len(args) % 2 == 0:
        # set specified values
        for i in range(0, len(args), 2):
            if bf.hasKey(
                    settings,
                    args[i]):  # adding new entries is currently not allowed
                settings[args[i]] = args[i + 1]
    elif len(args) == 1:
        # file with settings is specified
        lines = fg.readLines(args[0])
        for line in lines:
            lineData = line.split('\t')
            if lineData[1].startswith('['):
                settings[lineData[0]] = bf.strArray2npArray(lineData[1])
            else:
                settings[lineData[0]] = eval(lineData[1])
    return settings
def importFileHeader(importFile='', delim='\t', withMetaLine=False,
		fileType=(('Data file', '*.txt'), ('Data file', '*.dat')), diagTitle='Select data file', multiSel='off'):
	if len(importFile) == 0:
		importFile = fg.requestFiles(fileType, diagTitle, multiSel)
		importFile = importFile[0]
	if len(importFile) > 0:
		# read header from file
		if withMetaLine:
			heading = fg.readLines(importFile, 2)
			# first line consists of comments or metadata
			metaInfo = heading[0]
			# second line contains header information
			heading = bf.split(heading[1], delim)
		else:
			heading = fg.readLines(importFile, 1)
			metaInfo = ''
			heading = bf.split(heading[0], '\t')
	return heading, metaInfo
def loadMaterialData():
	#Name Lattice parameter Lattice file
	data = fg.readLines(FILE_SAMPLE_MATERIALS)
	materialData = {}
	for line in data[0:]:
		lineData = line.split("\t")
		materialData[lineData[0]] = {"a": float(lineData[1])}
		materialData[lineData[0]]["dec"] = fg.dlmread(lineData[2].strip(), "\t", 1)
	return materialData
def getSpectrumFromFile(specFile="", dataDelim='\t', headerLines=5):
	data = 0
	heading = 0
	if len(specFile) == 0:
		specFile = fg.requestFiles((('Text file', '*.txt'),), 'Spektrumdatei auswaehlen', 'off')
	if len(specFile) > 0:
		#Read data from file
		heading = fg.readLines(specFile, headerLines)
		data = fg.dlmread(specFile, dataDelim, headerLines)
	return data, heading
def initFinalFileSettings(*args):
	# default values
	settings = {"type": "H4_1", "unused": np.array([1, 2]), "energy": 0, "anode": "",
		"pars": np.array([])}  # 'EDDI', 'ED', 'AD', 'Seifert', 'SeifertM', 'H4_1', 'H4_2', 'P61_0' or 'P61_1'
	if len(args) % 2 == 0:
		# set specified values
		for i in range(0, len(args), 2):
			if bf.hasKey(settings, args[i]):  # adding new entries is currently not allowed
				settings[args[i]] = args[i + 1]
	elif len(args) == 1:
		# file with settings is specified
		lines = fg.readLines(args[0])
		for line in lines:
			lineData = line.split('\t')
			if lineData[1].startswith('['):
				settings[lineData[0]] = bf.strArray2npArray(lineData[1])
			else:
				settings[lineData[0]] = eval(lineData[1])
	return settings