{"action":"created","comment":{"url":"https://api.github.com/repos/biocore/qiita/pulls/comments/29781921","id":29781921,"diff_hunk":"@@ -6,15 +6,71 @@\n # The full license is in the file LICENSE, distributed with this software.\n # -----------------------------------------------------------------------------\n from __future__ import division\n-from os.path import join\n+from os.path import join, dirname, basename, exists\n+from shutil import move\n+from glob import glob\n+import warnings\n+import re\n \n from .base import QiitaObject\n-from .exceptions import QiitaDBDuplicateError\n+from .exceptions import QiitaDBDuplicateError, QiitaDBWarning, QiitaDBError\n from .util import (insert_filepaths, convert_to_id,\n                    get_mountpoint)\n from .sql_connection import SQLConnectionHandler\n \n \n+def _rename_sortmerna_indexed_db_files(smr_db, db_name, db_version):\n+    \"\"\"Renames the SortMeRNA indexed db files to use a controlled name\n+\n+    Parameters\n+    ----------\n+    smr_db : str\n+        The base path to the sortmerna_indexed_db\n+    db_name : str\n+        The name of the reference database\n+    db_version : str\n+        The version of the reference database\n+\n+    Raises\n+    ------\n+    QiitaDBError\n+        If smr_db does not contain a correct SortMeRNA indexed db\n+    \"\"\"\n+    smr_db_dir = dirname(smr_db)\n+\n+    # Rename the .stats file\n+    old_fp = \"%s.stats\" % smr_db\n+    if not exists(old_fp):\n+        raise QiitaDBError(\n+            \"%s does not look like a correct SortMeRNA indexed database.\"\n+            % smr_db)\n+\n+    new_fp = join(smr_db_dir, \"%s_%s.stats\" % (db_name, db_version))\n+    move(old_fp, new_fp)\n+\n+    suff = [\"pos\", \"bursttrie\", \"kmer\"]\n+\n+    for s in suff:\n+        g_re = \"%s.%s_[0-9]*.dat\" % (smr_db, s)\n+        s_re = \"(?<=%s_)[0-9]*(?=.dat)\" % s\n+\n+        old_fps = glob(g_re)\n+\n+        if not old_fps:\n+            raise QiitaDBError(","path":"qiita_db/reference.py","position":57,"original_position":57,"commit_id":"ed21bd349cc8cc53907628066c11505f6b671ac6","original_commit_id":"ed21bd349cc8cc53907628066c11505f6b671ac6","user":{"login":"wasade","id":474290,"avatar_url":"https://avatars.githubusercontent.com/u/474290?v=3","gravatar_id":"","url":"https://api.github.com/users/wasade","html_url":"https://github.com/wasade","followers_url":"https://api.github.com/users/wasade/followers","following_url":"https://api.github.com/users/wasade/following{/other_user}","gists_url":"https://api.github.com/users/wasade/gists{/gist_id}","starred_url":"https://api.github.com/users/wasade/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wasade/subscriptions","organizations_url":"https://api.github.com/users/wasade/orgs","repos_url":"https://api.github.com/users/wasade/repos","events_url":"https://api.github.com/users/wasade/events{/privacy}","received_events_url":"https://api.github.com/users/wasade/received_events","type":"User","site_admin":false},"body":"if this exception is raised the filesystem will be inconsistent as the move on line 49 will not have been reverted. Recommend queuing the moves, and do all at once if possible","created_at":"2015-05-06T17:35:17Z","updated_at":"2015-05-06T17:35:17Z","html_url":"https://github.com/biocore/qiita/pull/1155#discussion_r29781921","pull_request_url":"https://api.github.com/repos/biocore/qiita/pulls/1155","_links":{"self":{"href":"https://api.github.com/repos/biocore/qiita/pulls/comments/29781921"},"html":{"href":"https://github.com/biocore/qiita/pull/1155#discussion_r29781921"},"pull_request":{"href":"https://api.github.com/repos/biocore/qiita/pulls/1155"}}},"pull_request":{"url":"https://api.github.com/repos/biocore/qiita/pulls/1155","id":34758641,"html_url":"https://github.com/biocore/qiita/pull/1155","diff_url":"https://github.com/biocore/qiita/pull/1155.diff","patch_url":"https://github.com/biocore/qiita/pull/1155.patch","issue_url":"https://api.github.com/repos/biocore/qiita/issues/1155","number":1155,"state":"open","locked":false,"title":"Modify DB to support SortMeRNA dbs","user":{"login":"josenavas","id":2501478,"avatar_url":"https://avatars.githubusercontent.com/u/2501478?v=3","gravatar_id":"","url":"https://api.github.com/users/josenavas","html_url":"https://github.com/josenavas","followers_url":"https://api.github.com/users/josenavas/followers","following_url":"https://api.github.com/users/josenavas/following{/other_user}","gists_url":"https://api.github.com/users/josenavas/gists{/gist_id}","starred_url":"https://api.github.com/users/josenavas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/josenavas/subscriptions","organizations_url":"https://api.github.com/users/josenavas/orgs","repos_url":"https://api.github.com/users/josenavas/repos","events_url":"https://api.github.com/users/josenavas/events{/privacy}","received_events_url":"https://api.github.com/users/josenavas/received_events","type":"User","site_admin":false},"body":"This adds the first bits to fix #811 \r\n\r\nThis is modifying the database and the reference.py object to support that.\r\n\r\nRemaining bits needed for this to be fully functional:\r\n- [ ] Modify the CLI interface to accept the SortMeRNA indexed database\r\n- [ ] Create a qiita_ware command to index the DB (done in the cluster)\r\n- [ ] Add a 24.py patch that will index the database for the already existing DBs using the previous command.\r\n- [ ] Modify the processing pipeline to use the reference database if it already exists\r\n\r\nNote that this is going to it's own branch. Since this include DB changes, I will appreciate fast reviews so I can move forward faster and avoid what happened with the latest release.","created_at":"2015-05-05T19:32:09Z","updated_at":"2015-05-06T17:35:17Z","closed_at":null,"merged_at":null,"merge_commit_sha":"d08a60fa4fb45384729c31891bcecee35caac0ae","assignee":null,"milestone":{"url":"https://api.github.com/repos/biocore/qiita/milestones/8","html_url":"https://github.com/biocore/qiita/milestones/Alpha%200.2","labels_url":"https://api.github.com/repos/biocore/qiita/milestones/8/labels","id":1049807,"number":8,"title":"Alpha 0.2","description":"","creator":{"login":"josenavas","id":2501478,"avatar_url":"https://avatars.githubusercontent.com/u/2501478?v=3","gravatar_id":"","url":"https://api.github.com/users/josenavas","html_url":"https://github.com/josenavas","followers_url":"https://api.github.com/users/josenavas/followers","following_url":"https://api.github.com/users/josenavas/following{/other_user}","gists_url":"https://api.github.com/users/josenavas/gists{/gist_id}","starred_url":"https://api.github.com/users/josenavas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/josenavas/subscriptions","organizations_url":"https://api.github.com/users/josenavas/orgs","repos_url":"https://api.github.com/users/josenavas/repos","events_url":"https://api.github.com/users/josenavas/events{/privacy}","received_events_url":"https://api.github.com/users/josenavas/received_events","type":"User","site_admin":false},"open_issues":69,"closed_issues":6,"state":"open","created_at":"2015-04-02T04:52:07Z","updated_at":"2015-05-06T16:39:01Z","due_on":"2015-05-14T06:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/biocore/qiita/pulls/1155/commits","review_comments_url":"https://api.github.com/repos/biocore/qiita/pulls/1155/comments","review_comment_url":"https://api.github.com/repos/biocore/qiita/pulls/comments{/number}","comments_url":"https://api.github.com/repos/biocore/qiita/issues/1155/comments","statuses_url":"https://api.github.com/repos/biocore/qiita/statuses/ed21bd349cc8cc53907628066c11505f6b671ac6","head":{"label":"josenavas:fix-811","ref":"fix-811","sha":"ed21bd349cc8cc53907628066c11505f6b671ac6","user":{"login":"josenavas","id":2501478,"avatar_url":"https://avatars.githubusercontent.com/u/2501478?v=3","gravatar_id":"","url":"https://api.github.com/users/josenavas","html_url":"https://github.com/josenavas","followers_url":"https://api.github.com/users/josenavas/followers","following_url":"https://api.github.com/users/josenavas/following{/other_user}","gists_url":"https://api.github.com/users/josenavas/gists{/gist_id}","starred_url":"https://api.github.com/users/josenavas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/josenavas/subscriptions","organizations_url":"https://api.github.com/users/josenavas/orgs","repos_url":"https://api.github.com/users/josenavas/repos","events_url":"https://api.github.com/users/josenavas/events{/privacy}","received_events_url":"https://api.github.com/users/josenavas/received_events","type":"User","site_admin":false},"repo":{"id":13527677,"name":"QiiTa","full_name":"josenavas/QiiTa","owner":{"login":"josenavas","id":2501478,"avatar_url":"https://avatars.githubusercontent.com/u/2501478?v=3","gravatar_id":"","url":"https://api.github.com/users/josenavas","html_url":"https://github.com/josenavas","followers_url":"https://api.github.com/users/josenavas/followers","following_url":"https://api.github.com/users/josenavas/following{/other_user}","gists_url":"https://api.github.com/users/josenavas/gists{/gist_id}","starred_url":"https://api.github.com/users/josenavas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/josenavas/subscriptions","organizations_url":"https://api.github.com/users/josenavas/orgs","repos_url":"https://api.github.com/users/josenavas/repos","events_url":"https://api.github.com/users/josenavas/events{/privacy}","received_events_url":"https://api.github.com/users/josenavas/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/josenavas/QiiTa","description":"QiiTa databasing effort","fork":true,"url":"https://api.github.com/repos/josenavas/QiiTa","forks_url":"https://api.github.com/repos/josenavas/QiiTa/forks","keys_url":"https://api.github.com/repos/josenavas/QiiTa/keys{/key_id}","collaborators_url":"https://api.github.com/repos/josenavas/QiiTa/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/josenavas/QiiTa/teams","hooks_url":"https://api.github.com/repos/josenavas/QiiTa/hooks","issue_events_url":"https://api.github.com/repos/josenavas/QiiTa/issues/events{/number}","events_url":"https://api.github.com/repos/josenavas/QiiTa/events","assignees_url":"https://api.github.com/repos/josenavas/QiiTa/assignees{/user}","branches_url":"https://api.github.com/repos/josenavas/QiiTa/branches{/branch}","tags_url":"https://api.github.com/repos/josenavas/QiiTa/tags","blobs_url":"https://api.github.com/repos/josenavas/QiiTa/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/josenavas/QiiTa/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/josenavas/QiiTa/git/refs{/sha}","trees_url":"https://api.github.com/repos/josenavas/QiiTa/git/trees{/sha}","statuses_url":"https://api.github.com/repos/josenavas/QiiTa/statuses/{sha}","languages_url":"https://api.github.com/repos/josenavas/QiiTa/languages","stargazers_url":"https://api.github.com/repos/josenavas/QiiTa/stargazers","contributors_url":"https://api.github.com/repos/josenavas/QiiTa/contributors","subscribers_url":"https://api.github.com/repos/josenavas/QiiTa/subscribers","subscription_url":"https://api.github.com/repos/josenavas/QiiTa/subscription","commits_url":"https://api.github.com/repos/josenavas/QiiTa/commits{/sha}","git_commits_url":"https://api.github.com/repos/josenavas/QiiTa/git/commits{/sha}","comments_url":"https://api.github.com/repos/josenavas/QiiTa/comments{/number}","issue_comment_url":"https://api.github.com/repos/josenavas/QiiTa/issues/comments{/number}","contents_url":"https://api.github.com/repos/josenavas/QiiTa/contents/{+path}","compare_url":"https://api.github.com/repos/josenavas/QiiTa/compare/{base}...{head}","merges_url":"https://api.github.com/repos/josenavas/QiiTa/merges","archive_url":"https://api.github.com/repos/josenavas/QiiTa/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/josenavas/QiiTa/downloads","issues_url":"https://api.github.com/repos/josenavas/QiiTa/issues{/number}","pulls_url":"https://api.github.com/repos/josenavas/QiiTa/pulls{/number}","milestones_url":"https://api.github.com/repos/josenavas/QiiTa/milestones{/number}","notifications_url":"https://api.github.com/repos/josenavas/QiiTa/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/josenavas/QiiTa/labels{/name}","releases_url":"https://api.github.com/repos/josenavas/QiiTa/releases{/id}","created_at":"2013-10-12T19:29:32Z","updated_at":"2015-05-05T22:50:05Z","pushed_at":"2015-05-06T16:38:37Z","git_url":"git://github.com/josenavas/QiiTa.git","ssh_url":"git@github.com:josenavas/QiiTa.git","clone_url":"https://github.com/josenavas/QiiTa.git","svn_url":"https://github.com/josenavas/QiiTa","homepage":null,"size":124752,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"biocore:smr_idx_dbs","ref":"smr_idx_dbs","sha":"5ff115e2f2fd44b42449fa27b71a58cfe59afa9c","user":{"login":"biocore","id":6241857,"avatar_url":"https://avatars.githubusercontent.com/u/6241857?v=3","gravatar_id":"","url":"https://api.github.com/users/biocore","html_url":"https://github.com/biocore","followers_url":"https://api.github.com/users/biocore/followers","following_url":"https://api.github.com/users/biocore/following{/other_user}","gists_url":"https://api.github.com/users/biocore/gists{/gist_id}","starred_url":"https://api.github.com/users/biocore/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/biocore/subscriptions","organizations_url":"https://api.github.com/users/biocore/orgs","repos_url":"https://api.github.com/users/biocore/repos","events_url":"https://api.github.com/users/biocore/events{/privacy}","received_events_url":"https://api.github.com/users/biocore/received_events","type":"Organization","site_admin":false},"repo":{"id":13131245,"name":"qiita","full_name":"biocore/qiita","owner":{"login":"biocore","id":6241857,"avatar_url":"https://avatars.githubusercontent.com/u/6241857?v=3","gravatar_id":"","url":"https://api.github.com/users/biocore","html_url":"https://github.com/biocore","followers_url":"https://api.github.com/users/biocore/followers","following_url":"https://api.github.com/users/biocore/following{/other_user}","gists_url":"https://api.github.com/users/biocore/gists{/gist_id}","starred_url":"https://api.github.com/users/biocore/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/biocore/subscriptions","organizations_url":"https://api.github.com/users/biocore/orgs","repos_url":"https://api.github.com/users/biocore/repos","events_url":"https://api.github.com/users/biocore/events{/privacy}","received_events_url":"https://api.github.com/users/biocore/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/biocore/qiita","description":"Qiita - A QIIME databasing effort","fork":false,"url":"https://api.github.com/repos/biocore/qiita","forks_url":"https://api.github.com/repos/biocore/qiita/forks","keys_url":"https://api.github.com/repos/biocore/qiita/keys{/key_id}","collaborators_url":"https://api.github.com/repos/biocore/qiita/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/biocore/qiita/teams","hooks_url":"https://api.github.com/repos/biocore/qiita/hooks","issue_events_url":"https://api.github.com/repos/biocore/qiita/issues/events{/number}","events_url":"https://api.github.com/repos/biocore/qiita/events","assignees_url":"https://api.github.com/repos/biocore/qiita/assignees{/user}","branches_url":"https://api.github.com/repos/biocore/qiita/branches{/branch}","tags_url":"https://api.github.com/repos/biocore/qiita/tags","blobs_url":"https://api.github.com/repos/biocore/qiita/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/biocore/qiita/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/biocore/qiita/git/refs{/sha}","trees_url":"https://api.github.com/repos/biocore/qiita/git/trees{/sha}","statuses_url":"https://api.github.com/repos/biocore/qiita/statuses/{sha}","languages_url":"https://api.github.com/repos/biocore/qiita/languages","stargazers_url":"https://api.github.com/repos/biocore/qiita/stargazers","contributors_url":"https://api.github.com/repos/biocore/qiita/contributors","subscribers_url":"https://api.github.com/repos/biocore/qiita/subscribers","subscription_url":"https://api.github.com/repos/biocore/qiita/subscription","commits_url":"https://api.github.com/repos/biocore/qiita/commits{/sha}","git_commits_url":"https://api.github.com/repos/biocore/qiita/git/commits{/sha}","comments_url":"https://api.github.com/repos/biocore/qiita/comments{/number}","issue_comment_url":"https://api.github.com/repos/biocore/qiita/issues/comments{/number}","contents_url":"https://api.github.com/repos/biocore/qiita/contents/{+path}","compare_url":"https://api.github.com/repos/biocore/qiita/compare/{base}...{head}","merges_url":"https://api.github.com/repos/biocore/qiita/merges","archive_url":"https://api.github.com/repos/biocore/qiita/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/biocore/qiita/downloads","issues_url":"https://api.github.com/repos/biocore/qiita/issues{/number}","pulls_url":"https://api.github.com/repos/biocore/qiita/pulls{/number}","milestones_url":"https://api.github.com/repos/biocore/qiita/milestones{/number}","notifications_url":"https://api.github.com/repos/biocore/qiita/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/biocore/qiita/labels{/name}","releases_url":"https://api.github.com/repos/biocore/qiita/releases{/id}","created_at":"2013-09-26T18:50:43Z","updated_at":"2015-05-05T17:02:55Z","pushed_at":"2015-05-06T16:39:01Z","git_url":"git://github.com/biocore/qiita.git","ssh_url":"git@github.com:biocore/qiita.git","clone_url":"https://github.com/biocore/qiita.git","svn_url":"https://github.com/biocore/qiita","homepage":"","size":128619,"stargazers_count":18,"watchers_count":18,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":21,"mirror_url":null,"open_issues_count":254,"forks":21,"open_issues":254,"watchers":18,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/biocore/qiita/pulls/1155"},"html":{"href":"https://github.com/biocore/qiita/pull/1155"},"issue":{"href":"https://api.github.com/repos/biocore/qiita/issues/1155"},"comments":{"href":"https://api.github.com/repos/biocore/qiita/issues/1155/comments"},"review_comments":{"href":"https://api.github.com/repos/biocore/qiita/pulls/1155/comments"},"review_comment":{"href":"https://api.github.com/repos/biocore/qiita/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/biocore/qiita/pulls/1155/commits"},"statuses":{"href":"https://api.github.com/repos/biocore/qiita/statuses/ed21bd349cc8cc53907628066c11505f6b671ac6"}}}}