:: Tile and Tiling Miner

This code package provides code for a) mining large tiles, ie. tiles of minimum area x, and b) for mining greedy top-k tilings, sets of tiles that together, allowing overlap, cover as much of the 1s in the data as possible with k tiles. For more information on tiles and tilings please refer to Geerts et al. 2004.


:: Compilation

The code has been written and tested using Visual Studio C++ 2010. 

Depending on whether you want to mine tiles or tilings, start and compile the `zbk-tiles.vs10.sln' or `zbk-tiling.vs10.sln' Solution files.
As target, choose either Release DLL or Release Static -- depending on whether you want resp. want dynamic libraries or everything in one executable.
The resulting executable will be found in the /trunk/ directory

On GNU/Linux, Max OS X, ... the code compiles with G++4.4 and CMake as follows
	./bootstrap.sh
	make -Cbuild install
The resulting executable can be found in the /bin/ directory

!! Note !!
Support for Linux is preliminary at best.
1) the tiling mining code compiles on Ubuntu with G++4.4 and cmake, quick tests show the results are correct for the Wine example database.
2) while the tiles mining code does compile, it crashes on runtime. Further debugging is underway.


:: Running

As input, both zbk-tiles and zbk-tiling take standard itemset databases in FIMI format. 
That is, each line in the file is a space separated list of integers corresponding to item ids. 

For example:
1 3 10
1 7 200 256

In the this ZBK version of the tile mining code the maximum number of unique items should be unrestricted. However, it has not been tested with alphabets > 65k


:: Mining Tiles

1) compile zbk-tiles
2) a) have a config file named 'tiles.conf' in the same directory as the executable, and run like
		zbk-tiles
   b) run it by specifying a config file as
		zbk-tiles mine-tiles.conf
   c) run it through the command line as
		zbk-tiles <database name> <minArea threshold>

	Note that far fewer options are available by the command line than through a config file!
	For example config files see the /docs directory of this code package

3) output will be found in a text file called 
		tiles-<databasename>-top<k>-minArea<val>.txt
	where the first few lines contain meta information, and then each discovered tile on a separate line in order of discovery:
		<cardinality>: [<item>] (<area>)


:: Mining Tilings

1) compile zbk-tiling
2) a) have a config file named 'tiling.conf' in the same directory as the executable, and run like
		zbk-tiling
   b) run it by specifying a config file as
		zbk-tiling mine-tiling.conf
   c) run it through the command line as
		zbk-tiling <database name> <minArea threshold>

	Note that far fewer options are available by the command line than through a config file!
	For example config files see the /docs directory of this code package

3) output will be found in a text file called 
		tiling-ov-<databasename>-<timestamp>.txt
	where 'ov' stands for 'with overlap'. Note that the current code can not explicitly find non-overlapping tilings. 
	In the output file, the first few lines contain meta information, and then each discovered tile on a separate line in order of discovery:
		<cardinality>: [<item>] (<area>)



:: zbk?

zbk stands for `zandbak', Dutch for sandbox. It is the name of our standard development playground.

