comparison trackObject.py @ 0:804a93e87cc8 draft

planemo upload for repository https://github.com/Yating-L/jbrowse_hub commit f22711ea7a464bdaf4d5aaea07f2eacf967aa66e-dirty
author yating-l
date Wed, 12 Apr 2017 17:41:55 -0400
parents
children 7e471cdd9e71
comparison
equal deleted inserted replaced
-1:000000000000 0:804a93e87cc8
1 #!/usr/bin/env python
2
3 import os
4 import shutil
5 import utils
6 import bedToGff3
7 import blastxmlToGff3
8
9
10 class trackObject:
11 def __init__(self, chrom_size, genome, extra_files_path):
12 self.chrom_size = chrom_size
13 outputDirect = os.path.join(extra_files_path, genome)
14 self.raw_folder = os.path.join(outputDirect, 'raw')
15 #Store metadata of the tracks
16 self.tracks = []
17 try:
18 if os.path.exists(self.raw_folder):
19 if os.path.isdir(self.raw_folder):
20 shutil.rmtree(self.raw_folder)
21 else:
22 os.remove(self.raw_folder)
23 os.makedirs(self.raw_folder)
24 except OSError as oserror:
25 print "Cannot create raw folder error({0}): {1}".format(oserror.errno, oserror.strerror)
26
27 def addToRaw(self, dataFile, dataType):
28 """
29 Convert gff3, BED, blastxml and gtf files into gff3 files
30 and store converted files in folder 'raw'
31 """
32 false_path = os.path.abspath(dataFile)
33 fileName = os.path.basename(dataFile)
34 des_path = os.path.join(self.raw_folder, fileName)
35 track = {}
36 if dataType == 'bed' or dataType == 'gff3' or dataType == 'gff3_mrna' or dataType == 'gff3_transcript' or dataType == 'fasta' or dataType == 'bam' or dataType == 'bigwig':
37 if dataType == 'bam':
38 # JBrowse will raise error: not a BAM file if the filename hasn't .bam extension
39 extension = os.path.splitext(fileName)[1]
40 if extension != '.bam':
41 fileName = fileName + '.bam'
42 des_path = os.path.join(self.raw_folder, fileName)
43 bam_index = utils.createBamIndex(dataFile)
44 indexname = os.path.basename(bam_index)
45 des_path_for_index = os.path.join(self.raw_folder, indexname)
46 shutil.copyfile(bam_index, des_path_for_index)
47 track['index'] = indexname
48
49 try:
50 shutil.copyfile(dataFile, des_path)
51 except shutil.Error as err1:
52 print "Cannot move file, error({0}: {1})".format(err1.errno, err1.strerror)
53 except IOError as err2:
54 print "Cannot move file, error({0}: {1})".format(err2.errno, err2.strerror)
55 elif dataType == 'bedSimpleRepeats':
56 bedToGff3.bedToGff3(dataFile, self.chrom_size, 'trfbig', des_path)
57 elif dataType == 'bedSpliceJunctions':
58 bedToGff3.bedToGff3(dataFile, self.chrom_size, 'regtools', des_path)
59 elif dataType == 'blastxml':
60 blastxmlToGff3.blastxml2gff3(dataFile, des_path)
61 elif dataType == 'gtf':
62 utils.gtfToGff3(dataFile, des_path, self.chrom_size)
63 track['fileName'] = fileName
64 track['dataType'] = dataType
65 track['false_path'] = false_path
66 #self.SetMetadata(track, metaData)
67 self.tracks.append(track)
68
69