{"action":"created","comment":{"url":"https://api.github.com/repos/quantumlib/OpenFermion/pulls/comments/145793474","pull_request_review_id":70626107,"id":145793474,"diff_hunk":"@@ -0,0 +1,331 @@\n+#\tLicensed under the Apache License, Version 2.0 (the \"License\");\n+#\tyou may not use this file except in compliance with the License.\n+#\tYou may obtain a copy of the License at\n+#\n+#\t\thttp://www.apache.org/licenses/LICENSE-2.0\n+#\n+#\tUnless required by applicable law or agreed to in writing, software\n+#\tdistributed under the License is distributed on an \"AS IS\" BASIS,\n+#\tWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+#\tSee the License for the specific language governing permissions and\n+#\tlimitations under the License.\n+\n+from openfermion.ops import QubitOperator\n+import numpy as np\n+\n+'''\n+Description:\n+\t\tApproximates the exponential of an operator composed of Pauli\n+\t\tmatrices, by Trotterization. Outputs QASM format to a python\n+\t\tstream.\n+\n+\t\tChange-of-basis gates:\n+\t\tH\t\t\t: Z to X basis (and back)\n+\t\tRx(pi/2)\t: Z to Y basis ..... \n+\t\tRx(-pi/2) \t: Y to Z basis ..... \n+\n+'''\n+\n+\n+\n+\n+def third_order_trotter_helper(hamiltonian_dict,trotterized_list,op_a, op_b):\n+\t'''\n+\tThis function recursively trotterizes a QubitOperator according\n+\t\tto the scheme:\n+\t\te^(A+B) = e^(7/24 * A) e^(2/3 * B) e^(3/4 * A) e^(-1/24 * A) e^(B)\n+\n+\tUsed in trotterize() function.\n+\n+\tParams: \n+\t\ttrotterized_list: list that the function populates with trotterized\n+\t\t\t\tQubitOperators\n+\t\top_a: first term in hamiltonian as a QubitOperator\n+\t\top_b: the rest of the terms in the hamiltonian as a list of\n+\t\t\t\tQubitOperator term dictionary keys\n+\n+\tReturns: None\n+\t'''\n+\ttrotterized_list.append(7.0/24.0 * op_a)\n+\tif len(op_b) == 1:\n+\t\ttrotterized_list.append(2.0 / 3.0 * QubitOperator(op_b[0],\n+\t\t\thamiltonian_dict[op_b[0]]))\n+\telse:\n+\t\tbtemp = op_b[1:]\n+\t\tfor i in btemp:\n+\t\t\thamiltonian_dict[i] *= 2.0 / 3.0\n+\t\tatemp = QubitOperator(op_b[0],hamiltonian_dict[op_b[0]])\n+\t\tatemp *= 2.0 / 3.0\n+\t\tthird_order_trotter_helper(trotterized_list, atemp, btemp)\n+\ttrotterized_list.append(3.0/4.0 * op_a)\n+\n+\tif op_b.terms.size == 1:\n+\t\ttrotterized_list.append(-2.0/3.0 * QubitOperator(op_b[0],\n+\t\t\thamiltonian_dict[op_b[0]]))\n+\telse:\n+\t\tbtemp = op_b[1:]\n+\t\tfor i in btemp:\n+\t\t\thamiltonian_dict[i] *= -2.0 / 3.0\n+\t\tatemp = QubitOperator(op_b[0],hamiltonian_dict[op_b[0]])\n+\t\tatemp *= -2.0 / 3.0\n+\t\tthird_order_trotter_helper(trotterized_list,atemp,btemp)\n+\ttrotterized_list.append(-1.0 / 24.0 * op_a)\n+\n+\tif op_b.terms.size == 1:\n+\t\ttrotterized_list.append(QubitOperator(op_b[0],\n+\t\t\thamiltonian_dict[op_b[0]]))\n+\telse:\n+\t\tbtemp = op_b[1:]\n+\t\tatemp = QubitOperator(op_b[0],hamiltonian_dict[op_b[0]])\n+\t\tthird_order_trotter_helper(trotterized_list, atemp, btemp)\n+\n+\n+\n+\n+def trotterize(\n+\thamiltonian,trotter_steps = 1, \n+\ttrotter_order = 1, \n+\tterm_ordering = [], \n+\tk_exp = 1.):\n+\t'''\n+\tThis function trotterizes a hamiltonian to an order 1-3 and \n+\tfor a given number of trotter steps\n+\n+\tParams:\n+\t\thamiltonian: full hamiltonian as a QubitOperator.\n+\t\ttrotter_steps: number of trotter steps as an integer.\n+\t\torder: order of trotterization as an integer from 1-3.\n+\t\tterm_ordering (optional): list of tuples (QubitOperator terms\n+\t\t\t\tdictionary keys) that specifies order of terms when\n+\t\t\t\ttrotterizing.\n+\t\tk_exp (optional): exponential factor to all terms when trotterizing.\n+\t\n+\tReturns:\n+\t\ttuple: (A list of single Pauli-term QubitOperators, the number of \n+\t\tqubits required by the hamiltonian as an integer)\n+\t\n+\tRaises:\n+\t\tValueError if order > 3 or order <= 0 or trotter_steps > 100,\n+\t\t\tTypeError for incorrect type \n+\t'''\n+\t\n+\n+\tif trotter_order > 3 or trotter_order <= 0:\n+\t\traise ValueError(\"Invalid trotter order: \" + str(order))\n+\telif trotter_steps <= 0 or trotter_steps > 100: \n+\t\traise ValueError(\"Invalid number of trotter steps: \" + str(trotter_steps))\n+\t\t\n+\tif not isinstance(hamiltonian, QubitOperator):\n+\t\traise TypeError(\"Hamiltonian must be a QubitOperator.\")\n+\tif not hamiltonian.terms:\n+\t\traise TypeError(\"Hamiltonian must be a non-empty QubitOperator.\")\n+\tif not isinstance(trotter_steps, int):\n+\t\traise TypeError(\"trotter_steps must be an int\")\n+\tif not isinstance(trotter_order, int):\n+\t\traise TypeError(\"trotter_order must be an int\")\n+\tif not isinstance(k_exp, float):\n+\t\traise TypeError(\"k_exp must be a float\")\n+\t\t\n+\t\t\n+\tnum_qubits = 0\n+\tfor term in hamiltonian.terms.items():\n+\t\tfor item in term[0]:\n+\t\t\tif item[0] > num_qubits:\n+\t\t\t\tnum_qubits = item[0]\n+\tnum_qubits += 1\n+\tret_val = []\n+\t\n+\tif len(term_ordering) == 0:\n+\t\tfor term in hamiltonian.terms.items():\n+\t\t\tterm_ordering.append(term[0])\n+\t\n+\tif trotter_order == 1:\n+\t\tfor step in range(trotter_steps):\n+\t\t\tfor op in term_ordering:\n+\t\t\t\tret_val.append(QubitOperator(op,hamiltonian.terms[op]) \n+\t\t\t\t\t* k_exp/trotter_steps)\n+\n+\telif trotter_order == 2:\n+\t\tif len(term_ordering) < 2:\n+\t\t\traise ValueError(\"Not enough terms in the Hamiltonian to do \"+\\\n+\t\t\t\t\"second order trotterization\")\n+\t\tfor op in term_ordering[:-1]:\n+\t\t\tret_val.append(QubitOperator(op,hamiltonian.terms[op]) * k_exp \n+\t\t\t\t/ (2.0 * trotter_steps))\n+\t\tret_val.append(QubitOperator(term_ordering[-1],\n+\t\t\thamiltonian.terms[term_ordering[-1]] * k_exp / trotter_steps))\n+\n+\t\tfor op in reversed(term_ordering[:-1]):\n+\t\t\tret_val.append(QubitOperator(op,hamiltonian.terms[op]) * k_exp \n+\t\t\t\t/ (2.0 * trotter_steps))\n+\n+\t\tfor step in range(trotter_steps - 1):\n+\t\t\tret_val.extend(ret_val)\n+\n+\telif trotter_order == 3:\n+\t\tif len(term_ordering) < 2:\n+\t\t\traise ValueError(\"Not enough terms in the Hamiltonian to do \"+\\\n+\t\t\t\t\"third order trotterization\")\n+\t\thamiltonian /= trotter_steps\n+\t\thamiltonian *= k_exp\n+\t\tatemp = QubitOperator(term_ordering[0],hamiltonian.terms[term_ordering[0]])\n+\t\tbtemp = term_ordering[1:]\n+\t\tthird_order_trotter_helper(hamiltonian.terms, ret_val,atemp,btemp)\n+\n+\t\tfor step in range(trotter_steps - 1):\n+\t\t\tret_val.extend(ret_val)\n+\treturn (ret_val,num_qubits)\n+\n+\n+\n+def print_qubit_op_to_qasm(ostrm,qubop):\n+\t'''\n+\tThis function exponentiates a single-Pauli-string QubitOperator\n+\tand prints it in QASM format to a supplied output stream\n+\n+\tParams:\n+\t\tostrm: file output stream\n+\t\tqubop: single Pauli-term QubitOperator to be printed\n+\t\tkexp (optional): float to be multiplied to the coefficient \n+\t\n+\tReturns:\n+\t\tNone\n+\t'''\n+\n+\n+\tfor term in qubop.terms:\n+\n+\t\ttermCoeff = qubop.terms[term]\n+\n+\t\t# List of operators and list of qubit ids\n+\t\tops = list()\n+\t\tqids = list()\n+\t\tstrBas1 = \"\"  # Basis rotations 1\n+\t\tstrBas2 = \"\"  # Basis rotations 2\n+\t\tnl = \"\\n\"  # New line\n+\n+\t\tfor p in term:\t# p = single pauli term\n+\t\t\tqid = p[0]\t# Qubit index\n+\t\t\tpop = p[1]\t# Pauli op\n+\n+\t\t\tqids.append(qid)  # Qubit index\n+\t\t\tops.append(pop)\t # Pauli operator\n+\n+\t\t\tif pop == 'X':\n+\t\t\t\tstrBas1 += \"H \" + str(qid) + nl\t # Hadamard\n+\t\t\t\tstrBas2 += \"H \" + str(qid) + nl\t # Hadamard\n+\t\t\telif pop == 'Y':\n+\t\t\t\tstrBas1 += \"Rx 1.57079632679 \" + str(qid) + nl # Z --> Y\n+\t\t\t\tstrBas2 += \"Rx -1.57079632679 \" + str(qid) + nl\t # Y --> Z\n+\n+\t\t# Prep for CNOTs\n+\t\tcnotPairs = np.vstack((qids[:-1], qids[1:]))\n+\t\tcnots1 = \"\"\n+\t\tcnots2 = \"\"\n+\t\tfor i in range(cnotPairs.shape[1]):\n+\t\t\tpair = cnotPairs[:, i]\n+\t\t\tcnots1 += \"CNOT \" + str(pair[0]) + \" \" + str(pair[1]) + nl\n+\t\tfor i in np.arange(cnotPairs.shape[1])[::-1]:\n+\t\t\tpair = cnotPairs[:, i]\n+\t\t\tcnots2 += \"CNOT \" + str(pair[0]) + \" \" + str(pair[1]) + nl\n+\n+\t\t# Exponentiating each Pauli string requires five parts\n+\n+\t\t# 1. Perform basis rotations\n+\t\tostrm.write(strBas1)\n+\n+\t\t# 2. First set CNOTs\n+\t\t# Store in string, add later\n+\t\tostrm.write(cnots1)\n+\n+\t\t# 3. Rotation (Note kexp & Ntrot)\n+\t\tostrm.write(\"Rz \" + str(termCoeff) + \" \"+ str(qids[-1])+ nl)\n+\n+\t\t# 4. Second set of CNOTs\n+\t\tostrm.write(cnots2)\n+\n+\t\t# 5. Rotate back to Z basis\n+\t\tostrm.write(strBas2)\n+\n+\n+def write_qubit_ops(op_list,ostrm):\n+\t'''\n+\tThis function takes in a list of QubitOperators and sends them\n+\tto be exponentiated and printed to a QASM file one at a time\n+\n+\tParams: \n+\top_list: list of QubitOperators\n+\tostrm: output stream (e.g. file or StringIO object)\n+\n+\tReturns:\n+\tNone\n+    '''\n+\n+\tfor op in op_list:\n+\t\tprint_qubit_op_to_qasm(ostrm,op)\n+\n+\n+\n+\n+\n+\n+def print_to_qasm(\n+\tfile_path, \n+\thamiltonian, \n+\ttrotter_steps=1, \n+\ttrotter_order=1, \n+\tterm_ordering = [], \n+\tk_exp = 1.):\n+\t'''\n+    \tThis function trotterizes a Qubit hamiltonian and prints it to a QASM file\n+    \n+    \tParams:\n+\t    \tfile_path: (string) absolute file path and file name to write\n+\t    \t\t\tthe QASM file to\n+\t    \thamiltonian: QubitOperator to be trotterized and printed\n+\t    \ttrotter_steps (optional): number of trotter steps (slices) for\n+\t    \t\t\ttrotterization as an integer\n+\t    \ttrotter_order (optional): order of trotterization as an integer\n+\t    \tterm_ordering (optional): list of tuples (QubitOperator terms\n+\t    \t\t\tdictionary keys) that specifies order of terms when\n+\t\t\t\t\ttrotterizing\n+\t    \tk_exp (optional): exponential factor to all terms when trotterizing\n+    \t\n+    \tReturns: None\n+    \t\n+    \tRaises: IOError if invalid file path, TypeError if incorrect types\n+    \n+    \t'''\n+\n+    \n+\t# Assert that hamiltonian is a QubitOperator\n+\tif not isinstance(hamiltonian, QubitOperator):\n+\t\traise TypeError(\"Hamiltonian must be a QubitOperator.\")\n+\tif not hamiltonian.terms:\n+\t\traise TypeError(\"Hamiltonian must be a non-empty QubitOperator.\")\n+\tif not isinstance(trotter_steps, int):\n+\t\traise TypeError(\"trotter_steps must be an int\")\n+\tif not isinstance(trotter_order, int):\n+\t\traise TypeError(\"trotter_order must be an int\")\n+\tif not isinstance(k_exp, float):","path":"src/openfermion/utils/_trotter_qasm_conversion.py","position":126,"original_position":310,"commit_id":"b5d4f99129ff4a021a3c98f69e6232e0dfed1320","original_commit_id":"b5d4f99129ff4a021a3c98f69e6232e0dfed1320","user":{"login":"jarrodmcc","id":7718204,"avatar_url":"https://avatars2.githubusercontent.com/u/7718204?v=4","gravatar_id":"","url":"https://api.github.com/users/jarrodmcc","html_url":"https://github.com/jarrodmcc","followers_url":"https://api.github.com/users/jarrodmcc/followers","following_url":"https://api.github.com/users/jarrodmcc/following{/other_user}","gists_url":"https://api.github.com/users/jarrodmcc/gists{/gist_id}","starred_url":"https://api.github.com/users/jarrodmcc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jarrodmcc/subscriptions","organizations_url":"https://api.github.com/users/jarrodmcc/orgs","repos_url":"https://api.github.com/users/jarrodmcc/repos","events_url":"https://api.github.com/users/jarrodmcc/events{/privacy}","received_events_url":"https://api.github.com/users/jarrodmcc/received_events","type":"User","site_admin":false},"body":"I think insisting this is a float is too restrictive.  It will fail for integers and other types.  Boil down to the essence of what this type needs to be","created_at":"2017-10-19T18:59:35Z","updated_at":"2017-10-19T18:59:53Z","html_url":"https://github.com/quantumlib/OpenFermion/pull/63#discussion_r145793474","pull_request_url":"https://api.github.com/repos/quantumlib/OpenFermion/pulls/63","author_association":"COLLABORATOR","_links":{"self":{"href":"https://api.github.com/repos/quantumlib/OpenFermion/pulls/comments/145793474"},"html":{"href":"https://github.com/quantumlib/OpenFermion/pull/63#discussion_r145793474"},"pull_request":{"href":"https://api.github.com/repos/quantumlib/OpenFermion/pulls/63"}}},"pull_request":{"url":"https://api.github.com/repos/quantumlib/OpenFermion/pulls/63","id":147564105,"html_url":"https://github.com/quantumlib/OpenFermion/pull/63","diff_url":"https://github.com/quantumlib/OpenFermion/pull/63.diff","patch_url":"https://github.com/quantumlib/OpenFermion/pull/63.patch","issue_url":"https://api.github.com/repos/quantumlib/OpenFermion/issues/63","number":63,"state":"open","locked":false,"title":"First commit of _trotter_qasm_conversion","user":{"login":"nicolassawaya","id":8076498,"avatar_url":"https://avatars2.githubusercontent.com/u/8076498?v=4","gravatar_id":"","url":"https://api.github.com/users/nicolassawaya","html_url":"https://github.com/nicolassawaya","followers_url":"https://api.github.com/users/nicolassawaya/followers","following_url":"https://api.github.com/users/nicolassawaya/following{/other_user}","gists_url":"https://api.github.com/users/nicolassawaya/gists{/gist_id}","starred_url":"https://api.github.com/users/nicolassawaya/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nicolassawaya/subscriptions","organizations_url":"https://api.github.com/users/nicolassawaya/orgs","repos_url":"https://api.github.com/users/nicolassawaya/repos","events_url":"https://api.github.com/users/nicolassawaya/events{/privacy}","received_events_url":"https://api.github.com/users/nicolassawaya/received_events","type":"User","site_admin":false},"body":"Methods for taking in arbitrary quantum operator (composed of Pauli strings), and giving Trotter-Suzuki decomposition in QASM format. -- ES Fried and NPD Sawaya","created_at":"2017-10-19T14:00:02Z","updated_at":"2017-10-19T18:59:53Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2a98a8aaa2b9b2e65e39f369ef81b15cd11be446","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/quantumlib/OpenFermion/pulls/63/commits","review_comments_url":"https://api.github.com/repos/quantumlib/OpenFermion/pulls/63/comments","review_comment_url":"https://api.github.com/repos/quantumlib/OpenFermion/pulls/comments{/number}","comments_url":"https://api.github.com/repos/quantumlib/OpenFermion/issues/63/comments","statuses_url":"https://api.github.com/repos/quantumlib/OpenFermion/statuses/b5d4f99129ff4a021a3c98f69e6232e0dfed1320","head":{"label":"nicolassawaya:master","ref":"master","sha":"b5d4f99129ff4a021a3c98f69e6232e0dfed1320","user":{"login":"nicolassawaya","id":8076498,"avatar_url":"https://avatars2.githubusercontent.com/u/8076498?v=4","gravatar_id":"","url":"https://api.github.com/users/nicolassawaya","html_url":"https://github.com/nicolassawaya","followers_url":"https://api.github.com/users/nicolassawaya/followers","following_url":"https://api.github.com/users/nicolassawaya/following{/other_user}","gists_url":"https://api.github.com/users/nicolassawaya/gists{/gist_id}","starred_url":"https://api.github.com/users/nicolassawaya/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nicolassawaya/subscriptions","organizations_url":"https://api.github.com/users/nicolassawaya/orgs","repos_url":"https://api.github.com/users/nicolassawaya/repos","events_url":"https://api.github.com/users/nicolassawaya/events{/privacy}","received_events_url":"https://api.github.com/users/nicolassawaya/received_events","type":"User","site_admin":false},"repo":{"id":107550921,"name":"OpenFermion","full_name":"nicolassawaya/OpenFermion","owner":{"login":"nicolassawaya","id":8076498,"avatar_url":"https://avatars2.githubusercontent.com/u/8076498?v=4","gravatar_id":"","url":"https://api.github.com/users/nicolassawaya","html_url":"https://github.com/nicolassawaya","followers_url":"https://api.github.com/users/nicolassawaya/followers","following_url":"https://api.github.com/users/nicolassawaya/following{/other_user}","gists_url":"https://api.github.com/users/nicolassawaya/gists{/gist_id}","starred_url":"https://api.github.com/users/nicolassawaya/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nicolassawaya/subscriptions","organizations_url":"https://api.github.com/users/nicolassawaya/orgs","repos_url":"https://api.github.com/users/nicolassawaya/repos","events_url":"https://api.github.com/users/nicolassawaya/events{/privacy}","received_events_url":"https://api.github.com/users/nicolassawaya/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/nicolassawaya/OpenFermion","description":"OpenFermion: The Electronic Structure Package For Quantum Computers.","fork":true,"url":"https://api.github.com/repos/nicolassawaya/OpenFermion","forks_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/forks","keys_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/keys{/key_id}","collaborators_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/teams","hooks_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/hooks","issue_events_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/issues/events{/number}","events_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/events","assignees_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/assignees{/user}","branches_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/branches{/branch}","tags_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/tags","blobs_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/git/refs{/sha}","trees_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/git/trees{/sha}","statuses_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/statuses/{sha}","languages_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/languages","stargazers_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/stargazers","contributors_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/contributors","subscribers_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/subscribers","subscription_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/subscription","commits_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/commits{/sha}","git_commits_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/git/commits{/sha}","comments_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/comments{/number}","issue_comment_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/issues/comments{/number}","contents_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/contents/{+path}","compare_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/compare/{base}...{head}","merges_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/merges","archive_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/downloads","issues_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/issues{/number}","pulls_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/pulls{/number}","milestones_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/milestones{/number}","notifications_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/labels{/name}","releases_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/releases{/id}","deployments_url":"https://api.github.com/repos/nicolassawaya/OpenFermion/deployments","created_at":"2017-10-19T13:35:41Z","updated_at":"2017-10-19T13:35:43Z","pushed_at":"2017-10-19T13:53:52Z","git_url":"git://github.com/nicolassawaya/OpenFermion.git","ssh_url":"git@github.com:nicolassawaya/OpenFermion.git","clone_url":"https://github.com/nicolassawaya/OpenFermion.git","svn_url":"https://github.com/nicolassawaya/OpenFermion","homepage":"","size":2309,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"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":"quantumlib:master","ref":"master","sha":"01747a8ecb6af62f3ce5060c3a5a65b08aed6789","user":{"login":"quantumlib","id":31279789,"avatar_url":"https://avatars1.githubusercontent.com/u/31279789?v=4","gravatar_id":"","url":"https://api.github.com/users/quantumlib","html_url":"https://github.com/quantumlib","followers_url":"https://api.github.com/users/quantumlib/followers","following_url":"https://api.github.com/users/quantumlib/following{/other_user}","gists_url":"https://api.github.com/users/quantumlib/gists{/gist_id}","starred_url":"https://api.github.com/users/quantumlib/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/quantumlib/subscriptions","organizations_url":"https://api.github.com/users/quantumlib/orgs","repos_url":"https://api.github.com/users/quantumlib/repos","events_url":"https://api.github.com/users/quantumlib/events{/privacy}","received_events_url":"https://api.github.com/users/quantumlib/received_events","type":"Organization","site_admin":false},"repo":{"id":104403768,"name":"OpenFermion","full_name":"quantumlib/OpenFermion","owner":{"login":"quantumlib","id":31279789,"avatar_url":"https://avatars1.githubusercontent.com/u/31279789?v=4","gravatar_id":"","url":"https://api.github.com/users/quantumlib","html_url":"https://github.com/quantumlib","followers_url":"https://api.github.com/users/quantumlib/followers","following_url":"https://api.github.com/users/quantumlib/following{/other_user}","gists_url":"https://api.github.com/users/quantumlib/gists{/gist_id}","starred_url":"https://api.github.com/users/quantumlib/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/quantumlib/subscriptions","organizations_url":"https://api.github.com/users/quantumlib/orgs","repos_url":"https://api.github.com/users/quantumlib/repos","events_url":"https://api.github.com/users/quantumlib/events{/privacy}","received_events_url":"https://api.github.com/users/quantumlib/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/quantumlib/OpenFermion","description":"OpenFermion: The Electronic Structure Package For Quantum Computers.","fork":false,"url":"https://api.github.com/repos/quantumlib/OpenFermion","forks_url":"https://api.github.com/repos/quantumlib/OpenFermion/forks","keys_url":"https://api.github.com/repos/quantumlib/OpenFermion/keys{/key_id}","collaborators_url":"https://api.github.com/repos/quantumlib/OpenFermion/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/quantumlib/OpenFermion/teams","hooks_url":"https://api.github.com/repos/quantumlib/OpenFermion/hooks","issue_events_url":"https://api.github.com/repos/quantumlib/OpenFermion/issues/events{/number}","events_url":"https://api.github.com/repos/quantumlib/OpenFermion/events","assignees_url":"https://api.github.com/repos/quantumlib/OpenFermion/assignees{/user}","branches_url":"https://api.github.com/repos/quantumlib/OpenFermion/branches{/branch}","tags_url":"https://api.github.com/repos/quantumlib/OpenFermion/tags","blobs_url":"https://api.github.com/repos/quantumlib/OpenFermion/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/quantumlib/OpenFermion/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/quantumlib/OpenFermion/git/refs{/sha}","trees_url":"https://api.github.com/repos/quantumlib/OpenFermion/git/trees{/sha}","statuses_url":"https://api.github.com/repos/quantumlib/OpenFermion/statuses/{sha}","languages_url":"https://api.github.com/repos/quantumlib/OpenFermion/languages","stargazers_url":"https://api.github.com/repos/quantumlib/OpenFermion/stargazers","contributors_url":"https://api.github.com/repos/quantumlib/OpenFermion/contributors","subscribers_url":"https://api.github.com/repos/quantumlib/OpenFermion/subscribers","subscription_url":"https://api.github.com/repos/quantumlib/OpenFermion/subscription","commits_url":"https://api.github.com/repos/quantumlib/OpenFermion/commits{/sha}","git_commits_url":"https://api.github.com/repos/quantumlib/OpenFermion/git/commits{/sha}","comments_url":"https://api.github.com/repos/quantumlib/OpenFermion/comments{/number}","issue_comment_url":"https://api.github.com/repos/quantumlib/OpenFermion/issues/comments{/number}","contents_url":"https://api.github.com/repos/quantumlib/OpenFermion/contents/{+path}","compare_url":"https://api.github.com/repos/quantumlib/OpenFermion/compare/{base}...{head}","merges_url":"https://api.github.com/repos/quantumlib/OpenFermion/merges","archive_url":"https://api.github.com/repos/quantumlib/OpenFermion/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/quantumlib/OpenFermion/downloads","issues_url":"https://api.github.com/repos/quantumlib/OpenFermion/issues{/number}","pulls_url":"https://api.github.com/repos/quantumlib/OpenFermion/pulls{/number}","milestones_url":"https://api.github.com/repos/quantumlib/OpenFermion/milestones{/number}","notifications_url":"https://api.github.com/repos/quantumlib/OpenFermion/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/quantumlib/OpenFermion/labels{/name}","releases_url":"https://api.github.com/repos/quantumlib/OpenFermion/releases{/id}","deployments_url":"https://api.github.com/repos/quantumlib/OpenFermion/deployments","created_at":"2017-09-21T22:10:28Z","updated_at":"2017-10-19T13:34:19Z","pushed_at":"2017-10-19T14:00:03Z","git_url":"git://github.com/quantumlib/OpenFermion.git","ssh_url":"git@github.com:quantumlib/OpenFermion.git","clone_url":"https://github.com/quantumlib/OpenFermion.git","svn_url":"https://github.com/quantumlib/OpenFermion","homepage":"","size":2304,"stargazers_count":27,"watchers_count":27,"language":"Python","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":13,"mirror_url":null,"open_issues_count":6,"forks":13,"open_issues":6,"watchers":27,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/quantumlib/OpenFermion/pulls/63"},"html":{"href":"https://github.com/quantumlib/OpenFermion/pull/63"},"issue":{"href":"https://api.github.com/repos/quantumlib/OpenFermion/issues/63"},"comments":{"href":"https://api.github.com/repos/quantumlib/OpenFermion/issues/63/comments"},"review_comments":{"href":"https://api.github.com/repos/quantumlib/OpenFermion/pulls/63/comments"},"review_comment":{"href":"https://api.github.com/repos/quantumlib/OpenFermion/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/quantumlib/OpenFermion/pulls/63/commits"},"statuses":{"href":"https://api.github.com/repos/quantumlib/OpenFermion/statuses/b5d4f99129ff4a021a3c98f69e6232e0dfed1320"}},"author_association":"NONE"}}
{"actor":{"display_login":"jarrodmcc"}}