diff --git a/test_bmad.ipynb b/test_bmad.ipynb index afb529ea..b8239e39 100644 --- a/test_bmad.ipynb +++ b/test_bmad.ipynb @@ -125,53 +125,58 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 50, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "ssp1h: pipe, l = 0.05, type =\"@1,1.38s3.00\", descrip = \"deferred sextupole\"\n", + "dbsy52d[l]\n", "\n", "######################################\n", - "num_successful: 379 / 14409\n", + "num_successful: 3658 / 14409\n", "--------------------------------------\n", - "num_property: 10\n", - "num_variable: 223\n", - "num_element: 146\n", - "num_line: 0\n", - "num_incomplete_line_begin: 0\n", - "num_incomplete_line_middle: 0\n", - "num_incomplete_line_end: 0\n", + "num_property_assignment = 210\n", + "num_variable_assignment = 1280\n", + "num_element = 2024\n", + "num_line = 49\n", + "num_incomplete_line_begin = 24\n", + "num_incomplete_line_middle = 44\n", + "num_incomplete_line_end = 24\n", + "num_continued_expression = 3\n", "######################################\n" ] } ], "source": [ - "property_pattern = r\"[a-z0-9]+\\[[a-z_]+\\]\\s*=\\s*[a-z0-9\\*\\+\\-\\/\\(\\)\\[\\]\\.\\s]+\"\n", - "variable_pattern = r\"[a-z0-9_]+\\s*=\\s*[a-z0-9\\*\\+\\-\\/\\(\\)\\._]+\"\n", - "element_pattern = r\"[a-z0-9_]+\\:\\s*[a-z]+(\\s*\\,\\s*[a-z0-9]+\\s*=\\s*[a-z0-9_\\\"\\/\\.@]+)*\"\n", + "property_assignment_pattern = r\"[a-z0-9]+\\[[a-z_]+\\]\\s*=.*\"\n", + "variable_assignment_pattern = r\"[a-z0-9_]+\\s*=.*\"\n", + "element_pattern = r\"[a-z0-9_]+\\:.*\"\n", "line_pattern = r\"[a-z0-9_]+\\s*\\:\\s*line\\s*=\\s*\\((\\s*[a-z0-9_]+\\s*\\,)*\\s*[a-z0-9_]+\\s*\\)\"\n", "incomplete_line_pattern_begin = r\"[a-z0-9_]+\\s*\\:\\s*line\\s*=\\s*\\((\\s*[a-z0-9_]+\\s*\\,)*\"\n", "incomplete_line_pattern_middle = r\"(\\s*[a-z0-9_]+\\s*\\,)*\"\n", "incomplete_line_pattern_end = r\"(\\s*[a-z0-9_]+\\s*\\,)*\\s*[a-z0-9_]+\\s*\\)\"\n", + "coninued_expression_pattern = (\n", + " r\"[\\+\\-\\*\\/]?[a-z0-9_\\[\\]]+(\\s*[\\+\\-\\*\\/]\\s*[a-z0-9_\\[\\]]+)+(\\s*[\\+\\-\\*\\/]\\s*\\&)?\"\n", + ")\n", "\n", "num_successful = 0\n", - "num_property = 0\n", - "num_variable = 0\n", + "num_property_assignment = 0\n", + "num_variable_assignment = 0\n", "num_element = 0\n", "num_line = 0\n", "num_incomplete_line_begin = 0\n", "num_incomplete_line_middle = 0\n", "num_incomplete_line_end = 0\n", + "num_continued_expression = 0\n", "for line in lines:\n", - " if re.fullmatch(property_pattern, line):\n", + " if re.fullmatch(property_assignment_pattern, line):\n", " num_successful += 1\n", - " num_property += 1\n", - " elif re.fullmatch(variable_pattern, line):\n", + " num_property_assignment += 1\n", + " elif re.fullmatch(variable_assignment_pattern, line):\n", " num_successful += 1\n", - " num_variable += 1\n", + " num_variable_assignment += 1\n", " elif re.fullmatch(element_pattern, line):\n", " num_successful += 1\n", " num_element += 1\n", @@ -187,6 +192,9 @@ " elif re.fullmatch(incomplete_line_pattern_end, line):\n", " num_successful += 1\n", " num_incomplete_line_end += 1\n", + " elif re.fullmatch(coninued_expression_pattern, line):\n", + " num_successful += 1\n", + " num_continued_expression += 1\n", " else:\n", " print(line)\n", " break\n", @@ -195,28 +203,29 @@ "print(\"######################################\")\n", "print(f\"num_successful: {num_successful} / {len(lines)}\")\n", "print(\"--------------------------------------\")\n", - "print(f\"num_property: {num_property}\")\n", - "print(f\"num_variable: {num_variable}\")\n", - "print(f\"num_element: {num_element}\")\n", - "print(f\"num_line: {num_line}\")\n", - "print(f\"num_incomplete_line_begin: {num_incomplete_line_begin}\")\n", - "print(f\"num_incomplete_line_middle: {num_incomplete_line_middle}\")\n", - "print(f\"num_incomplete_line_end: {num_incomplete_line_end}\")\n", + "print(f\"{num_property_assignment = }\")\n", + "print(f\"{num_variable_assignment = }\")\n", + "print(f\"{num_element = }\")\n", + "print(f\"{num_line = }\")\n", + "print(f\"{num_incomplete_line_begin = }\")\n", + "print(f\"{num_incomplete_line_middle = }\")\n", + "print(f\"{num_incomplete_line_end = }\")\n", + "print(f\"{num_continued_expression = }\")\n", "print(\"######################################\")" ] }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'ssp1h: pipe, l = 0.05, type =\"@1,1.38s3.00\", descrip = \"deferred sextupole\"'" + "'dbsy52d[l]'" ] }, - "execution_count": 28, + "execution_count": 51, "metadata": {}, "output_type": "execute_result" } @@ -227,22 +236,23 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 52, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 29, - "metadata": {}, - "output_type": "execute_result" + "ename": "AttributeError", + "evalue": "'NoneType' object has no attribute 'group'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[52], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m re\u001b[39m.\u001b[39;49mmatch(coninued_expression_pattern, line)\u001b[39m.\u001b[39;49mgroup(\u001b[39m0\u001b[39m)\n", + "\u001b[0;31mAttributeError\u001b[0m: 'NoneType' object has no attribute 'group'" + ] } ], "source": [ - "re.match(element_pattern, line)" + "re.match(coninued_expression_pattern, line).group(0)" ] }, {