'attempt_auto_calib' by sreyanth


Report abuse

Created on October 08, 2014 15:07 | Updated almost 5 years ago

Link: https://gist.github.com/Sreyanth/8dcb8343e4770cd9d301

Test code for auto calib

setup: function() {
      
  // code to run on startup
//The following two are copied from end; before calling attempt_autocalib
	flotoptions.grid.markings = []
	$W.plot = $.plot($("#graph"),$W.data,flotoptions);
 
	var max_limit = 5
	min_required_intensity = 0
 
	var max_green = -1000 // We need to find the maximum value of G first
	var max_green_index = 0 // We need to find the location where G's value is maximum
	
	var offset = 50 // The offset region where we wont search for the max R and B values
	var blue_offset = 5
	
	$.each($W.spectrum.lines, function(index, line){
		if(line.wavelength == null){
			line.wavelength = index
			scaled = false	
		}
		
		if ((line.g > max_green) && (line.average > min_required_intensity)) {
			max_green = line.g
			max_green_index = index
		}
	});
	
	var max_red = -1000
	var max_blue = -1000
	
	var max_blue_index = 0
	var max_red_index = max_green_index + offset
	
	$.each($W.spectrum.lines, function(index, line){
		if (index > max_green_index + offset) {
			if((line.r > max_red) && (line.average > min_required_intensity)) {
				max_red = line.r
				max_red_index = index
			}
		}
	});
	
	//Let the guess work begin.
	
	estimated_blue_peak = max_green_index - 1.707 * (max_red_index - max_green_index)
	
	$.each($W.spectrum.lines, function(index, line){
		if(index < estimated_blue_peak + blue_offset && index > estimated_blue_peak - blue_offset) {
			
			if ((line.b > max_blue) && (line.average > min_required_intensity)) {
			console.log("entered")	
				max_blue = line.b
				max_blue_index = index
			} 
		}
	});
	
	console.log("Green peak:" + max_green_index)
	console.log("Blue peak:" + max_blue_index)
	console.log("Red peak:" + max_red_index)
	
	gb_diff = max_green_index - max_blue_index
	rg_diff = max_red_index - max_green_index
	rb_diff = max_red_index - max_blue_index
	
	console.log("GB diff: " + gb_diff)
	console.log("RG Diff: " + rg_diff)
	console.log("RB Diff: " + rb_diff)
	
	diff_rat = (gb_diff/111) - (rg_diff/65)
	
	gbrg = gb_diff/rg_diff
	diff = gbrg - 1.707
	
	console.log("GB/RG ratio:" + gbrg)
	console.log("Expected ratio: 1.707")
	console.log("Diff in these ratios:" + diff)
	console.log("Diff in GB/111 and RG/65:" + diff_rat)
	
	percentage = diff*100/1.707
	
	console.log("percentage error in GB/RG ratio: " + percentage + " %")
	console.log("Allowed percentage is: " + max_limit + " %")
	
	if (percentage < max_limit && percentage > -1*max_limit){
		console.log("Expected to be a CFL?: " + true)
	}
	else console.log("Expected to be a CFL?: " + false)
	
	// Give out the expected wavelengths
	// Considering only Green and Blue points
	
	step_size = (546.074 - 435.833)*1.00/(gb_diff)
	//start_wavelength = 545 - step_size*max_green_index
	start_wavelength = 435.833 - step_size*max_blue_index
	
	wavelength_b = start_wavelength + step_size*max_blue_index
	wavelength_r = start_wavelength + step_size*max_red_index
	wavelength_g = start_wavelength + step_size*max_green_index
	
	// Lets mark these on the plot
	$W.markers = []
	
	// Adding blue
	nm = wavelength_b
	label = "Blue"
	o = $W.plot.pointOffset({ x: nm, y: 90})
	if (!flotoptions.grid.markings) flotoptions.grid.markings = []
	flotoptions.grid.markings.push({ color: '#0000ff', lineWidth: 1, xaxis: { from: nm, to: nm } })
	$W.plot = $.plot($("#graph"),$W.data,flotoptions);
	$W.markers.push([label,nm,o.left])
	
	// Adding red
	nm = wavelength_r
	label = "Red"
	o = $W.plot.pointOffset({ x: nm, y: 90})
	if (!flotoptions.grid.markings) flotoptions.grid.markings = []
	flotoptions.grid.markings.push({ color: '#ff0000', lineWidth: 1, xaxis: { from: nm, to: nm } })
	$W.plot = $.plot($("#graph"),$W.data,flotoptions);
	$W.markers.push([label,nm,o.left])
	
	// Adding green
	nm = wavelength_g
	label = "Green"
	o = $W.plot.pointOffset({ x: nm, y: 90})
	if (!flotoptions.grid.markings) flotoptions.grid.markings = []
	flotoptions.grid.markings.push({ color: '#00ff00', lineWidth: 1, xaxis: { from: nm, to: nm } })
	$W.plot = $.plot($("#graph"),$W.data,flotoptions);
	$W.markers.push([label,nm,o.left])
	//$W.show_rgb()

},
draw: function() {
  // code to run every frame

}