comparison 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
comparison
equal deleted inserted replaced
4:c7c1474a6b7d 5:e7c80e9b70ae
5 import utils 5 import utils
6 import bedToGff3 6 import bedToGff3
7 import blastxmlToGff3 7 import blastxmlToGff3
8 8
9 class trackObject: 9 class trackObject:
10 def __init__(self, dataFile, dataType, chrom_size): 10 def __init__(self, chrom_size, genome, extra_files_path):
11 self.dataFile = dataFile
12 self.fileName = os.path.basename(dataFile)
13 self.dataType = dataType
14 self.chrom_size = chrom_size 11 self.chrom_size = chrom_size
12 outputDirect = os.path.join(extra_files_path, genome)
13 self.raw_folder = os.path.join(outputDirect, 'raw')
14 print self.raw_folder
15 self.tracks = []
15 try: 16 try:
16 if not os.path.exists('raw'): 17 if os.path.exists(self.raw_folder):
17 os.mkdir('raw') 18 if os.path.isdir(self.raw_folder):
19 shutil.rmtree(self.raw_folder)
20 else:
21 os.remove(self.raw_folder)
22 os.makedirs(self.raw_folder)
18 except OSError as oserror: 23 except OSError as oserror:
19 print "Cannot create raw folder error({0}): {1}".format(oserror.errno, oserror.strerror) 24 print "Cannot create raw folder error({0}): {1}".format(oserror.errno, oserror.strerror)
20 else:
21 self.raw_folder = 'raw'
22 25
23 def addToRaw(self): 26 def addToRaw(self, dataFile, dataType):
24 des_path = os.path.join(self.raw_folder, self.fileName) 27 '''
25 if self.dataType == 'gff3' or self.dataType == 'fasta' or self.dataType == 'bam' or self.dataType == 'bigwig' or self.dataType == 'bai': 28 Convert gff3, BED, blastxml and gtf files into gff3 files
26 if self.dataType == 'gff3': 29 and store converted files in folder 'raw'
27 self.checkGff3() 30 '''
31 fileName = os.path.basename(dataFile)
32 des_path = os.path.join(self.raw_folder, fileName)
33 if dataType == 'gff3' or dataType == 'fasta' or dataType == 'bam' or dataType == 'bigwig' or dataType == 'bai':
34 if dataType == 'gff3':
35 self.checkGff3(dataFile)
28 try: 36 try:
29 shutil.copyfile(self.dataFile, des_path) 37 shutil.copyfile(dataFile, des_path)
30 except shutil.Error as err1: 38 except shutil.Error as err1:
31 print "Cannot move file, error({0}: {1})".format(err1.errno, err1.strerror) 39 print "Cannot move file, error({0}: {1})".format(err1.errno, err1.strerror)
32 except IOError as err2: 40 except IOError as err2:
33 print "Cannot move file, error({0}: {1})".format(err2.errno, err2.strerror) 41 print "Cannot move file, error({0}: {1})".format(err2.errno, err2.strerror)
34 elif self.dataType == 'bedSimpleRepeats': 42 elif dataType == 'bedSimpleRepeats':
35 bedToGff3.bedToGff3(self.dataFile, self.chrom_size, 'trfbig', des_path) 43 bedToGff3.bedToGff3(dataFile, self.chrom_size, 'trfbig', des_path)
36 elif self.dataType == 'bedSpliceJunctions': 44 elif dataType == 'bedSpliceJunctions':
37 bedToGff3.bedToGff3(self.dataFile, self.chrom_size, 'regtools', des_path) 45 bedToGff3.bedToGff3(dataFile, self.chrom_size, 'regtools', des_path)
38 elif self.dataType == 'blastxml': 46 elif dataType == 'blastxml':
39 blastxmlToGff3.blastxml2gff3(self.dataFile, des_path) 47 blastxmlToGff3.blastxml2gff3(dataFile, des_path)
40 elif self.dataType == 'gtf': 48 elif dataType == 'gtf':
41 utils.gtfToGff3(self.dataFile, des_path, self.chrom_size) 49 utils.gtfToGff3(dataFile, des_path, self.chrom_size)
50 track = {
51 'fileName': fileName,
52 'dataType': dataType
53 }
54 self.tracks.append(track)
42 55
43 def checkGff3(self): 56 def checkGff3(self, dataFile):
44 with open(self.dataFile, 'r') as f: 57 with open(dataFile, 'r') as f:
45 for line in f: 58 for line in f:
46 if not line.startswith('#'): 59 if not line.startswith('#'):
47 seq_type = line.rstrip().split('\t')[2] 60 seq_type = line.rstrip().split('\t')[2]
48 if seq_type == 'transcript': 61 if seq_type == 'transcript':
49 self.dataType = 'gff3-transcript' 62 dataType = 'gff3-transcript'
50 break 63 break
51 if seq_type == 'mRNA': 64 if seq_type == 'mRNA':
52 break 65 break