Hashmap based wave indexing

Quick and Dirty hack to play with hash map based wave indexing in igor.

UpdateIndex is used to create an index of all waves in the current folder.
Then FetchWave can be used to convert the wave name to a wave reference.

Example

        variable numWaves = 1000
	for(i = 0; i < numWaves; i+=1)
		string wvName = "X_" + num2str(i)
		Make/O/D $wvName
	endfor
	
	UpdateIndex

	Make/O/I/N=(numWaves) indexWave
	indexWave[] = abs(enoise(numWaves-1.0))

	Wave/Z wv
	for(i = 0; i < numWaves; i+=1)
		wvName = "X_" + num2istr(indexWave[i])
		FetchWave/L=wvName /DEST=wv
		
		if(!WaveExists(wv))
			printf "Error at %s\r", wvName
		endif
	endfor


The experiment in the zip archive was then used to create the attached benchmark.

DO NOT USE THAT IN PRODUCTION CODE AS IT MIGHT FAIL HORRIBLY!
Hashmap_XOP_0.01.zip (126.06 KB)
Hi Thomas,
interesting XOP, might all go a bit wrong if someone kills a wave and your XOP tries to access it at a later stage. Still, you did mention it was a playground.

A.
Hi Andy,

yes its definitly a proof-of-concept XOP. Involving HoldWave and ReleaseWave would be good idea if you want to delete waves between UpdateIndex and FetchWave.

Thomas

Forum

Support

Gallery

Igor Pro 10

Learn More

Igor XOP Toolkit

Learn More

Igor NIDAQ Tools MX

Learn More