Quick actions

cmd+k|ctrl+k

Navigation

Languages

BWT.JS

Snippet info

Language

JavaScript

Visibility

public

Author

super2bai

Created

2016-09-06T08:49:58Z

Updated

2016-09-06T09:11:16Z

    function RLE(text) {
	  var n = text.length;
	  var tmp,out="";
	  var i,count=0;
	  
	  temp = text[0];
	  
	  for (i=0;i<n;i++){
		if(temp == text[i]){
			count++;
		}
		else{
			out += temp + count;
			temp = text[i];
			count = 1;
		}
	  }
	  out += temp + count;
	  
	  return out;
    };
	
	function suffixArray(text) {
		n = text.length;
		dict = new Object();
		substr = new Array();
		for(i = 0;i<n;i++){
			dict[text.substring(i)]=i
			substr.push(text.substring(i))
		}
		
		SA = new Array();
		substr.sort();
		for(i = 0; i < n ; i++){
			SA.push(dict[substr[i]])
		}
		
		return SA;
    };
	
	function BWT(text){
		bwt = ""
		SA = suffixArray(text)
		n = SA.length;
		for (i = 0;i<n;i++){
			j = SA[i]-1
			if(j == -1) j = n -1
			bwt += text.charAt(j)
		}
		return bwt;
	}
    
    function update(){
        var text = str;
        console.log("before:"+text);
        console.log("after:"+RLE(text));
        console.log("ratio:"+RLE(text).length / text.length);
	    bwt = BWT(text)
	    console.log("BWTstring:"+bwt);
	    console.log("BWTafter:"+RLE(bwt));
	    console.log("BWTratio:"+RLE(bwt).length / bwt.length);
        return true;
    }
    var str='^BABABABANANABABABABABANANABABABABABANANABANANANAAHH|';
    update();
  
INFO