Monday, June 23, 2008

base64 decode

I was playing around with launching the taverna workflow engine programmatically. The answers it spat back out all looked slightly weird.

IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwojIFByb2dyYW06IGFudGln
ZW5pYwojIFJ1bmRhdGU6IFRodSAxOSBKdW4gMjAwOCAxMjoyNDo0MgojIENvbW1hbmRsaW5lOiBh
bnRpZ2VuaWMKIyAgICAtc2VxdWVuY2Ugc3dpc3Nwcm90OlAwNDYzNwojICAgIC1vdXRmaWxlICIv
ZWJpL2V4dHNlcnYvc29hcGxhYi13b3JrL3NvYXBsYWIyX2VtYm9zczQvU0FOREJPWC9bcHJvdGVp
bl9tb3RpZnMuYW50aWdlbmljXS0yNTc4NTMyNi


According to the taverna user group this is cos the answer is encoded in base64. To see how it should look, stick it through mmencode:
mmencode -u name.txt

A somewhat more comprehensable answer should emerge:
########################################
# Program: antigenic
# Rundate: Thu 19 Jun 2008 12:24:42
# Commandline: antigenic
# -sequence swissprot:P04637
# -outfile "/ebi/extserv/soaplab-work/soaplab2_emboss4/SANDBOX/[protein_motifs.antigenic]-25785326.11a9e381fc5.67f8/o_outfile"
# -auto
# Report_format: motif
# Report_file: /ebi/extserv/soaplab-work/soaplab2_emboss4/SANDBOX/[protein_motifs.antigenic]-25785326.11a9e381fc5.67f8/o_outfile
########################################

#=======================================
#
# Sequence: P53_HUMAN from: 1 to: 393
# HitCount: 15
#=======================================



Now to find the java libraries to do this in code.

Saturday, June 21, 2008

Vim C++ Autocompletion

Download and install vimcppomnicomplete: http://www.vim.org/scripts/script.php?script_id=1520


Install ctags (not the Emacs version): http://ctags.sourceforge.net/

In /usr/include type:

ctags -f ~/.vim/stdtags -R --c++-kinds=+p --fields=+iaS --extra=+q .



Add the following to ~/.vimrc:


set nocp
filetype plugin on
map <C-L> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR>

set tags=~/.vim/stdtags,tags,.tags,../tags

autocmd InsertLeave * if pumvisible() == 0|pclose|endif


The final line closes the completion box when you leave insert mode. Ctrl-L will update the tags (and so let you autocomplete based on new files) files in the current directory. Thanks go to the various places on the interwebs I robs this info from.

Thursday, June 12, 2008

Truecrypt commands

Given that I will probably forget all this I thought it best to write it down.

Create the volume:
truecrypt --create test.tc 


Mount that volume:
truecrypt test.tc /mnt/data/


Unmount it:
truecrypt --dismount test.tc


All stolen from here:
http://www.movingtofreedom.org/2007/02/10/truecrypt-in-ubuntu-and-fedora-gnu-linux/

Monday, April 28, 2008

Average a bunch of lines (C++)

A Short C++ program to average a bunch of entries on a bunch of lines. I.e.:




1 2 3 4 5 6 END OF LINE

7 8 9 10 11 12 END OF LINE

13 14 15 16 17 18 END OF LINE



Would average 1 7 13. 2 8 and 14 etc...

#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>

using namespace std;

int main(int argc,char **argv) {

ifstream infile(argv[1]);

int count=0;
vector<double> sums(1000,0);
for(;!infile.eof();) {
string instring;
getline(infile,instring);

stringstream ss(instring);

for(int n=0;!ss.eof();n++) {
double cur;
ss >> cur;
sums[n]+= cur;
}
count++;
}

for(vector<double>::iterator i = sums.begin();i != sums.end();i++) {
cout << (*i)/count << " ";
}
cout << endl;

}

print 5th through 40th entries on a line using awk

awk '{n=5; for(n=5;n<40;n++) printf $n " "; printf "\n"}'