+ changed training method to work with new dataset format
authorfabio <fabio@e1793c9e-67f9-0310-80fc-b846ff1f7b36>
Fri, 7 Mar 2008 17:47:42 +0000 (17:47 +0000)
committerfabio <fabio@e1793c9e-67f9-0310-80fc-b846ff1f7b36>
Fri, 7 Mar 2008 17:47:42 +0000 (17:47 +0000)
+ minor changes

git-svn-id: http://svn.tuebingen.mpg.de/ag-raetsch/projects/QPalma@8103 e1793c9e-67f9-0310-80fc-b846ff1f7b36

scripts/Experiment.py
scripts/check_dataset.py
scripts/compile_dataset.py
scripts/qpalma_main.py

index ae462e6..9d4eaed 100644 (file)
@@ -21,7 +21,7 @@ def createRuns():
    numFolds=5
 
    # the main directory where all results are stored
-   experiment_dir = '/fml/ag-raetsch/home/fabio/tmp/QPalma_2k'
+   experiment_dir = '/fml/ag-raetsch/home/fabio/tmp/QPalma_test'
 
    assert os.path.exists(experiment_dir), 'toplevel dir for experiment does not exist!'
 
@@ -35,7 +35,7 @@ def createRuns():
    allRuns = []
 
    #dataset_filename = '/fml/ag-raetsch/home/fabio/svn/projects/QPalma/scripts/dataset_remapped_test'
-   dataset_filename = '/fml/ag-raetsch/home/fabio/svn/projects/QPalma/scripts/dataset_remapped_test_2k'
+   dataset_filename = '/fml/ag-raetsch/home/fabio/svn/projects/QPalma/scripts/dataset_remapped_test_new'
 
    for QFlag in [True,False]:
       for SSFlag in [True,False]:
index 0a56f5b..e60e338 100644 (file)
@@ -5,10 +5,8 @@ import sys
 import pdb
 import cPickle
 
-from compile_dataset import compile_d,unbracket_est,get_seq_and_scores,get_seq
-
-def check(idx):
-   pass
+from compile_dataset import compile_d,get_seq_and_scores,get_seq
+from qpalma_main import unbracket_est
 
 def checkAll(filename):
    dataset = cPickle.load(open(filename))
index 8cf6ec6..73d3e9a 100644 (file)
@@ -448,24 +448,6 @@ def reverse_complement(seq):
 
    return new_seq
 
-
-def unbracket_est(est):
-   new_est = ''
-   e = 0
-   while True:
-      if not e < len(est):
-         break
-
-      if est[e] == '[':
-         new_est += est[e+2]
-         e += 4
-      else:
-         new_est += est[e]
-         e += 1
-
-   return "".join(new_est).lower()
-
-
 def get_seq(begin,end,exon_end):
 
    dna_flat_files    =  '/fml/ag-raetsch/share/projects/genomes/A_thaliana_best/genome/'
index 5eee532..b483589 100644 (file)
@@ -4,7 +4,7 @@
 ###########################################################
 #
 # The QPalma project aims at extending the Palma project 
-# to be able to use Solexa reads toegether with their 
+# to be able to use Solexa reads together with their 
 # quality scores.
 # 
 # This file represents the conversion of the main matlab 
 
 import sys
 import cPickle
-import subprocess
-import scipy.io
 import pdb
 import re
 import os.path
-#import pydb
 
 from compile_dataset import getSpliceScores
 
@@ -51,6 +48,25 @@ from genome_utils import load_genomic
 
 from Utils import calc_stat, calc_info, pprint_alignment
 
