comparison visualise.py @ 11:7660519f2dc9

proper layout for alignments, added some links
author Jan Kanis <jan.code@jankanis.nl>
date Mon, 12 May 2014 13:55:04 +0200
parents 2fbdf2eb27b4
children a459c754cdb5
comparison
equal deleted inserted replaced
10:2fbdf2eb27b4 11:7660519f2dc9
14 blast = objectify.parse('blast xml example1.xml').getroot() 14 blast = objectify.parse('blast xml example1.xml').getroot()
15 loader = jinja2.FileSystemLoader(searchpath='.') 15 loader = jinja2.FileSystemLoader(searchpath='.')
16 environment = jinja2.Environment(loader=loader, lstrip_blocks=True, trim_blocks=True, autoescape=True) 16 environment = jinja2.Environment(loader=loader, lstrip_blocks=True, trim_blocks=True, autoescape=True)
17 17
18 def filter(func_or_name): 18 def filter(func_or_name):
19 "Decorator to register a function as filter in the current jinja environment"
19 if isinstance(func_or_name, str): 20 if isinstance(func_or_name, str):
20 def inner(func): 21 def inner(func):
21 environment.filters[func_or_name] = func 22 environment.filters[func_or_name] = func
22 return func 23 return func
23 return inner 24 return inner
72 return hit.Hit_id.text.split('|', 2)[2] 73 return hit.Hit_id.text.split('|', 2)[2]
73 74
74 @filter 75 @filter
75 def alignment_pre(hsp): 76 def alignment_pre(hsp):
76 return ( 77 return (
77 "Query {:>7s} {} {}\n".format(hsp['Hsp_query-from'], hsp.Hsp_qseq, hsp['Hsp_query-to']) + 78 "Query {:>7s} {} {}\n".format(hsp['Hsp_query-from'], hsp.Hsp_qseq, hsp['Hsp_query-to']) +
78 " {:7s} {}\n".format('', hsp.Hsp_midline) + 79 " {:7s} {}\n".format('', hsp.Hsp_midline) +
79 "Subject {:>7s} {} {}".format(hsp['Hsp_hit-from'], hsp.Hsp_hseq, hsp['Hsp_hit-to'])) 80 "Subject{:>7s} {} {}".format(hsp['Hsp_hit-from'], hsp.Hsp_hseq, hsp['Hsp_hit-to'])
81 )
80 82
81 @filter('len') 83 @filter('len')
82 def hsplen(node): 84 def hsplen(node):
83 return int(node['Hsp_align-len']) 85 return int(node['Hsp_align-len'])
84 86
153 cover_count = cover.count(True) 155 cover_count = cover.count(True)
154 156
155 def hsp_val(path): 157 def hsp_val(path):
156 return (hsp[path] for hsp in hsps) 158 return (hsp[path] for hsp in hsps)
157 159
158 yield dict(title = firsttitle(hit), 160 yield dict(hit = hit,
161 title = firsttitle(hit),
159 link_id = hit.Hit_num, 162 link_id = hit.Hit_num,
160 maxscore = "{:.1f}".format(float(max(hsp_val('Hsp_bit-score')))), 163 maxscore = "{:.1f}".format(float(max(hsp_val('Hsp_bit-score')))),
161 totalscore = "{:.1f}".format(float(sum(hsp_val('Hsp_bit-score')))), 164 totalscore = "{:.1f}".format(float(sum(hsp_val('Hsp_bit-score')))),
162 cover = "{:.0%}".format(cover_count / query_length), 165 cover = "{:.0%}".format(cover_count / query_length),
163 e_value = "{:.4g}".format(float(min(hsp_val('Hsp_evalue')))), 166 e_value = "{:.4g}".format(float(min(hsp_val('Hsp_evalue')))),
187 queryscale=queryscale(), 190 queryscale=queryscale(),
188 hit_info=hit_info(), 191 hit_info=hit_info(),
189 params=params)) 192 params=params))
190 193
191 main() 194 main()
195
196 # http://www.ncbi.nlm.nih.gov/nucleotide/557804451?report=genbank&log$=nuclalign&blast_rank=1&RID=PHWP1JNZ014
197 # http://www.ncbi.nlm.nih.gov/nuccore/557804451?report=graph&rid=PHWP1JNZ014[557804451]&tracks=[key:sequence_track,name:Sequence,display_name:Sequence,id:STD1,category:Sequence,annots:Sequence,ShowLabel:true][key:gene_model_track,CDSProductFeats:false][key:alignment_track,name:other%20alignments,annots:NG%20Alignments%7CRefseq%20Alignments%7CGnomon%20Alignments%7CUnnamed,shown:false]&v=752:2685&appname=ncbiblast&link_loc=fromSubj
198
199 # http://www.ncbi.nlm.nih.gov/nucleotide/557804451?report=genbank&log$=nucltop&blast_rank=1&RID=PHWP1JNZ014