Mercurial > repos > yating-l > jbrowse_hub
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 |