def run(self): options = self.options localHalfile = os.path.join(self.outdir, os.path.basename(self.halfile)) if os.path.abspath(localHalfile) != os.path.abspath(self.halfile): if os.path.exists(localHalfile): system("rm %s" %localHalfile) if options.cpHal: system("cp %s %s" %(os.path.abspath(self.halfile), localHalfile)) else: system("ln -s %s %s" %(os.path.abspath(self.halfile), localHalfile)) #Create lod files if useLod is specified lodtxtfile, loddir = getLod(options, localHalfile, self.outdir) #Get the maximum window size to display SNPs if lodtxtfile: snpwidth = getLodLowestLevel(lodtxtfile) - 1 if snpwidth > -1: options.snpwidth = snpwidth genomes = sortByProperName(self.genomes, self.options.properName) #Create documentation files: docdir = os.path.join(self.outdir, "documentation") system("mkdir -p %s" %docdir) writeDocFiles(docdir, self.options) #Create genomes.txt file filename = os.path.join(self.outdir, "genomes.txt") f = open(filename, 'w') #for genome in self.genomes: for genome in genomes: genomedir = os.path.join(self.outdir, genome) f.write("genome %s\n" %genome) f.write("twoBitPath %s/%s.2bit\n" % (genome, genome)) #create trackDb for the current genome: if lodtxtfile == '': self.addChildTarget( WriteTrackDbFile(self.genomes, "../%s" % os.path.basename(self.halfile), genomedir, options) ) else: self.addChildTarget( WriteTrackDbFile(self.genomes, "../%s" % os.path.basename(lodtxtfile), genomedir, options) ) f.write("trackDb %s/trackDb.txt\n" %genome) #other info f.write("groups groups.txt\n") writeDescriptionFile(genome, genomedir) f.write("htmlPath %s/description.html\n" % genome) f.write("description %s\n" % getProperName(genome, self.options.properName)) f.write("organism %s\n" % getProperName(genome, self.options.properName)) f.write("orderKey 4800\n") f.write("scientificName %s\n" % genome) seq2len = self.genome2seq2len[genome] (seq, l) = getLongestSeq(seq2len) f.write("defaultPos %s:1-%d\n" %(seq, min(l, 1000))) f.write("\n") f.close()
def writeTrackDb_compositeStart(f, shortLabel, longLabel, bbdirs, bwdirs, genomes, properName, url, img): #Composite track includes all annotations in BED & WIGGLE formats, their lifted-over tracks, and Snake tracks f.write("track hubCentral\n") f.write("compositeTrack on\n") f.write("shortLabel %s\n" %shortLabel) f.write("longLabel %s\n" %longLabel) f.write("group comphub\n") bedtracktypes = [os.path.basename(b.rstrip('/')) for b in bbdirs] bedstr = " ".join(["%s=%s" %(item, item) for item in bedtracktypes]) wigtracktypes = [os.path.basename(b.rstrip('/')) for b in bwdirs] wigstr = " ".join(["%s=%s" %(item, item) for item in wigtracktypes]) f.write("subGroup1 view Track_Type Snake=Alignments %s %s\n" %(bedstr, wigstr)) genomeStr = " ".join(["%s=%s" %(g, getProperName(g, properName)) for g in genomes]) f.write("subGroup2 orgs Organisms %s\n" %genomeStr) f.write("dragAndDrop subTracks\n") f.write("#allButtonPair on\n") #f.write("sortOrder view=+ orgs=+\n") f.write("dimensions dimensionX=view dimensionY=orgs\n") f.write("noInherit on\n") f.write("priority 0\n") f.write("centerLabelsDense on\n") f.write("visibility full\n") f.write("html ../documentation/hubCentral\n") if url and img: imgurl = os.path.join(url, os.path.basename(img)) f.write("treeImage %s\n" %imgurl) f.write("type bigBed 3\n") f.write("\n")
def writeTrackDb_bigbeds(f, bigbeddir, genomes, currgenome, properName, composite, tab): annotation = os.path.basename(bigbeddir) genome2priority = getPriorities(genomes, currgenome) for genome in os.listdir(bigbeddir): bbfile = os.path.join(bigbeddir, genome, "%s.bb" % currgenome) if not os.path.exists(bbfile): continue searchIndexStr, fields, numfield = getSearchIndexInfo( bigbeddir, genome, bbfile, tab) #start writing track genomeProperName = getProperName(genome, properName) priority = 1 if genome in genome2priority: priority = genome2priority[genome] indent = '' if composite: indent = "\t\t" f.write("%strack %s%s\n" % (indent, annotation, genome)) if genome == currgenome: f.write("%slongLabel %s %s\n" % (indent, genomeProperName, annotation)) else: f.write("%slongLabel %s Lifted-over %s\n" % (indent, genomeProperName, annotation)) f.write("%spriority %d\n" % (indent, priority)) f.write("%stype bigBed %s\n" % (indent, fields)) f.write("%sgroup annotation%s\n" % (indent, annotation)) if numfield >= 4: f.write("%ssearchIndex %s\n" % (indent, searchIndexStr)) f.write("%sitemRgb On\n" % indent) if genome == currgenome: f.write("%svisibility dense\n" % indent) else: f.write("%svisibility hide\n" % indent) if composite: #Composite f.write("%sshortLabel %s%s\n" % (indent, genomeProperName, annotation)) f.write("%sbigDataUrl ../liftoverbed/%s\n" % (indent, os.path.join(annotation, genome, "%s.bb" % currgenome))) if genome == currgenome: f.write("%sparent hubCentral%s\n" % (indent, annotation)) else: f.write("%sparent hubCentral%s off\n" % (indent, annotation)) f.write("%ssubGroups view=%s orgs=%s\n" % (indent, annotation, genome)) else: f.write("%sshortLabel %s\n" % (indent, genomeProperName)) f.write("%sbigDataUrl ../liftoverbed2/%s\n" % (indent, os.path.join(annotation, genome, "%s.bb" % currgenome))) f.write("\n")
def writeTrackDb_bigbeds_hackFakeRow(f, bigbeddir, genomes, currgenome, properName, tab): annotation = os.path.basename(bigbeddir) genome2priority = getPriorities(genomes, currgenome) bedGenomes = os.listdir(bigbeddir)#HACK bedGenomes2 = os.listdir(bigbeddir)#HACK if currgenome not in bedGenomes2:#HACK bedGenomes2.append(currgenome)#HACK for genome in bedGenomes2:#HACK bbfile = os.path.join(bigbeddir, genome, "%s.bb" %currgenome) if genome == currgenome and currgenome not in bedGenomes:#HACK bbfile = os.path.join(bigbeddir, bedGenomes[1], "%s.bb" %currgenome)#HACK if not os.path.exists(bbfile): continue searchIndexStr, fields, numfield = getSearchIndexInfo(bigbeddir, genome, bbfile, tab) #start writing track genomeProperName = getProperName(genome, properName) priority = 1 if genome in genome2priority: priority = genome2priority[genome] f.write("\t\ttrack %s%s\n" % (annotation, genome)) if genome == currgenome: if currgenome not in bedGenomes:#HACK f.write("\t\tlongLabel %s Lifted-over %s\n" % (properName[bedGenomes[1]], annotation))#HACK else:#HACK f.write("\t\tlongLabel %s %s\n" % (genomeProperName, annotation))#HACK else: f.write("\t\tlongLabel %s Lifted-over %s\n" % (genomeProperName, annotation)) f.write("\t\tpriority %d\n" %priority) f.write("\t\tshortLabel %s%s\n" % (genomeProperName, annotation)) if genome == currgenome and genome not in bedGenomes:#HACK f.write("\t\tbigDataUrl ../liftoverbed/%s\n" % os.path.join( annotation, bedGenomes[1], "%s.bb" % currgenome ) )#HACK else:#HACK f.write("\t\tbigDataUrl ../liftoverbed/%s\n" % os.path.join( annotation, genome, "%s.bb" % currgenome ) )#HACK f.write("\t\ttype bigBed %s\n" %fields) f.write("\t\tgroup annotation%s\n" %annotation) if numfield >=4: f.write("\t\tsearchIndex %s\n" %searchIndexStr) f.write("\t\titemRgb On\n") if genome == currgenome: if genome in bedGenomes: f.write("\t\tvisibility dense\n") f.write("\t\tparent hubCentral%s\n"%annotation) else: f.write("\t\tvisibility hide\n") f.write("\t\tparent hubCentral%s off\n"%annotation) else: f.write("\t\tvisibility hide\n") f.write("\t\tparent hubCentral%s off\n"%annotation) f.write("\t\tsubGroups view=%s orgs=%s\n" %(annotation, genome)) f.write("\n")
def writeTrackDb_bigbeds(f, bigbeddir, genomes, currgenome, properName, composite, tab): annotation = os.path.basename(bigbeddir) genome2priority = getPriorities(genomes, currgenome) for genome in os.listdir(bigbeddir): bbfile = os.path.join(bigbeddir, genome, "%s.bb" %currgenome) if not os.path.exists(bbfile): continue searchIndexStr, fields, numfield = getSearchIndexInfo(bigbeddir, genome, bbfile, tab) #start writing track genomeProperName = getProperName(genome, properName) priority = 1 if genome in genome2priority: priority = genome2priority[genome] indent = '' if composite: indent = "\t\t" f.write("%strack %s%s\n" % (indent, annotation, genome)) if genome == currgenome: f.write("%slongLabel %s %s\n" % (indent, genomeProperName, annotation)) else: f.write("%slongLabel %s Lifted-over %s\n" % (indent, genomeProperName, annotation)) f.write("%spriority %d\n" %(indent, priority)) f.write("%stype bigBed %s\n" %(indent, fields)) f.write("%sgroup annotation%s\n" %(indent, annotation)) if numfield >=4: f.write("%ssearchIndex %s\n" %(indent, searchIndexStr)) f.write("%sitemRgb On\n" %indent) if genome == currgenome: f.write("%svisibility dense\n" %indent) else: f.write("%svisibility hide\n" %indent) if composite: #Composite f.write("%sshortLabel %s%s\n" % (indent, genomeProperName, annotation)) f.write("%sbigDataUrl ../liftoverbed/%s\n" % (indent, os.path.join( annotation, genome, "%s.bb" % currgenome )) ) if genome == currgenome: f.write("%sparent hubCentral%s\n" %(indent, annotation)) else: f.write("%sparent hubCentral%s off\n" %(indent, annotation)) f.write("%ssubGroups view=%s orgs=%s\n" %(indent, annotation, genome)) else: f.write("%sshortLabel %s\n" % (indent, genomeProperName)) f.write("%sbigDataUrl ../liftoverbed2/%s\n" % (indent, os.path.join( annotation, genome, "%s.bb" % currgenome )) ) f.write("\n")
def getProperName_tree(tree, properName): from hal.assemblyHub.assemblyHubCommon import getProperName for node in tree.find_clades(): if node.name: node.name = getProperName(node.name, properName) return