From 44b09bb4965aa3b8a7248874b075efcf6e035a62 Mon Sep 17 00:00:00 2001 From: Anthony Wang Date: Wed, 2 Jun 2021 16:38:58 -0500 Subject: [PATCH] Add latest files --- .gitignore | 2 ++ main.cpp | 38 ++++++++++++++++++++++---------------- 2 files changed, 24 insertions(+), 16 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..59be43b --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +* +!*.* diff --git a/main.cpp b/main.cpp index c651f76..e80b645 100644 --- a/main.cpp +++ b/main.cpp @@ -5,7 +5,7 @@ using ll = long long; string P[3]; double score[3][7]; -vector variant[7]; +vector vrt[7]; ll levenshtein(string &s, string &t){ int n = s.size(), m = t.size(); @@ -44,31 +44,37 @@ bitset test(string & probe) { bitset bs; double avg[7]; for (int i = 0; i < 7; ++i) { - avg[i] = 0; - for (int j = 0; j < 20; ++j) - avg[i] += sequenceCmp(probe, variant[i][j]); - avg[i] /= 20; + for (int j = 0; j < 10; ++j) { + int r = rand()%20; + avg[i] += sequenceCmp(probe, vrt[i][r]); + } + avg[i] /= 2; } int cnt = 0; for (int i = 0; i < 7; ++i) for (int j = i+1; j < 7; ++j) - if (abs(avg[i]-avg[j]) > 10) bs[cnt++] = 1; - return cnt; + { + if (abs(avg[i]-avg[j]) > 10) bs[cnt] = 1; + cnt++; + } + return bs; } vector dp[4][1 << k]; void analyze_spike_sequences(){ freopen("spike_sequences.txt", "r", stdin); - for (int i = 0; i < 7; ++i) { // 7 variants + for (int i = 0; i < 7; ++i) { // 7 vrts for (int j = 0; j < 20; ++j) { string s, t; cin >> s >> t; - variant[i].push_back(t); + vrt[i].push_back(t); } } + int cnt = 0; for (int i = 0; i < 7; ++i) { - for (int j = 0; j <= variant[i][0].size()-150; ++j) { - string probe(begin(variant[i][0]), begin(variant[i][0])+150); + for (int j = 0; j <= vrt[i][0].size()-150; j += rand()%100) { + string probe(begin(vrt[i][0])+j, begin(vrt[i][0])+j+150); bitset bs = test(probe); + cout << probe << ' ' << cnt++ << endl; int bsint = 0; //change to int for(int i = 0; i < k; i++) bsint |= bs[i] << i; @@ -89,7 +95,7 @@ void analyze_spike_sequences(){ int retx = 0, rety = 0; //find best dp coverage - for(int i = 1; i <= 3; i++) + for(int i = 3; i <= 3; i++) for(int j = 0; j < (1 << k); j++){ if(!dp[i][j].empty() && __builtin_popcount(j) > __builtin_popcount(rety)){ retx = i, rety = j; @@ -111,7 +117,7 @@ void mkscores() { for (int j = 0; j < 7; ++j) { score[i][j] = 0; for (int k = 0; k < 20; ++k) - score[i][j] += sequenceCmp(P[i], variant[j][k]); + score[i][j] += sequenceCmp(P[i], vrt[j][k]); score[i][j] /= 20; cout << score[i][j]; if (j < 6) cout << ","; @@ -137,7 +143,7 @@ string types[7] = {"original", "B.1.427", "P.1", "B.1.351", -"other_variant", +"other_vrt", "not_sars_cov2"}; void answer(){ @@ -156,10 +162,10 @@ int main(){ ios::sync_with_stdio(0); cin.tie(0); if (fopen("spike_sequences.txt", "r")) { - analyze_spike_sequences(); if (P[0] != "") mkscores(); + else analyze_spike_sequences(); return 0; } answer(); return 0; -} \ No newline at end of file +}