Code Monkey home page Code Monkey logo

science-cup's Introduction

Motorola Science Cup 2022

Dokumentacja

Ficzursy (z braku lepszego tłumaczenia :P)

  • Wielowątkowe przetwarzanie danych
  • Autorski system generowania schematów białek
  • Piękny, nowoczesny wygląd
  • Intuicyjny interfejs

Opcje uruchamiania

Ś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

Testy automatyczne zostały zaimplemetowane z wykorzystaniem wbudowanego w język golang systemu testów, aby je wykonać należy wpisać make test

asciicast

Obliczanie masy białka

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

Optymalizowanie algorytmu liczącego punkt izoelektryczny

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!

Pętla

(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

Bisekcja

(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

HTTP API

POST /api/data - genome=<RNA/DNA sequence>

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
    }
  ]
}

GET /api/image/<protein>

Returns svg image for given protein

Links and sources

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.