Newer
Older
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 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 });
});
})
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}]
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
}
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 od600Inspected = [];
//The node inspectors
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 };
});
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
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);