Beispiel #1
0
    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()
Beispiel #2
0
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")
Beispiel #3
0
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")
Beispiel #4
0
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")
Beispiel #5
0
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")
Beispiel #6
0
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")
Beispiel #7
0
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
Beispiel #8
0
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