src/hg/encode/encodeValidate/doEncodeValidate.pl 1.218

1.218 2010/03/24 21:39:03 kate
1. Allow control terms to be used with any variable 2. Add co-PI to lab metadata
Index: src/hg/encode/encodeValidate/doEncodeValidate.pl
===================================================================
RCS file: /projects/compbio/cvsroot/kent/src/hg/encode/encodeValidate/doEncodeValidate.pl,v
retrieving revision 1.217
retrieving revision 1.218
diff -b -B -U 4 -r1.217 -r1.218
--- src/hg/encode/encodeValidate/doEncodeValidate.pl	24 Mar 2010 03:16:26 -0000	1.217
+++ src/hg/encode/encodeValidate/doEncodeValidate.pl	24 Mar 2010 21:39:03 -0000	1.218
@@ -1072,10 +1072,18 @@
                     for my $pair (@pairs) {
                         my ($var, $term) = split('=', $pair);
                         if ($var eq $variable) {
                             next if ($term eq "None");
-                            die "'$term' is not a registered '$cvTypeVar' term\n" unless defined($terms{$cvTypeVar}->{$term}) ;
-                            my $tag = $terms{$cvTypeVar}->{$term}->{'tag'};
+                            my $tag;
+                            if (defined($terms{$cvTypeVar}->{$term})) {
+                                $tag=$terms{$cvTypeVar}->{$term}->{"tag"};
+                            } else {
+                                if (defined($terms{"control"}->{$term})) {
+                                    $tag=$terms{"control"}->{$term}->{"tag"};
+                                } else {
+                                    die "'$term' is not a registered '$cvTypeVar' term\n";
+                                }
+                            }
                             if (!defined($tags{$tag})) {
                                 # suppress dups, requested by Brian
                                 $setting = "$setting $tag=$term";
                                 $tags{$tag} = $term;
@@ -1645,15 +1653,25 @@
 
 my $priority = $db->quickQuery("select max(priority) from trackDb where settings like '%subTrack $compositeTrack%'") || 0;
 $ddfLineNumber = 1;
 
+# use pi.ra file to map pi/lab/institution/grant/project for metadata line
+my $labRef = Encode::getLabs($configPath);
+my %labs = %{$labRef};
+
 foreach my $ddfLine (@ddfLines) {
     $ddfLineNumber++;
     my $diePrefix = "ERROR on DDF lineNumber $ddfLineNumber:";
     my $view = $ddfLine->{view};
     my $type = $daf->{TRACKS}{$view}{type} || die "Missing DAF entry for view '$view'\n";
     my $sql = $daf->{TRACKS}{$view}{sql};
-    my $metadata = "project=wgEncode grant=$daf->{grant} lab=$daf->{lab} dataType=$daf->{dataType}";
+    my $lab = $daf->{lab};
+    my $metadata = "project=wgEncode grant=$daf->{grant} lab=$lab";
+    if (defined($labs{$lab}) && $labs{$lab}->{pi} ne $labs{$lab}->{grant}) {
+        # add co-PI name
+        $metadata .= "($labs{$lab}->{pi})";
+    }
+    $metadata .= " dataType=$daf->{dataType}";
     $metadata .= " cell=$ddfLine->{cell}" if $ddfLine->{cell}; # force some order
     $metadata .= " antibody=$ddfLine->{antibody}" if $ddfLine->{antibody};
     for my $key (keys %{$ddfLine}) {
         my $value = $ddfLine->{$key};