diff options
author | Zachary Sloan | 2014-06-25 20:19:02 +0000 |
---|---|---|
committer | Zachary Sloan | 2014-06-25 20:19:02 +0000 |
commit | df6a70c9a06bc30856a1bc46023bd67e5325f5c9 (patch) | |
tree | c7ed438dbc627043785337c0a81ce7988e16d50c /wqflask | |
parent | 33cf7a7dafc0bf338f98eb793ffd87d4442a58fd (diff) | |
download | genenetwork2-df6a70c9a06bc30856a1bc46023bd67e5325f5c9.tar.gz |
Added Karl's correlation matrix code
Improved the "scatterplot matrix" feature on the trait page so that
it matches the chosen trait against every selected trait
Diffstat (limited to 'wqflask')
30 files changed, 2359 insertions, 396 deletions
diff --git a/wqflask/base/data_set.py b/wqflask/base/data_set.py index a2b13748..843862aa 100755 --- a/wqflask/base/data_set.py +++ b/wqflask/base/data_set.py @@ -164,6 +164,7 @@ class Markers(object): marker['chr'] = int(marker['chr']) else: marker['chr'] = 19 + print("Mb:", marker['Mb']) marker['Mb'] = float(marker['Mb']) self.markers = markers @@ -670,6 +671,7 @@ class PhenotypeDataSet(DataSet): def get_trait_info(self, trait_list, species = ''): for this_trait in trait_list: + if not this_trait.haveinfo: this_trait.retrieve_info(get_qtl_info=True) @@ -679,6 +681,7 @@ class PhenotypeDataSet(DataSet): #phenotype traits, then display the pre-publication description instead #of the post-publication description if this_trait.confidential: + this_trait.description_display = "" continue # for now if not webqtlUtil.hasAccessToConfidentialPhenotypeTrait( @@ -688,7 +691,12 @@ class PhenotypeDataSet(DataSet): description = this_trait.pre_publication_description - this_trait.description_display = description.strip() + if len(description) > 0: + this_trait.description_display = description.strip() + else: + this_trait.description_display = "" + + print("this_trait.description_display is:", this_trait.description_display) if not this_trait.year.isdigit(): this_trait.pubmed_text = "N/A" diff --git a/wqflask/base/species.py b/wqflask/base/species.py index ebc2bfed..52bd8297 100755 --- a/wqflask/base/species.py +++ b/wqflask/base/species.py @@ -13,7 +13,7 @@ from pprint import pformat as pf class TheSpecies(object): def __init__(self, dataset): self.dataset = dataset - print("self.dataset is:", pf(self.dataset.__dict__)) + #print("self.dataset is:", pf(self.dataset.__dict__)) self.chromosomes = Chromosomes(self.dataset) self.genome_mb_length = self.chromosomes.get_genome_mb_length() @@ -56,8 +56,8 @@ class Chromosomes(object): InbredSet.Name = %s Order by OrderId """, self.dataset.group.name).fetchall() - print("group: ", self.dataset.group.name) - print("bike:", results) + #print("group: ", self.dataset.group.name) + #print("bike:", results) for item in results: self.chromosomes[item.OrderId] = IndChromosome(item.Name, item.Length) diff --git a/wqflask/base/trait.py b/wqflask/base/trait.py index 3f80d4a4..2bbd1f2a 100755 --- a/wqflask/base/trait.py +++ b/wqflask/base/trait.py @@ -645,7 +645,7 @@ def get_sample_data(): trait_ob = GeneralTrait(name=trait, dataset_name=dataset) - return json.dumps({key: value.value for key, value in trait_ob.data.iteritems() }) + return json.dumps([trait, {key: value.value for key, value in trait_ob.data.iteritems() }]) #jsonable_sample_data = {} #for sample in trait_ob.data.iteritems(): diff --git a/wqflask/maintenance/gen_select_dataset.py b/wqflask/maintenance/gen_select_dataset.py index ad560659..694efeca 100755 --- a/wqflask/maintenance/gen_select_dataset.py +++ b/wqflask/maintenance/gen_select_dataset.py @@ -99,7 +99,7 @@ def get_groups(species): def get_types(groups): """Build types list""" types = {} - print("Groups: ", pf(groups)) + #print("Groups: ", pf(groups)) for species, group_dict in groups.iteritems(): types[species] = {} for group_name, _group_full_name in group_dict: @@ -118,15 +118,15 @@ def build_types(species, group): """ - print("""select distinct Tissue.Name - from ProbeFreeze, ProbeSetFreeze, InbredSet, Tissue, Species - where Species.Name = '{}' and Species.Id = InbredSet.SpeciesId and - InbredSet.Name = '{}' and - ProbeFreeze.TissueId = Tissue.Id and - ProbeFreeze.InbredSetId = InbredSet.Id and - ProbeSetFreeze.ProbeFreezeId = ProbeFreeze.Id and - ProbeSetFreeze.public > 0 - order by Tissue.Name""".format(species, group)) + #print("""select distinct Tissue.Name + # from ProbeFreeze, ProbeSetFreeze, InbredSet, Tissue, Species + # where Species.Name = '{}' and Species.Id = InbredSet.SpeciesId and + # InbredSet.Name = '{}' and + # ProbeFreeze.TissueId = Tissue.Id and + # ProbeFreeze.InbredSetId = InbredSet.Id and + # ProbeSetFreeze.ProbeFreezeId = ProbeFreeze.Id and + # ProbeSetFreeze.public > 0 + # order by Tissue.Name""".format(species, group)) Cursor.execute("""select distinct Tissue.Name from ProbeFreeze, ProbeSetFreeze, InbredSet, Tissue, Species where Species.Name = %s and Species.Id = InbredSet.SpeciesId and @@ -150,7 +150,7 @@ def get_datasets(types): for species, group_dict in types.iteritems(): datasets[species] = {} for group, type_list in group_dict.iteritems(): - print("type_list: ", type_list) + #print("type_list: ", type_list) datasets[species][group] = {} for type_name in type_list: datasets[species][group][type_name[0]] = build_datasets(species, group, type_name[0]) @@ -174,14 +174,14 @@ def build_datasets(species, group, type_name): if dataset_value: return [(dataset_value, dataset_text)] else: - print("""select ProbeSetFreeze.Name, ProbeSetFreeze.FullName from - ProbeSetFreeze, ProbeFreeze, InbredSet, Tissue, Species where - Species.Name = '{}' and Species.Id = InbredSet.SpeciesId and - InbredSet.Name = '{}' and - ProbeSetFreeze.ProbeFreezeId = ProbeFreeze.Id and Tissue.Name = '{}' - and ProbeFreeze.TissueId = Tissue.Id and ProbeFreeze.InbredSetId = - InbredSet.Id and ProbeSetFreeze.public > 0 order by - ProbeSetFreeze.CreateTime desc""".format(species, group, type_name)) + #print("""select ProbeSetFreeze.Name, ProbeSetFreeze.FullName from + # ProbeSetFreeze, ProbeFreeze, InbredSet, Tissue, Species where + # Species.Name = '{}' and Species.Id = InbredSet.SpeciesId and + # InbredSet.Name = '{}' and + # ProbeSetFreeze.ProbeFreezeId = ProbeFreeze.Id and Tissue.Name = '{}' + # and ProbeFreeze.TissueId = Tissue.Id and ProbeFreeze.InbredSetId = + # InbredSet.Id and ProbeSetFreeze.public > 0 order by + # ProbeSetFreeze.CreateTime desc""".format(species, group, type_name)) Cursor.execute("""select ProbeSetFreeze.Name, ProbeSetFreeze.FullName from ProbeSetFreeze, ProbeFreeze, InbredSet, Tissue, Species where Species.Name = %s and Species.Id = InbredSet.SpeciesId and @@ -200,6 +200,7 @@ def main(): species = get_species() groups = get_groups(species) + print("groups:", groups) types = get_types(groups) datasets = get_datasets(types) @@ -217,22 +218,22 @@ def main(): datasets=datasets, ) - print("data:", data) + #print("data:", data) output_file = """../wqflask/static/new/javascript/dataset_menu_structure.json""" with open(output_file, 'w') as fh: json.dump(data, fh, indent=" ", sort_keys=True) - print("\nWrote file to:", output_file) + #print("\nWrote file to:", output_file) def _test_it(): """Used for internal testing only""" types = build_types("Mouse", "BXD") - print("build_types:", pf(types)) + #print("build_types:", pf(types)) datasets = build_datasets("Mouse", "BXD", "Hippocampus") - print("build_datasets:", pf(datasets)) + #print("build_datasets:", pf(datasets)) if __name__ == '__main__': Conn = MySQLdb.Connect(**parse_db_uri(our_settings.DB_URI)) diff --git a/wqflask/wqflask/correlation_matrix/show_corr_matrix.py b/wqflask/wqflask/correlation_matrix/show_corr_matrix.py index b556927c..4069b07f 100755 --- a/wqflask/wqflask/correlation_matrix/show_corr_matrix.py +++ b/wqflask/wqflask/correlation_matrix/show_corr_matrix.py @@ -66,30 +66,118 @@ class CorrelationMatrix(object): self.get_trait_db_obs(trait_db_list)
- self.corr_results = {}
+ #self.corr_results = {}
+ #for trait_db in self.trait_list:
+ # this_trait = trait_db[0]
+ # this_db = trait_db[1]
+ #
+ # this_db_samples = this_db.group.samplelist
+ # this_sample_data = this_trait.data
+ # print("this_sample_data", len(this_sample_data))
+ #
+ # corr_result_row = {}
+ #
+ # for target in self.trait_list:
+ # target_trait = target[0]
+ # target_db = target[1]
+ # target_samples = target_db.group.samplelist
+ #
+ # if this_trait == target_trait and this_db == target_db:
+ # corr_result_row[this_trait.name] = {'sample_r': 1,
+ # 'sample_p': 0,
+ # 'num_overlap': len(target_samples),
+ # 'this_trait': this_trait.name,
+ # 'this_db': this_trait.dataset.name,
+ # 'target_trait': this_trait.name,
+ # 'target_db': this_trait.dataset.name}
+ # continue
+ #
+ # target_sample_data = target_trait.data
+ # print("target_samples", len(target_samples))
+ #
+ # this_trait_vals = []
+ # target_vals = []
+ # for index, sample in enumerate(target_samples):
+ #
+ # if (sample in this_sample_data) and (sample in target_sample_data):
+ # sample_value = this_sample_data[sample].value
+ # target_sample_value = target_sample_data[sample].value
+ # this_trait_vals.append(sample_value)
+ # target_vals.append(target_sample_value)
+ #
+ # #print("this_trait_vals:", this_trait_vals)
+ # #print("target_vals:", target_vals)
+ #
+ # this_trait_vals, target_vals, num_overlap = corr_result_helpers.normalize_values(
+ # this_trait_vals, target_vals)
+ #
+ # sample_r, sample_p = scipy.stats.pearsonr(this_trait_vals, target_vals)
+ #
+ # corr_matrix_cell = {"sample_r": sample_r,
+ # "sample_p": sample_p,
+ # "num_overlap": num_overlap,
+ # "this_trait": this_trait.name,
+ # "this_db": this_trait.dataset.name,
+ # "target_trait": target_trait.name,
+ # "target_db": target_trait.dataset.name}
+ #
+ # corr_result_row[target_trait.name] = corr_matrix_cell
+ #
+ # self.corr_results[this_trait.name] = corr_result_row
+
+ self.all_sample_list = []
+ self.traits = []
+ for trait_db in self.trait_list:
+ this_trait = trait_db[0]
+ self.traits.append(this_trait.name)
+ this_sample_data = this_trait.data
+
+ for sample in this_sample_data:
+ if sample not in self.all_sample_list:
+ self.all_sample_list.append(sample)
+
+ self.sample_data = []
+ for trait_db in self.trait_list:
+ this_trait = trait_db[0]
+ this_sample_data = this_trait.data
+
+ #self.sample_data[this_trait.name] = []
+ this_trait_vals = []
+ for sample in self.all_sample_list:
+ if sample in this_sample_data:
+ this_trait_vals.append(this_sample_data[sample].value)
+ #self.sample_data[this_trait.name].append(this_sample_data[sample].value)
+ else:
+ this_trait_vals.append('')
+ #self.sample_data[this_trait.name].append('')
+ self.sample_data.append(this_trait_vals)
+
+ self.corr_results = []
for trait_db in self.trait_list:
this_trait = trait_db[0]
this_db = trait_db[1]
this_db_samples = this_db.group.samplelist
+
+ #for sample in this_db_samples:
+ # if sample not in self.samples:
+ # self.samples.append(sample)
+
this_sample_data = this_trait.data
print("this_sample_data", len(this_sample_data))
- corr_result_row = {}
-
+ #for sample in this_sample_data:
+ # if sample not in self.all_sample_list:
+ # self.all_sample_list.append(sample)
+
+ corr_result_row = []
for target in self.trait_list:
target_trait = target[0]
target_db = target[1]
- target_samples = target_db.group.samplelist
+ target_samples = target_db.group.samplelist
if this_trait == target_trait and this_db == target_db:
- corr_result_row[this_trait.name] = {'sample_r': 1,
- 'sample_p': 0,
- 'num_overlap': len(target_samples),
- 'this_trait': this_trait.name,
- 'this_db': this_trait.dataset.name,
- 'target_trait': this_trait.name,
- 'target_db': this_trait.dataset.name}
+ corr_result_row.append(1)
continue
target_sample_data = target_trait.data
@@ -113,19 +201,38 @@ class CorrelationMatrix(object): sample_r, sample_p = scipy.stats.pearsonr(this_trait_vals, target_vals)
- corr_matrix_cell = {'sample_r': sample_r,
- 'sample_p': sample_p,
- 'num_overlap': num_overlap,
- 'this_trait': this_trait.name,
- 'this_db': this_trait.dataset.name,
- 'target_trait': target_trait.name,
- 'target_db': target_trait.dataset.name}
+ corr_result_row.append(sample_r)
- corr_result_row[target_trait.name] = corr_matrix_cell
-
- self.corr_results[this_trait.name] = corr_result_row
-
- print("corr_results:", pf(self.corr_results))
+ self.corr_results.append(corr_result_row)
+
+ #self.sample_data = {}
+ #for trait_db in self.trait_list:
+ # this_trait = trait_db[0]
+ #
+ # this_sample_data = this_trait.data
+ #
+ # self.sample_data[this_trait.name] = []
+ # for sample in self.all_sample_list:
+ # if sample in this_sample_data:
+ # self.sample_data[this_trait.name].append(this_sample_data[sample].value)
+ # else:
+ # self.sample_data[this_trait.name].append('')
+
+ print("corr_results:", pf(self.traits))
+
+ groups = []
+ for sample in self.all_sample_list:
+ groups.append(1)
+
+ self.js_data = dict(traits = self.traits,
+ groups = groups,
+ cols = range(len(self.traits)),
+ rows = range(len(self.traits)),
+ samples = self.all_sample_list,
+ sample_data = self.sample_data,
+ corr_results = self.corr_results,)
+
+
def get_trait_db_obs(self, trait_db_list):
diff --git a/wqflask/wqflask/marker_regression/marker_regression.py b/wqflask/wqflask/marker_regression/marker_regression.py index 525a2253..d43fe37c 100755 --- a/wqflask/wqflask/marker_regression/marker_regression.py +++ b/wqflask/wqflask/marker_regression/marker_regression.py @@ -56,7 +56,8 @@ class MarkerRegression(object): self.vals.append(value) self.mapping_method = start_vars['method'] - print("self.mapping_method:", self.mapping_method) + self.maf = start_vars['maf'] # Minor allele frequency + print("self.maf:", self.maf) if self.mapping_method == "gemma": qtl_results = self.run_gemma() @@ -64,9 +65,12 @@ class MarkerRegression(object): qtl_results = self.run_plink() #print("qtl_results:", pf(qtl_results)) elif self.mapping_method == "pylmm": + print("RUNNING PYLMM") #self.qtl_results = self.gen_data(tempdata) qtl_results = self.gen_data(str(temp_uuid)) - + else: + print("RUNNING NOTHING") + self.lod_cutoff = 2 self.filtered_markers = [] for marker in qtl_results: @@ -83,6 +87,9 @@ class MarkerRegression(object): chromosome_mb_lengths[key] = self.species.chromosomes.chromosomes[key].mb_length self.js_data = dict( + this_trait = self.this_trait.name, + data_set = self.dataset.name, + maf = self.maf, chromosomes = chromosome_mb_lengths, qtl_results = self.filtered_markers, ) @@ -169,7 +176,7 @@ class MarkerRegression(object): self.gen_pheno_txt_file_plink(pheno_filename = plink_output_filename) - plink_command = './plink --noweb --ped %s.ped --no-fid --no-parents --no-sex --no-pheno --map %s.map --pheno %s/%s.txt --pheno-name %s --missing-phenotype -9999 --out %s%s --assoc ' % (self.dataset.group.name, self.dataset.group.name, webqtlConfig.TMPDIR, plink_output_filename, self.this_trait.name, webqtlConfig.TMPDIR, plink_output_filename) + plink_command = './plink --noweb --ped %s.ped --no-fid --no-parents --no-sex --no-pheno --map %s.map --pheno %s/%s.txt --pheno-name %s --maf %s --missing-phenotype -9999 --out %s%s --assoc ' % (self.dataset.group.name, self.dataset.group.name, webqtlConfig.TMPDIR, plink_output_filename, self.this_trait.name, self.maf, webqtlConfig.TMPDIR, plink_output_filename) os.system(plink_command) @@ -382,6 +389,7 @@ class MarkerRegression(object): #p_values = self.trim_results(p_values) else: + print("NOW CWD IS:", os.getcwd()) genotype_data = [marker['genotypes'] for marker in self.dataset.group.markers.markers] no_val_samples = self.identify_empty_samples() @@ -410,7 +418,7 @@ class MarkerRegression(object): ) json_params = json.dumps(params) - print("json_params:", json_params) + #print("json_params:", json_params) Redis.set(key, json_params) Redis.expire(key, 60*60) print("before printing command") diff --git a/wqflask/wqflask/my_pylmm/data/genofile_parser.py b/wqflask/wqflask/my_pylmm/data/genofile_parser.py index 4ebadb6e..baf6aee4 100755 --- a/wqflask/wqflask/my_pylmm/data/genofile_parser.py +++ b/wqflask/wqflask/my_pylmm/data/genofile_parser.py @@ -44,6 +44,7 @@ class ConvertGenoFile(object): self.output_file = output_file self.mb_exists = False + self.cm_exists = False self.markers = [] self.latest_row_pos = None @@ -94,7 +95,10 @@ class ConvertGenoFile(object): this_marker.name = row_items[1] this_marker.chr = row_items[0] #this_marker.cM = row_items[2] - if self.mb_exists: + if self.cm_exists and self.mb_exists: + this_marker.Mb = row_items[3] + genotypes = row_items[4:] + elif self.mb_exists: this_marker.Mb = row_items[2] genotypes = row_items[3:] else: @@ -106,8 +110,8 @@ class ConvertGenoFile(object): this_marker.genotypes.append("NA") #print("this_marker is:", pf(this_marker.__dict__)) - if this_marker.chr == "14": - self.markers.append(this_marker.__dict__) + #if this_marker.chr == "14": + self.markers.append(this_marker.__dict__) with open(self.output_file, 'w') as fh: json.dump(self.markers, fh, indent=" ", sort_keys=True) @@ -136,6 +140,8 @@ class ConvertGenoFile(object): if row.startswith('Chr'): if 'Mb' in row.split(): self.mb_exists = True + if 'cM' in row.split(): + self.cm_exists = True continue if row.startswith('@'): key, _separater, value = row.partition(':') @@ -187,7 +193,7 @@ if __name__=="__main__": New_Geno_Directory = """/home/zas1024/gene/web/new_genotypes/""" #Input_File = """/home/zas1024/gene/web/genotypes/BXD.geno""" #Output_File = """/home/zas1024/gene/wqflask/wqflask/pylmm/data/bxd.snps""" - convertob = ConvertGenoFile("/home/zas1024/gene/web/genotypes/HSNIH.geno.gz", "/home/zas1024/gene/web/new_genotypes/HSNIH.json") + convertob = ConvertGenoFile("/home/zas1024/gene/web/genotypes/Linsenbardt-Boehm.geno", "/home/zas1024/gene/web/new_genotypes/Linsenbardt-Boehm.json") convertob.convert() #ConvertGenoFile.process_all(Old_Geno_Directory, New_Geno_Directory) #ConvertGenoFiles(Geno_Directory) diff --git a/wqflask/wqflask/show_trait/show_trait.py b/wqflask/wqflask/show_trait/show_trait.py index c0403bbd..670a1188 100755 --- a/wqflask/wqflask/show_trait/show_trait.py +++ b/wqflask/wqflask/show_trait/show_trait.py @@ -1193,6 +1193,7 @@ class ShowTrait(object): primary_sample_names = all_samples_ordered + print("self.dataset.group", pf(self.dataset.group.__dict__)) print("-*- primary_samplelist is:", pf(primary_sample_names)) other_sample_names = [] diff --git a/wqflask/wqflask/static/new/css/charts.css b/wqflask/wqflask/static/new/css/charts.css new file mode 100644 index 00000000..5f2d4d23 --- /dev/null +++ b/wqflask/wqflask/static/new/css/charts.css @@ -0,0 +1,28 @@ +body {
+ font-family: sans-serif;
+}
+
+svg {
+ margin-top: 10px;
+ margin-left: 50px;
+}
+
+.line {
+ stroke-width: 1;
+ fill: none;
+}
+
+text {
+ font-family: sans-serif;
+ font-size: 11pt;
+}
+
+p {
+ font-family: sans-serif;
+ font-size: 12pt;
+}
+
+p#caption {
+ margin-left: 100px;
+ width: 500px;
+}
diff --git a/wqflask/wqflask/static/new/javascript/compare_traits_scatterplot.coffee b/wqflask/wqflask/static/new/javascript/compare_traits_scatterplot.coffee index 73eb1466..64400c7d 100644 --- a/wqflask/wqflask/static/new/javascript/compare_traits_scatterplot.coffee +++ b/wqflask/wqflask/static/new/javascript/compare_traits_scatterplot.coffee @@ -2,7 +2,7 @@ root = exports ? this root.create_scatterplot = (json_ids, json_data) ->
- console.log("TESTING TESTING2")
+ console.log("TESTING2")
h = 400
w = 500
@@ -38,49 +38,81 @@ root.create_scatterplot = (json_ids, json_data) -> .on "mouseout", (d) ->
d3.select(this).attr("r", mychart.pointsize())
-root.create_scatterplots = (json_ids, json_data) ->
- h = 400
- w = 500
+root.create_scatterplots = (trait_names, json_ids, json_data) ->
+
+ #There are various places where 1 is subtracted from the number of traits; this is because
+ #we don't want to show a first graph consisting of the trait vs itself. There might be a better
+ #way to deal with this.
+
+ console.log("json_data:", json_data)
+ console.log("trait_names:", trait_names)
+
+ num_traits = json_data.length
+ console.log("num_traits:", num_traits)
+
+ h = 300
+ w = 400
margin = {left:60, top:40, right:40, bottom: 40, inner:5}
halfh = (h+margin.top+margin.bottom)
- totalh = halfh*2
+ totalh = halfh*(num_traits-1)
+ #totalh = halfh*2
halfw = (w+margin.left+margin.right)
- totalw = halfw*2
+ #totalw = halfw*2
+ totalw = halfw
+
+ xvar = []
+ yvar = []
+ xshift = []
+ yshift = []
+ for i in [0..num_traits-1]
+ xvar.push(i)
+ yvar.push(0)
+ xshift.push(0)
+ yshift.push(halfh*i)
+
+ console.log("xvar:", xvar)
+ console.log("yvar:", yvar)
# Example 2: three scatterplots within one SVG, with brushing
#d3.json "data.json", (data) ->
- xvar = [1, 2, 2]
- yvar = [0, 0, 1]
- xshift = [0, halfw, halfw]
- yshift = [0, 0, halfh]
-
- svg = d3.select("div#chart2")
+ #xvar = [1, 2, 2]
+ #yvar = [0, 0, 1]
+ #console.log("num_traits_array:", xvar)
+ #xshift = [0, halfw, halfw]
+ #yshift = [0, 0, halfh]
+ #xshift = [0, 0]
+ #yshift = [0, halfh]
+
+ svg = d3.select("div#comparison_scatterplot")
.append("svg")
.attr("height", totalh)
.attr("width", totalw)
mychart = []
chart = []
- for i in [0..2]
- mychart[i] = scatterplot().xvar(xvar[i])
+ for i in [1..num_traits-1]
+ mychart[i-1] = scatterplot().xvar(xvar[i])
.yvar(yvar[i])
.nxticks(6)
.height(h)
.width(w)
.margin(margin)
.pointsize(4)
- .xlab("X#{xvar[i]+1}")
- .ylab("X#{yvar[i]+1}")
- .title("X#{yvar[i]+1} vs. X#{xvar[i]+1}")
+ .xlab("#{trait_names[i-1]}")
+ .ylab("#{trait_names[0]}")
+ .title("#{trait_names[0]} vs. #{trait_names[i-1]}")
+
+ data = json_data
+ indID = json_ids
- chart[i] = svg.append("g").attr("id", "chart#{i}")
- .attr("transform", "translate(#{xshift[i]},#{yshift[i]})")
- chart[i].datum({data:data}).call(mychart[i])
+ chart[i-1] = svg.append("g").attr("id", "chart#{i-1}")
+ .attr("transform", "translate(#{xshift[i]},#{yshift[i-1]})")
+ chart[i-1].datum({data:data, indID:indID}).call(mychart[i-1])
brush = []
brushstart = (i) ->
() ->
- for j in [0..2]
+ for j in [0..num_traits-2]
chart[j].call(brush[j].clear()) if j != i
svg.selectAll("circle").attr("opacity", 0.6).classed("selected", false)
@@ -104,7 +136,7 @@ root.create_scatterplots = (json_ids, json_data) -> xscale = d3.scale.linear().domain([margin.left,margin.left+w]).range([margin.left,margin.left+w])
yscale = d3.scale.linear().domain([margin.top,margin.top+h]).range([margin.top,margin.top+h])
- for i in [0..2]
+ for i in [0..num_traits-2]
brush[i] = d3.svg.brush().x(xscale).y(yscale)
.on("brushstart", brushstart(i))
.on("brush", brushmove(i))
diff --git a/wqflask/wqflask/static/new/javascript/compare_traits_scatterplot.js b/wqflask/wqflask/static/new/javascript/compare_traits_scatterplot.js index c1596a14..a45eb3c0 100644 --- a/wqflask/wqflask/static/new/javascript/compare_traits_scatterplot.js +++ b/wqflask/wqflask/static/new/javascript/compare_traits_scatterplot.js @@ -6,7 +6,7 @@ root.create_scatterplot = function(json_ids, json_data) { var data, h, halfh, halfw, indID, margin, mychart, totalh, totalw, w; - console.log("TESTING TESTING2"); + console.log("TESTING2"); h = 400; w = 500; margin = { @@ -34,10 +34,14 @@ }); }; - root.create_scatterplots = function(json_ids, json_data) { - var brush, brushend, brushmove, brushstart, chart, h, halfh, halfw, i, margin, mychart, svg, totalh, totalw, w, xscale, xshift, xvar, yscale, yshift, yvar, _i, _j, _results; - h = 400; - w = 500; + root.create_scatterplots = function(trait_names, json_ids, json_data) { + var brush, brushend, brushmove, brushstart, chart, data, h, halfh, halfw, i, indID, margin, mychart, num_traits, svg, totalh, totalw, w, xscale, xshift, xvar, yscale, yshift, yvar, _i, _j, _k, _ref, _ref1, _ref2, _results; + console.log("json_data:", json_data); + console.log("trait_names:", trait_names); + num_traits = json_data.length; + console.log("num_traits:", num_traits); + h = 300; + w = 400; margin = { left: 60, top: 40, @@ -46,28 +50,39 @@ inner: 5 }; halfh = h + margin.top + margin.bottom; - totalh = halfh * 2; + totalh = halfh * (num_traits - 1); halfw = w + margin.left + margin.right; - totalw = halfw * 2; - xvar = [1, 2, 2]; - yvar = [0, 0, 1]; - xshift = [0, halfw, halfw]; - yshift = [0, 0, halfh]; - svg = d3.select("div#chart2").append("svg").attr("height", totalh).attr("width", totalw); + totalw = halfw; + xvar = []; + yvar = []; + xshift = []; + yshift = []; + for (i = _i = 0, _ref = num_traits - 1; 0 <= _ref ? _i <= _ref : _i >= _ref; i = 0 <= _ref ? ++_i : --_i) { + xvar.push(i); + yvar.push(0); + xshift.push(0); + yshift.push(halfh * i); + } + console.log("xvar:", xvar); + console.log("yvar:", yvar); + svg = d3.select("div#comparison_scatterplot").append("svg").attr("height", totalh).attr("width", totalw); mychart = []; chart = []; - for (i = _i = 0; _i <= 2; i = ++_i) { - mychart[i] = scatterplot().xvar(xvar[i]).yvar(yvar[i]).nxticks(6).height(h).width(w).margin(margin).pointsize(4).xlab("X" + (xvar[i] + 1)).ylab("X" + (yvar[i] + 1)).title("X" + (yvar[i] + 1) + " vs. X" + (xvar[i] + 1)); - chart[i] = svg.append("g").attr("id", "chart" + i).attr("transform", "translate(" + xshift[i] + "," + yshift[i] + ")"); - chart[i].datum({ - data: data - }).call(mychart[i]); + for (i = _j = 1, _ref1 = num_traits - 1; 1 <= _ref1 ? _j <= _ref1 : _j >= _ref1; i = 1 <= _ref1 ? ++_j : --_j) { + mychart[i - 1] = scatterplot().xvar(xvar[i]).yvar(yvar[i]).nxticks(6).height(h).width(w).margin(margin).pointsize(4).xlab("" + trait_names[i - 1]).ylab("" + trait_names[0]).title("" + trait_names[0] + " vs. " + trait_names[i - 1]); + data = json_data; + indID = json_ids; + chart[i - 1] = svg.append("g").attr("id", "chart" + (i - 1)).attr("transform", "translate(" + xshift[i] + "," + yshift[i - 1] + ")"); + chart[i - 1].datum({ + data: data, + indID: indID + }).call(mychart[i - 1]); } brush = []; brushstart = function(i) { return function() { - var j, _j; - for (j = _j = 0; _j <= 2; j = ++_j) { + var j, _k, _ref2; + for (j = _k = 0, _ref2 = num_traits - 2; 0 <= _ref2 ? _k <= _ref2 : _k >= _ref2; j = 0 <= _ref2 ? ++_k : --_k) { if (j !== i) { chart[j].call(brush[j].clear()); } @@ -99,7 +114,7 @@ xscale = d3.scale.linear().domain([margin.left, margin.left + w]).range([margin.left, margin.left + w]); yscale = d3.scale.linear().domain([margin.top, margin.top + h]).range([margin.top, margin.top + h]); _results = []; - for (i = _j = 0; _j <= 2; i = ++_j) { + for (i = _k = 0, _ref2 = num_traits - 2; 0 <= _ref2 ? _k <= _ref2 : _k >= _ref2; i = 0 <= _ref2 ? ++_k : --_k) { brush[i] = d3.svg.brush().x(xscale).y(yscale).on("brushstart", brushstart(i)).on("brush", brushmove(i)).on("brushend", brushend); _results.push(chart[i].call(brush[i])); } diff --git a/wqflask/wqflask/static/new/javascript/corr_matrix.coffee b/wqflask/wqflask/static/new/javascript/corr_matrix.coffee new file mode 100644 index 00000000..4ecee1d4 --- /dev/null +++ b/wqflask/wqflask/static/new/javascript/corr_matrix.coffee @@ -0,0 +1,275 @@ +# iplotCorr.coffee
+#
+# Left panel is a heat map of a correlation matrix; hover over pixels
+# to see the values; click to see the corresponding scatterplot on the right
+
+root = exports ? this
+
+iplotCorr = (data, chartOpts) ->
+
+ # data is an object with 7 components
+ # data.indID vector of character strings, of length n, with IDs for individuals
+ # data.var vector of character strings, of length p, with variable names
+ # data.corr matrix of correlation values, of dim q x r, with q and r each <= p
+ # data.rows vector of indicators, of length q, with values in {0, 1, ..., p-1},
+ # for each row in data.corr, it says which is the corresponding column in data.dat
+ # data.cols vector of indicators, of length r, with values in {0, 1, ..., p-1}
+ # for each column in data.corr, it says which is the corresponding column in data.dat
+ # data.dat numeric matrix, of dim n x p, with data to be plotted in scatterplots
+ # rows correspond to data.indID and columns to data.var
+ # data.group numeric vector, of length n, with values in {1, ..., k},
+ # used as categories for coloring points in the scatterplot
+
+ # chartOpts start
+ height = chartOpts?.height ? 450 # height of each panel in pixels
+ width = chartOpts?.width ? height # width of each panel in pixels
+ margin = chartOpts?.margin ? {left:70, top:40, right:5, bottom: 70, inner:5} # margins in pixels (left, top, right, bottom, inner)
+ corcolors = chartOpts?.corcolors ? ["darkslateblue", "white", "crimson"] # heat map colors (same length as `zlim`)
+ zlim = chartOpts?.zlim ? [-1, 0, 1] # z-axis limits
+ rectcolor = chartOpts?.rectcolor ? d3.rgb(230, 230, 230) # color of background rectangle
+ cortitle = chartOpts?.cortitle ? "" # title for heatmap panel
+ scattitle = chartOpts?.scattitle ? "" # title for scatterplot panel
+ scatcolors = chartOpts?.scatcolors ? null # vector of point colors for scatterplot
+ # chartOpts end
+ chartdivid = chartOpts?.chartdivid ? 'chart'
+
+ totalh = height + margin.top + margin.bottom
+ totalw = (width + margin.left + margin.right)*2
+
+ svg = d3.select("div##{chartdivid}")
+ .append("svg")
+ .attr("height", totalh)
+ .attr("width", totalw)
+
+ # panel for correlation image
+ corrplot = svg.append("g")
+ .attr("id", "corplot")
+ .attr("transform", "translate(#{margin.left},#{margin.top})")
+
+ # panel for scatterplot
+ scatterplot = svg.append("g")
+ .attr("id", "scatterplot")
+ .attr("transform", "translate(#{margin.left*2+margin.right+width},#{margin.top})")
+
+ # no. data points
+ nind = data.indID.length
+ nvar = data.var.length
+ ncorrX = data.cols.length
+ ncorrY = data.rows.length
+
+ corXscale = d3.scale.ordinal().domain(d3.range(ncorrX)).rangeBands([0, width])
+ corYscale = d3.scale.ordinal().domain(d3.range(ncorrY)).rangeBands([height, 0])
+ corZscale = d3.scale.linear().domain(zlim).range(corcolors)
+ pixel_width = corXscale(1)-corXscale(0)
+ pixel_height = corYscale(0)-corYscale(1)
+
+ # create list with correlations
+ corr = []
+ for i of data.corr
+ for j of data.corr[i]
+ corr.push({row:i, col:j, value:data.corr[i][j]})
+
+
+ # gray background on scatterplot
+ scatterplot.append("rect")
+ .attr("height", height)
+ .attr("width", width)
+ .attr("fill", rectcolor)
+ .attr("stroke", "black")
+ .attr("stroke-width", 1)
+ .attr("pointer-events", "none")
+
+ corr_tip = d3.tip()
+ .attr('class', 'd3-tip')
+ .html((d) -> d3.format(".2f")(d.value))
+ .direction('e')
+ .offset([0,10])
+ corrplot.call(corr_tip)
+
+
+ cells = corrplot.selectAll("empty")
+ .data(corr)
+ .enter().append("rect")
+ .attr("class", "cell")
+ .attr("x", (d) -> corXscale(d.col))
+ .attr("y", (d) -> corYscale(d.row))
+ .attr("width", corXscale.rangeBand())
+ .attr("height", corYscale.rangeBand())
+ .attr("fill", (d) -> corZscale(d.value))
+ .attr("stroke", "none")
+ .attr("stroke-width", 2)
+ .on("mouseover", (d) ->
+ d3.select(this).attr("stroke", "black")
+ corr_tip.show(d)
+ corrplot.append("text").attr("class","corrlabel")
+ .attr("x", corXscale(d.col)+pixel_width/2)
+ .attr("y", height+margin.bottom*0.2)
+ .text(data.var[data.cols[d.col]])
+ .attr("dominant-baseline", "middle")
+ .attr("text-anchor", "middle")
+ corrplot.append("text").attr("class","corrlabel")
+ .attr("y", corYscale(d.row)+pixel_height/2)
+ .attr("x", -margin.left*0.1)
+ .text(data.var[data.rows[d.row]])
+ .attr("dominant-baseline", "middle")
+ .attr("text-anchor", "end"))
+ .on("mouseout", (d) ->
+ corr_tip.hide(d)
+ d3.selectAll("text.corrlabel").remove()
+ d3.select(this).attr("stroke","none"))
+ .on("click",(d) -> drawScatter(d.col, d.row))
+
+ # colors for scatterplot
+ nGroup = d3.max(data.group)
+ if !(scatcolors?) or scatcolors.length < nGroup
+ if nGroup == 1
+ scatcolors = [ d3.rgb(150, 150, 150) ]
+ else if nGroup <= 3
+ scatcolors = ["crimson", "green", "darkslateblue"]
+ else
+ if nGroup <= 10
+ colorScale = d3.scale.category10()
+ else
+ colorScale = d3.scale.category20()
+ scatcolors = (colorScale(i) for i of d3.range(nGroup))
+
+ scat_tip = d3.tip()
+ .attr('class', 'd3-tip')
+ .html((d,i) -> data.indID[i])
+ .direction('e')
+ .offset([0,10])
+ scatterplot.call(scat_tip)
+
+ drawScatter = (i,j) ->
+ d3.selectAll("circle.points").remove()
+ d3.selectAll("text.axes").remove()
+ d3.selectAll("line.axes").remove()
+ console.log("data.dat:", data.dat)
+ console.log("data.cols:", data.cols)
+ xScale = d3.scale.linear()
+ .domain(d3.extent(data.dat[data.cols[i]]))
+ .range([margin.inner, width-margin.inner])
+ yScale = d3.scale.linear()
+ .domain(d3.extent(data.dat[data.rows[j]]))
+ .range([height-margin.inner, margin.inner])
+ # axis labels
+ scatterplot.append("text")
+ .attr("id", "xaxis")
+ .attr("class", "axes")
+ .attr("x", width/2)
+ .attr("y", height+margin.bottom*0.7)
+ .text(data.var[data.cols[i]])
+ .attr("dominant-baseline", "middle")
+ .attr("text-anchor", "middle")
+ .attr("fill", "slateblue")
+ scatterplot.append("text")
+ .attr("id", "yaxis")
+ .attr("class", "axes")
+ .attr("x", -margin.left*0.8)
+ .attr("y", height/2)
+ .text(data.var[data.rows[j]])
+ .attr("dominant-baseline", "middle")
+ .attr("text-anchor", "middle")
+ .attr("transform", "rotate(270,#{-margin.left*0.8},#{height/2})")
+ .attr("fill", "slateblue")
+ # axis scales
+ xticks = xScale.ticks(5)
+ yticks = yScale.ticks(5)
+ scatterplot.selectAll("empty")
+ .data(xticks)
+ .enter()
+ .append("text")
+ .attr("class", "axes")
+ .text((d) -> formatAxis(xticks)(d))
+ .attr("x", (d) -> xScale(d))
+ .attr("y", height+margin.bottom*0.3)
+ .attr("dominant-baseline", "middle")
+ .attr("text-anchor", "middle")
+ scatterplot.selectAll("empty")
+ .data(yticks)
+ .enter()
+ .append("text")
+ .attr("class", "axes")
+ .text((d) -> formatAxis(yticks)(d))
+ .attr("x", -margin.left*0.1)
+ .attr("y", (d) -> yScale(d))
+ .attr("dominant-baseline", "middle")
+ .attr("text-anchor", "end")
+ scatterplot.selectAll("empty")
+ .data(xticks)
+ .enter()
+ .append("line")
+ .attr("class", "axes")
+ .attr("x1", (d) -> xScale(d))
+ .attr("x2", (d) -> xScale(d))
+ .attr("y1", 0)
+ .attr("y2", height)
+ .attr("stroke", "white")
+ .attr("stroke-width", 1)
+ scatterplot.selectAll("empty")
+ .data(yticks)
+ .enter()
+ .append("line")
+ .attr("class", "axes")
+ .attr("y1", (d) -> yScale(d))
+ .attr("y2", (d) -> yScale(d))
+ .attr("x1", 0)
+ .attr("x2", width)
+ .attr("stroke", "white")
+ .attr("stroke-width", 1)
+ # the points
+ scatterplot.selectAll("empty")
+ .data(d3.range(nind))
+ .enter()
+ .append("circle")
+ .attr("class", "points")
+ .attr("cx", (d) -> xScale(data.dat[data.cols[i]][d]))
+ .attr("cy", (d) -> yScale(data.dat[data.rows[j]][d]))
+ .attr("r", (d) ->
+ x = data.dat[data.cols[i]][d]
+ y = data.dat[data.rows[j]][d]
+ if x? and y? then 3 else null)
+ .attr("stroke", "black")
+ .attr("stroke-width", 1)
+ .attr("fill", (d) -> scatcolors[data.group[d]-1])
+ .on("mouseover", scat_tip.show)
+ .on("mouseout", scat_tip.hide)
+
+ # boxes around panels
+ corrplot.append("rect")
+ .attr("height", height)
+ .attr("width", width)
+ .attr("fill", "none")
+ .attr("stroke", "black")
+ .attr("stroke-width", 1)
+ .attr("pointer-events", "none")
+
+ scatterplot.append("rect")
+ .attr("height", height)
+ .attr("width", width)
+ .attr("fill", "none")
+ .attr("stroke", "black")
+ .attr("stroke-width", 1)
+ .attr("pointer-events", "none")
+
+ # text above
+ corrplot.append("text")
+ .text(cortitle)
+ .attr("id", "corrtitle")
+ .attr("x", width/2)
+ .attr("y", -margin.top/2)
+ .attr("dominant-baseline", "middle")
+ .attr("text-anchor", "middle")
+
+ scatterplot.append("text")
+ .text(scattitle)
+ .attr("id", "scattitle")
+ .attr("x", width/2)
+ .attr("y", -margin.top/2)
+ .attr("dominant-baseline", "middle")
+ .attr("text-anchor", "middle")
+
+ d3.select("div#caption")
+ .style("opacity", 1)
+
+root.corr_matrix = iplotCorr
\ No newline at end of file diff --git a/wqflask/wqflask/static/new/javascript/corr_matrix.js b/wqflask/wqflask/static/new/javascript/corr_matrix.js new file mode 100644 index 00000000..17625f99 --- /dev/null +++ b/wqflask/wqflask/static/new/javascript/corr_matrix.js @@ -0,0 +1,157 @@ +// Generated by CoffeeScript 1.6.1 +(function() { + var iplotCorr, root; + + root = typeof exports !== "undefined" && exports !== null ? exports : this; + + iplotCorr = function(data, chartOpts) { + var cells, chartdivid, colorScale, corXscale, corYscale, corZscale, corcolors, corr, corr_tip, corrplot, cortitle, drawScatter, height, i, j, margin, nGroup, ncorrX, ncorrY, nind, nvar, pixel_height, pixel_width, rectcolor, scat_tip, scatcolors, scatterplot, scattitle, svg, totalh, totalw, width, zlim, _ref, _ref1, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8, _ref9; + height = (_ref = chartOpts != null ? chartOpts.height : void 0) != null ? _ref : 450; + width = (_ref1 = chartOpts != null ? chartOpts.width : void 0) != null ? _ref1 : height; + margin = (_ref2 = chartOpts != null ? chartOpts.margin : void 0) != null ? _ref2 : { + left: 70, + top: 40, + right: 5, + bottom: 70, + inner: 5 + }; + corcolors = (_ref3 = chartOpts != null ? chartOpts.corcolors : void 0) != null ? _ref3 : ["darkslateblue", "white", "crimson"]; + zlim = (_ref4 = chartOpts != null ? chartOpts.zlim : void 0) != null ? _ref4 : [-1, 0, 1]; + rectcolor = (_ref5 = chartOpts != null ? chartOpts.rectcolor : void 0) != null ? _ref5 : d3.rgb(230, 230, 230); + cortitle = (_ref6 = chartOpts != null ? chartOpts.cortitle : void 0) != null ? _ref6 : ""; + scattitle = (_ref7 = chartOpts != null ? chartOpts.scattitle : void 0) != null ? _ref7 : ""; + scatcolors = (_ref8 = chartOpts != null ? chartOpts.scatcolors : void 0) != null ? _ref8 : null; + chartdivid = (_ref9 = chartOpts != null ? chartOpts.chartdivid : void 0) != null ? _ref9 : 'chart'; + totalh = height + margin.top + margin.bottom; + totalw = (width + margin.left + margin.right) * 2; + svg = d3.select("div#" + chartdivid).append("svg").attr("height", totalh).attr("width", totalw); + corrplot = svg.append("g").attr("id", "corplot").attr("transform", "translate(" + margin.left + "," + margin.top + ")"); + scatterplot = svg.append("g").attr("id", "scatterplot").attr("transform", "translate(" + (margin.left * 2 + margin.right + width) + "," + margin.top + ")"); + nind = data.indID.length; + nvar = data["var"].length; + ncorrX = data.cols.length; + ncorrY = data.rows.length; + corXscale = d3.scale.ordinal().domain(d3.range(ncorrX)).rangeBands([0, width]); + corYscale = d3.scale.ordinal().domain(d3.range(ncorrY)).rangeBands([height, 0]); + corZscale = d3.scale.linear().domain(zlim).range(corcolors); + pixel_width = corXscale(1) - corXscale(0); + pixel_height = corYscale(0) - corYscale(1); + corr = []; + for (i in data.corr) { + for (j in data.corr[i]) { + corr.push({ + row: i, + col: j, + value: data.corr[i][j] + }); + } + } + scatterplot.append("rect").attr("height", height).attr("width", width).attr("fill", rectcolor).attr("stroke", "black").attr("stroke-width", 1).attr("pointer-events", "none"); + corr_tip = d3.tip().attr('class', 'd3-tip').html(function(d) { + return d3.format(".2f")(d.value); + }).direction('e').offset([0, 10]); + corrplot.call(corr_tip); + cells = corrplot.selectAll("empty").data(corr).enter().append("rect").attr("class", "cell").attr("x", function(d) { + return corXscale(d.col); + }).attr("y", function(d) { + return corYscale(d.row); + }).attr("width", corXscale.rangeBand()).attr("height", corYscale.rangeBand()).attr("fill", function(d) { + return corZscale(d.value); + }).attr("stroke", "none").attr("stroke-width", 2).on("mouseover", function(d) { + d3.select(this).attr("stroke", "black"); + corr_tip.show(d); + corrplot.append("text").attr("class", "corrlabel").attr("x", corXscale(d.col) + pixel_width / 2).attr("y", height + margin.bottom * 0.2).text(data["var"][data.cols[d.col]]).attr("dominant-baseline", "middle").attr("text-anchor", "middle"); + return corrplot.append("text").attr("class", "corrlabel").attr("y", corYscale(d.row) + pixel_height / 2).attr("x", -margin.left * 0.1).text(data["var"][data.rows[d.row]]).attr("dominant-baseline", "middle").attr("text-anchor", "end"); + }).on("mouseout", function(d) { + corr_tip.hide(d); + d3.selectAll("text.corrlabel").remove(); + return d3.select(this).attr("stroke", "none"); + }).on("click", function(d) { + return drawScatter(d.col, d.row); + }); + nGroup = d3.max(data.group); + if (!(scatcolors != null) || scatcolors.length < nGroup) { + if (nGroup === 1) { + scatcolors = [d3.rgb(150, 150, 150)]; + } else if (nGroup <= 3) { + scatcolors = ["crimson", "green", "darkslateblue"]; + } else { + if (nGroup <= 10) { + colorScale = d3.scale.category10(); + } else { + colorScale = d3.scale.category20(); + } + scatcolors = (function() { + var _results; + _results = []; + for (i in d3.range(nGroup)) { + _results.push(colorScale(i)); + } + return _results; + })(); + } + } + scat_tip = d3.tip().attr('class', 'd3-tip').html(function(d, i) { + return data.indID[i]; + }).direction('e').offset([0, 10]); + scatterplot.call(scat_tip); + drawScatter = function(i, j) { + var xScale, xticks, yScale, yticks; + d3.selectAll("circle.points").remove(); + d3.selectAll("text.axes").remove(); + d3.selectAll("line.axes").remove(); + console.log("data.dat:", data.dat); + console.log("data.cols:", data.cols); + xScale = d3.scale.linear().domain(d3.extent(data.dat[data.cols[i]])).range([margin.inner, width - margin.inner]); + yScale = d3.scale.linear().domain(d3.extent(data.dat[data.rows[j]])).range([height - margin.inner, margin.inner]); + scatterplot.append("text").attr("id", "xaxis").attr("class", "axes").attr("x", width / 2).attr("y", height + margin.bottom * 0.7).text(data["var"][data.cols[i]]).attr("dominant-baseline", "middle").attr("text-anchor", "middle").attr("fill", "slateblue"); + scatterplot.append("text").attr("id", "yaxis").attr("class", "axes").attr("x", -margin.left * 0.8).attr("y", height / 2).text(data["var"][data.rows[j]]).attr("dominant-baseline", "middle").attr("text-anchor", "middle").attr("transform", "rotate(270," + (-margin.left * 0.8) + "," + (height / 2) + ")").attr("fill", "slateblue"); + xticks = xScale.ticks(5); + yticks = yScale.ticks(5); + scatterplot.selectAll("empty").data(xticks).enter().append("text").attr("class", "axes").text(function(d) { + return formatAxis(xticks)(d); + }).attr("x", function(d) { + return xScale(d); + }).attr("y", height + margin.bottom * 0.3).attr("dominant-baseline", "middle").attr("text-anchor", "middle"); + scatterplot.selectAll("empty").data(yticks).enter().append("text").attr("class", "axes").text(function(d) { + return formatAxis(yticks)(d); + }).attr("x", -margin.left * 0.1).attr("y", function(d) { + return yScale(d); + }).attr("dominant-baseline", "middle").attr("text-anchor", "end"); + scatterplot.selectAll("empty").data(xticks).enter().append("line").attr("class", "axes").attr("x1", function(d) { + return xScale(d); + }).attr("x2", function(d) { + return xScale(d); + }).attr("y1", 0).attr("y2", height).attr("stroke", "white").attr("stroke-width", 1); + scatterplot.selectAll("empty").data(yticks).enter().append("line").attr("class", "axes").attr("y1", function(d) { + return yScale(d); + }).attr("y2", function(d) { + return yScale(d); + }).attr("x1", 0).attr("x2", width).attr("stroke", "white").attr("stroke-width", 1); + return scatterplot.selectAll("empty").data(d3.range(nind)).enter().append("circle").attr("class", "points").attr("cx", function(d) { + return xScale(data.dat[data.cols[i]][d]); + }).attr("cy", function(d) { + return yScale(data.dat[data.rows[j]][d]); + }).attr("r", function(d) { + var x, y; + x = data.dat[data.cols[i]][d]; + y = data.dat[data.rows[j]][d]; + if ((x != null) && (y != null)) { + return 3; + } else { + return null; + } + }).attr("stroke", "black").attr("stroke-width", 1).attr("fill", function(d) { + return scatcolors[data.group[d] - 1]; + }).on("mouseover", scat_tip.show).on("mouseout", scat_tip.hide); + }; + corrplot.append("rect").attr("height", height).attr("width", width).attr("fill", "none").attr("stroke", "black").attr("stroke-width", 1).attr("pointer-events", "none"); + scatterplot.append("rect").attr("height", height).attr("width", width).attr("fill", "none").attr("stroke", "black").attr("stroke-width", 1).attr("pointer-events", "none"); + corrplot.append("text").text(cortitle).attr("id", "corrtitle").attr("x", width / 2).attr("y", -margin.top / 2).attr("dominant-baseline", "middle").attr("text-anchor", "middle"); + scatterplot.append("text").text(scattitle).attr("id", "scattitle").attr("x", width / 2).attr("y", -margin.top / 2).attr("dominant-baseline", "middle").attr("text-anchor", "middle"); + return d3.select("div#caption").style("opacity", 1); + }; + + root.corr_matrix = iplotCorr; + +}).call(this); diff --git a/wqflask/wqflask/static/new/javascript/create_corr_matrix.coffee b/wqflask/wqflask/static/new/javascript/create_corr_matrix.coffee new file mode 100644 index 00000000..88b392d0 --- /dev/null +++ b/wqflask/wqflask/static/new/javascript/create_corr_matrix.coffee @@ -0,0 +1,42 @@ +root = exports ? this
+
+$ ->
+ console.log("js_data:", js_data)
+
+ chartOpts = get_options()
+ data = get_data()
+ console.log(data)
+
+ mychart = corr_matrix(data, chartOpts)
+
+
+get_options = ->
+ #h = 450
+ #w = 450
+ #margin = {left:70, top:40, right:5, bottom: 70, inner:5}
+ #
+ chartOpts =
+ cortitle: "Correlation Matrix"
+ scattitle: "Scatterplot"
+ h: 450
+ w: 450
+ margin: {left:100, top:40, right:5, bottom: 70, inner:5}
+
+ return chartOpts
+
+get_data = ->
+ data = {}
+ data.var = js_data.traits
+ data.group = js_data.groups
+ data.indID = js_data.samples
+ data.dat = js_data.sample_data
+ data.corr = js_data.corr_results
+ data.cols = js_data.cols
+ data.rows = js_data.rows
+
+
+ return data
+
+
+
+
\ No newline at end of file diff --git a/wqflask/wqflask/static/new/javascript/create_corr_matrix.js b/wqflask/wqflask/static/new/javascript/create_corr_matrix.js new file mode 100644 index 00000000..64dc834d --- /dev/null +++ b/wqflask/wqflask/static/new/javascript/create_corr_matrix.js @@ -0,0 +1,47 @@ +// Generated by CoffeeScript 1.6.1 +(function() { + var get_data, get_options, root; + + root = typeof exports !== "undefined" && exports !== null ? exports : this; + + $(function() { + var chartOpts, data, mychart; + console.log("js_data:", js_data); + chartOpts = get_options(); + data = get_data(); + console.log(data); + return mychart = corr_matrix(data, chartOpts); + }); + + get_options = function() { + var chartOpts; + chartOpts = { + cortitle: "Correlation Matrix", + scattitle: "Scatterplot", + h: 450, + w: 450, + margin: { + left: 100, + top: 40, + right: 5, + bottom: 70, + inner: 5 + } + }; + return chartOpts; + }; + + get_data = function() { + var data; + data = {}; + data["var"] = js_data.traits; + data.group = js_data.groups; + data.indID = js_data.samples; + data.dat = js_data.sample_data; + data.corr = js_data.corr_results; + data.cols = js_data.cols; + data.rows = js_data.rows; + return data; + }; + +}).call(this); diff --git a/wqflask/wqflask/static/new/javascript/dataset_menu_structure.json b/wqflask/wqflask/static/new/javascript/dataset_menu_structure.json index 43575a18..fabf3998 100755 --- a/wqflask/wqflask/static/new/javascript/dataset_menu_structure.json +++ b/wqflask/wqflask/static/new/javascript/dataset_menu_structure.json @@ -64,14 +64,14 @@ ], "Leaf mRNA": [ [ - "B1LI0809M5", - "Barley1 Leaf INOC TTKS (Aug09) MAS5" - ], - [ "B1LI0809R", "Barley1 Leaf INOC TTKS (Aug09) RMA" ], [ + "B1LI0809M5", + "Barley1 Leaf INOC TTKS (Aug09) MAS5" + ], + [ "B1MI0809M5", "Barley1 Leaf MOCK TTKS (Aug09) MAS5" ], @@ -114,12 +114,12 @@ "Barley1 Leaf MAS 5.0 SCRI (Dec06)" ], [ - "B30_K_1206_R", - "Barley1 Leaf gcRMA SCRI (Dec06)" - ], - [ "B30_K_1206_Rn", "Barley1 Leaf gcRMAn SCRI (Dec06)" + ], + [ + "B30_K_1206_R", + "Barley1 Leaf gcRMA SCRI (Dec06)" ] ], "Phenotypes": [ @@ -212,16 +212,16 @@ "AD-cases-controls-Myers": { "Brain mRNA": [ [ + "GSE15222_F_RI_0409", + "GSE15222 Human Brain All Cases Myers (Apr09) RankInv" + ], + [ "GSE15222_F_N_RI_0409", "GSE15222 Human Brain Normal Myers (Apr09) RankInv" ], [ "GSE15222_F_A_RI_0409", "GSE15222 Human Brain Alzheimer Myers (Apr09) RankInv" - ], - [ - "GSE15222_F_RI_0409", - "GSE15222 Human Brain Myers (Apr09) RankInv" ] ], "Genotypes": [ @@ -237,6 +237,82 @@ ] ] }, + "Aging-Brain-UCI": { + "Entorhinal Cortex mRNA": [ + [ + "UCI_EC_0913", + "GSE11882 UCI Human Entorhinal Cortex Affy U133 Plus2 (Sep13) RMA" + ] + ], + "Genotypes": [ + [ + "Aging-Brain-UCIGeno", + "Aging-Brain-UCI Genotypes" + ] + ], + "Hippocampus mRNA": [ + [ + "UCI_HC_0913", + "GSE11882 UCI Human Hippocampus Affy U133 Plus2 (Sep13) RMA" + ] + ], + "Phenotypes": [ + [ + "Aging-Brain-UCIPublish", + "Aging-Brain-UCI Published Phenotypes" + ] + ], + "Postcentral Gyrus mRNA": [ + [ + "UCI_PCG_0913", + "GSE11882 UCI Human Postcentral Gyrus Affy U133 Plus2 (Sep13) RMA" + ] + ], + "Superior Frontal Gyrus mRNA": [ + [ + "UCI_SG_0913", + "GSE11882 UCI Human Superior Frontal Gyrus Affy U133 Plus2 (Sep13) RMA" + ] + ] + }, + "Brain-Normal-NIH-Gibbs": { + "Cerebellum mRNA": [ + [ + "GSE15745-GPL6104_Cer0510", + "GSE15745 NIH Human Brain Cerebellum ILM humanRef-8 v2.0 (May10) RankInv" + ] + ], + "Genotypes": [ + [ + "Brain-Normal-NIH-GibbsGeno", + "Brain-Normal-NIH-Gibbs Genotypes" + ] + ], + "Phenotypes": [ + [ + "Brain-Normal-NIH-GibbsPublish", + "Brain-Normal-NIH-Gibbs Published Phenotypes" + ] + ], + "Pons mRNA": [ + [ + "GSE15745-GPL6104_Po0510", + "GSE15745 NIH Human Brain Pons ILM humanRef-8 v2.0 (May10) RankInv" + ] + ], + "Prefrontal Cortex mRNA": [ + [ + "GSE15745-GPL6104_PFC0510", + "GSE15745 NIH Human Brain Prefrontal Cortex ILM humanRef-8 v2.0 (May10) RankInv" + ] + ], + "Temporal Cerebral Wall mRNA": [ + [ + "GSE15745-GPL6104_TC0510", + "GSE15745 NIH Human Brain Temporal Cerebral ILM humanRef-8 v2.0 (May10) RankInv" + ] + ] + }, "CANDLE": { "Genotypes": [ [ @@ -291,6 +367,490 @@ ] ] }, + "GTEx": { + "Adrenal Gland mRNA": [ + [ + "GTEx_log2_Adren_0314", + "GTEx Human Adrenal Gland (Mar14) RPKM Log2" + ], + [ + "GTEx_Adren_0414", + "GTEx Human Adrenal Gland (Apr14) RPKM" + ] + ], + "Amygdala mRNA": [ + [ + "GTEx_log2_AMY_0314", + "GTEx Human Amygdala (Mar14) RPKM Log2" + ], + [ + "GTEx_AMY_0314", + "GTEx Human Amygdala (Mar14) RPKM" + ] + ], + "Anterior Cingulate Cortex mRNA": [ + [ + "GTEx_log2_Anter_0314", + "GTEx Human Anterior Cingulate Cortex (Mar14) RPKM Log2" + ], + [ + "GTEx_Anter_0414", + "GTEx Human Anterior Cingulate Cortex (Apr14) RPKM" + ] + ], + "Aorta mRNA": [ + [ + "GTEx_log2_Aorta_0314", + "GTEx Human Aorta (Mar14) RPKM Log2" + ], + [ + "GTEx_Aorta_0414", + "GTEx Human Aorta (Apr14) RPKM" + ] + ], + "Blood, Cells - EBV-Transformed Lymphocytes mRNA": [ + [ + "GTEx_log2_Blood_0314", + "GTEx Human Blood, Cells - EBV-Transformed Lymphocytes (Mar14) RPKM Log2" + ], + [ + "GTEx_Blood_0414", + "GTEx Human Blood, Cells - EBV-Transformed Lymphocytes (Apr14) RPKM" + ] + ], + "Breast - Mammary Tissue mRNA": [ + [ + "GTEx_log2_Breas_0314", + "GTEx Human Breast - Mammary Tissue (Mar14) RPKM Log2" + ], + [ + "GTEx_Breas_0414", + "GTEx Human Breast - Mammary Tissue (Apr14) RPKM" + ] + ], + "Caudate mRNA": [ + [ + "GTEx_log2_Cauda_0314", + "GTEx Human Caudate (Mar14) RPKM Log2" + ], + [ + "GTEx_Cauda_0414", + "GTEx Human Caudate (Apr14) RPKM" + ] + ], + "Cells - EBV-Transformed Lymphocytes mRNA": [ + [ + "GTEx_log2_CellsEBV_0314", + "GTEx Human Cells - EBV-Transformed Lymphocytes (Mar14) RPKM Log2" + ], + [ + "GTEx_CellsEBV_0414", + "GTEx Human Cells - EBV-Transformed Lymphocytes (Apr14) RPKM" + ] + ], + "Cells - Leukemia Cell Line (CML) mRNA": [ + [ + "GTEx_log2_CellsLe_0314", + "GTEx Human Cells - Leukemia Cell Line (CML) (Mar14) RPKM Log2" + ], + [ + "GTEx_CellsLe_0414", + "GTEx Human Cells - Leukemia Cell Line (CML) (Apr14) RPKM" + ] + ], + "Cells - Transformed Fibroblasts mRNA": [ + [ + "GTEx_log2_CellsTr_0314", + "GTEx Human Cells - Transformed Fibroblasts (Mar14) RPKM Log2" + ], + [ + "GTEx_CellsTr_0414", + "GTEx Human Cells - Transformed Fibroblasts (Apr14) RPKM" + ] + ], + "Cerebellar Cortex mRNA": [ + [ + "GTEx_log2_CerebC_0314", + "GTEx Human Cerebellar Cortex (Mar14) RPKM Log2" + ], + [ + "GTEx_CerebC_0414", + "GTEx Human Cerebellar Cortex (Apr14) RPKM" + ] + ], + "Cerebellar Hemisphere mRNA": [ + [ + "GTEx_log2_CerebH_0314", + "GTEx Human Cerebellar Hemisphere (Mar14) RPKM Log2" + ], + [ + "GTEx_CerebH_0414", + "GTEx Human Cerebellar Hemisphere (Apr14) RPKM" + ] + ], + "Cerebellum mRNA": [ + [ + "GTEx_log2_CER_0314", + "GTEx Human Cerebellum (Mar14) RPKM Log2" + ], + [ + "GTEx_CER_0314", + "GTEx Human Cerebellum (Mar14) RPKM" + ] + ], + "Colon - Transverse mRNA": [ + [ + "GTEx_log2_Colon_0314", + "GTEx Human Colon - Transverse (Mar14) RPKM Log2" + ], + [ + "GTEx_Colon_0414", + "GTEx Human Colon - Transverse (Apr14) RPKM" + ] + ], + "Coronary mRNA": [ + [ + "GTEx_log2_Coron_0314", + "GTEx Human Coronary (Mar14) RPKM Log2" + ], + [ + "GTEx_Coron_0414", + "GTEx Human Coronary (Apr14) RPKM" + ] + ], + "Esophagus - Mucosa mRNA": [ + [ + "GTEx_log2_EsophMuc_0314", + "GTEx Human Esophagus - Mucosa (Mar14) RPKM Log2" + ], + [ + "GTEx_EsophMuc_0414", + "GTEx Human Esophagus - Mucosa (Apr14) RPKM" + ] + ], + "Esophagus - Muscularis mRNA": [ + [ + "GTEx_log2_EsophMus_0314", + "GTEx Human Esophagus - Muscularis (Mar14) RPKM Log2" + ], + [ + "GTEx_EsophMus_0414", + "GTEx Human Esophagus - Muscularis (Apr14) RPKM" + ] + ], + "Fallopian Tube mRNA": [ + [ + "GTEx_log2_Fallo_0314", + "GTEx Human Fallopian Tube (Mar14) RPKM Log2" + ], + [ + "GTEx_Fallo_0414", + "GTEx Human Fallopian Tube (Apr14) RPKM" + ] + ], + "Frontal Cortex mRNA": [ + [ + "GTEx_log2_Front_0314", + "GTEx Human Frontal Cortex (Mar14) RPKM Log2" + ], + [ + "GTEx_Front_0414", + "GTEx Human Frontal Cortex (Apr14) RPKM" + ] + ], + "Genotypes": [ + [ + "GTExGeno", + "GTEx Genotypes" + ] + ], + "Heart - Atrial Appendage mRNA": [ + [ + "GTEx_log2_HeartAt_0314", + "GTEx Human Heart - Atrial Appendage (Mar14) RPKM Log2" + ], + [ + "GTEx_HeartAt_0414", + "GTEx Human Heart - Atrial Appendage (Apr14) RPKM" + ] + ], + "Heart - Left Ventricle mRNA": [ + [ + "GTEx_log2_HeartLV_0314", + "GTEx Human Heart - Left Ventricle (Mar14) RPKM Log2" + ], + [ + "GTEx_HeartLV_0414", + "GTEx Human Heart - Left Ventricle (Apr14) RPKM" + ] + ], + "Hippocampus mRNA": [ + [ + "GTEx_log2_HIP_0314", + "GTEx Human Hippocampus (Mar14) RPKM Log2" + ], + [ + "GTEx_HIP_0314", + "GTEx Human Hippocampus (Mar14) RPKM" + ] + ], + "Hypothalamus mRNA": [ + [ + "GTEx_log2_Hypot_0314", + "GTEx Human Hypothalamus (Mar14) RPKM Log2" + ], + [ + "GTEx_Hypot_0414", + "GTEx Human Hypothalamus (Apr14) RPKM" + ] + ], + "Kidney mRNA": [ + [ + "GTEx_log2_Kidne_0314", + "GTEx Human Kidney (Mar14) RPKM Log2" + ], + [ + "GTEx_Kidne_0414", + "GTEx Human Kidney (Apr14) RPKM" + ] + ], + "Liver mRNA": [ + [ + "GTEx_log2_Liver_0314", + "GTEx Human Liver (Mar14) RPKM Log2" + ], + [ + "GTEx_Liver_0414", + "GTEx Human Liver (Apr14) RPKM" + ] + ], + "Lung mRNA": [ + [ + "GTEx_log2_Lung_0314", + "GTEx Human Lung (Mar14) RPKM Log2" + ], + [ + "GTEx_Lung _0414", + "GTEx Human Lung (Apr14) RPKM" + ] + ], + "Muscle mRNA": [ + [ + "GTEx_log2_Muscle_0314", + "GTEx Human Muscle (Mar14) RPKM Log2" + ], + [ + "GTEx_Muscl_0414", + "GTEx Human Muscle (Apr14) RPKM" + ] + ], + "Nerve - Tibial mRNA": [ + [ + "GTEx_log2_Nerve_0314", + "GTEx Human Nerve - Tibial (Mar14) RPKM Log2" + ], + [ + "GTEx_Nerve_0414", + "GTEx Human Nerve - Tibial (Apr14) RPKM" + ] + ], + "Nucleus Accumbens mRNA": [ + [ + "GTEx_log2_Nucle_0314", + "GTEx Human Nucleus Accumbens (Mar14) RPKM Log2" + ], + [ + "GTEx_Nucle_0414", + "GTEx Human Nucleus Accumbens (Apr14) RPKM" + ] + ], + "Ovary mRNA": [ + [ + "GTEx_log2_Ovary_0314", + "GTEx Human Ovary (Mar14) RPKM Log2" + ], + [ + "GTEx_Ovary_0414", + "GTEx Human Ovary (Apr14) RPKM" + ] + ], + "Pancreas mRNA": [ + [ + "GTEx_log2_Pancr_0314", + "GTEx Human Pancreas (Mar14) RPKM Log2" + ], + [ + "GTEx_Pancr_0414", + "GTEx Human Pancreas (Apr14) RPKM" + ] + ], + "Phenotypes": [ + [ + "GTExPublish", + "GTEx Published Phenotypes" + ] + ], + "Pituitary Gland mRNA": [ + [ + "GTEx_log2_Pitui_0314", + "GTEx Human Pituitary (Mar14) RPKM Log2" + ], + [ + "GTEx_Pitui_0414", + "GTEx Human Pituitary (Apr14) RPKM" + ] + ], + "Prostate mRNA": [ + [ + "GTEx_log2_Prost_0314", + "GTEx Human Prostate (Mar14) RPKM Log2" + ], + [ + "GTEx_Prost_0414", + "GTEx Human Prostate (Apr14) RPKM" + ] + ], + "Putamen mRNA": [ + [ + "GTEx_log2_Putam_0314", + "GTEx Human Putamen (Mar14) RPKM Log2" + ], + [ + "GTEx_Putam_0414", + "GTEx Human Putamen (Apr14) RPKM" + ] + ], + "Skin - Not Sun Exposed (Suprapubic) mRNA": [ + [ + "GTEx_log2_SkinN_0314", + "GTEx Human Skin-Not Sun Exposed (Suprapubic) (Mar14) RPKM Log2" + ], + [ + "GTEx_SkinN_0414", + "GTEx Human Skin-Not Sun Exposed (Suprapubic) (Apr14) RPKM" + ] + ], + "Skin - Sun Exposed (Lower leg) mRNA": [ + [ + "GTEx_log2_SkinE_0314", + "GTEx Human Skin-Sun Exposed (Lower leg) (Mar14) RPKM Log2" + ], + [ + "GTEx_SkinE_0414", + "GTEx Human Skin-Sun Exposed (Lower leg) (Apr14) RPKM" + ] + ], + "Spinal Cord mRNA": [ + [ + "GTEx_log2_Spina_0314", + "GTEx Human Spinal Cord (Mar14) RPKM Log2" + ], + [ + "GTEx_Spina_0414", + "GTEx Human Spinal Cord (Apr14) RPKM" + ] + ], + "Stomach mRNA": [ + [ + "GTEx_log2_Stoma_0314", + "GTEx Human Stomach (Mar14) RPKM Log2" + ], + [ + "GTEx_Stoma_0414", + "GTEx Human Stomach (Apr14) RPKM" + ] + ], + "Subcutaneous mRNA": [ + [ + "GTEx_log2_Subcu_0314", + "GTEx Human Subcutaneous (Mar14) RPKM Log2" + ], + [ + "GTEx_Subcu_0414", + "GTEx Human Subcutaneous (Apr14) RPKM" + ] + ], + "Substantia Nigra mRNA": [ + [ + "GTEx_log2_Subst_0314", + "GTEx Human Substantia Nigra (Mar14) RPKM Log2" + ], + [ + "GTEx_Subst_0414", + "GTEx Human Substantia Nigra (Apr14) RPKM" + ] + ], + "Testis mRNA": [ + [ + "GTEx_log2_Testi_0314", + "GTEx Human Testis (Mar14) RPKM Log2" + ], + [ + "GTEx_Testi_0414", + "GTEx Human Testis (Apr14) RPKM" + ] + ], + "Thyroid mRNA": [ + [ + "GTEx_log2_Thyro_0314", + "GTEx Human Thyroid (Mar14) RPKM Log2" + ], + [ + "GTEx_Thyro_0414", + "GTEx Human Thyroid (Apr14) RPKM" + ] + ], + "Tibial mRNA": [ + [ + "GTEx_log2_Tibial_0314", + "GTEx Human Tibial (Mar14) RPKM Log2" + ], + [ + "GTEx_Tibia_0414", + "GTEx Human Tibial (Apr14) RPKM" + ] + ], + "Uterus mRNA": [ + [ + "GTEx_log2_Uterus_0314", + "GTEx Human Uterus (Mar14) RPKM Log2" + ], + [ + "GTEx_Uteru_0414", + "GTEx Human Uterus (Apr14) RPKM" + ] + ], + "Vagina mRNA": [ + [ + "GTEx_log2_Vagin_0314", + "GTEx Human Vagina (Mar14) RPKM Log2" + ], + [ + "GTEx_Vagin_0414", + "GTEx Human Vagina (Apr14) RPKM" + ] + ], + "Visceral mRNA": [ + [ + "GTEx_log2_Visce_0314", + "GTEx Human Visceral (Mar14) RPKM Log2" + ], + [ + "GTEx_Visce_0414", + "GTEx Human Visceral (Apr14) RPKM" + ] + ], + "Whole Blood mRNA": [ + [ + "GTEx_log2_WholeB_0314", + "GTEx Human Whole Blood (Mar14) RPKM Log2" + ], + [ + "GTEx_Whole_0414", + "GTEx Human Whole Blood (Apr14) RPKM" + ] + ] + }, "HB": { "Cerebellum mRNA": [ [ @@ -359,6 +919,20 @@ ] ] }, + "HCP": { + "Genotypes": [ + [ + "HCPGeno", + "HCP Genotypes" + ] + ], + "Phenotypes": [ + [ + "HCPPublish", + "HCP Published Phenotypes" + ] + ] + }, "HLC": { "Genotypes": [ [ @@ -590,12 +1164,12 @@ "NCI Mammary LMT miRNA v2 (Apr09) RMA" ], [ - "MA_M_0704_M", - "NCI Mammary mRNA M430 (July04) MAS5" - ], - [ "MA_M_0704_R", "NCI Mammary mRNA M430 (July04) RMA" + ], + [ + "MA_M_0704_M", + "NCI Mammary mRNA M430 (July04) MAS5" ] ], "Phenotypes": [ @@ -652,12 +1226,12 @@ ], "Liver mRNA": [ [ - "LVF2_M_0704_M", - "(B6 x BTBR)F2-ob/ob Liver mRNA M430 (Jul04) MAS5" - ], - [ "LVF2_M_0704_R", "(B6 x BTBR)F2-ob/ob Liver mRNA M430 (Jul04) RMA" + ], + [ + "LVF2_M_0704_M", + "(B6 x BTBR)F2-ob/ob Liver mRNA M430 (Jul04) MAS5" ] ], "Phenotypes": [ @@ -670,6 +1244,10 @@ "B6D2F2": { "Brain mRNA": [ [ + "BRF2_M_0805_M", + "OHSU/VA B6D2F2 Brain mRNA M430 (Aug05) MAS5" + ], + [ "BRF2_M_0805_P", "OHSU/VA B6D2F2 Brain mRNA M430 (Aug05) PDNN" ], @@ -678,20 +1256,16 @@ "OHSU/VA B6D2F2 Brain mRNA M430 (Aug05) RMA" ], [ - "BRF2_M_0805_M", - "OHSU/VA B6D2F2 Brain mRNA M430 (Aug05) MAS5" - ], - [ "BRF2_M_0304_P", "OHSU/VA B6D2F2 Brain mRNA M430A (Mar04) PDNN" ], [ - "BRF2_M_0304_M", - "OHSU/VA B6D2F2 Brain mRNA M430A (Mar04) MAS5" - ], - [ "BRF2_M_0304_R", "OHSU/VA B6D2F2 Brain mRNA M430A (Mar04) RMA" + ], + [ + "BRF2_M_0304_M", + "OHSU/VA B6D2F2 Brain mRNA M430A (Mar04) MAS5" ] ], "Genotypes": [ @@ -794,44 +1368,44 @@ ], "Striatum mRNA": [ [ + "SA_M2_0905_R", + "OHSU/VA B6D2F2 Striatum M430v2 (Sep05) RMA" + ], + [ "SA_M2_0905_M", "OHSU/VA B6D2F2 Striatum M430v2 (Sep05) MAS5" ], [ "SA_M2_0905_P", "OHSU/VA B6D2F2 Striatum M430v2 (Sep05) PDNN" - ], - [ - "SA_M2_0905_R", - "OHSU/VA B6D2F2 Striatum M430v2 (Sep05) RMA" ] ] }, "BHF2": { "Adipose mRNA": [ [ - "UCLA_BHF2_ADIPOSE_FEMALE", - "UCLA BHF2 Adipose Female mlratio" - ], - [ "UCLA_BHF2_ADIPOSE_MALE", "UCLA BHF2 Adipose Male mlratio" ], [ + "UCLA_BHF2_ADIPOSE_FEMALE", + "UCLA BHF2 Adipose Female mlratio" + ], + [ "UCLA_BHF2_ADIPOSE_0605", "UCLA BHF2 Adipose (June05) mlratio" ] ], "Brain mRNA": [ [ - "UCLA_BHF2_BRAIN_FEMALE", - "UCLA BHF2 Brain Female mlratio" - ], - [ "UCLA_BHF2_BRAIN_MALE", "UCLA BHF2 Brain Male mlratio" ], [ + "UCLA_BHF2_BRAIN_FEMALE", + "UCLA BHF2 Brain Female mlratio" + ], + [ "UCLA_BHF2_BRAIN_0605", "UCLA BHF2 Brain (June05) mlratio" ] @@ -844,28 +1418,28 @@ ], "Liver mRNA": [ [ - "UCLA_BHF2_LIVER_FEMALE", - "UCLA BHF2 Liver Female mlratio" - ], - [ "UCLA_BHF2_LIVER_MALE", "UCLA BHF2 Liver Male mlratio" ], [ + "UCLA_BHF2_LIVER_FEMALE", + "UCLA BHF2 Liver Female mlratio" + ], + [ "UCLA_BHF2_LIVER_0605", "UCLA BHF2 Liver (June05) mlratio" ] ], "Muscle mRNA": [ [ - "UCLA_BHF2_MUSCLE_FEMALE", - "UCLA BHF2 Muscle Female mlratio **" - ], - [ "UCLA_BHF2_MUSCLE_MALE", "UCLA BHF2 Muscle Male mlratio **" ], [ + "UCLA_BHF2_MUSCLE_FEMALE", + "UCLA BHF2 Muscle Female mlratio **" + ], + [ "UCLA_BHF2_MUSCLE_0605", "UCLA BHF2 Muscle (June05) mlratio **" ] @@ -948,6 +1522,16 @@ ] }, "BXD": { + "Adipose mRNA": [ + [ + "EPFLADGL1013", + "EPFL/LISP BXD CD Brown Adipose Affy Mouse Gene 2.0 ST Gene Level (Oct13) RMA" + ], + [ + "EPFLADEL1013", + "EPFL/LISP BXD CD Brown Adipose Affy Mouse Gene 2.0 ST Exon Level (Oct13) RMA" + ] + ], "Adrenal Gland mRNA": [ [ "INIA_Adrenal_RMA_0612", @@ -996,16 +1580,40 @@ [ "UCLA_BXD-on_Femur_0113_RSN", "UCLA GSE27483 BXD Only Bone Femur ILM Mouse WG-6 v2.0 (Jan13) RSN" + ], + [ + "UTHSCWGU88BFMG1013", + "UTHSC WGU88 Male Bone Femur AFFY Mouse Gene ST 2.0 Gene Level (Oct13) RMA **" + ], + [ + "UTHSCWGU88BFMEx1013", + "UTHSC WGU88 Male Bone Femur AFFY Mouse Gene ST 2.0 Exon Level (Oct13) RMA **" + ], + [ + "UTHSCWGU88BFFG1013", + "UTHSC WGU88 Female Bone Femur AFFY Mouse Gene ST 2.0 Gene Level (Oct13) RMA **" + ], + [ + "UTHSCWGU88BFFEx1013", + "UTHSC WGU88 Female Bone Femur AFFY Mouse Gene ST 2.0 Exon Level (Oct13) RMA **" ] ], "Brain mRNA": [ [ - "UTHSC_BXD_WB_RNASeqEx1112", - "UTHSC Mouse BXD Whole Brain RNA Sequence Exon Level (Nov12) RPKM" + "UTHSC_BXD_WB_RNASeqtrim1112", + "UTHSC Mouse BXD Whole Brain RNA Sequence (Nov12) RPKM Trimmed 2.0" ], [ "UTHSC_BXD_WB_RNASeq1112", - "UTHSC Mouse BXD Whole Brain RNA Sequence (Nov12) RPKM" + "UTHSC Mouse BXD Whole Brain RNA Sequence (Nov12) RPKM Untrimmed" + ], + [ + "UTHSC_BXD_WB_RNASeqtrim1_1112", + "UTHSC Mouse BXD Whole Brain RNA Sequence (Nov12) RPKM Trimmed 1.0" + ], + [ + "UTHSC_BXD_WB_RNASeqEx1112", + "UTHSC Mouse BXD Whole Brain RNA Sequence Exon Level (Nov12) RPKM" ], [ "BR_M2_1106_R", @@ -1016,10 +1624,6 @@ "UTHSC Brain mRNA U74Av2 (Nov05) PDNN" ], [ - "BR_U_0805_P", - "UTHSC Brain mRNA U74Av2 (Aug05) PDNN" - ], - [ "BR_U_0805_M", "UTHSC Brain mRNA U74Av2 (Aug05) MAS5" ], @@ -1028,6 +1632,10 @@ "UTHSC Brain mRNA U74Av2 (Aug05) RMA" ], [ + "BR_U_0805_P", + "UTHSC Brain mRNA U74Av2 (Aug05) PDNN" + ], + [ "CB_M_0204_P", "INIA Brain mRNA M430 (Feb04) PDNN" ] @@ -1138,6 +1746,10 @@ "Eye M430v2 WT Gpnmb (Sep08) RMA **" ], [ + "Eye_M2_0908_R_MT", + "Eye M430v2 Mutant Tyrp1 (Sep08) RMA **" + ], + [ "Eye_M2_0908_WTWT", "Eye M430v2 WT WT (Sep08) RMA **" ], @@ -1147,15 +1759,17 @@ ], [ "DBA2J-ONH-1212", - "ONH BXD Glaucoma Affy M430 2.0 Trial (Dec12) RMA **" - ], - [ - "Eye_M2_0908_R_MT", - "Eye M430v2 Mutant Tyrp1 (Sep08) RMA **" + "Howell et al. 2011, DBA/2J Glaucoma Optic Nerve Head M430 2.0 (Dec12) RMA" ], [ "BXD_GLA_0911", - "BXD Glaucoma Affy M430 2.0 Trial (Sep11) RMA **" + "Howell et al. 2011, DBA/2J Glaucoma Retina M430 2.0 (Sep11) RMA" + ] + ], + "Gastrointestinal mRNA": [ + [ + "UTHSC_GutGL_0414", + "UTHSC Mouse BXD Gastrointestinal Affy MoGene 1.0 ST Gene Level (Apr14) RMA **" ] ], "Genotypes": [ @@ -1164,6 +1778,24 @@ "BXD Genotypes" ] ], + "Heart mRNA": [ + [ + "EPFL-LISPBXDHeCD0114", + "EPFL/LISP BXD CD Heart Affy Mouse Gene 2.0 ST Gene Level (Jan14) RMA **" + ], + [ + "EPFL-LISPBXDHeHFD0114", + "EPFL/LISP BXD HFD Heart Affy Mouse Gene 2.0 ST Gene Level (Jan14) RMA **" + ], + [ + "EPFL-LISPBXDHeCDEx0114", + "EPFL/LISP BXD CD Heart Affy Mouse Gene 2.0 ST Exon Level (Jan14) RMA **" + ], + [ + "EPFL-LISPBXDHeHFDEx0114", + "EPFL/LISP BXD HFD Heart Affy Mouse Gene 2.0 ST Exon Level (Jan14) RMA **" + ] + ], "Hematopoietic Cells mRNA": [ [ "UMCG_0907_HemaStem_ori", @@ -1217,7 +1849,7 @@ ], [ "UT_ILM_BXD_hipp_5T_1112", - "UTHSC Hippocampus Illumina v6.1 5Trt (Nov12) RankInv" + "UTHSC Hippocampus Illumina v6.1 All Combined (Nov12) RankInv" ], [ "UT_ILM_BXD_hipp_NON_1112", @@ -1272,6 +1904,12 @@ "UTHSC BXD Aged Hippocampus Affy Mouse Gene 1.0 ST (Sep12) RMA Exon Level **" ] ], + "Hippocampus microRNA": [ + [ + "UTHSC_BXD_Hip_miRNASeq0214", + "UTHSC BXD Hippocampus Ion Torrent microRNA (Feb14) RPKM **" + ] + ], "Hypothalamus mRNA": [ [ "INIA_Hyp_RMA_1110", @@ -1286,6 +1924,22 @@ "INIA Hypothalamus Affy MoGene 1.0 ST (Nov10) Female" ], [ + "INIA_Hyp_PCA_0813_v4", + "INIA Hypothalamus Affy MoGene 1.0 ST (Nov10) PCA Test v080913" + ], + [ + "INIA_Hyp_PCA_0813_v3", + "INIA Hypothalamus Affy MoGene 1.0 ST (Nov10) PCA Test v080813" + ], + [ + "INIA_Hyp_PCA_0813_v2", + "INIA Hypothalamus Affy MoGene 1.0 ST (Nov10) PCA Test v080513" + ], + [ + "INIA_Hyp_PCA_0813", + "INIA Hypothalamus Affy MoGene 1.0 ST (Nov10) PCA Test v080213" + ], + [ "INIA_Hyp_RMA_Ex-1110", "INIA Hypothalamus Exon Affy MoGene 1.0 ST (Nov10)" ] @@ -1308,12 +1962,12 @@ "Mouse Kidney M430v2 Sex Balanced (Aug06) PDNN" ], [ - "MA_M2_0706_R", - "Mouse Kidney M430v2 (Jul06) RMA" - ], - [ "MA_M2_0706_P", "Mouse Kidney M430v2 (Jul06) PDNN" + ], + [ + "MA_M2_0706_R", + "Mouse Kidney M430v2 (Jul06) RMA" ] ], "Leucocytes mRNA": [ @@ -1322,30 +1976,32 @@ "UWA Illumina PBL (Nov08) RSN **" ] ], - "Liver Proteome": [ + "Liver Metabolome": [ [ - "EPFLBXDprotRPN0513", - "EPFL/LISP BXD Liver, Hepatocytes, Soluable Proteins CD+HFD (May13) RPN **" + "EPFL-LISP_LivPMetHFD1213", + "EPFL/LISP BXD Liver Polar Metabolites HFD (Jun14) **" ], [ - "EPFLBXDprotHFDRPN0513", - "EPFL/LISP BXD Liver, Hepatocytes, Soluable Proteins HFD (May13) RPN **" - ], + "EPFL-LISP_LivPMetCD1213", + "EPFL/LISP BXD Liver Polar Metabolites CD (Jun14) **" + ] + ], + "Liver Proteome": [ [ - "EPFLBXDprotCDRPN0513", - "EPFL/LISP BXD Liver, Hepatocytes, Soluable Proteins CD (May13) RPN **" + "EPFLETHZBXDprotHFD0514", + "EPFL/ETHZ BXD Liver, Soluble Proteins HFD (May14) SWATH **" ], [ - "EPFLBXDprot0513", - "EPFL/LISP BXD Liver, Hepatocytes, Soluable Proteins CD+HFD (May13) **" + "EPFLETHZBXDprotCD0514", + "EPFL/ETHZ BXD Liver, Soluble Proteins CD (May14) SWATH **" ], [ - "EPFLBXDprotHFD0513", - "EPFL/LISP BXD Liver, Hepatocytes, Soluable Proteins HFD (May13) **" + "EPFLBXDprotHFDRPN0214", + "EPFL/LISP BXD Liver, Soluble Proteins HFD (Feb14) SRM **" ], [ - "EPFLBXDprotCD0513", - "EPFL/LISP BXD Liver, Hepatocytes, Soluable Proteins CD (May13) **" + "EPFLBXDprotCDRPN0214", + "EPFL/LISP BXD Liver, Soluble Proteins CD (Feb14) SRM **" ] ], "Liver mRNA": [ @@ -1354,16 +2010,20 @@ "GSE16780 UCLA Hybrid MDP Liver Affy HT M430A (Sep11) RMA" ], [ + "SUH_Liv_RMA_0611", + "SUH BXD Liver CCl4-treated Affy Mouse Gene 1.0 ST (Jun11) RMA" + ], + [ "EPFLMouseLiverRMA0413", - "EPFL/LISP BXD CD+HFD Liver Affy Mouse Gene 1.0 ST (Apr13) RMA **" + "EPFL/LISP BXD CD+HFD Liver Affy Mouse Gene 1.0 ST (Apr13) RMA" ], [ "EPFLMouseLiverHFDRMA0413", - "EPFL/LISP BXD HFD Liver Affy Mouse Gene 1.0 ST (Apr13) RMA **" + "EPFL/LISP BXD HFD Liver Affy Mouse Gene 1.0 ST (Apr13) RMA" ], [ "EPFLMouseLiverCDRMA0413", - "EPFL/LISP BXD CD Liver Affy Mouse Gene 1.0 ST (Apr13) RMA **" + "EPFL/LISP BXD CD Liver Affy Mouse Gene 1.0 ST (Apr13) RMA" ], [ "EPFLMouseLiverBothExRMA0413", @@ -1404,10 +2064,6 @@ [ "GenEx_BXD_liverSal_RMA_F_0211", "GenEx BXD Sal Liver Affy M430 2.0 (Feb11) RMA Females **" - ], - [ - "SUH_Liv_RMA_0611", - "SUH BXD Liver Affy Mouse Gene 1.0 ST (Jun11) RMA **" ] ], "Lung mRNA": [ @@ -1420,56 +2076,70 @@ "HZI Lung M430v2 (Apr08) MAS5" ], [ - "HZI_LTCF_0313", - "HZI Lung Time Course Flu PR8M (Mar13) Schughart **" + "HZI_PR8M-F_1113", + "HZI PR8M-Infected Lungs Females RNAseq (Nov13) RPKM **" ], [ "HZI_PR8M_Q_0612", "HZI PR8M-Infected Lungs Agilent4x44 (Apr12) Quantile Females **" + ], + [ + "HZI_LTCF_0313", + "HZI Lung Time Course Flu PR8M (Mar13) Schughart **" ] ], "Midbrain mRNA": [ [ "VUBXDMouseMidBrainQ0512", - "VU BXD Midbrain Agilent SurePrint G3 Mouse GE (May12) Quantile **" + "VU BXD Midbrain Agilent SurePrint G3 Mouse GE (May12) Quantile" + ] + ], + "Muscle Metabolome": [ + [ + "EPFL-LISP_MusPMetHFD1213", + "EPFL/LISP BXD Muscle Polar Metabolites HFD (Jun14) **" + ], + [ + "EPFL-LISP_MusPMetCD1213", + "EPFL/LISP BXD Muscle Polar Metabolites CD (Jun14) **" ] ], "Muscle mRNA": [ [ "EPFLMouseMuscleRMA_Ex1112", - "EPFL/LISP BXD CD+HFD Muscle Affy Mouse Gene 1.0 ST (Nov12) RMA Exon Level **" + "EPFL/LISP BXD CD+HFD Muscle Affy Mouse Gene 1.0 ST (Nov12) RMA Exon Level" ], [ "EPFLMouseMuscleHFDRMAEx1112", - "EPFL/LISP BXD HFD Muscle Affy Mouse Gene 1.0 ST (Nov12) RMA Exon Level **" + "EPFL/LISP BXD HFD Muscle Affy Mouse Gene 1.0 ST (Nov12) RMA Exon Level" ], [ "EPFLMouseMuscleCDRMAEx1112", - "EPFL/LISP BXD CD Muscle Affy Mouse Gene 1.0 ST (Nov12) RMA Exon Level **" + "EPFL/LISP BXD CD Muscle Affy Mouse Gene 1.0 ST (Nov12) RMA Exon Level" ], [ "EPFLMouseMuscleRMA1211", - "EPFL/LISP BXD CD+HFD Muscle Affy Mouse Gene 1.0 ST (Dec11) RMA **" + "EPFL/LISP BXD CD+HFD Muscle Affy Mouse Gene 1.0 ST (Dec11) RMA" ], [ "EPFLMouseMuscleHFDRMA1211", - "EPFL/LISP BXD HFD Muscle Affy Mouse Gene 1.0 ST (Dec11) RMA **" + "EPFL/LISP BXD HFD Muscle Affy Mouse Gene 1.0 ST (Dec11) RMA" ], [ "EPFLMouseMuscleCDRMA1211", - "EPFL/LISP BXD CD Muscle Affy Mouse Gene 1.0 ST (Dec11) RMA **" + "EPFL/LISP BXD CD Muscle Affy Mouse Gene 1.0 ST (Dec11) RMA" ] ], "Neocortex mRNA": [ [ - "DevNeocortex_ILM6.2P3RInv_1111", - "BIDMC/UTHSC Dev Neocortex P3 ILMv6.2 (Nov11) RankInv" - ], - [ "DevNeocortex_ILM6.2P14RInv_1111", "BIDMC/UTHSC Dev Neocortex P14 ILMv6.2 (Nov11) RankInv" ], [ + "DevNeocortex_ILM6.2P3RInv_1111", + "BIDMC/UTHSC Dev Neocortex P3 ILMv6.2 (Nov11) RankInv" + ], + [ "HQFNeoc_1210v2_RankInv", "HQF BXD Neocortex ILM6v1.1 (Dec10v2) RankInv" ], @@ -1482,38 +2152,38 @@ "HQF BXD Neocortex ILM6v1.1 (Feb08) RankInv" ], [ - "DevNeocortex_ILM6.2P14RInv_1110", - "BIDMC/UTHSC Dev Neocortex P14 ILMv6.2 (Nov10) RankInv" - ], - [ "DevNeocortex_ILM6.2P3RInv_1110", "BIDMC/UTHSC Dev Neocortex P3 ILMv6.2 (Nov10) RankInv" + ], + [ + "DevNeocortex_ILM6.2P14RInv_1110", + "BIDMC/UTHSC Dev Neocortex P14 ILMv6.2 (Nov10) RankInv" ] ], "Nucleus Accumbens mRNA": [ [ "VCUSalo_1007_R", - "VCU BXD NA Sal M430 2.0 (Oct07) RMA" + "VCU BXD NAc Sal M430 2.0 (Oct07) RMA" ], [ - "VCU_NAc_AvE_0113_Ss", - "VCU BXD NAc EtOH vs CIE Air M430 2.0 (Jan13) Sscore **" + "VCUEtOH_1007_R", + "VCU BXD NAc EtOH M430 2.0 (Oct07) RMA **" ], [ - "VCU_NAc_Et_0113_R", - "VCU BXD NAc CIE EtOH M430 2.0 (Jan13) RMA **" + "VCUSal_1007_R", + "VCU BXD NAc EtOH vs Sal M430 2.0 (Oct07) Sscore **" ], [ "VCU_NAc_Air_0113_R", "VCU BXD NAc CIE Air M430 2.0 (Jan13) RMA **" ], [ - "VCUEtOH_1007_R", - "VCU BXD NA EtOH M430 2.0 (Oct07) RMA **" + "VCU_NAc_Et_0113_R", + "VCU BXD NAc CIE EtOH M430 2.0 (Jan13) RMA **" ], [ - "VCUSal_1007_R", - "VCU BXD NA Et vs Sal M430 2.0 (Oct07) Sscore **" + "VCU_NAc_AvE_0113_Ss", + "VCU BXD NAc EtOH vs CIE Air M430 2.0 (Jan13) Sscore **" ] ], "Phenotypes": [ @@ -1586,24 +2256,40 @@ "ONC HEI Retina (April 2012) RankInv" ], [ + "DoDTATRCRetMoGene2_1313", + "DoD TATRC Retina Affy MoGene 2.0 ST (Dec13) RMA" + ], + [ + "DoDTATRCRetExMoGene2_1313", + "DoD TATRC Retina Affy MoGene 2.0 ST (Dec13) RMA Exon Level" + ], + [ "ONCRetMoGene2_0413", - "DoD TATRC Retina Affy MoGene 2.0 ST (Apr13) RMA **" + "DoD TATRC Retina Affy MoGene 2.0 ST (Oct13) RMA **" ], [ "ONCRetExMoGene2_0413", - "DoD TATRC Retina Affy MoGene 2.0 ST (Apr13) RMA Exon Level **" + "DoD TATRC Retina Affy MoGene 2.0 ST (Oct13) RMA Exon Level **" ], [ - "B6D2ONCILM_0412", - "B6D2 ONC Retina (April 2012) RankInv **" + "DoDTATRCRetBLMoGene2_1213", + "DoD TATRC Retina Blast Affy MoGene 2.0 ST (Dec13) RMA **" ], [ - "G2HEIONCRetILM6_0911", - "G2 HEI ONC Retina Illumina V6.2 (Sep11) RankInv **" + "DoDTATRCRetBLExMoGene2_1213", + "DoD TATRC Retina Blast Affy MoGene 2.0 ST (Dec13) RMA Exon Level **" + ], + [ + "B6D2ONCILM_0412", + "B6D2 ONC Retina (April 2012) RankInv **" ], [ "HEIONCvsCRetILM6_0911", "HEI ONC vs Control Retina Illumina V6.2 (Sep11) RankInv **" + ], + [ + "G2HEIONCRetILM6_0911", + "G2 HEI ONC Retina Illumina V6.2 (Sep11) RankInv **" ] ], "Spleen mRNA": [ @@ -1690,12 +2376,12 @@ "BIDMC/UTHSC Dev Striatum P14 ILMv6.2 (Nov11) RankInv **" ], [ - "DevStriatum_ILM6.2P3RInv_1110", - "BIDMC/UTHSC Dev Striatum P3 ILMv6.2 (Nov10) RankInv **" - ], - [ "DevStriatum_ILM6.2P14RInv_1110", "BIDMC/UTHSC Dev Striatum P14 ILMv6.2 (Nov10) RankInv **" + ], + [ + "DevStriatum_ILM6.2P3RInv_1110", + "BIDMC/UTHSC Dev Striatum P3 ILMv6.2 (Nov10) RankInv **" ] ], "T Cell (helper) mRNA": [ @@ -1718,16 +2404,16 @@ ], "Ventral Tegmental Area mRNA": [ [ + "VCUEtOH_0609_R", + "VCU BXD VTA EtOH M430 2.0 (Jun09) RMA **" + ], + [ "VCUSal_0609_R", "VCU BXD VTA Sal M430 2.0 (Jun09) RMA **" ], [ "VCUEtvsSal_0609_R", "VCU BXD VTA Et vs Sal M430 2.0 (Jun09) Sscore **" - ], - [ - "VCUEtOH_0609_R", - "VCU BXD VTA EtOH M430 2.0 (Jun09) RMA **" ] ] }, @@ -1806,12 +2492,12 @@ "UCLA CTB6/B6CTF2 Brain (2005) mlratio" ], [ - "UCLA_CTB6B6CTF2_BRAIN_FEMALE", - "UCLA CTB6B6CTF2 Brain Female mlratio **" + "UCLA_CTB6B6CTF2_BRAIN_MALE", + "UCLA CTB6/B6CTF2 Brain Males (2005) mlratio" ], [ - "UCLA_CTB6B6CTF2_BRAIN_MALE", - "UCLA CTB6B6CTF2 Brain Male mlratio **" + "UCLA_CTB6B6CTF2_BRAIN_FEMALE", + "UCLA CTB6/B6CTF2 Brain Females (2005) mlratio" ] ], "Genotypes": [ @@ -1864,12 +2550,12 @@ ], "Hippocampus mRNA": [ [ - "HC_M2CB_1205_P", - "Hippocampus Consortium M430v2 CXB (Dec05) PDNN" - ], - [ "HC_M2CB_1205_R", "Hippocampus Consortium M430v2 CXB (Dec05) RMA" + ], + [ + "HC_M2CB_1205_P", + "Hippocampus Consortium M430v2 CXB (Dec05) PDNN" ] ], "Phenotypes": [ @@ -1974,6 +2660,14 @@ "Hippocampus Illumina (May07) RankInv" ], [ + "Illum_LXS_Hipp_NON_1008", + "Hippocampus Illumina NON (Oct08) RankInv beta" + ], + [ + "Illum_LXS_Hipp_RSE_1008", + "Hippocampus Illumina RSE (Oct08) RankInv beta" + ], + [ "Illum_LXS_Hipp_NOE_1008", "Hippocampus Illumina NOE (Oct08) RankInv beta" ], @@ -1984,14 +2678,6 @@ [ "Illum_LXS_Hipp_NOS_1008", "Hippocampus Illumina NOS (Oct08) RankInv beta" - ], - [ - "Illum_LXS_Hipp_NON_1008", - "Hippocampus Illumina NON (Oct08) RankInv beta" - ], - [ - "Illum_LXS_Hipp_RSE_1008", - "Hippocampus Illumina RSE (Oct08) RankInv beta" ] ], "Phenotypes": [ @@ -2002,16 +2688,30 @@ ], "Prefrontal Cortex mRNA": [ [ + "VCUEtOH_0806_R", + "VCU LXS PFC EtOH M430A 2.0 (Aug06) RMA **" + ], + [ "VCUSal_0806_R", "VCU LXS PFC Sal M430A 2.0 (Aug06) RMA" ], [ "VCUEt_vs_Sal_0806_R", "VCU LXS PFC Et vs Sal M430A 2.0 (Aug06) Sscore **" - ], + ] + ] + }, + "Linsenbardt-Boehm": { + "Genotypes": [ [ - "VCUEtOH_0806_R", - "VCU LXS PFC EtOH M430A 2.0 (Aug06) RMA **" + "Linsenbardt-BoehmGeno", + "Linsenbardt-Boehm Genotypes" + ] + ], + "Phenotypes": [ + [ + "Linsenbardt-BoehmPublish", + "Linsenbardt-Boehm Published Phenotypes" ] ] }, @@ -2025,7 +2725,7 @@ "Dorsal Root Ganglia mRNA": [ [ "TSRI-DRG-AffyMOE430_0113-MDP", - "TSRI DRG Affy Mouse Genome 430 2.0 (Jan13) RMA MDP **" + "TSRI DRG Affy Mouse Genome 430 2.0 (Jan13) RMA MDP" ] ], "Genotypes": [ @@ -2036,12 +2736,12 @@ ], "Hippocampus mRNA": [ [ - "HC_M2_0606_MDP", - "Hippocampus Consortium M430v2 (Jun06) RMA MDP" - ], - [ "UMUTAffyExon_0209_RMA_MDP", "UMUTAffy Hippocampus Exon (Feb09) RMA MDP" + ], + [ + "HC_M2_0606_MDP", + "Hippocampus Consortium M430v2 (Jun06) RMA MDP" ] ], "Liver mRNA": [ @@ -2231,6 +2931,20 @@ } }, "soybean": { + "J12XJ58F11": { + "Genotypes": [ + [ + "J12XJ58F11Geno", + "J12XJ58F11 Genotypes" + ] + ], + "Phenotypes": [ + [ + "J12XJ58F11Publish", + "J12XJ58F11 Published Phenotypes" + ] + ] + }, "J12XJ58F2": { "Genotypes": [ [ @@ -2307,35 +3021,51 @@ "human": [ [ "AD-cases-controls", - "Alzheimer's Disease Brain (Liang)" + "Brain, Aging: AD, Normal Gene Expression (Liang)" ], [ "AD-cases-controls-Myers", - "Alzheimer's Disease Brain (Myers)" + "Brain, Aging: AD, Normal Gene Expression with Genotypes (Myers)" + ], + [ + "Aging-Brain-UCI", + "Brain, Aging: Normal Gene Expression (UCI/Cotman)" + ], + [ + "Brain-Normal-NIH-Gibbs", + "Brain: Normal Gene Expression (NIH/Gibbs)" ], [ "CANDLE", - "CANDLE Cognitive Development (TUCI)" + "Child Development: CANDLE Cohort with Genotypes (TUCI/UTHSC)" ], [ "CEPH-2004", - "CEPH Families Cell Lines" + "Lymphoblastoid Cells: Gene Expression (CEPH, Williams)" + ], + [ + "GTEx", + "All Tissues, RNA-Seq GTEx v3" ], [ "HB", - "Harvard Brain Tissue Resource Center" + "Brain, Aging: AD, HD, Normal Gene Expression (Harvard/Merck)" + ], + [ + "HCP", + "Brain, Cognition, Human Connectome Project" ], [ "HLC", - "Human Liver Cohort (Merck)" + "Liver: Normal Gene Expression with Genotypes (Merck)" ], [ "HLT", - "Human Lung Transcriptome (Rosetta/Merck)" + "Lung: Normal Gene Expression (Merck)" ], [ "HSB", - "Human Brain Transcriptome (Yale/Kavli)" + "Brain, Development: Normal Gene Expression (Yale/Sestan)" ] ], "macaque monkey": [ @@ -2395,7 +3125,7 @@ ], [ "C57BL-6JxC57BL-6NJF2", - "C57BL/6JxC57BL/6NJ F2 Cross" + "Reduced Complexity Cross (B6JxB6N F2)" ], [ "CTB6F2", @@ -2414,6 +3144,10 @@ "Heterogeneous Stock Collaborative Cross" ], [ + "Linsenbardt-Boehm", + "B6D2 EtOH Selected Advanced Intercross" + ], + [ "LXS", "LXS" ], @@ -2450,6 +3184,10 @@ ], "soybean": [ [ + "J12XJ58F11", + "J12XJ58F11" + ], + [ "J12XJ58F2", "J12XJ58F2" ] @@ -2637,6 +3375,58 @@ "Brain mRNA" ] ], + "Aging-Brain-UCI": [ + [ + "Phenotypes", + "Phenotypes" + ], + [ + "Genotypes", + "Genotypes" + ], + [ + "Entorhinal Cortex mRNA", + "Entorhinal Cortex mRNA" + ], + [ + "Hippocampus mRNA", + "Hippocampus mRNA" + ], + [ + "Postcentral Gyrus mRNA", + "Postcentral Gyrus mRNA" + ], + [ + "Superior Frontal Gyrus mRNA", + "Superior Frontal Gyrus mRNA" + ] + ], + "Brain-Normal-NIH-Gibbs": [ + [ + "Phenotypes", + "Phenotypes" + ], + [ + "Genotypes", + "Genotypes" + ], + [ + "Cerebellum mRNA", + "Cerebellum mRNA" + ], + [ + "Pons mRNA", + "Pons mRNA" + ], + [ + "Prefrontal Cortex mRNA", + "Prefrontal Cortex mRNA" + ], + [ + "Temporal Cerebral Wall mRNA", + "Temporal Cerebral Wall mRNA" + ] + ], "CANDLE": [ [ "Phenotypes", @@ -2669,6 +3459,204 @@ "Lymphoblast B-cell mRNA" ] ], + "GTEx": [ + [ + "Phenotypes", + "Phenotypes" + ], + [ + "Genotypes", + "Genotypes" + ], + [ + "Adrenal Gland mRNA", + "Adrenal Gland mRNA" + ], + [ + "Amygdala mRNA", + "Amygdala mRNA" + ], + [ + "Anterior Cingulate Cortex mRNA", + "Anterior Cingulate Cortex mRNA" + ], + [ + "Aorta mRNA", + "Aorta mRNA" + ], + [ + "Blood, Cells - EBV-Transformed Lymphocytes mRNA", + "Blood, Cells - EBV-Transformed Lymphocytes mRNA" + ], + [ + "Breast - Mammary Tissue mRNA", + "Breast - Mammary Tissue mRNA" + ], + [ + "Caudate mRNA", + "Caudate mRNA" + ], + [ + "Cells - EBV-Transformed Lymphocytes mRNA", + "Cells - EBV-Transformed Lymphocytes mRNA" + ], + [ + "Cells - Leukemia Cell Line (CML) mRNA", + "Cells - Leukemia Cell Line (CML) mRNA" + ], + [ + "Cells - Transformed Fibroblasts mRNA", + "Cells - Transformed Fibroblasts mRNA" + ], + [ + "Cerebellar Cortex mRNA", + "Cerebellar Cortex mRNA" + ], + [ + "Cerebellar Hemisphere mRNA", + "Cerebellar Hemisphere mRNA" + ], + [ + "Cerebellum mRNA", + "Cerebellum mRNA" + ], + [ + "Colon - Transverse mRNA", + "Colon - Transverse mRNA" + ], + [ + "Coronary mRNA", + "Coronary mRNA" + ], + [ + "Esophagus - Mucosa mRNA", + "Esophagus - Mucosa mRNA" + ], + [ + "Esophagus - Muscularis mRNA", + "Esophagus - Muscularis mRNA" + ], + [ + "Fallopian Tube mRNA", + "Fallopian Tube mRNA" + ], + [ + "Frontal Cortex mRNA", + "Frontal Cortex mRNA" + ], + [ + "Heart - Atrial Appendage mRNA", + "Heart - Atrial Appendage mRNA" + ], + [ + "Heart - Left Ventricle mRNA", + "Heart - Left Ventricle mRNA" + ], + [ + "Hippocampus mRNA", + "Hippocampus mRNA" + ], + [ + "Hypothalamus mRNA", + "Hypothalamus mRNA" + ], + [ + "Kidney mRNA", + "Kidney mRNA" + ], + [ + "Liver mRNA", + "Liver mRNA" + ], + [ + "Lung mRNA", + "Lung mRNA" + ], + [ + "Muscle mRNA", + "Muscle mRNA" + ], + [ + "Nerve - Tibial mRNA", + "Nerve - Tibial mRNA" + ], + [ + "Nucleus Accumbens mRNA", + "Nucleus Accumbens mRNA" + ], + [ + "Ovary mRNA", + "Ovary mRNA" + ], + [ + "Pancreas mRNA", + "Pancreas mRNA" + ], + [ + "Pituitary Gland mRNA", + "Pituitary Gland mRNA" + ], + [ + "Prostate mRNA", + "Prostate mRNA" + ], + [ + "Putamen mRNA", + "Putamen mRNA" + ], + [ + "Skin - Not Sun Exposed (Suprapubic) mRNA", + "Skin - Not Sun Exposed (Suprapubic) mRNA" + ], + [ + "Skin - Sun Exposed (Lower leg) mRNA", + "Skin - Sun Exposed (Lower leg) mRNA" + ], + [ + "Spinal Cord mRNA", + "Spinal Cord mRNA" + ], + [ + "Stomach mRNA", + "Stomach mRNA" + ], + [ + "Subcutaneous mRNA", + "Subcutaneous mRNA" + ], + [ + "Substantia Nigra mRNA", + "Substantia Nigra mRNA" + ], + [ + "Testis mRNA", + "Testis mRNA" + ], + [ + "Thyroid mRNA", + "Thyroid mRNA" + ], + [ + "Tibial mRNA", + "Tibial mRNA" + ], + [ + "Uterus mRNA", + "Uterus mRNA" + ], + [ + "Vagina mRNA", + "Vagina mRNA" + ], + [ + "Visceral mRNA", + "Visceral mRNA" + ], + [ + "Whole Blood mRNA", + "Whole Blood mRNA" + ] + ], "HB": [ [ "Phenotypes", @@ -2691,6 +3679,16 @@ "Primary Visual Cortex mRNA" ] ], + "HCP": [ + [ + "Phenotypes", + "Phenotypes" + ], + [ + "Genotypes", + "Genotypes" + ] + ], "HLC": [ [ "Phenotypes", @@ -3013,6 +4011,10 @@ "Genotypes" ], [ + "Adipose mRNA", + "Adipose mRNA" + ], + [ "Adrenal Gland mRNA", "Adrenal Gland mRNA" ], @@ -3041,10 +4043,22 @@ "Eye mRNA" ], [ + "Gastrointestinal mRNA", + "Gastrointestinal mRNA" + ], + [ + "Heart mRNA", + "Heart mRNA" + ], + [ "Hematopoietic Cells mRNA", "Hematopoietic Cells mRNA" ], [ + "Hippocampus microRNA", + "Hippocampus microRNA" + ], + [ "Hippocampus mRNA", "Hippocampus mRNA" ], @@ -3061,6 +4075,10 @@ "Leucocytes mRNA" ], [ + "Liver Metabolome", + "Liver Metabolome" + ], + [ "Liver mRNA", "Liver mRNA" ], @@ -3077,6 +4095,10 @@ "Midbrain mRNA" ], [ + "Muscle Metabolome", + "Muscle Metabolome" + ], + [ "Muscle mRNA", "Muscle mRNA" ], @@ -3259,6 +4281,16 @@ "Prefrontal Cortex mRNA" ] ], + "Linsenbardt-Boehm": [ + [ + "Phenotypes", + "Phenotypes" + ], + [ + "Genotypes", + "Genotypes" + ] + ], "MDP": [ [ "Phenotypes", @@ -3385,6 +4417,16 @@ ] }, "soybean": { + "J12XJ58F11": [ + [ + "Phenotypes", + "Phenotypes" + ], + [ + "Genotypes", + "Genotypes" + ] + ], "J12XJ58F2": [ [ "Phenotypes", diff --git a/wqflask/wqflask/static/new/javascript/get_traits_from_collection.coffee b/wqflask/wqflask/static/new/javascript/get_traits_from_collection.coffee index 691eb798..78d69f7a 100755 --- a/wqflask/wqflask/static/new/javascript/get_traits_from_collection.coffee +++ b/wqflask/wqflask/static/new/javascript/get_traits_from_collection.coffee @@ -5,6 +5,8 @@ console.log("before get_traits_from_collection") collection_list = null this_trait_data = null +selected_traits = {} + collection_click = () -> console.log("Clicking on:", $(this)) this_collection_url = $(this).find('.collection_name').prop("href") @@ -17,10 +19,52 @@ collection_click = () -> success: process_traits ) +submit_click = () -> + + selected_traits = {} + + traits = [] + $('#collections_holder').find('input[type=checkbox]:checked').each -> + this_trait = $(@).parents('tr').find('.trait').text() + console.log("this_trait is:", this_trait) + this_dataset = $(@).parents('tr').find('.dataset').text() + console.log("this_dataset is:", this_dataset) + this_trait_url = "/trait/get_sample_data?trait="+this_trait+"&dataset="+this_dataset + $.ajax( + dataType: "json", + url: this_trait_url, + async: false, + success: add_trait_data + ) + + console.log("SELECTED_TRAITS IS:", selected_traits) + + trait_names = [] + samples = $('input[name=allsamples]').val().split(" ") + all_vals = [] + + this_trait_vals = get_this_trait_vals(samples) + all_vals.push(this_trait_vals) + + for trait in Object.keys(selected_traits) + trait_names.push(trait) + + this_trait_vals = [] + for sample in samples + if sample in Object.keys(selected_traits[trait]) + this_trait_vals.push(parseFloat(selected_traits[trait][sample])) + else + this_trait_vals.push(null) + all_vals.push(this_trait_vals) + + create_scatterplots(trait_names, samples, all_vals) + + $.colorbox.close() + trait_click = () -> console.log("Clicking on:", $(this)) - trait = $(this).find('.trait').text() - dataset = $(this).find('.dataset').text() + trait = $(this).parent().find('.trait').text() + dataset = $(this).parent().find('.dataset').text() this_trait_url = "/trait/get_sample_data?trait="+trait+"&dataset="+dataset console.log("this_trait_url", this_trait_url) $.ajax( @@ -29,10 +73,18 @@ trait_click = () -> success: get_trait_data ) $.colorbox.close() - -get_trait_data = (trait_sample_data, textStatus, jqXHR) -> - trait_list = $('input[name=compare_traits]') - console.log("trait_list:", trait_list.val()) + +add_trait_data = (trait_data, textStatus, jqXHR) -> + trait_name = trait_data[0] + trait_sample_data = trait_data[1] + selected_traits[trait_name] = trait_sample_data + console.log("selected_traits:", selected_traits) + +get_trait_data = (trait_data, textStatus, jqXHR) -> + #trait_list = $('input[name=compare_traits]') + #console.log("trait_list:", trait_list.val()) + console.log("trait:", trait_data[0]) + trait_sample_data = trait_data[1] console.log("trait_sample_data:", trait_sample_data) samples = $('input[name=allsamples]').val().split(" ") vals = [] @@ -59,7 +111,6 @@ get_trait_data = (trait_sample_data, textStatus, jqXHR) -> console.log("THE LENGTH IS:", $('input[name=vals]').length) if $('input[name=vals]').length == 1 create_scatterplot(samples, [this_trait_vals, vals]) - get_this_trait_vals = (samples) -> @@ -99,12 +150,15 @@ process_traits = (trait_data, textStatus, jqXHR) -> the_html = "<button id='back_to_collections' class='btn btn-inverse btn-small'>" the_html += "<i class='icon-white icon-arrow-left'></i> Back </button>" + the_html += " <button id='submit' class='btn btn-primary btn-small'> Submit </button>" the_html += "<table class='table table-hover'>" - the_html += "<thead><tr><th>Record</th><th>Data Set</th><th>Description</th><th>Mean</th></tr></thead>" + the_html += "<thead><tr><th></th><th>Record</th><th>Data Set</th><th>Description</th><th>Mean</th></tr></thead>" the_html += "<tbody>" for trait in trait_data - the_html += "<tr class='trait_line'><td class='trait'>#{ trait.name }</td>" + the_html += "<tr class='trait_line'>" + the_html += "<td class='select_trait'><input type='checkbox' name='selectCheck' class='checkbox edit_sample_checkbox'></td>" + the_html += "<td class='trait'>#{ trait.name }</td>" the_html += "<td class='dataset'>#{ trait.dataset }</td>" the_html += "<td>#{ trait.description }</td>" the_html += "<td>#{ trait.mean or ' ' }</td></tr>" @@ -125,6 +179,7 @@ $ -> console.log("inside get_traits_from_collection") $(document).on("click", ".collection_line", collection_click) - $(document).on("click", ".trait_line", trait_click) + $(document).on("click", "#submit", submit_click) + $(document).on("click", ".trait", trait_click) $(document).on("click", "#back_to_collections", back_to_collections) diff --git a/wqflask/wqflask/static/new/javascript/get_traits_from_collection.js b/wqflask/wqflask/static/new/javascript/get_traits_from_collection.js index 146c2619..df3eacf3 100755 --- a/wqflask/wqflask/static/new/javascript/get_traits_from_collection.js +++ b/wqflask/wqflask/static/new/javascript/get_traits_from_collection.js @@ -1,6 +1,6 @@ // Generated by CoffeeScript 1.6.1 (function() { - var assemble_into_json, back_to_collections, collection_click, collection_list, color_by_trait, get_this_trait_vals, get_trait_data, process_traits, this_trait_data, trait_click, + var add_trait_data, assemble_into_json, back_to_collections, collection_click, collection_list, color_by_trait, get_this_trait_vals, get_trait_data, process_traits, selected_traits, submit_click, this_trait_data, trait_click, __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; }; console.log("before get_traits_from_collection"); @@ -9,6 +9,8 @@ this_trait_data = null; + selected_traits = {}; + collection_click = function() { var this_collection_url; console.log("Clicking on:", $(this)); @@ -23,11 +25,54 @@ }); }; + submit_click = function() { + var all_vals, sample, samples, this_trait_vals, trait, trait_names, traits, _i, _j, _len, _len1, _ref; + selected_traits = {}; + traits = []; + $('#collections_holder').find('input[type=checkbox]:checked').each(function() { + var this_dataset, this_trait, this_trait_url; + this_trait = $(this).parents('tr').find('.trait').text(); + console.log("this_trait is:", this_trait); + this_dataset = $(this).parents('tr').find('.dataset').text(); + console.log("this_dataset is:", this_dataset); + this_trait_url = "/trait/get_sample_data?trait=" + this_trait + "&dataset=" + this_dataset; + return $.ajax({ + dataType: "json", + url: this_trait_url, + async: false, + success: add_trait_data + }); + }); + console.log("SELECTED_TRAITS IS:", selected_traits); + trait_names = []; + samples = $('input[name=allsamples]').val().split(" "); + all_vals = []; + this_trait_vals = get_this_trait_vals(samples); + all_vals.push(this_trait_vals); + _ref = Object.keys(selected_traits); + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + trait = _ref[_i]; + trait_names.push(trait); + this_trait_vals = []; + for (_j = 0, _len1 = samples.length; _j < _len1; _j++) { + sample = samples[_j]; + if (__indexOf.call(Object.keys(selected_traits[trait]), sample) >= 0) { + this_trait_vals.push(parseFloat(selected_traits[trait][sample])); + } else { + this_trait_vals.push(null); + } + } + all_vals.push(this_trait_vals); + } + create_scatterplots(trait_names, samples, all_vals); + return $.colorbox.close(); + }; + trait_click = function() { var dataset, this_trait_url, trait; console.log("Clicking on:", $(this)); - trait = $(this).find('.trait').text(); - dataset = $(this).find('.dataset').text(); + trait = $(this).parent().find('.trait').text(); + dataset = $(this).parent().find('.dataset').text(); this_trait_url = "/trait/get_sample_data?trait=" + trait + "&dataset=" + dataset; console.log("this_trait_url", this_trait_url); return $.ajax({ @@ -39,10 +84,18 @@ $.colorbox.close(); - get_trait_data = function(trait_sample_data, textStatus, jqXHR) { - var sample, samples, this_trait_vals, trait_list, vals, _i, _len; - trait_list = $('input[name=compare_traits]'); - console.log("trait_list:", trait_list.val()); + add_trait_data = function(trait_data, textStatus, jqXHR) { + var trait_name, trait_sample_data; + trait_name = trait_data[0]; + trait_sample_data = trait_data[1]; + selected_traits[trait_name] = trait_sample_data; + return console.log("selected_traits:", selected_traits); + }; + + get_trait_data = function(trait_data, textStatus, jqXHR) { + var sample, samples, this_trait_vals, trait_sample_data, vals, _i, _len; + console.log("trait:", trait_data[0]); + trait_sample_data = trait_data[1]; console.log("trait_sample_data:", trait_sample_data); samples = $('input[name=allsamples]').val().split(" "); vals = []; @@ -105,12 +158,15 @@ console.log('in process_traits with trait_data:', trait_data); the_html = "<button id='back_to_collections' class='btn btn-inverse btn-small'>"; the_html += "<i class='icon-white icon-arrow-left'></i> Back </button>"; + the_html += " <button id='submit' class='btn btn-primary btn-small'> Submit </button>"; the_html += "<table class='table table-hover'>"; - the_html += "<thead><tr><th>Record</th><th>Data Set</th><th>Description</th><th>Mean</th></tr></thead>"; + the_html += "<thead><tr><th></th><th>Record</th><th>Data Set</th><th>Description</th><th>Mean</th></tr></thead>"; the_html += "<tbody>"; for (_i = 0, _len = trait_data.length; _i < _len; _i++) { trait = trait_data[_i]; - the_html += "<tr class='trait_line'><td class='trait'>" + trait.name + "</td>"; + the_html += "<tr class='trait_line'>"; + the_html += "<td class='select_trait'><input type='checkbox' name='selectCheck' class='checkbox edit_sample_checkbox'></td>"; + the_html += "<td class='trait'>" + trait.name + "</td>"; the_html += "<td class='dataset'>" + trait.dataset + "</td>"; the_html += "<td>" + trait.description + "</td>"; the_html += "<td>" + (trait.mean || ' ') + "</td></tr>"; @@ -131,7 +187,8 @@ $(function() { console.log("inside get_traits_from_collection"); $(document).on("click", ".collection_line", collection_click); - $(document).on("click", ".trait_line", trait_click); + $(document).on("click", "#submit", submit_click); + $(document).on("click", ".trait", trait_click); return $(document).on("click", "#back_to_collections", back_to_collections); }); diff --git a/wqflask/wqflask/static/new/javascript/lod_chart.coffee b/wqflask/wqflask/static/new/javascript/lod_chart.coffee index 41e9c311..38325e60 100644 --- a/wqflask/wqflask/static/new/javascript/lod_chart.coffee +++ b/wqflask/wqflask/static/new/javascript/lod_chart.coffee @@ -156,7 +156,7 @@ lodchart = () -> .attr("transform", if rotate_ylab then "rotate(270,#{margin.left-axispos.ytitle},#{margin.top+height/2})" else "")
if data['additive'].length > 0
- rotate_additive_ylab = rotate_additive_ylab ? (additive_ylab.length > 1)
+ rotate_additive_ylab = rotate_additive_ylab ? (additive_ylab.length > 1)
additive_yaxis = g.append("g").attr("class", "y axis")
additive_yaxis.selectAll("empty")
.data(additive_yticks)
@@ -343,11 +343,11 @@ lodchart = () -> ylim = value
chart
- if data['additive'].length > 0
- chart.additive_ylim = (value) ->
- return additive_ylim unless arguments.length
- additive_ylim = value
- chart
+ #if data['additive'].length > 0
+ chart.additive_ylim = (value) ->
+ return additive_ylim unless arguments.length
+ additive_ylim = value
+ chart
chart.nyticks = (value) ->
return nyticks unless arguments.length
@@ -437,9 +437,9 @@ lodchart = () -> chart.yscale = () ->
return yscale
- if data['additive'].length > 0
- chart.additive_yscale = () ->
- return additive_yscale
+ #if data['additive'].length > 0
+ chart.additive_yscale = () ->
+ return additive_yscale
chart.xscale = () ->
return xscale
@@ -447,9 +447,9 @@ lodchart = () -> chart.lodcurve = () ->
return lodcurve
- if data['additive'].length > 0
- chart.additivecurve = () ->
- return additivecurve
+ #if data['additive'].length > 0
+ chart.additivecurve = () ->
+ return additivecurve
chart.markerSelect = () ->
return markerSelect
diff --git a/wqflask/wqflask/static/new/javascript/lod_chart.js b/wqflask/wqflask/static/new/javascript/lod_chart.js index 14aff1a7..0938cf06 100644 --- a/wqflask/wqflask/static/new/javascript/lod_chart.js +++ b/wqflask/wqflask/static/new/javascript/lod_chart.js @@ -77,7 +77,9 @@ return _results; })(); ylim = ylim != null ? ylim : [0, d3.max(data[lodvarname])]; - additive_ylim = additive_ylim != null ? additive_ylim : [0, d3.max(data['additive'])]; + if (data['additive'].length > 0) { + additive_ylim = additive_ylim != null ? additive_ylim : [0, d3.max(data['additive'])]; + } lodvarnum = data.lodnames.indexOf(lodvarname); svg = d3.select(this).selectAll("svg").data([data]); gEnter = svg.enter().append("svg").append("g"); @@ -85,9 +87,13 @@ g = svg.select("g"); g.append("rect").attr("x", margin.left).attr("y", margin.top).attr("height", height).attr("width", width).attr("fill", darkrect).attr("stroke", "none"); yscale.domain(ylim).range([height + margin.top, margin.top + margin.inner]); - additive_yscale.domain(additive_ylim).range([height + margin.top, margin.top + margin.inner + height / 2]); + if (data['additive'].length > 0) { + additive_yscale.domain(additive_ylim).range([height + margin.top, margin.top + margin.inner + height / 2]); + } yticks = yticks != null ? yticks : yscale.ticks(nyticks); - additive_yticks = additive_yticks != null ? additive_yticks : additive_yscale.ticks(nyticks); + if (data['additive'].length > 0) { + additive_yticks = additive_yticks != null ? additive_yticks : additive_yscale.ticks(nyticks); + } data = reorgLodData(data, lodvarname); data = chrscales(data, width, chrGap, margin.left, pad4heatmap); xscale = data.xscale; @@ -129,21 +135,23 @@ return formatAxis(yticks)(d); }); yaxis.append("text").attr("class", "title").attr("y", margin.top + height / 2).attr("x", margin.left - axispos.ytitle).text(ylab).attr("transform", rotate_ylab ? "rotate(270," + (margin.left - axispos.ytitle) + "," + (margin.top + height / 2) + ")" : ""); - rotate_additive_ylab = rotate_additive_ylab != null ? rotate_additive_ylab : additive_ylab.length > 1; - additive_yaxis = g.append("g").attr("class", "y axis"); - additive_yaxis.selectAll("empty").data(additive_yticks).enter().append("line").attr("y1", function(d) { - return additive_yscale(d); - }).attr("y2", function(d) { - return additive_yscale(d); - }).attr("x1", margin.left + width).attr("x2", margin.left + width - 7).attr("fill", "none").attr("stroke", "white").attr("stroke-width", 1).style("pointer-events", "none"); - additive_yaxis.selectAll("empty").data(additive_yticks).enter().append("text").attr("y", function(d) { - return additive_yscale(d); - }).attr("x", function(d) { - return margin.left + width + axispos.ylabel + 20; - }).attr("fill", "green").text(function(d) { - return formatAxis(additive_yticks)(d); - }); - additive_yaxis.append("text").attr("class", "title").attr("y", margin.top + 1.5 * height).attr("x", margin.left + width + axispos.ytitle).text(additive_ylab).attr("transform", rotate_additive_ylab ? "rotate(270," + (margin.left + width + axispos.ytitle) + ", " + (margin.top + height * 1.5) + ")" : ""); + if (data['additive'].length > 0) { + rotate_additive_ylab = rotate_additive_ylab != null ? rotate_additive_ylab : additive_ylab.length > 1; + additive_yaxis = g.append("g").attr("class", "y axis"); + additive_yaxis.selectAll("empty").data(additive_yticks).enter().append("line").attr("y1", function(d) { + return additive_yscale(d); + }).attr("y2", function(d) { + return additive_yscale(d); + }).attr("x1", margin.left + width).attr("x2", margin.left + width - 7).attr("fill", "none").attr("stroke", "white").attr("stroke-width", 1).style("pointer-events", "none"); + additive_yaxis.selectAll("empty").data(additive_yticks).enter().append("text").attr("y", function(d) { + return additive_yscale(d); + }).attr("x", function(d) { + return margin.left + width + axispos.ylabel + 20; + }).attr("fill", "green").text(function(d) { + return formatAxis(additive_yticks)(d); + }); + additive_yaxis.append("text").attr("class", "title").attr("y", margin.top + 1.5 * height).attr("x", margin.left + width + axispos.ytitle).text(additive_ylab).attr("transform", rotate_additive_ylab ? "rotate(270," + (margin.left + width + axispos.ytitle) + ", " + (margin.top + height * 1.5) + ")" : ""); + } suggestive_bar = g.append("g").attr("class", "suggestive"); suggestive_bar.selectAll("empty").data([data.suggestive]).enter().append("line").attr("y1", function(d) { return yscale(d); @@ -163,13 +171,15 @@ return yscale(data.lodByChr[chr][i][lodcolumn]); }); }; - additivecurve = function(chr, lodcolumn) { - return d3.svg.line().x(function(d) { - return xscale[chr](d); - }).y(function(d, i) { - return additive_yscale(data.additiveByChr[chr][i][lodcolumn]); - }); - }; + if (data['additive'].length > 0) { + additivecurve = function(chr, lodcolumn) { + return d3.svg.line().x(function(d) { + return xscale[chr](d); + }).y(function(d, i) { + return additive_yscale(data.additiveByChr[chr][i][lodcolumn]); + }); + }; + } curves = g.append("g").attr("id", "curves"); _ref = data.chrnames; for (_i = 0, _len = _ref.length; _i < _len; _i++) { @@ -434,16 +444,18 @@ if (!Array.isArray(data.lodnames)) { data.lodnames = [data.lodnames]; } - additiveval = (function() { - var _k, _len2, _ref2, _results; - _ref2 = data.lodnames; - _results = []; - for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) { - lodcolumn = _ref2[_k]; - _results.push(data['additive'][j]); - } - return _results; - })(); + if (data['additive'].length > 0) { + additiveval = (function() { + var _k, _len2, _ref2, _results; + _ref2 = data.lodnames; + _results = []; + for (_k = 0, _len2 = _ref2.length; _k < _len2; _k++) { + lodcolumn = _ref2[_k]; + _results.push(data['additive'][j]); + } + return _results; + })(); + } lodval = (function() { var _k, _len2, _ref2, _results; _ref2 = data.lodnames; diff --git a/wqflask/wqflask/static/new/javascript/marker_regression.coffee b/wqflask/wqflask/static/new/javascript/marker_regression.coffee index 8038ad9a..403ee52a 100755 --- a/wqflask/wqflask/static/new/javascript/marker_regression.coffee +++ b/wqflask/wqflask/static/new/javascript/marker_regression.coffee @@ -1,12 +1,17 @@ root = exports ? this class Manhattan_Plot - constructor: (@plot_height = 600, @plot_width = 1200) -> + constructor: (@height = 800, @width = 1200) -> @qtl_results = js_data.qtl_results console.log("qtl_results are:", @qtl_results) @chromosomes = js_data.chromosomes console.log("chromosomes are:", @chromosomes)
- +
+ #For the description in the legend
+ @this_trait = js_data.this_trait
+ @data_set = js_data.data_set
+ @maf = js_data.maf #Minor allele frequency
+ @total_length = 0 @max_chr = @get_max_chr() @@ -23,8 +28,9 @@ class Manhattan_Plot [@chr_lengths, @cumulative_chr_lengths] = @get_chr_lengths() # Buffer to allow for the ticks/labels to be drawn - @x_buffer = @plot_width/30 - @y_buffer = @plot_height/20 + @x_buffer = @width/30 + @y_buffer = @height/20
+ @legend_buffer = 30 #Height minus buffer for legend #@x_max = d3.max(@x_coords) @x_max = @total_length @@ -40,7 +46,7 @@ class Manhattan_Plot @plot_coordinates = _.zip(@x_coords, @y_coords, @marker_names) console.log("coordinates:", @plot_coordinates) - @plot_height -= @y_buffer + @height -= @y_buffer @create_scales() @@ -88,7 +94,7 @@ class Manhattan_Plot console.log("high_qtl_count:", high_qtl_count) #if high_qtl_count > 10000 - @y_axis_filter = 2 + @y_axis_filter = 0 #else if high_qtl_count > 1000 # @y_axis_filter = 1 #else @@ -132,8 +138,8 @@ class Manhattan_Plot svg = d3.select("#manhattan_plot") .append("svg") .attr("class", "manhattan_plot") - .attr("width", @plot_width+@x_buffer) - .attr("height", @plot_height+@y_buffer) + .attr("width", @width+@x_buffer) + .attr("height", @height+@y_buffer) .append("g") #.call(d3.behavior.zoom().x(@x_scale).y(@y_scale).scaleExtent([1,8]).on("zoom", () -> # @svg.selectAll("circle") @@ -149,7 +155,8 @@ class Manhattan_Plot #transform: (d) -> # return "translate(" + @x_scale(d[0]) + "," + @y_scale(d[1]) + ")" - create_graph: () -> + create_graph: () ->
+ @create_legend() @add_border() @add_x_axis() @add_y_axis() @@ -160,12 +167,36 @@ class Manhattan_Plot @add_plot_points() #@create_zoom_pane() +
+ create_legend: () ->
+ @svg.append("text")
+ .attr("class", "legend")
+ .text("Trait: " + @this_trait + " : " + @data_set)
+ .attr("x", @x_buffer)
+ .attr("y", 20)
+ .attr("dx", "0em")
+ .attr("text-anchor", "left")
+ .attr("font-family", "sans-serif")
+ .attr("font-size", "16px")
+ .attr("fill", "black")
+
+ @svg.append("text")
+ .attr("class", "legend")
+ .text("MAF: " + @maf)
+ .attr("x", @x_buffer)
+ .attr("y", 38)
+ .attr("dx", "0em")
+ .attr("text-anchor", "left")
+ .attr("font-family", "sans-serif")
+ .attr("font-size", "16px")
+ .attr("fill", "black")
+
add_border: () -> - border_coords = [[@y_buffer, @plot_height, @x_buffer, @x_buffer], - [@y_buffer, @plot_height, @plot_width, @plot_width], - [@y_buffer, @y_buffer, @x_buffer, @plot_width], - [@plot_height, @plot_height, @x_buffer, @plot_width]] + border_coords = [[@y_buffer + @legend_buffer, @height, @x_buffer, @x_buffer], + [@y_buffer + @legend_buffer, @height, @width, @width], + [@y_buffer + @legend_buffer, @y_buffer + @legend_buffer, @x_buffer, @width], + [@height, @height, @x_buffer, @width]] @svg.selectAll("line") .data(border_coords) @@ -188,7 +219,7 @@ class Manhattan_Plot create_scales: () -> #@x_scale = d3.scale.linear() # .domain([0, d3.max(@x_coords)]) - # .range([@x_buffer, @plot_width])
+ # .range([@x_buffer, @width])
console.log("y_axis_filter:", @y_axis_filter) if '24' of @chromosomes console.log("@chromosomes[24]:", @chromosomes['24']) @@ -197,14 +228,14 @@ class Manhattan_Plot console.log("d3.max(@xcoords):", d3.max(@x_coords)) @x_scale = d3.scale.linear() .domain([0, (@total_length + @chromosomes['24'])]) - .range([@x_buffer, @plot_width]) + .range([@x_buffer, @width]) else @x_scale = d3.scale.linear() .domain([0, (@total_length + @chromosomes['20'])]) - .range([@x_buffer, @plot_width]) + .range([@x_buffer, @width]) @y_scale = d3.scale.linear() .domain([@y_axis_filter, @y_max]) - .range([@plot_height, @y_buffer]) + .range([@height, @y_buffer + @legend_buffer]) create_x_axis_tick_values: () -> tick_vals = [] @@ -251,7 +282,7 @@ class Manhattan_Plot @svg.append("g") .attr("class", "x_axis") - .attr("transform", "translate(0," + @plot_height + ")") + .attr("transform", "translate(0," + @height + ")") .call(@xAxis) .selectAll("text") .attr("text-anchor", "right") @@ -275,7 +306,7 @@ class Manhattan_Plot add_axis_labels: () -> @svg.append("text") .attr("transform","rotate(-90)") - .attr("y", 0 - (@plot_height / 2)) + .attr("y", 0 - (@height / 2)) .attr("x", @x_buffer) .attr("dy", "1em") .style("text-anchor", "middle") @@ -290,8 +321,8 @@ class Manhattan_Plot .append("line") .attr("x1", @x_scale) .attr("x2", @x_scale) - .attr("y1", @y_buffer) - .attr("y2", @plot_height) + .attr("y1", @y_buffer + @legend_buffer) + .attr("y2", @height) .style("stroke", "#ccc") @@ -307,7 +338,7 @@ class Manhattan_Plot .attr("x", (d, i) => return @x_scale(d[1] - d[0]) ) - .attr("y", @y_buffer + 2) + .attr("y", @y_buffer + @legend_buffer + 2) .attr("width", (d, i) => starting = @x_scale(d[1] - d[0]) ending = @x_scale(@cumulative_chr_lengths[i]) @@ -315,7 +346,7 @@ class Manhattan_Plot console.log("width:", d[0]) return width ) - .attr("height", @plot_height-@y_buffer-3) + .attr("height", @height-@y_buffer - @legend_buffer-3) .attr("fill", (d, i) => if (i+1)%2 return "none" @@ -342,7 +373,7 @@ class Manhattan_Plot # .attr("width", (d) => # return @x_scale(d[0]) # ) - # .attr("height", @plot_height-@y_buffer) + # .attr("height", @height-@y_buffer) # .attr("fill", (d, i) => # return "whitesmoke" # #if i%2 @@ -380,7 +411,7 @@ class Manhattan_Plot .attr("x", (d) => return @x_scale(d[2] - d[1]/2) ) - .attr("y", @plot_height * 0.1) + .attr("y", @height * 0.1 + @legend_buffer) .attr("dx", "0em") .attr("text-anchor", "middle") .attr("font-family", "sans-serif") @@ -468,8 +499,8 @@ class Manhattan_Plot @svg.append("rect") .attr("class", "pane") - .attr("width", @plot_width) - .attr("height", @plot_height) + .attr("width", @width) + .attr("height", @height) .call(zoom) draw: () -> diff --git a/wqflask/wqflask/static/new/javascript/marker_regression.js b/wqflask/wqflask/static/new/javascript/marker_regression.js index e3c316dd..8c235189 100755 --- a/wqflask/wqflask/static/new/javascript/marker_regression.js +++ b/wqflask/wqflask/static/new/javascript/marker_regression.js @@ -7,14 +7,17 @@ Manhattan_Plot = (function() { - function Manhattan_Plot(plot_height, plot_width) { + function Manhattan_Plot(height, width) { var _ref; - this.plot_height = plot_height != null ? plot_height : 600; - this.plot_width = plot_width != null ? plot_width : 1200; + this.height = height != null ? height : 800; + this.width = width != null ? width : 1200; this.qtl_results = js_data.qtl_results; console.log("qtl_results are:", this.qtl_results); this.chromosomes = js_data.chromosomes; console.log("chromosomes are:", this.chromosomes); + this.this_trait = js_data.this_trait; + this.data_set = js_data.data_set; + this.maf = js_data.maf; this.total_length = 0; this.max_chr = this.get_max_chr(); this.x_coords = []; @@ -27,8 +30,9 @@ console.log("@y_coords: ", this.y_coords); console.timeEnd('Create coordinates'); _ref = this.get_chr_lengths(), this.chr_lengths = _ref[0], this.cumulative_chr_lengths = _ref[1]; - this.x_buffer = this.plot_width / 30; - this.y_buffer = this.plot_height / 20; + this.x_buffer = this.width / 30; + this.y_buffer = this.height / 20; + this.legend_buffer = 30; this.x_max = this.total_length; console.log("@x_max: ", this.x_max); console.log("@x_buffer: ", this.x_buffer); @@ -37,7 +41,7 @@ console.log("svg created"); this.plot_coordinates = _.zip(this.x_coords, this.y_coords, this.marker_names); console.log("coordinates:", this.plot_coordinates); - this.plot_height -= this.y_buffer; + this.height -= this.y_buffer; this.create_scales(); console.time('Create graph'); this.create_graph(); @@ -94,7 +98,7 @@ } } console.log("high_qtl_count:", high_qtl_count); - return this.y_axis_filter = 2; + return this.y_axis_filter = 0; }; Manhattan_Plot.prototype.create_coordinates = function() { @@ -143,11 +147,12 @@ Manhattan_Plot.prototype.create_svg = function() { var svg; - svg = d3.select("#manhattan_plot").append("svg").attr("class", "manhattan_plot").attr("width", this.plot_width + this.x_buffer).attr("height", this.plot_height + this.y_buffer).append("g"); + svg = d3.select("#manhattan_plot").append("svg").attr("class", "manhattan_plot").attr("width", this.width + this.x_buffer).attr("height", this.height + this.y_buffer).append("g"); return svg; }; Manhattan_Plot.prototype.create_graph = function() { + this.create_legend(); this.add_border(); this.add_x_axis(); this.add_y_axis(); @@ -158,10 +163,15 @@ return this.add_plot_points(); }; + Manhattan_Plot.prototype.create_legend = function() { + this.svg.append("text").attr("class", "legend").text("Trait: " + this.this_trait + " : " + this.data_set).attr("x", this.x_buffer).attr("y", 20).attr("dx", "0em").attr("text-anchor", "left").attr("font-family", "sans-serif").attr("font-size", "16px").attr("fill", "black"); + return this.svg.append("text").attr("class", "legend").text("MAF: " + this.maf).attr("x", this.x_buffer).attr("y", 38).attr("dx", "0em").attr("text-anchor", "left").attr("font-family", "sans-serif").attr("font-size", "16px").attr("fill", "black"); + }; + Manhattan_Plot.prototype.add_border = function() { var border_coords, _this = this; - border_coords = [[this.y_buffer, this.plot_height, this.x_buffer, this.x_buffer], [this.y_buffer, this.plot_height, this.plot_width, this.plot_width], [this.y_buffer, this.y_buffer, this.x_buffer, this.plot_width], [this.plot_height, this.plot_height, this.x_buffer, this.plot_width]]; + border_coords = [[this.y_buffer + this.legend_buffer, this.height, this.x_buffer, this.x_buffer], [this.y_buffer + this.legend_buffer, this.height, this.width, this.width], [this.y_buffer + this.legend_buffer, this.y_buffer + this.legend_buffer, this.x_buffer, this.width], [this.height, this.height, this.x_buffer, this.width]]; return this.svg.selectAll("line").data(border_coords).enter().append("line").attr("y1", function(d) { return d[0]; }).attr("y2", function(d) { @@ -180,11 +190,11 @@ console.log("@chromosomes[23]:", this.chromosomes['23']); console.log("@total_length:", this.total_length); console.log("d3.max(@xcoords):", d3.max(this.x_coords)); - this.x_scale = d3.scale.linear().domain([0, this.total_length + this.chromosomes['24']]).range([this.x_buffer, this.plot_width]); + this.x_scale = d3.scale.linear().domain([0, this.total_length + this.chromosomes['24']]).range([this.x_buffer, this.width]); } else { - this.x_scale = d3.scale.linear().domain([0, this.total_length + this.chromosomes['20']]).range([this.x_buffer, this.plot_width]); + this.x_scale = d3.scale.linear().domain([0, this.total_length + this.chromosomes['20']]).range([this.x_buffer, this.width]); } - return this.y_scale = d3.scale.linear().domain([this.y_axis_filter, this.y_max]).range([this.plot_height, this.y_buffer]); + return this.y_scale = d3.scale.linear().domain([this.y_axis_filter, this.y_max]).range([this.height, this.y_buffer + this.legend_buffer]); }; Manhattan_Plot.prototype.create_x_axis_tick_values = function() { @@ -237,7 +247,7 @@ } return tick_val; }); - return this.svg.append("g").attr("class", "x_axis").attr("transform", "translate(0," + this.plot_height + ")").call(this.xAxis).selectAll("text").attr("text-anchor", "right").attr("dx", "-1.6em").attr("transform", function(d) { + return this.svg.append("g").attr("class", "x_axis").attr("transform", "translate(0," + this.height + ")").call(this.xAxis).selectAll("text").attr("text-anchor", "right").attr("dx", "-1.6em").attr("transform", function(d) { return "translate(-12,0) rotate(-90)"; }); }; @@ -248,14 +258,14 @@ }; Manhattan_Plot.prototype.add_axis_labels = function() { - return this.svg.append("text").attr("transform", "rotate(-90)").attr("y", 0 - (this.plot_height / 2)).attr("x", this.x_buffer).attr("dy", "1em").style("text-anchor", "middle").text("LOD Score"); + return this.svg.append("text").attr("transform", "rotate(-90)").attr("y", 0 - (this.height / 2)).attr("x", this.x_buffer).attr("dy", "1em").style("text-anchor", "middle").text("LOD Score"); }; Manhattan_Plot.prototype.add_chr_lines = function() { var _this = this; return this.svg.selectAll("line").data(this.cumulative_chr_lengths, function(d) { return d; - }).enter().append("line").attr("x1", this.x_scale).attr("x2", this.x_scale).attr("y1", this.y_buffer).attr("y2", this.plot_height).style("stroke", "#ccc"); + }).enter().append("line").attr("x1", this.x_scale).attr("x2", this.x_scale).attr("y1", this.y_buffer + this.legend_buffer).attr("y2", this.height).style("stroke", "#ccc"); }; Manhattan_Plot.prototype.fill_chr_areas = function() { @@ -266,14 +276,14 @@ return d; }).enter().append("rect").attr("x", function(d, i) { return _this.x_scale(d[1] - d[0]); - }).attr("y", this.y_buffer + 2).attr("width", function(d, i) { + }).attr("y", this.y_buffer + this.legend_buffer + 2).attr("width", function(d, i) { var ending, starting, width; starting = _this.x_scale(d[1] - d[0]); ending = _this.x_scale(_this.cumulative_chr_lengths[i]); width = ending - starting; console.log("width:", d[0]); return width; - }).attr("height", this.plot_height - this.y_buffer - 3).attr("fill", function(d, i) { + }).attr("height", this.height - this.y_buffer - this.legend_buffer - 3).attr("fill", function(d, i) { if ((i + 1) % 2) { return "none"; } else { @@ -310,7 +320,7 @@ } }).attr("x", function(d) { return _this.x_scale(d[2] - d[1] / 2); - }).attr("y", this.plot_height * 0.1).attr("dx", "0em").attr("text-anchor", "middle").attr("font-family", "sans-serif").attr("font-size", "18px").attr("cursor", "pointer").attr("fill", "black").on("click", function(d) { + }).attr("y", this.height * 0.1 + this.legend_buffer).attr("dx", "0em").attr("text-anchor", "middle").attr("font-family", "sans-serif").attr("font-size", "18px").attr("cursor", "pointer").attr("fill", "black").on("click", function(d) { var this_chr; this_chr = d; return _this.redraw_plot(d); @@ -359,7 +369,7 @@ Manhattan_Plot.prototype.create_zoom_pane = function() { var zoom; zoom = d3.behavior.zoom().on("zoom", draw); - return this.svg.append("rect").attr("class", "pane").attr("width", this.plot_width).attr("height", this.plot_height).call(zoom); + return this.svg.append("rect").attr("class", "pane").attr("width", this.width).attr("height", this.height).call(zoom); }; Manhattan_Plot.prototype.draw = function() { diff --git a/wqflask/wqflask/static/new/javascript/show_trait.coffee b/wqflask/wqflask/static/new/javascript/show_trait.coffee index 6b31124c..1a7f6a0b 100755 --- a/wqflask/wqflask/static/new/javascript/show_trait.coffee +++ b/wqflask/wqflask/static/new/javascript/show_trait.coffee @@ -94,11 +94,15 @@ $ -> all_samples = sample_lists[0].concat sample_lists[1] new Box_Plot(all_samples) - d3.select("#select_compare_trait").on("click", => + $('.qtlcharts').empty() open_trait_selection() ) + d3.select("#clear_compare_trait").on("click", => + $('.qtlcharts').empty() + ) + open_trait_selection = () -> $('#collections_holder').load('/collections/list?color_by_trait #collections_list', => $.colorbox( diff --git a/wqflask/wqflask/static/new/javascript/show_trait.js b/wqflask/wqflask/static/new/javascript/show_trait.js index 2f7dcf78..e1dc9e76 100755 --- a/wqflask/wqflask/static/new/javascript/show_trait.js +++ b/wqflask/wqflask/static/new/javascript/show_trait.js @@ -94,8 +94,12 @@ } }); d3.select("#select_compare_trait").on("click", function() { + $('.qtlcharts').empty(); return open_trait_selection(); }); + d3.select("#clear_compare_trait").on("click", function() { + return $('.qtlcharts').empty(); + }); open_trait_selection = function() { var _this = this; return $('#collections_holder').load('/collections/list?color_by_trait #collections_list', function() { diff --git a/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.coffee b/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.coffee index 6118eae8..b37cfe09 100755 --- a/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.coffee +++ b/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.coffee @@ -123,9 +123,9 @@ $ -> $("#static_progress_bar_container").modal() url = "/marker_regression" $('input[name=method]').val("plink") - $('input[name=mapping_display_all]').val($('input[name=display_all_plink]')) - $('input[name=suggestive]').val($('input[name=suggestive_plink]')) - $('input[name=maf]').val($('input[name=maf_plink]')) + $('input[name=mapping_display_all]').val($('input[name=display_all_plink]').val()) + $('input[name=suggestive]').val($('input[name=suggestive_plink]').val()) + $('input[name=maf]').val($('input[name=maf_plink]').val()) form_data = $('#trait_data_form').serialize() console.log("form_data is:", form_data) $.ajax( @@ -153,9 +153,9 @@ $ -> $("#static_progress_bar_container").modal() url = "/marker_regression" $('input[name=method]').val("gemma") - $('input[name=mapping_display_all]').val($('input[name=display_all_gemma]')) - $('input[name=suggestive]').val($('input[name=suggestive_gemma]')) - $('input[name=maf]').val($('input[name=maf_gemma]')) + $('input[name=mapping_display_all]').val($('input[name=display_all_gemma]').val()) + $('input[name=suggestive]').val($('input[name=suggestive_gemma]').val()) + $('input[name=maf]').val($('input[name=maf_gemma]').val()) form_data = $('#trait_data_form').serialize() console.log("form_data is:", form_data) $.ajax( diff --git a/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.js b/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.js index ee930c80..9b9070ba 100755 --- a/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.js +++ b/wqflask/wqflask/static/new/javascript/show_trait_mapping_tools.js @@ -135,9 +135,9 @@ $("#static_progress_bar_container").modal(); url = "/marker_regression"; $('input[name=method]').val("plink"); - $('input[name=mapping_display_all]').val($('input[name=display_all_plink]')); - $('input[name=suggestive]').val($('input[name=suggestive_plink]')); - $('input[name=maf]').val($('input[name=maf_plink]')); + $('input[name=mapping_display_all]').val($('input[name=display_all_plink]').val()); + $('input[name=suggestive]').val($('input[name=suggestive_plink]').val()); + $('input[name=maf]').val($('input[name=maf_plink]').val()); form_data = $('#trait_data_form').serialize(); console.log("form_data is:", form_data); $.ajax({ @@ -166,9 +166,9 @@ $("#static_progress_bar_container").modal(); url = "/marker_regression"; $('input[name=method]').val("gemma"); - $('input[name=mapping_display_all]').val($('input[name=display_all_gemma]')); - $('input[name=suggestive]').val($('input[name=suggestive_gemma]')); - $('input[name=maf]').val($('input[name=maf_gemma]')); + $('input[name=mapping_display_all]').val($('input[name=display_all_gemma]').val()); + $('input[name=suggestive]').val($('input[name=suggestive_gemma]').val()); + $('input[name=maf]').val($('input[name=maf_gemma]').val()); form_data = $('#trait_data_form').serialize(); console.log("form_data is:", form_data); $.ajax({ diff --git a/wqflask/wqflask/templates/correlation_matrix.html b/wqflask/wqflask/templates/correlation_matrix.html index b67ecb78..403d2a98 100755 --- a/wqflask/wqflask/templates/correlation_matrix.html +++ b/wqflask/wqflask/templates/correlation_matrix.html @@ -5,13 +5,16 @@ <link rel="stylesheet" type="text/css" href="/static/packages/DT_bootstrap/DT_bootstrap.css" />
<link rel="stylesheet" type="text/css" href="/static/packages/TableTools/media/css/TableTools.css" />
<link rel="stylesheet" type="text/css" href="/static/new/css/corr_matrix.css" />
+ <link rel="stylesheet" type="text/css" href="/static/new/css/panelutil.css" />
+ <link rel="stylesheet" type="text/css" href="/static/new/css/d3-tip.min.css" />
{% endblock %}
{% block content %}
{{ header("Correlation Matrix") }}
<div class="container">
- <div class="row-fluid show-grid">
+ <div id="chart"></div>
+<!-- <div class="row-fluid show-grid">
<div class="col-md-12"> Pearon's R </div>
</div>
<div class="row-fluid show-grid">
@@ -48,16 +51,26 @@ </div>
</div>
- </div>
+ </div>-->
</div>
{% endblock %}
-{% block js %}
+{% block js %}
+
+ <script>
+ js_data = {{ js_data | safe }}
+ </script>
+
+ <script type="text/javascript" src="http://d3js.org/d3.v3.min.js"></script>
+ <script type="text/javascript" src="/static/new/js_external/d3-tip.min.js"></script>
<script language="javascript" type="text/javascript" src="/static/new/packages/DataTables/js/jquery.js"></script>
<script language="javascript" type="text/javascript" src="/static/new/packages/DataTables/js/jquery.dataTables.min.js"></script>
<script language="javascript" type="text/javascript" src="/static/packages/DT_bootstrap/DT_bootstrap.js"></script>
<script language="javascript" type="text/javascript" src="/static/packages/TableTools/media/js/TableTools.min.js"></script>
<script language="javascript" type="text/javascript" src="/static/packages/underscore/underscore-min.js"></script>
+ <script type="text/javascript" src="/static/new/javascript/panelutil.js"></script>
+ <script language="javascript" type="text/javascript" src="/static/new/javascript/corr_matrix.js"></script>
+ <script language="javascript" type="text/javascript" src="/static/new/javascript/create_corr_matrix.js"></script>
{% endblock %}
diff --git a/wqflask/wqflask/templates/interval_mapping.html b/wqflask/wqflask/templates/interval_mapping.html index e3c164ea..ad174b7b 100755 --- a/wqflask/wqflask/templates/interval_mapping.html +++ b/wqflask/wqflask/templates/interval_mapping.html @@ -1,12 +1,12 @@ {% extends "base.html" %}
{% block title %}Interval Mapping{% endblock %}
{% block css %}
- <link rel="stylesheet" type="text/css" href="/static/new/css/interval_mapping.css" />
+<!-- <link rel="stylesheet" type="text/css" href="/static/new/css/interval_mapping.css" />-->
<link rel="stylesheet" type="text/css" href="/static/new/packages/DataTables/css/jquery.dataTables.css" />
<link rel="stylesheet" type="text/css" href="/static/packages/DT_bootstrap/DT_bootstrap.css" />
<link rel="stylesheet" type="text/css" href="/static/packages/TableTools/media/css/TableTools.css" />
- <link rel="stylesheet" type="text/css" href="/static/new/css/panelutil.css" />
<link rel="stylesheet" type="text/css" href="/static/new/css/d3-tip.min.css" />
+ <link rel="stylesheet" type="text/css" href="/static/new/css/panelutil.css" />
{% endblock %}
{% block content %} <!-- Start of body -->
@@ -19,7 +19,7 @@ Whole Genome Mapping
</h2>
</div>
- <div id="topchart">
+ <div class="qtlcharts" id="topchart">
</div>
<div>
diff --git a/wqflask/wqflask/templates/show_trait_statistics_new.html b/wqflask/wqflask/templates/show_trait_statistics_new.html index 9b6b37a4..a9f5dd43 100755 --- a/wqflask/wqflask/templates/show_trait_statistics_new.html +++ b/wqflask/wqflask/templates/show_trait_statistics_new.html @@ -87,7 +87,10 @@ <div class="btn-group"> <button type="button" class="btn" id="select_compare_trait"> - <i class="icon-th-large"></i> Select Trait + <i class="icon-th-large"></i> Select Traits + </button> + <button type="button" class="btn" id="clear_compare_trait"> + <i class="icon-trash"></i> Clear </button> </div> <div id="scatterplot_container"> diff --git a/wqflask/wqflask/views.py b/wqflask/wqflask/views.py index aa33700f..7a484898 100755 --- a/wqflask/wqflask/views.py +++ b/wqflask/wqflask/views.py @@ -208,7 +208,8 @@ def marker_regression_page(): 'trait_id', 'dataset', 'method', - 'suggestive' + 'suggestive', + 'maf' ) start_vars = {} @@ -323,6 +324,10 @@ def corr_compute_page(): def corr_matrix_page(): print("In corr_matrix, request.form is:", pf(request.form)) template_vars = show_corr_matrix.CorrelationMatrix(request.form) + template_vars.js_data = json.dumps(template_vars.js_data, + default=json_default_handler, + indent=" ") + return render_template("correlation_matrix.html", **template_vars.__dict__) @app.route("/corr_scatter_plot") |