Skip to content
Snippets Groups Projects
Sibbe Bakker's avatar
Bakker, Sibbe authored
ebbb1147
History
Name Last commit Last update
assets
data
src
.gitignore
Cargo.toml
README.md

rusty-needle

This rust programme is a toy programme to do a Needleman Wunch alignment[^1].

Vector of vectors uses N+1 separate allocations. One of the oldest tricks in programming is to replace array of same-size arrays with a single flat array of size WH, and index elements with XH+Y (or Y*W+X).

Class diagramme

classDiagram
	Protein <-- Sequence
	Dna <-- Sequence
	
	class Sequence {
		- get_sequence()
		- set_sequence()
		+ length()
		+ reverse()
	}

Usage

time ./target/release/rusty-needle -a "MGLLCSRSRHHTEDTDENAQAAEIERRIEQEAKAEKHIRKLLLLGAGESGKSTIFKQASSDKRKIIKLLFQTGFDEGELKSYVPVIHANVLLLGAYQTIKLLHDGTKEFAQNETDPAKYTLSSENMAIGEKLSEIGARLDYPRLTKDLAEGIETLWNDPAIQETCSRGNELQVPDCTKYLMENLKRLSDVNYIPTKEDVLYARVRTTGVVEIQFSPVGENKKSGEVYRLFDVGGQRNERRKWIHLFEGVTAVIFCAAISEYDQTLFEDEQKNRMMETKELFDWVLKQPCFEKTSIMLFLNKFDIFEKKVLDVPLNVCEWFRDYQPVSSGKQEIEHAYEFVKKKFEELYYQNTAPDRVDRVFKIYRTTALDQKLVKKTFKLVDETLRRRNLLEAGLLMGLLCSRSRHHTEDTDENAQAAEIERRIEQEAKAEKHIRKLLLLGAGESGKSTIFKQASSDKRKIIKLLFQTGFDEGELKSYVPVIHANVYQTIKLLHDGTKEFAQNETDPAKYTLSSENMAIGEKLSEIGARLDYPRLTKDLAEGIETLWNDPAIQETCSRGNELQVPDCTKYLMENLKRLSDVNYIPTKEDVLYARVRTTGVVEIQFSPVGENKKSGEVYRLFDVGGQRNERRKWIHLFEGVTAVIFCAAISEYDQTLFEDEQKNRMMETKELFDWVLKQPCFEKTSIMLFLNKFDIFEKKVLDVPLNVCEWFRDYQPVSSGKQEIEHAYEFVKKKFEELYYQNTAPDRVDRVFKIYRTTALDQKLVKKTFKLVDETLRRRNLLEAGLLMGLLCSRSRHHTEDTDENAQAAEIERRIEQEAKAEKHIRKLLLLGAGESGKSTIFKQASSDKRKIIKLLFQTGFDEGELKSYVPVIHANVYQTIKLLHDGTKEFAQNETDPAKYTLSSENMAIGEKLSEIGARLDYPRLTKDLAEGIETLWNDPAIQETCSRGNELQVPDCTKYLMENLKRLSDVNYIPTKEDVLYARVRTTGVVEIQFSPVGENKKSGEVYRLFDVGGQRNERRKWIHLFEGVTAVIFCAAISEYDQTLFEDEQKNRMMETKELFDWVLKQPCFEKTSIMLFLNKFDIFEKKVLDVPLNVCEWFRDYQPVSSGKQEIEHAYEFVKKKFEELYYQNTAPDRVDRVFKIYRTTALDQKLVKKTFKLVDETLRRRNLLEAGLL" -b "MGLLCSRSRHHTEDTDENAQAAEIERRIEQEAKAEKHIRKLLLLGAGESGKSTIFKQALLLGASSDKRKIIKLLFQTGFDLLLGAEGELKSYVLLLGAPVIHANLLLGAVYQTIKLLHDGTKEFAQNETDPAKYTLSSENMAIGEKLSEIGARLDYPRLTKDLAEGIETLWNDPAIQETCSRGNELQVPDCTKYLMENLKRLSDVNYIPTKEDVLYARVRTTGVVEIQFSPVGENKKSGEVYRLFDVGGQRNERRKWIHLFEGVTAVIFCAAISEYDQTLFEDEQKNRMMETKELFDWVLKQPCFEKTSIMLFLNKFDIFEKKVLDVPLNVCEWFRDYQPVSSGKQEIEHAYEFVKKKFEELYYQNTAPDRVDRVFKIYRTTALDQKLVKKTFKLVDETLRRRNLLEAGLMGLLCSRSRHHTEDTDENAQAAEIERRIEQEAKAEKHIRKLLLLGAGESGKSTIFKQASSDKRKIIKLLFQTGFDEGELKSYVPVIHANVYQTIKLLHDGTKEFAQNETDPAKYTLSSENMAIGEKLSEIGARLDYPRLTKDLAEGIETLWNDPAIQETCSRGNELQVPDCTKYLMENLKRLSDVNYIPTKEDVLYARVRTTGVVEIQFSPVGENKKSGEVYRLFDVGGQRNERRKWIHLFEGVTAVIFCAAISEYDQTLFEDEQKNRMMETKELFDWVLKQPCFEKTSIMLFLNKFDIFEKKVLDVPLNVCEWFRDYQPVSSGKQEIEHAYEFVKKKFEELYYQNTAPDRVDRVFKIYRTTALDQKLVKKTFKLVDETLRRRNLLEAGLMGLLCSRSRHHTEDTDENAQAAEIERRIEQEAKAEKHIRKLLLLGAGESGKSTIFKQASSDKRKIIKLLFQTGFDEGELKSYVPVIHANVYQTIKLLHDGTKEFAQNETDPAKYTLSSENMAIGEKLSEIGARLDYPRLTKDLAEGIETLWNDPAIQETCSRGNELQVPDCTKYLMENLKRLSDVNYIPTKEDVLYARVRTTGVVEIQFSPVGENKKSGEVYRLFDVGGQRNERRKWIHLFEGVTAVIFCAAISEYDQTLFEDEQKNRMMETKELFDWVLKQPCFEKTSIMLFLNKFDIFEKKVLDVPLNVCEWFRDYQPVSSGKQEIEHAYEFVETLRRRNLLEAKKKFEELYYQNTAPRTTALDQKLVKKTFKLVDETLRRRNLLEA" -g '-8' -e '-8' -h

Other

) $ time needle assets/simple1.fa assets/simple2.fa -endweight 8 -gapopen 10 -gapextend 0.5
Needleman-Wunsch global alignment of two sequences

real    0m0.026s
user    0m0.022s
sys     0m0.004s
sibbe@sibbe-ThinkPad-T15-Gen-2i ~/Documents/private/projects/programming-projects/rusty-needle (main) $ time ./target/release/rusty-needle -a "THISLINE" -b "ISALIGNED" -g '-8' -e '-8'
THISLINE-
ISALIGNED


real    0m0.007s
user    0m0.000s
sys     0m0.007s
sibbe@sibbe-ThinkPad-T15-Gen-2i ~/Documents/private/projects/programming-projects/rusty-needle (mai
sibbe@sibbe-ThinkPad-T15-Gen-2i ~/Documents/private/projects/programming-projects/rusty-needle (main) $ 

[^1] : http://rna.informatik.uni-freiburg.de/Teaching/index.jsp?toolName=Needleman-Wunsch