Skip to content
Snippets Groups Projects
basynthec-browser.js 33.8 KiB
Newer Older
  • Learn to ignore specific revisions
  • Od600InspectorView.prototype.removeAll = function(duration) 
    {
    	var inspector = inspectors.selectAll("div.od600inspector").data([]);
    	inspector.exit().transition()
    		.duration(duration)
    		.style("opacity", "0")
    		.remove();
    }
    
    
    function od600DataForStrain(d) {
    	if (null == d.dataSets) return [];
    	
    	var dataSets = d.dataSets.filter(function(ds) { return isOd600DataSet(ds) });
    
    	var idx = -1;
    
    	var data = [];
    	dataSets.map(function(ds) { 
    
    		if (null == ds.od600Map) return {};
    
    		var strainData = ds.od600Map[d.name];
    		if (null == strainData) return {};
    		strainData.map(function(curve) {
    			idx = idx + 1;
    			data.push({ strain: d, index: idx, values: curve });
    		});
    	})
    
    cramakri's avatar
    cramakri committed
    function curveData(d, i)
    
    	if (!d.values) return [];
    	var color = curveColors(d.index);	
    
    	// Don't normalize -- use 2 as the global max value
    	// var maxValue = (0 == d.values.length) ? 0 : d3.max(d.values);
    	return [{length : d.values.length, max : 2, values: d.values, color : color}]
    
    }
    
    function lineData(d)
    {
    	if (!d) return [];
    	
    	var data = d.values;
    	// convert the data into pairs
    	var pairs = data.reduce(function(sum, elt) {
    		// initialization
    		if (sum.length < 1) {
    			sum.push([elt / d.max]);
    			return sum;
    		}
    		
    		// add the current elt as the second in the last pair and the first in the new pair
    		sum[sum.length - 1].push(elt / d.max);
    		// don't add the very last element
    		if (sum.length < data.length - 1) sum.push([elt / d.max]);
    		return sum;
    	}, []);
    	
    	return pairs;
    }
    
    
    function dataSetLabel(d) { return d.bis.dataSetTypeCode + " registered on " + timeformat(new Date(d.bis.registrationDetails.registrationDate));  }
    
    function downloadTableFile(d) { presenter.downloadTableFile(d) }
    
    function filesForDataSet(d)
    {
    	if (d.loadingFiles) return [{ pathInListing : "Loading..." }];
    	
    	var fileFilter = function(file) {
    		if (!file.isDirectory) {
    			if (endsWith(file.pathInDataSet, "xls")) {
    				return true;
    			}
    			if (endsWith(file.pathInDataSet, "xls.tsv")) {
    				return true;
    			}
    		}
    		return false;
    	};
    	
    	return (d.files) ? d.files.filter(fileFilter) : [];
    }
    
    
    
    var model = new AppModel();
    var presenter = new AppPresenter();
    
    // The data set type visualization
    
    var dataSetTypeVis, od600View, metabolomicsView, transcriptomicsView, proteomicsView, sequencesView;
    
    
    // The strain visualization
    var strainVis, strainView;
    
    
    // The OD600 strain visualization
    var od600StrainVis, od600StrainView;
    
    
    var IGNORED_DATASET_TYPES = [ "EXCEL_ORIGINAL", "TSV_EXPORT", "TSV_MULTISTRAIN_EXPORT", "UNKNOWN" ];
    
    //The inspected strains and data sets
    
    var inspectors, dataSetInspectorView, od600InspectorView;
    
    function isOd600DataSet(d) { return "OD600" == d.bis.dataSetTypeCode }
    
    
    function shouldRenderProperty(prop, value) {
    
    	// strain properties are dealt with separately	
    	if (prop == STRAIN_PROP_NAME) return false;
    
    	// do not show properties with no values	
    	if (!value) return false;
    
    	return true;
    }
    
    /**
     * Convert properties to pairs
     */
    function props_to_pairs(d)
    {
    	var pairs = [];
    	
    	var dataSetStrains = basynthec.getStrains({properties:d});
    
    	dataSetStrains = dataSetStrains.map(function(strain){
    		return { name : strain };
    	});
    
    	var strainGroups = createStrainGroups(dataSetStrains);
    	
    	strainGroups.forEach(function(group) {
    		var shortedStrains = group.strains.map(function(elt) { return elt.label; });
    		shortedStrains = uniqueElements(shortedStrains.sort())
    		var pair = [ group.groupName, shortedStrains.join(" ") ];
    		pairs.push(pair)
    	});
    	
    	for (var prop in d) {
    		if (shouldRenderProperty(prop, d[prop])) {
    			var pair = [prop, d[prop]];
    			pairs.push(pair);
    	  }
    	}
    	pairs.sort(function(a, b) { 
    		if (a[0] == b[0]) return 0;
    		// Sort in reverse lexicographical
    		return (a[0] < b[0]) ? -1 : 1;
    	});
    	return pairs;
    }
    
    function enterApp()
    {
    	$("#login-form-div").hide();
    	$("#main").show();
    	basynthec.listAllDataSets(function(data) { 
    
    		presenter.showDataSets(data.result);