<commit_before>Bloom-Filter-Implementation
===========================

Implementation of bloom filter data structure as a part of bioinformatics course on Faculty of Electrical Engineering and Computing, University of Zagreb
Course web page: https://www.fer.unizg.hr/predmet/bio

There are five different implementations of bloom filter (http://en.wikipedia.org/wiki/Bloom_filter) in repository, in C, C#, Python and two implementations in Java. Folders are named like _Name_BloomFilter_ProgramingLanguageUsedForImplementation_.

Application installation and startup


a) DamirBloomFilterJava
	Installation:
		
		1. Download repository
		2. Download and install java 8 using step by step guide on http://tecadmin.net/install-oracle-java-8-jdk-8-ubuntu-via-ppa/ , don't skip step 3
		3a. Open terminal
		4a. Go to folder DamirBloomFilterJava\Application
		5a. To start application write command: java -jar BloomFilterStructureShowcase.jar
		3b. Double click file DamirBloomFilterJava\Application\BloomFilterStructureShowcase.jar

b) EdiBloomFilterC

c) FajdoBloomFilterJava
	Installation:
		
		1. Download repository from GitHub
		2. Download and install java 8 using step by step guide on http://tecadmin.net/install-oracle-java-8-jdk-8-ubuntu-via-ppa/ , don't skip step 3
		3a. Open terminal
		4a. Go to folder FajdoBloomFilterJava
		5a. To start application write command: java -jar ShowcaseFilterApp.jar

d) FilipBloomFilterCSharp

	Installation:
		1. Download repository
		2. If on Linux or Mac, install Mono by following [the instructions](http://www.mono-project.com/docs/getting-started/install/)
			2.1. Extract FilipBloomFilterCSharp/FilipBloomFilterCSharp-Linux.tar.gz
			2.2. Go to extracted directory containing BloomFilterApp.exe
			2.3. Run the application from terminal using "mono BloomFilterApp.exe" (without quotation marks)
		3. If on Windows
			3.1. Unzip FilipBloomFilterCSharp/FilipBloomFilterCSharp-Windows.zip
			3.2. Go to unzipped folder containing BloomFilterApp.exe
			3.3. Run by clicking on BloomFilterApp.exe or from commandline using "BloomFilterApp.exe" (withou quotation marks)
		4. Regardless of OS, application can receive some optional parameters when running from terminal/cmd:
			fasta => path to FASTA file that will be loaded when app is started
			wordSize => if loading FASTA file, it will be split in word sizes of this length; default is 20
			errorRate => probability of false positives when checking if item is in bloom filter
			Example usage form terminal:
			$ mono BloomFilterApp.exe fasta=/home/manager/Desktop/eschericia-part.fa wordSize=10 errorRate=0.01

	Testing performance:
		Open project BloomFilterPerfTests and run it from IDE (Visual Studio, Mono,...) or run binaries.<commit_msg>README.md edited<commit_after>Bloom-Filter-Implementation
===========================

Implementation of bloom filter data structure as a part of bioinformatics course on Faculty of Electrical Engineering and Computing, University of Zagreb
Course web page: https://www.fer.unizg.hr/predmet/bio

There are five different implementations of bloom filter (http://en.wikipedia.org/wiki/Bloom_filter) in repository, in C, C#, Python and two implementations in Java. Folders are named like _Name_BloomFilter_ProgramingLanguageUsedForImplementation_.

Application installation and startup


a) DamirBloomFilterJava
	Installation and startup:
		
		1. Download repository
		2. Download and install java 8 using step by step guide on http://tecadmin.net/install-oracle-java-8-jdk-8-ubuntu-via-ppa/
		3a. Open terminal
		4a. Go to folder DamirBloomFilterJava\Application
		5a. To start application write command: java -jar BloomFilterStructureShowcase.jar

b) EdiBloomFilterC

c) FajdoBloomFilterJava
	Installation and startup:
		
		1. Download repository from GitHub
		2. Download and install java 8 using step by step guide on http://tecadmin.net/install-oracle-java-8-jdk-8-ubuntu-via-ppa/
		3a. Open terminal
		4a. Go to folder FajdoBloomFilterJava
		5a. To start application write command: java -jar ShowcaseFilterApp.jar

d) FilipBloomFilterCSharp

	Installation:
		1. Download repository
		2. If on Linux or Mac, install Mono by following [the instructions](http://www.mono-project.com/docs/getting-started/install/)
			2.1. Extract FilipBloomFilterCSharp/FilipBloomFilterCSharp-Linux.tar.gz
			2.2. Go to extracted directory containing BloomFilterApp.exe
			2.3. Run the application from terminal using "mono BloomFilterApp.exe" (without quotation marks)
		3. If on Windows
			3.1. Unzip FilipBloomFilterCSharp/FilipBloomFilterCSharp-Windows.zip
			3.2. Go to unzipped folder containing BloomFilterApp.exe
			3.3. Run by clicking on BloomFilterApp.exe or from commandline using "BloomFilterApp.exe" (withou quotation marks)
		4. Regardless of OS, application can receive some optional parameters when running from terminal/cmd:
			fasta => path to FASTA file that will be loaded when app is started
			wordSize => if loading FASTA file, it will be split in word sizes of this length; default is 20
			errorRate => probability of false positives when checking if item is in bloom filter
			Example usage form terminal:
			$ mono BloomFilterApp.exe fasta=/home/manager/Desktop/eschericia-part.fa wordSize=10 errorRate=0.01

	Testing performance:
		Open project BloomFilterPerfTests and run it from IDE (Visual Studio, Mono,...) or run binaries.
{'fraction_non_alphanumeric': 0.0737506966375627, 'fraction_numerical': 0.015047371354263421, 'mean_word_length': 4.460446247464503, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 9, 'https://': 2, 'lorem ipsum': 0, 'www.': 4, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 10, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1904977', 'n_tokens_mistral': 1700, 'n_tokens_neox': 1486, 'n_words': 583}