root/galaxy-central/lib/galaxy/datatypes/indexers/interval.awk

リビジョン 2, 1.2 KB (コミッタ: hatakeyama, 14 年 前)

import galaxy-central

行番号 
1BEGIN {
2    # from galaxy.utils
3    mapped_chars[">"] = "__gt__"
4    mapped_chars["<"] = "__lt__"
5    mapped_chars["'"] = "__sq__"
6    mapped_chars["\""] = "__dq__"
7    mapped_chars["\\["] = "__ob__"
8    mapped_chars["\\]"] = "__cb__"
9    mapped_chars["\\{"] = "__oc__"
10    mapped_chars["\\}"] = "__cc__"
11    mapped_chars["@"] = "__at__"
12    # additional, not in galaxy.utils
13    mapped_chars["/"] = "__fs__"
14    mapped_chars["^manifest\.tab$"] = "__manifest.tab__"
15}
16function escape_filename( name )
17{
18    for( char in mapped_chars ) {
19        gsub( char, mapped_chars[char], name )
20    }
21    return name
22}
23!_[$chrom]++ {
24    # close files only when we switch to a new one.
25    fn && close(fn)
26    fn = storepath "/" escape_filename($1) }
27{   
28    print $0 >> fn;
29    # the || part is needed to catch 0 length chromosomes, which
30    # should never happen but...
31    if ($end > chroms[$chrom] || !chroms[$chrom])
32        chroms[$chrom] = $end }
33END {
34    fn = storepath "/manifest.tab"
35    for( x in chroms ) {
36        # add line to manifest
37        print x "\t" chroms[x] >> fn
38        chromfile = storepath "/" escape_filename(x)
39        # sort in-place
40        system( "sort -f -n -k " chrom " -k " start " -k " end " -o " chromfile " " chromfile )
41        close(chromfile)
42    }
43}
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。