+
+def unbracket_est(est):
+   new_est = ''
+   e = 0
+
+   while True:
+      if e >= len(est):
+         break
+
+      if est[e] == '[':
+         new_est += est[e+2]
+         e += 4
+      else:
+         new_est += est[e]
+         e += 1
+
+   return "".join(new_est).lower()
+
+
 class QPalma:
    """
    A training method for the QPalma project
@@ -189,9 +205,9 @@ class QPalma:
       self.plog("%s\n"%str(run))
 
       data_filename = self.run['dataset_filename']
-      Sequences, Acceptors, Donors, Exons, Ests, OriginalEsts, Qualities,\
-      UpCut, StartPos, AlternativeSequences =\
-      paths_load_data(data_filename,'training',None,self.ARGS)
+
+      SeqInfo, Exons, OriginalEsts, Qualities,\
+      AlternativeSequences = paths_load_data(data_filename,'training',None,self.ARGS)
 
       # Load the whole dataset 
       if self.run['mode'] == 'normal':
@@ -202,32 +218,26 @@ class QPalma:
       else:
          assert(False)
 
-      self.Sequences   = Sequences
+      self.SeqInfo     = SeqInfo
       self.Exons       = Exons
-      self.Ests        = Ests
       self.OriginalEsts= OriginalEsts
       self.Qualities   = Qualities
-      self.Donors      = Donors
-      self.Acceptors   = Acceptors
 
-      calc_info(self.Acceptors,self.Donors,self.Exons,self.Qualities)
+      #calc_info(self.Exons,self.Qualities)
 
       beg = run['training_begin']
       end = run['training_end']
 
-      Sequences   = Sequences[beg:end]
+      SeqInfo     = SeqInfo[beg:end]
       Exons       = Exons[beg:end]
-      Ests        = Ests[beg:end]
       OriginalEsts= OriginalEsts[beg:end]
       Qualities   = Qualities[beg:end]
-      Acceptors   = Acceptors[beg:end]
-      Donors      = Donors[beg:end]
 
       # number of training instances
-      N = numExamples = len(Sequences
-      assert len(Exons) == N and len(Ests) == N\
-      and len(Qualities) == N and len(Acceptors) == N\
-      and len(Donors) == N, 'The Exons,Acc,Don,.. arrays are of different lengths'
+      N = numExamples = len(SeqInfo
+      assert len(Exons) == N and len(OriginalEsts) == N and len(Qualities) == N,\
+      'The Exons,Acc,Don,.. arrays are of different lengths'
+
       self.plog('Number of training examples: %d\n'% numExamples)
 
       self.noImprovementCtr = 0
@@ -291,32 +301,41 @@ class QPalma:
             if (exampleIdx%100) == 0:
                print 'Current example nr %d' % exampleIdx
 
-            dna = Sequences[exampleIdx] 
-            est = Ests[exampleIdx] 
+            currentSeqInfo = SeqInfo[exampleIdx]
+            chr,strand,up_cut,down_cut = currentSeqInfo 
+
+            est = OriginalEsts[exampleIdx] 
             est = "".join(est)
             est = est.lower()
+            est = unbracket_est(est)
             est = est.replace('-','')
+
             original_est = OriginalEsts[exampleIdx] 
             original_est = "".join(original_est)
             original_est = original_est.lower()
 
-            dna_len = len(dna)
             est_len = len(est)
 
+            dna_flat_files    =  '/fml/ag-raetsch/share/projects/genomes/A_thaliana_best/genome/'
+            dna, acc_supp, don_supp = get_seq_and_scores(chr,strand,up_cut,down_cut,dna_flat_files)
+            dna_len = len(dna)
+
+            don_supp = don_supp[1:] + [-inf] 
+            acc_supp = acc_supp[1:] + [-inf]
+
             assert len(est) == run['read_size'], pdb.set_trace()
 
             if run['mode'] == 'normal':
                quality = [40]*len(est)
 
             if run['mode'] == 'using_quality_scores':
-               quality = Qualities[exampleIdx]
+               quality = Qualities[exampleIdx][0]
 
             if not run['enable_quality_scores']:
                quality = [40]*len(est)
 
             exons = Exons[exampleIdx] 
-            don_supp = Donors[exampleIdx] 
-            acc_supp = Acceptors[exampleIdx] 
+            exons -= up_cut
 
             if not run['enable_splice_signals']:
                for idx,elem in enumerate(don_supp):