about summary refs log tree commit diff
path: root/wqflask
diff options
context:
space:
mode:
Diffstat (limited to 'wqflask')
-rwxr-xr-xwqflask/base/data_set.py10
-rwxr-xr-xwqflask/base/species.py6
-rwxr-xr-xwqflask/base/trait.py2
-rwxr-xr-xwqflask/maintenance/gen_select_dataset.py47
-rwxr-xr-xwqflask/wqflask/correlation_matrix/show_corr_matrix.py153
-rwxr-xr-xwqflask/wqflask/marker_regression/marker_regression.py16
-rwxr-xr-xwqflask/wqflask/my_pylmm/data/genofile_parser.py14
-rwxr-xr-xwqflask/wqflask/show_trait/show_trait.py1
-rw-r--r--wqflask/wqflask/static/new/css/charts.css28
-rw-r--r--wqflask/wqflask/static/new/javascript/compare_traits_scatterplot.coffee76
-rw-r--r--wqflask/wqflask/static/new/javascript/compare_traits_scatterplot.js57
-rw-r--r--wqflask/wqflask/static/new/javascript/corr_matrix.coffee275
-rw-r--r--wqflask/wqflask/static/new/javascript/corr_matrix.js157
-rw-r--r--wqflask/wqflask/static/new/javascript/create_corr_matrix.coffee42
-rw-r--r--wqflask/wqflask/static/new/javascript/create_corr_matrix.js47
-rwxr-xr-xwqflask/wqflask/static/new/javascript/dataset_menu_structure.json1362
-rwxr-xr-xwqflask/wqflask/static/new/javascript/get_traits_from_collection.coffee75
-rwxr-xr-xwqflask/wqflask/static/new/javascript/get_traits_from_collection.js77
-rw-r--r--wqflask/wqflask/static/new/javascript/lod_chart.coffee24
-rw-r--r--wqflask/wqflask/static/new/javascript/lod_chart.js82
-rwxr-xr-xwqflask/wqflask/static/new/javascript/marker_regression.coffee85
-rwxr-xr-xwqflask/wqflask/static/new/javascript/marker_regression.js48
-rwxr-xr-xwqflask/wqflask/static/new/javascript/show_trait.coffee6
-rwxr-xr-xwqflask/wqflask/static/new/javascript/show_trait.js4
-rwxr-xr-xwqflask/wqflask/static/new/javascript/show_trait_mapping_tools.coffee12
-rwxr-xr-xwqflask/wqflask/static/new/javascript/show_trait_mapping_tools.js12
-rwxr-xr-xwqflask/wqflask/templates/correlation_matrix.html19
-rwxr-xr-xwqflask/wqflask/templates/interval_mapping.html6
-rwxr-xr-xwqflask/wqflask/templates/show_trait_statistics_new.html5
-rwxr-xr-xwqflask/wqflask/views.py7
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 '&nbsp;' }</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 || '&nbsp;') + "</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")