- Wielowątkowe przetwarzanie danych
- Autorski system generowania schematów białek
- Piękny, nowoczesny wygląd
- Intuicyjny interfejs
Ściągamy wersje na nasz system operacyjny z https://github.com/bog2n/science-cup/releases i uruchamiamy
Usage of ./dnanalyzer-linux-amd64:
-b string
Address to listen on (default "127.0.0.1")
-max int
Max upload size in MB (default 128)
-nobrowser
Do not open browser on startup
-p uint
Port to listen on (default 8080)
Testy automatyczne zostały zaimplemetowane z wykorzystaniem wbudowanego w język
golang systemu testów, aby je wykonać należy wpisać make test
Testując funkcję obliczającą masę białka otrzymywałem tą samą różnicę pomiędzy obliczoną masą a tą która wychodziła z kalkulatorów:
--- FAIL: TestCalculateMass (0.00s)
aminoacids_test.go:44: For data: "GFPCM", got 535.192311 want 553.202200 | diff = 18.009889
aminoacids_test.go:44: For data: "EHDGYIFVS", got 1047.466160 want 1065.475200 | diff = 18.009040
aminoacids_test.go:44: For data: "HFYNRQEKTFH", got 1487.705831 want 1505.714400 | diff = 18.008569
aminoacids_test.go:44: For data: "AQLSTKERNGMWYFHDCIPV", got 2376.114342 want 2394.121400 | diff = 18.007058
dziwne...
Zagłębiając się w kod źródłowy z jednego z kalkulatorów okazało się że jest to masa cząsteczki wody którą dobrze widać na początku i na końcu jakiegokolwiek z białka które narysujemy w https://pepdraw.io
Obliczanie punktu izoelektrycznego jest prostą operacją, dla pH od 0 do 14 liczymy ładunek elektryczny białka i jeżeli jest on równy 0 to to pH jest punktem izoelektrycznym tego białka, oczywiście wszystko jest tylko przybliżeniem i dla dokładnych wyników należy zbadać takie białko w rzeczywistości.
Najprościej jest to zaimplementować robiąc pętle od pH = 0 do ph = 14 obliczamy np. co 0.01 pH ładunek elektryczny białka, i jeżeli jest on równy 0 to zwracamy tą wartość.
Metoda jest prosta, lecz można to zrobić szybciej stosując bisekcję, przy zastosowaniu tej metody w naszej funkcji wydajność wzrosła 12 krotnie!
(924ee2f...) go test -bench="."
goos: linux
goarch: amd64
pkg: motorola/aminoacids
cpu: Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz
BenchmarkCalculatePI-4 7183 168556 ns/op
PASS
ok motorola/aminoacids 2.225s
(2077835...) go test -bench="."
goos: linux
goarch: amd64
pkg: motorola/aminoacids
cpu: Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz
BenchmarkCalculatePI-4 94546 13154 ns/op
PASS
ok motorola/aminoacids 1.381s
Sample data:
{
"ok": true,
"proteins": [
{
"protein": "MHFVRTTGLY",
"mass": 1223.6121131859998,
"hindex": 8.89,
"isopoint": 9.3515625,
"ph": 2.1167595868870497,
"polarity": 1
},
{
"protein": "MSKFCISLKFHNQDYSTKG",
"mass": 2233.065994286,
"hindex": 19.480000000000004,
"isopoint": 9.2421875,
"ph": 2.3831267830805074,
"polarity": 2
},
{
"protein": "MQPNVPFNSHEV",
"mass": 1397.639784486,
"hindex": 13.77,
"isopoint": 3.8828125,
"ph": 2.5562488354658397,
"polarity": -2
}
]
}
Returns svg image for given protein