I'm making a large number of seqlogos programatically. They are hundreds of columns wide and so running a seqlogo normally creates letters that are too thin to see. I've noticed that I only care about a few of these columns (not necessarily consecutive columns) ... most are noise but some are highly conserved.
I use something like this snippet:
wide_seqs = cell2mat(arrayfun(@randseq, repmat(200, [500 1]), 'uniformoutput', false));
wide_seqs(:, [17,30, 55,70,130]) = repmat(['ATCGG'], [500 1])
conserve_cell = seqlogo(wide_seqs, 'displaylogo', false);
high_bit_cols = any(conserve_cell{2}>1.0,1);
[~, handle] = seqlogo(wide_seqs(:,high_bit_cols ));
Although when I do this I lose the information about which columns the data came from.
Normally I would just change the x-axis of the seqlogo. However, seqlogo's are some sort of crazy java-based object and calls like:
set(handle, 'xticklabel', num2str(find(high_bit_cols)))
don't work. Any help would be greatly appreciated.
Thanks, Will
This question is also discussing on StackOverflow: http://stackoverflow.com/questions/2526714/changing-the-x-axis-of-seqlogo-figures-in-matlab
that's actually my question as well ... it seems neither here, stackexchange or MatlabCentral know the answer to this one. I'm going to play around with uiinspect and see if I can get it myself.