Source code for tests.test_image

'''
test_image.py 
==============
Performs tests that image integration and pixel masking are working. 
Also tests the imports that require GSAS-II-compiled binaries.
'''

import os
import sys
import tempfile
import numpy.testing as npt
home = os.path.dirname(__file__)
work = tempfile.gettempdir()
import importlib.util
    
G2loc = None
try: 
    G2loc = importlib.util.find_spec('GSASII.GSASIIscriptable')
except ModuleNotFoundError:
    print('ModuleNotFound for GSASII.GSASIIscriptable')

if G2loc is None: # fixup path if GSASII not installed into Python
    print('GSAS-II not installed in Python; Hacking sys.path')
    sys.path.append(os.path.dirname(home))

import GSASII
import GSASII.GSASIIscriptable as G2sc

[docs] def test_image(): '''Read in a MAR image (tests pack_f binary module) and then integrate it using GeneratePixelMask (tests fmask binary module) ''' print('Testing read, mask & integration of MAR image') try: import requests except ModuleNotFoundError: print('Module requests not installed, test_image cannot be run') return workloc = lambda fil: os.path.join(work,fil) gpx = G2sc.G2Project(newgpx=workloc('test_image.gpx')) img = 'https://advancedphotonsource.github.io/GSAS-II-tutorials/2DStrain/data/nx09_strain_011.mar2300' img = gpx.add_image(img, fmthint='MAR', cacheImage=True, URL=True, download_loc=None) # img = gpx.add_image(fmthint='MAR', cacheImage=True, # imagefile='/tmp/download.mar2300') testdir = os.path.join(os.path.dirname(os.path.abspath( __file__ )),'testinp') img[0].loadControls(os.path.join(testdir,'nx09_strain_011.imctrl')) img[0].GeneratePixelMask() masked = sum(img[0].data['Masks']['SpotMask']['spotMask'].flatten()) masked_ratio = masked/img[0].data['Masks']['SpotMask']['spotMask'].size msg = 'Confirm number of masked pixels is about the same' assert abs(masked_ratio - 0.02372608695652174) < 0.0001, msg #+ f" {masked_ratio}, 0.02372608695652174" #breakpoint() plist = img[0].Integrate() i = plist[0].getdata('yobs') x = plist[0].getdata('x') tt1,i1 = (x[233]+x[280])/2,sum(i[233:281]) #print(tt1,i1) msg = 'Test 1st peak' assert abs(tt1 - 2.2695) < 0.0002, msg+f' pos ({tt1})' print(f"Peak 1 intensity {i1}") #assert abs(i1 - 4656.698709171848) < 0.1, msg+f' intensity ({i1})' assert abs(i1 - 4666.40015) < 0.1, msg+f' intensity ({i1})' tt6,i6 = (x[780]+x[850])/2,sum(i[780:851]) #print(tt6,i6) msg = 'Test 6th peak' assert abs(tt6 - 3.9450) < 0.0002, msg+f' pos ({tt6})' print(f"Peak 6 intensity {i6}") #assert abs(i6 - 26423.739680809293) < 0.1, msg+f' intensity ({i6})' assert abs(i6 - 26518.61863) < 0.1, msg+f' intensity ({i6})' print('OK')
[docs] def test_CBF(): 'Read in a CBF image (tests unpack_cbf module)' print('Testing read of CBF image') try: import requests except ModuleNotFoundError: print('Module requests not installed, test_CBF cannot be run') return workloc = lambda fil: os.path.join(work,fil) gpx = G2sc.G2Project(newgpx=workloc('test_CBF.gpx')) img = 'https://advancedphotonsource.github.io/GSAS-II-tutorials/selftestdata/130mm_0001.cbf' img = gpx.add_image(img, fmthint='CBF', cacheImage=True, URL=True, download_loc=None) # img = gpx.add_image(fmthint='CBF', cacheImage=True, # imagefile='/tmp/130mm_0001.cbf') assert img[0].image.sum() == 184080517, 'Sum for entire image' assert img[0].image[1000,:].sum() == 96380, 'Sum for one column' assert img[0].image[:,1000].sum() == 146435, 'Sum for one row' print('OK')
if __name__ == '__main__': #import GSASII.GSASIIpath as GSASIIpath #GSASIIpath.InvokeDebugOpts() #import time #start = time.time() test_image() test_CBF() #print('elapsed=',time.time()-start)