{"id":12349,"date":"2022-09-30T12:58:48","date_gmt":"2022-09-30T07:28:48","guid":{"rendered":"https:\/\/jassweb.com\/solved\/solved-k-mer-counting-into-r-using-perfect-hashing-closed\/"},"modified":"2022-09-30T12:58:48","modified_gmt":"2022-09-30T07:28:48","slug":"solved-k-mer-counting-into-r-using-perfect-hashing-closed","status":"publish","type":"post","link":"https:\/\/jassweb.com\/solved\/solved-k-mer-counting-into-r-using-perfect-hashing-closed\/","title":{"rendered":"[Solved] k-mer counting into R using perfect hashing [closed]"},"content":{"rendered":"<p> [ad_1]<br \/>\n<\/p>\n<div id=\"answer-38035024\" class=\"answer js-answer accepted-answer js-accepted-answer\" data-answerid=\"38035024\" data-parentid=\"38034370\" data-score=\"0\" data-position-on-page=\"1\" data-highest-scored=\"1\" data-question-has-accepted-highest-score=\"1\" itemprop=\"acceptedAnswer\" itemscope itemtype=\"https:\/\/schema.org\/Answer\">\n<div class=\"post-layout\">\n<div class=\"votecell post-layout--left\"><\/div>\n<div class=\"answercell post-layout--right\">\n<div class=\"s-prose js-post-body\" itemprop=\"text\">\n<p><strong>Item 1:<\/strong> I&#8217;m not versed in k-mer counting and the definition of <code>x<\/code> is a bit shaky. If you could update your question, then I&#8217;ll try to address point 1. But, to me it seems as if you just need to use an algorithm that converts from base 10 back to base 4? <\/p>\n<p><strong>Item 2:<\/strong> Yes. The iteration that is being performed is suboptimal as you are constantly converting from a <code>string<\/code> to <code>int<\/code> and so on. Moreover, why are the functions being declared <code>inline<\/code>?  Also, how large is the data being passed into <code>A<\/code>? <\/p>\n<p>To address this, we port the string entirely to a <code>std::vector&lt;int&gt;<\/code>. In fact, I would say just port it directly to an <code>std::vector&lt;int&gt;<\/code> and avoid listing that it can be switched to non-rcpp code. Additionally, we opt to use a pass by reference paradigm instead of just a const variable. Lastly, I&#8217;ve cut down on the amount of <code>inline<\/code> declaration. <\/p>\n<pre><code>#include &lt;Rcpp.h&gt;\nusing namespace Rcpp;\n\n\/\/************************************************\ninline const short int V (const char x){\n  switch(x){\n  case 'A':case 'a':\n    return 0;\n    break;\n  case 'C':case 'c':\n    return 1;\n    break;   \n  case 'G':case 'g':\n    return 2;\n    break;\n  default:\n    return 3;\n  break;  \n  }\n\n}\n\nstd::vector&lt;int&gt; conv_A2V(const std::string &amp; A){\n unsigned int obs = A.length()\n std::vector&lt;int&gt; out(obs);\n for(unsigned int i = 0; i &lt; obs; i++){\n   out(i) = V(A[i]);\n }\n return out;\n}\n\nunsigned int X0( const std::vector&lt;int&gt; &amp; V_A, const int k, const int n){\n  unsigned int  result=0;\n  int j=k;\n  for( int i=n-1;i&gt;n-k-1;i--) {\n    result+= pow(4,k-j)*V_A[i];\n  j--;\n  }\n  return result;\n}\n\n\/\/ [[Rcpp::export]]\nIntegerVector kmer4(const std::string A, const int n,const int k)\n{\n  \/\/ Convert\n  std::vector&lt;int&gt; V_A = conv_A2V(A);\n\n  IntegerVector P(pow(4,k));                  \n  int x=X0(V_A,k,n);                              \n  P[x]++;                   \n  const int N=pow(4,k-1);               \n  for( int i=n-k-1;i&gt;-1;i--){\n    x=N*V_A[i]+x\/4-x%4\/4;\n    P[x]++;\n  }\n  return P;\n}\n<\/code><\/pre>\n<\/p><\/div>\n<div class=\"mt24\"><\/div>\n<\/div>\n<p>            <span class=\"d-none\" itemprop=\"commentCount\">4<\/span> <\/p><\/div>\n<\/div>\n<p>[ad_2]<\/p>\n<p>solved k-mer counting into R using perfect hashing [closed] <\/p>\n","protected":false},"excerpt":{"rendered":"<p>[ad_1] Item 1: I&#8217;m not versed in k-mer counting and the definition of x is a bit shaky. If you could update your question, then I&#8217;ll try to address point 1. But, to me it seems as if you just need to use an algorithm that converts from base 10 back to base 4? Item &#8230; <a title=\"[Solved] k-mer counting into R using perfect hashing [closed]\" class=\"read-more\" href=\"https:\/\/jassweb.com\/solved\/solved-k-mer-counting-into-r-using-perfect-hashing-closed\/\" aria-label=\"More on [Solved] k-mer counting into R using perfect hashing [closed]\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[320],"tags":[969,324,357,321,1848],"class_list":["post-12349","post","type-post","status-publish","format-standard","hentry","category-solved","tag-bioinformatics","tag-c","tag-math","tag-r","tag-rcpp"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>[Solved] k-mer counting into R using perfect hashing [closed] - JassWeb<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jassweb.com\/solved\/solved-k-mer-counting-into-r-using-perfect-hashing-closed\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"[Solved] k-mer counting into R using perfect hashing [closed] - JassWeb\" \/>\n<meta property=\"og:description\" content=\"[ad_1] Item 1: I&#8217;m not versed in k-mer counting and the definition of x is a bit shaky. If you could update your question, then I&#8217;ll try to address point 1. But, to me it seems as if you just need to use an algorithm that converts from base 10 back to base 4? Item ... Read more\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jassweb.com\/solved\/solved-k-mer-counting-into-r-using-perfect-hashing-closed\/\" \/>\n<meta property=\"og:site_name\" content=\"JassWeb\" \/>\n<meta property=\"article:published_time\" content=\"2022-09-30T07:28:48+00:00\" \/>\n<meta name=\"author\" content=\"Kirat\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kirat\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-k-mer-counting-into-r-using-perfect-hashing-closed\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-k-mer-counting-into-r-using-perfect-hashing-closed\/\"},\"author\":{\"name\":\"Kirat\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\"},\"headline\":\"[Solved] k-mer counting into R using perfect hashing [closed]\",\"datePublished\":\"2022-09-30T07:28:48+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-k-mer-counting-into-r-using-perfect-hashing-closed\/\"},\"wordCount\":165,\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"keywords\":[\"bioinformatics\",\"c++\",\"math\",\"r\",\"rcpp\"],\"articleSection\":[\"Solved\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-k-mer-counting-into-r-using-perfect-hashing-closed\/\",\"url\":\"https:\/\/jassweb.com\/solved\/solved-k-mer-counting-into-r-using-perfect-hashing-closed\/\",\"name\":\"[Solved] k-mer counting into R using perfect hashing [closed] - JassWeb\",\"isPartOf\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#website\"},\"datePublished\":\"2022-09-30T07:28:48+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/jassweb.com\/solved\/solved-k-mer-counting-into-r-using-perfect-hashing-closed\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/jassweb.com\/solved\/solved-k-mer-counting-into-r-using-perfect-hashing-closed\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/jassweb.com\/solved\/solved-k-mer-counting-into-r-using-perfect-hashing-closed\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/jassweb.com\/solved\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"[Solved] k-mer counting into R using perfect hashing [closed]\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/jassweb.com\/solved\/#website\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"name\":\"JassWeb\",\"description\":\"Build High-quality Websites\",\"publisher\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/jassweb.com\/solved\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/jassweb.com\/solved\/#organization\",\"name\":\"Jass Web\",\"url\":\"https:\/\/jassweb.com\/solved\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"contentUrl\":\"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png\",\"width\":693,\"height\":132,\"caption\":\"Jass Web\"},\"image\":{\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31\",\"name\":\"Kirat\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"contentUrl\":\"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750\",\"caption\":\"Kirat\"},\"sameAs\":[\"http:\/\/jassweb.com\"],\"url\":\"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"[Solved] k-mer counting into R using perfect hashing [closed] - JassWeb","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jassweb.com\/solved\/solved-k-mer-counting-into-r-using-perfect-hashing-closed\/","og_locale":"en_US","og_type":"article","og_title":"[Solved] k-mer counting into R using perfect hashing [closed] - JassWeb","og_description":"[ad_1] Item 1: I&#8217;m not versed in k-mer counting and the definition of x is a bit shaky. If you could update your question, then I&#8217;ll try to address point 1. But, to me it seems as if you just need to use an algorithm that converts from base 10 back to base 4? Item ... Read more","og_url":"https:\/\/jassweb.com\/solved\/solved-k-mer-counting-into-r-using-perfect-hashing-closed\/","og_site_name":"JassWeb","article_published_time":"2022-09-30T07:28:48+00:00","author":"Kirat","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Kirat","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jassweb.com\/solved\/solved-k-mer-counting-into-r-using-perfect-hashing-closed\/#article","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/solved-k-mer-counting-into-r-using-perfect-hashing-closed\/"},"author":{"name":"Kirat","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31"},"headline":"[Solved] k-mer counting into R using perfect hashing [closed]","datePublished":"2022-09-30T07:28:48+00:00","mainEntityOfPage":{"@id":"https:\/\/jassweb.com\/solved\/solved-k-mer-counting-into-r-using-perfect-hashing-closed\/"},"wordCount":165,"publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"keywords":["bioinformatics","c++","math","r","rcpp"],"articleSection":["Solved"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/jassweb.com\/solved\/solved-k-mer-counting-into-r-using-perfect-hashing-closed\/","url":"https:\/\/jassweb.com\/solved\/solved-k-mer-counting-into-r-using-perfect-hashing-closed\/","name":"[Solved] k-mer counting into R using perfect hashing [closed] - JassWeb","isPartOf":{"@id":"https:\/\/jassweb.com\/solved\/#website"},"datePublished":"2022-09-30T07:28:48+00:00","breadcrumb":{"@id":"https:\/\/jassweb.com\/solved\/solved-k-mer-counting-into-r-using-perfect-hashing-closed\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jassweb.com\/solved\/solved-k-mer-counting-into-r-using-perfect-hashing-closed\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jassweb.com\/solved\/solved-k-mer-counting-into-r-using-perfect-hashing-closed\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jassweb.com\/solved\/"},{"@type":"ListItem","position":2,"name":"[Solved] k-mer counting into R using perfect hashing [closed]"}]},{"@type":"WebSite","@id":"https:\/\/jassweb.com\/solved\/#website","url":"https:\/\/jassweb.com\/solved\/","name":"JassWeb","description":"Build High-quality Websites","publisher":{"@id":"https:\/\/jassweb.com\/solved\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jassweb.com\/solved\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jassweb.com\/solved\/#organization","name":"Jass Web","url":"https:\/\/jassweb.com\/solved\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/","url":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","contentUrl":"https:\/\/jassweb.com\/wp-content\/uploads\/2021\/02\/jass-website-logo-1.png","width":693,"height":132,"caption":"Jass Web"},"image":{"@id":"https:\/\/jassweb.com\/solved\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/65c9c7b7958150c0dc8371fa35dd7c31","name":"Kirat","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jassweb.com\/solved\/#\/schema\/person\/image\/","url":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","contentUrl":"https:\/\/jassweb.com\/solved\/wp-content\/litespeed\/avatar\/1261af3c9451399fa1336d28b98ea3bb.jpg?ver=1775798750","caption":"Kirat"},"sameAs":["http:\/\/jassweb.com"],"url":"https:\/\/jassweb.com\/solved\/author\/jaspritsinghghumangmail-com\/"}]}},"_links":{"self":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/12349","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/comments?post=12349"}],"version-history":[{"count":0,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/posts\/12349\/revisions"}],"wp:attachment":[{"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/media?parent=12349"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/categories?post=12349"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jassweb.com\/solved\/wp-json\/wp\/v2\/tags?post=12349"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}