diff trackObject.py @ 5:e7c80e9b70ae draft

planemo upload for repository https://github.com/Yating-L/jbrowse_hub commit f18ea51d27ec7addfa6413716391cfefebc8acbc-dirty
author yating-l
date Tue, 14 Mar 2017 12:24:37 -0400
parents e4f3f2ed4fa5
children e1f188b43750
line wrap: on
line diff
--- a/trackObject.py	Fri Mar 10 14:57:36 2017 -0500
+++ b/trackObject.py	Tue Mar 14 12:24:37 2017 -0400
@@ -7,46 +7,59 @@
 import blastxmlToGff3
 
 class trackObject:
-    def __init__(self, dataFile, dataType, chrom_size):
-        self.dataFile = dataFile
-        self.fileName = os.path.basename(dataFile)
-        self.dataType = dataType
+    def __init__(self, chrom_size, genome, extra_files_path):
         self.chrom_size = chrom_size
+        outputDirect = os.path.join(extra_files_path, genome)
+        self.raw_folder = os.path.join(outputDirect, 'raw')
+        print self.raw_folder
+        self.tracks = []
         try:
-            if not os.path.exists('raw'):
-                os.mkdir('raw')
+            if os.path.exists(self.raw_folder):
+                if os.path.isdir(self.raw_folder):
+                    shutil.rmtree(self.raw_folder)
+                else:
+                    os.remove(self.raw_folder)
+            os.makedirs(self.raw_folder)
         except OSError as oserror:
             print "Cannot create raw folder error({0}): {1}".format(oserror.errno, oserror.strerror)
-        else:
-            self.raw_folder = 'raw'
 
-    def addToRaw(self):
-        des_path = os.path.join(self.raw_folder, self.fileName)
-        if self.dataType == 'gff3' or self.dataType == 'fasta' or self.dataType == 'bam' or self.dataType == 'bigwig' or self.dataType == 'bai':
-            if self.dataType == 'gff3':
-                self.checkGff3()
+    def addToRaw(self, dataFile, dataType):
+        '''
+        Convert gff3, BED, blastxml and gtf files into gff3 files 
+        and store converted files in folder 'raw'
+        '''
+        fileName = os.path.basename(dataFile)
+        des_path = os.path.join(self.raw_folder, fileName)
+        if dataType == 'gff3' or dataType == 'fasta' or dataType == 'bam' or dataType == 'bigwig' or dataType == 'bai':
+            if dataType == 'gff3':
+                self.checkGff3(dataFile)
             try:
-                shutil.copyfile(self.dataFile, des_path)
+                shutil.copyfile(dataFile, des_path)
             except shutil.Error as err1:
                 print "Cannot move file, error({0}: {1})".format(err1.errno, err1.strerror)
             except IOError as err2:
                 print "Cannot move file, error({0}: {1})".format(err2.errno, err2.strerror)
-        elif self.dataType == 'bedSimpleRepeats':
-            bedToGff3.bedToGff3(self.dataFile, self.chrom_size, 'trfbig', des_path)
-        elif self.dataType == 'bedSpliceJunctions':
-            bedToGff3.bedToGff3(self.dataFile, self.chrom_size, 'regtools', des_path)
-        elif self.dataType == 'blastxml':
-            blastxmlToGff3.blastxml2gff3(self.dataFile, des_path)
-        elif self.dataType == 'gtf':
-            utils.gtfToGff3(self.dataFile, des_path, self.chrom_size)
+        elif dataType == 'bedSimpleRepeats':
+            bedToGff3.bedToGff3(dataFile, self.chrom_size, 'trfbig', des_path)
+        elif dataType == 'bedSpliceJunctions':
+            bedToGff3.bedToGff3(dataFile, self.chrom_size, 'regtools', des_path)
+        elif dataType == 'blastxml':
+            blastxmlToGff3.blastxml2gff3(dataFile, des_path)
+        elif dataType == 'gtf':
+            utils.gtfToGff3(dataFile, des_path, self.chrom_size)
+        track = {
+            'fileName': fileName,
+            'dataType': dataType
+        }
+        self.tracks.append(track)
 
-    def checkGff3(self):
-        with open(self.dataFile, 'r') as f:
+    def checkGff3(self, dataFile):
+        with open(dataFile, 'r') as f:
             for line in f:
                 if not line.startswith('#'):
                     seq_type = line.rstrip().split('\t')[2]
                     if seq_type == 'transcript':
-                        self.dataType = 'gff3-transcript'
+                        dataType = 'gff3-transcript'
                         break
                     if seq_type == 'mRNA':
                         break