diff options
| -rw-r--r-- | Makefile | 22 | ||||
| -rw-r--r-- | README.md | 6 | ||||
| -rwxr-xr-x | SelectiveGenomeAmplification | 16 | ||||
| -rwxr-xr-x | SelectiveGenomeAmplificationUI | 3 | ||||
| -rwxr-xr-x[-rw-r--r--] | src/filter_max_consecutive_binding.py (renamed from src/max_consecutive_bindings.py) | 24 | ||||
| -rw-r--r-- | src/filter_melting_range.c (renamed from src/melting_range.c) | 0 | ||||
| -rwxr-xr-x | src/score_mers.py (renamed from score_mers.py) | 0 | ||||
| -rwxr-xr-x | src/select_mers.py (renamed from select_mers.py) | 0 | 
8 files changed, 46 insertions, 25 deletions
@@ -1,24 +1,22 @@  VERSION=\"v0.0.1\"  CC = gcc  CFLAGS = -O3 -s -mtune=native -Wall -DVERSION=$(VERSION) -Wextra -SRC = src -BIN = bin  DEST = /usr/local/bin/ -all: output_dir $(BIN)/strstream $(BIN)/melting_range $(BIN)/strstreamone +all: output_dir bin/strstream bin/filter_melting_range bin/strstreamone  output_dir:  -	mkdir -p $(BIN) -$(BIN)/strstream: $(SRC)/strstream.c -	$(CC) $(SRC)/strstream.c -o $(BIN)/strstream $(CLIBS) $(CFLAGS) -$(BIN)/strstreamone: $(SRC)/strstreamone.c -	$(CC) $(SRC)/strstreamone.c -o $(BIN)/strstreamone $(CLIBS) $(CFLAGS) -$(BIN)/melting_range: $(SRC)/melting_range.c -	$(CC) $(SRC)/melting_range.c -o $(BIN)/melting_range $(CLIBS) $(CFLAGS) +	mkdir -p bin +bin/strstream: src/strstream.c +	$(CC) src/strstream.c -o bin/strstream $(CLIBS) $(CFLAGS) +bin/strstreamone: src/strstreamone.c +	$(CC) src/strstreamone.c -o bin/strstreamone $(CLIBS) $(CFLAGS) +bin/filter_melting_range: src/filter_melting_range.c +	$(CC) src/filter_melting_range.c -o bin/filter_melting_range $(CLIBS) $(CFLAGS)  clean: -	rm -vf $(BIN)/strstream $(BIN)/melting_range $(BIN)/strstreamone +	rm -vf bin/* -Rv  install: all -	install -c $(BIN)/strstream $(BIN)/melting_range $(BIN)/strstreamone SelectiveGenomeAmplification select_mers.py score_mers.py $(DEST) +	install -c bin/strstream bin/filter_melting_range bin/strstreamone SelectiveGenomeAmplification src/select_mers.py src/score_mers.py src/filter_max_consecutive_binding.py $(DEST) @@ -42,7 +42,9 @@ Y | tmp_directory=$output_directory/.tmp | temporary files directory  Y | max_melting_temp | 30° | maximum melting temp of mers  Y | min_melting_temp | 0° | minimum melting temp of mers  Y | min_mer_count | Not Enabled (0) | only select mers that occur more frequently than this number -Y | max_select | maximum number of mers to pick -Y | ignore_mers | Not Enabled | mers to explicitly ignore, space seperated ex. ignore_mers="ACAGTA ACCATAA ATATATAT" +Y | max\_select | maximum number of mers to pick +Y | ignore\_mers | Not Enabled | mers to explicitly ignore, space seperated ex. ignore\_mers="ACAGTA ACCATAA ATATATAT"  Y | foreground | Not Enabled | path of foreground file  Y | background | Not Enabled | path of background file +Y | max\_consecutive\_binding | 4 | The maxium number of consecutive binding nucleotides in homodimer and heterodimers + diff --git a/SelectiveGenomeAmplification b/SelectiveGenomeAmplification index 543f90b..fcbd5dd 100755 --- a/SelectiveGenomeAmplification +++ b/SelectiveGenomeAmplification @@ -41,6 +41,8 @@ fi  : ${max_select=15}  # mers to specifically IGNORE, space delimited  : ${ignore_mers=''} +# maximum number of mers that are consecutively binding +: ${max_consecutive_binding=4}  export ignore_mers  export min_mer_range @@ -124,16 +126,16 @@ for var in ignore_mers min_mer_range max_mer_range max_select min_mer_count max_   echo $var "${!var}" >> $output_directory/$current_run/parameters  done; -echo "checking if mers are below melting temperature in the foreground" -rm $fg_counts-non-melting -melting_range $min_melting_temp $max_melting_temp < $fg_counts > $fg_counts-non-melting  +echo "checking if mers are within the melting range $min_melting_temp $max_melting_temp" +cat $fg_counts | filter_melting_range $min_melting_temp $max_melting_temp > $fg_counts-non-melting  +cat $bg_counts | filter_melting_range $min_melting_temp $max_melting_temp > $bg_counts-non-melting -echo "checking if mers are below melting temperature in the background" -rm $bg_counts-non-melting -melting_range $min_melting_temp $max_melting_temp < $bg_counts > $bg_counts-non-melting +echo "filtering out elements that have more consecutive binding mers than allowed by default $max_consecutive_binding" +cat $fg_counts-non-melting | filter_max_consecutive_binding.py $max_consecutive_binding > $fg_counts-filtered-binding +cat $bg_counts-non-melting | filter_max_consecutive_binding.py $max_consecutive_binding > $bg_counts-filtered-binding  echo "scoring mer selectivity" -select_mers.py $fg_counts-non-melting $fg_tmp $bg_counts-non-melting $bg_tmp > $selected +select_mers.py $fg_counts-filtered-binding $fg_tmp $bg_counts-filtered-binding $bg_tmp > $selected  echo "scoring top mers based on selectivity"  score_mers.py $selected $fg_tmp $bg_tmp $output_directory/$current_run/scores-output diff --git a/SelectiveGenomeAmplificationUI b/SelectiveGenomeAmplificationUI index 79f5b9c..d6a6bb5 100755 --- a/SelectiveGenomeAmplificationUI +++ b/SelectiveGenomeAmplificationUI @@ -35,7 +35,8 @@ questions = [  	  'default_str': "5000 bases",  	  'variable': 'max_mer_distance' },  	{ 'question': 'maximum melting temperature for mers?', 'default_str': '30c', 'variable': 'max_melting_temp' }, -	{ 'question': 'minimum melting temperature for mers?', 'default_str': '0c',  'variable': 'min_melting_temp' }  +	{ 'question': 'minimum melting temperature for mers?', 'default_str': '0c',  'variable': 'min_melting_temp' }, +	{ 'question': 'maximum number of consecutively binding mers in hetero and homodimers?', 'default_str': '4', 'variable': 'max_consecutive_binding' }  ] diff --git a/src/max_consecutive_bindings.py b/src/filter_max_consecutive_binding.py index a2e6c8d..daebee4 100644..100755 --- a/src/max_consecutive_bindings.py +++ b/src/filter_max_consecutive_binding.py @@ -1,14 +1,16 @@ -import sys +#!/usr/bin/env python +import sys, os  binding = { 'A': 'T', 'T': 'A',	'C': 'G', 'G': 'C',	'_': False } -def max_consecutive_bindings(mer1, mer2): +def max_consecutive_binding(mer1, mer2):  	if len(mer2) > len(mer1):  		mer1, mer2 = mer2, mer1  	# reverse mer2,  	mer2 = mer2[::-1] +	# pad mer one to avoid errors  	mer1 = mer1.ljust(len(mer1) + len(mer1), "_")  	max_bind = 0; @@ -42,7 +44,7 @@ def test():  	print 'pass\tmer1\tmer2\tres\tcorr'  	for mer_combination in arr:  		response = [] -		ans = max_consecutive_bindings(mer_combination[0], mer_combination[1]) +		ans = max_consecutive_binding(mer_combination[0], mer_combination[1])  		response.append(str(ans == mer_combination[2]))  		response.append(mer_combination[0]) @@ -52,3 +54,19 @@ def test():  		print '\t'.join(response) +def main(): + +	if(len(sys.argv) < 2): +		print "cutoff is expected as an argument" +		exit() +	else: +		cutoff = int(sys.argv[1]) +	 +	for line in sys.stdin: +		mer = line.split()[0] +		if max_consecutive_binding(mer, mer) < cutoff: +			sys.stdout.write(line) + + +if __name__ == "__main__": +	sys.exit(main()) diff --git a/src/melting_range.c b/src/filter_melting_range.c index 2c89195..2c89195 100644 --- a/src/melting_range.c +++ b/src/filter_melting_range.c diff --git a/score_mers.py b/src/score_mers.py index 0a73cfb..0a73cfb 100755 --- a/score_mers.py +++ b/src/score_mers.py diff --git a/select_mers.py b/src/select_mers.py index 21306cc..21306cc 100755 --- a/select_mers.py +++ b/src/select_mers.py  | 
