{"action":"created","comment":{"url":"https://api.github.com/repos/pysb/pysb/pulls/comments/48216810","id":48216810,"diff_hunk":"@@ -321,8 +321,9 @@ class MonomerPattern(object):\n     * *list of int* : multi-bond (not valid in Kappa)\n     * ``ANY`` : \\\"any\\\" bond (bound to something, but don't care what)\n     * ``WILD`` : \\\"wildcard\\\" bond (bound or not bound)\n-    * *tuple of (str, int)* : state with bond\n+    * *tuple of (str, int)* : state with specified bond\n     * *tuple of (str, WILD)* : state with wildcard bond\n+    * *tuple of (str, ANY)* : state with any bond","path":"pysb/core.py","position":7,"original_position":7,"commit_id":"1ff7929f88dd6c251d19e99c2279e2932f35c654","original_commit_id":"1ff7929f88dd6c251d19e99c2279e2932f35c654","user":{"login":"jmuhlich","id":277154,"avatar_url":"https://avatars.githubusercontent.com/u/277154?v=3","gravatar_id":"","url":"https://api.github.com/users/jmuhlich","html_url":"https://github.com/jmuhlich","followers_url":"https://api.github.com/users/jmuhlich/followers","following_url":"https://api.github.com/users/jmuhlich/following{/other_user}","gists_url":"https://api.github.com/users/jmuhlich/gists{/gist_id}","starred_url":"https://api.github.com/users/jmuhlich/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jmuhlich/subscriptions","organizations_url":"https://api.github.com/users/jmuhlich/orgs","repos_url":"https://api.github.com/users/jmuhlich/repos","events_url":"https://api.github.com/users/jmuhlich/events{/privacy}","received_events_url":"https://api.github.com/users/jmuhlich/received_events","type":"User","site_admin":false},"body":"Huh, can't believe I forgot that one and nobody noticed for so long.","created_at":"2015-12-22T02:37:33Z","updated_at":"2015-12-22T02:37:33Z","html_url":"https://github.com/pysb/pysb/pull/188#discussion_r48216810","pull_request_url":"https://api.github.com/repos/pysb/pysb/pulls/188","_links":{"self":{"href":"https://api.github.com/repos/pysb/pysb/pulls/comments/48216810"},"html":{"href":"https://github.com/pysb/pysb/pull/188#discussion_r48216810"},"pull_request":{"href":"https://api.github.com/repos/pysb/pysb/pulls/188"}}},"pull_request":{"url":"https://api.github.com/repos/pysb/pysb/pulls/188","id":54193653,"html_url":"https://github.com/pysb/pysb/pull/188","diff_url":"https://github.com/pysb/pysb/pull/188.diff","patch_url":"https://github.com/pysb/pysb/pull/188.patch","issue_url":"https://api.github.com/repos/pysb/pysb/issues/188","number":188,"state":"open","locked":false,"title":"Kappa updates (ANY/WILD, Expressions, KaSa, tests)","user":{"login":"johnbachman","id":432756,"avatar_url":"https://avatars.githubusercontent.com/u/432756?v=3","gravatar_id":"","url":"https://api.github.com/users/johnbachman","html_url":"https://github.com/johnbachman","followers_url":"https://api.github.com/users/johnbachman/followers","following_url":"https://api.github.com/users/johnbachman/following{/other_user}","gists_url":"https://api.github.com/users/johnbachman/gists{/gist_id}","starred_url":"https://api.github.com/users/johnbachman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johnbachman/subscriptions","organizations_url":"https://api.github.com/users/johnbachman/orgs","repos_url":"https://api.github.com/users/johnbachman/repos","events_url":"https://api.github.com/users/johnbachman/events{/privacy}","received_events_url":"https://api.github.com/users/johnbachman/received_events","type":"User","site_admin":false},"body":"This (long overdue) pull request is based off of @ryants branch (pull request #117) which added additional Kappa functionality, including ANY and WILD bonds and Expressions, and some new tests.\r\n\r\nIn addition to these changes, I updated kappa.py to use KaSa for all static analysis rather than complx, which is now deprecated. I also fixed what was previously the \"sympy_to_muparser\" function in the generator/kappa.py file to make it match our current approach in generator/bng.py.\r\n\r\nOne thing to note is that Kappa 4.0, which is currently under development, will use a different syntax for observables. I updated the necessary code in 828492259e14f but then commented it out in 6204902 because this new syntax causes problems for some versions of KaSim3. When KaSim 4.0 is stable, we can uncomment these lines to make the switch to the new syntax.\r\n\r\nI set up a Travis build procedure for testing pysb Kappa functionality, which required installing ocaml and the opam package manager for ocaml (which is then used to install a KaSim dependency, ocaml-findlib). After some fiddling around, I finally got the correct recipe for the ocaml installation/KaSim build from the .travis.yml file of the KaSim repo itself. Note that it appears that some of the source downloads from the KaSim git repo (e.g., KaSim3.5), when built, only produce a KaSim binary and not a KaSa binary, causing the tests of the KaSa functionality to fail. As a result I git cloned the KaSim source in the travis script and then did a checkout of the KaSim commit tagged \"last-KaSim3\" under the assumption that this will be their last KaSim 3 release before they make the (possibly breaking) changes involved in KaSim 4.\r\n\r\nThe most notable wart that remains is that the PySB Kappa tools require KaSim and KaSa to be on the user's PATH. There is currently no implementation of using an environment variable, e.g., KAPPA_HOME, to find the location of KaSim/KaSa, nor a standard set of installation locations that are searched.","created_at":"2015-12-20T06:00:53Z","updated_at":"2015-12-22T02:37:34Z","closed_at":null,"merged_at":null,"merge_commit_sha":"1ae0f8acde2a700e03a23129c986900cb3850e17","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/pysb/pysb/pulls/188/commits","review_comments_url":"https://api.github.com/repos/pysb/pysb/pulls/188/comments","review_comment_url":"https://api.github.com/repos/pysb/pysb/pulls/comments{/number}","comments_url":"https://api.github.com/repos/pysb/pysb/issues/188/comments","statuses_url":"https://api.github.com/repos/pysb/pysb/statuses/1ff7929f88dd6c251d19e99c2279e2932f35c654","head":{"label":"johnbachman:kappa_fixes","ref":"kappa_fixes","sha":"1ff7929f88dd6c251d19e99c2279e2932f35c654","user":{"login":"johnbachman","id":432756,"avatar_url":"https://avatars.githubusercontent.com/u/432756?v=3","gravatar_id":"","url":"https://api.github.com/users/johnbachman","html_url":"https://github.com/johnbachman","followers_url":"https://api.github.com/users/johnbachman/followers","following_url":"https://api.github.com/users/johnbachman/following{/other_user}","gists_url":"https://api.github.com/users/johnbachman/gists{/gist_id}","starred_url":"https://api.github.com/users/johnbachman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johnbachman/subscriptions","organizations_url":"https://api.github.com/users/johnbachman/orgs","repos_url":"https://api.github.com/users/johnbachman/repos","events_url":"https://api.github.com/users/johnbachman/events{/privacy}","received_events_url":"https://api.github.com/users/johnbachman/received_events","type":"User","site_admin":false},"repo":{"id":1666772,"name":"pysb","full_name":"johnbachman/pysb","owner":{"login":"johnbachman","id":432756,"avatar_url":"https://avatars.githubusercontent.com/u/432756?v=3","gravatar_id":"","url":"https://api.github.com/users/johnbachman","html_url":"https://github.com/johnbachman","followers_url":"https://api.github.com/users/johnbachman/followers","following_url":"https://api.github.com/users/johnbachman/following{/other_user}","gists_url":"https://api.github.com/users/johnbachman/gists{/gist_id}","starred_url":"https://api.github.com/users/johnbachman/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/johnbachman/subscriptions","organizations_url":"https://api.github.com/users/johnbachman/orgs","repos_url":"https://api.github.com/users/johnbachman/repos","events_url":"https://api.github.com/users/johnbachman/events{/privacy}","received_events_url":"https://api.github.com/users/johnbachman/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/johnbachman/pysb","description":"Python framework for Systems Biology modeling","fork":true,"url":"https://api.github.com/repos/johnbachman/pysb","forks_url":"https://api.github.com/repos/johnbachman/pysb/forks","keys_url":"https://api.github.com/repos/johnbachman/pysb/keys{/key_id}","collaborators_url":"https://api.github.com/repos/johnbachman/pysb/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/johnbachman/pysb/teams","hooks_url":"https://api.github.com/repos/johnbachman/pysb/hooks","issue_events_url":"https://api.github.com/repos/johnbachman/pysb/issues/events{/number}","events_url":"https://api.github.com/repos/johnbachman/pysb/events","assignees_url":"https://api.github.com/repos/johnbachman/pysb/assignees{/user}","branches_url":"https://api.github.com/repos/johnbachman/pysb/branches{/branch}","tags_url":"https://api.github.com/repos/johnbachman/pysb/tags","blobs_url":"https://api.github.com/repos/johnbachman/pysb/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/johnbachman/pysb/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/johnbachman/pysb/git/refs{/sha}","trees_url":"https://api.github.com/repos/johnbachman/pysb/git/trees{/sha}","statuses_url":"https://api.github.com/repos/johnbachman/pysb/statuses/{sha}","languages_url":"https://api.github.com/repos/johnbachman/pysb/languages","stargazers_url":"https://api.github.com/repos/johnbachman/pysb/stargazers","contributors_url":"https://api.github.com/repos/johnbachman/pysb/contributors","subscribers_url":"https://api.github.com/repos/johnbachman/pysb/subscribers","subscription_url":"https://api.github.com/repos/johnbachman/pysb/subscription","commits_url":"https://api.github.com/repos/johnbachman/pysb/commits{/sha}","git_commits_url":"https://api.github.com/repos/johnbachman/pysb/git/commits{/sha}","comments_url":"https://api.github.com/repos/johnbachman/pysb/comments{/number}","issue_comment_url":"https://api.github.com/repos/johnbachman/pysb/issues/comments{/number}","contents_url":"https://api.github.com/repos/johnbachman/pysb/contents/{+path}","compare_url":"https://api.github.com/repos/johnbachman/pysb/compare/{base}...{head}","merges_url":"https://api.github.com/repos/johnbachman/pysb/merges","archive_url":"https://api.github.com/repos/johnbachman/pysb/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/johnbachman/pysb/downloads","issues_url":"https://api.github.com/repos/johnbachman/pysb/issues{/number}","pulls_url":"https://api.github.com/repos/johnbachman/pysb/pulls{/number}","milestones_url":"https://api.github.com/repos/johnbachman/pysb/milestones{/number}","notifications_url":"https://api.github.com/repos/johnbachman/pysb/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/johnbachman/pysb/labels{/name}","releases_url":"https://api.github.com/repos/johnbachman/pysb/releases{/id}","created_at":"2011-04-26T19:18:30Z","updated_at":"2015-04-15T17:07:53Z","pushed_at":"2015-12-20T05:57:21Z","git_url":"git://github.com/johnbachman/pysb.git","ssh_url":"git@github.com:johnbachman/pysb.git","clone_url":"https://github.com/johnbachman/pysb.git","svn_url":"https://github.com/johnbachman/pysb","homepage":"","size":6955,"stargazers_count":2,"watchers_count":2,"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":2,"default_branch":"master"}},"base":{"label":"pysb:master","ref":"master","sha":"15fac0c62bf8042c76099bf1c699e299e4d77b83","user":{"login":"pysb","id":1583829,"avatar_url":"https://avatars.githubusercontent.com/u/1583829?v=3","gravatar_id":"","url":"https://api.github.com/users/pysb","html_url":"https://github.com/pysb","followers_url":"https://api.github.com/users/pysb/followers","following_url":"https://api.github.com/users/pysb/following{/other_user}","gists_url":"https://api.github.com/users/pysb/gists{/gist_id}","starred_url":"https://api.github.com/users/pysb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pysb/subscriptions","organizations_url":"https://api.github.com/users/pysb/orgs","repos_url":"https://api.github.com/users/pysb/repos","events_url":"https://api.github.com/users/pysb/events{/privacy}","received_events_url":"https://api.github.com/users/pysb/received_events","type":"Organization","site_admin":false},"repo":{"id":972691,"name":"pysb","full_name":"pysb/pysb","owner":{"login":"pysb","id":1583829,"avatar_url":"https://avatars.githubusercontent.com/u/1583829?v=3","gravatar_id":"","url":"https://api.github.com/users/pysb","html_url":"https://github.com/pysb","followers_url":"https://api.github.com/users/pysb/followers","following_url":"https://api.github.com/users/pysb/following{/other_user}","gists_url":"https://api.github.com/users/pysb/gists{/gist_id}","starred_url":"https://api.github.com/users/pysb/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pysb/subscriptions","organizations_url":"https://api.github.com/users/pysb/orgs","repos_url":"https://api.github.com/users/pysb/repos","events_url":"https://api.github.com/users/pysb/events{/privacy}","received_events_url":"https://api.github.com/users/pysb/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/pysb/pysb","description":"Python framework for Systems Biology modeling","fork":false,"url":"https://api.github.com/repos/pysb/pysb","forks_url":"https://api.github.com/repos/pysb/pysb/forks","keys_url":"https://api.github.com/repos/pysb/pysb/keys{/key_id}","collaborators_url":"https://api.github.com/repos/pysb/pysb/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/pysb/pysb/teams","hooks_url":"https://api.github.com/repos/pysb/pysb/hooks","issue_events_url":"https://api.github.com/repos/pysb/pysb/issues/events{/number}","events_url":"https://api.github.com/repos/pysb/pysb/events","assignees_url":"https://api.github.com/repos/pysb/pysb/assignees{/user}","branches_url":"https://api.github.com/repos/pysb/pysb/branches{/branch}","tags_url":"https://api.github.com/repos/pysb/pysb/tags","blobs_url":"https://api.github.com/repos/pysb/pysb/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/pysb/pysb/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/pysb/pysb/git/refs{/sha}","trees_url":"https://api.github.com/repos/pysb/pysb/git/trees{/sha}","statuses_url":"https://api.github.com/repos/pysb/pysb/statuses/{sha}","languages_url":"https://api.github.com/repos/pysb/pysb/languages","stargazers_url":"https://api.github.com/repos/pysb/pysb/stargazers","contributors_url":"https://api.github.com/repos/pysb/pysb/contributors","subscribers_url":"https://api.github.com/repos/pysb/pysb/subscribers","subscription_url":"https://api.github.com/repos/pysb/pysb/subscription","commits_url":"https://api.github.com/repos/pysb/pysb/commits{/sha}","git_commits_url":"https://api.github.com/repos/pysb/pysb/git/commits{/sha}","comments_url":"https://api.github.com/repos/pysb/pysb/comments{/number}","issue_comment_url":"https://api.github.com/repos/pysb/pysb/issues/comments{/number}","contents_url":"https://api.github.com/repos/pysb/pysb/contents/{+path}","compare_url":"https://api.github.com/repos/pysb/pysb/compare/{base}...{head}","merges_url":"https://api.github.com/repos/pysb/pysb/merges","archive_url":"https://api.github.com/repos/pysb/pysb/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/pysb/pysb/downloads","issues_url":"https://api.github.com/repos/pysb/pysb/issues{/number}","pulls_url":"https://api.github.com/repos/pysb/pysb/pulls{/number}","milestones_url":"https://api.github.com/repos/pysb/pysb/milestones{/number}","notifications_url":"https://api.github.com/repos/pysb/pysb/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/pysb/pysb/labels{/name}","releases_url":"https://api.github.com/repos/pysb/pysb/releases{/id}","created_at":"2010-10-08T16:51:11Z","updated_at":"2015-11-01T17:39:38Z","pushed_at":"2015-12-22T02:11:54Z","git_url":"git://github.com/pysb/pysb.git","ssh_url":"git@github.com:pysb/pysb.git","clone_url":"https://github.com/pysb/pysb.git","svn_url":"https://github.com/pysb/pysb","homepage":"","size":7003,"stargazers_count":26,"watchers_count":26,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":28,"mirror_url":null,"open_issues_count":78,"forks":28,"open_issues":78,"watchers":26,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/pysb/pysb/pulls/188"},"html":{"href":"https://github.com/pysb/pysb/pull/188"},"issue":{"href":"https://api.github.com/repos/pysb/pysb/issues/188"},"comments":{"href":"https://api.github.com/repos/pysb/pysb/issues/188/comments"},"review_comments":{"href":"https://api.github.com/repos/pysb/pysb/pulls/188/comments"},"review_comment":{"href":"https://api.github.com/repos/pysb/pysb/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/pysb/pysb/pulls/188/commits"},"statuses":{"href":"https://api.github.com/repos/pysb/pysb/statuses/1ff7929f88dd6c251d19e99c2279e2932f35c654"}}}}