From 51549de7b5f91909ced1ab26efc48191ea64ee3e Mon Sep 17 00:00:00 2001 From: Jeff Gostick Date: Sun, 4 Feb 2024 19:15:52 -0500 Subject: [PATCH] added tests, update notebook --- .../reference/cylindrical_pillars_mesh.ipynb | 47 ------------ porespy/generators/_micromodels.py | 31 +++++--- test/unit/test_generators.py | 75 +++++++++++++++++++ 3 files changed, 95 insertions(+), 58 deletions(-) diff --git a/examples/generators/reference/cylindrical_pillars_mesh.ipynb b/examples/generators/reference/cylindrical_pillars_mesh.ipynb index 64d09fc1e..f146eae97 100644 --- a/examples/generators/reference/cylindrical_pillars_mesh.ipynb +++ b/examples/generators/reference/cylindrical_pillars_mesh.ipynb @@ -238,53 +238,6 @@ "ax[1].imshow(im2, origin='lower', interpolation='none')\n", "ax[1].set_title('truncate=True');" ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## `seed`\n", - "Initializes the random number generator at a specified state so that identical realizations can be obtained if desired:" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAB68AAAKuCAYAAAD+all6AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAB7CAAAewgFu0HU+AADEgklEQVR4nOzde7xdZX0n/m9CIFFuGiRIEJjaGkirTgTRRKpcbfqytGWKLwHtABaF2ulY9ScUKEIABxXxwjjTKUqVqIixVeiM1oYhiIyQaAikgg0BLyAQMJFwjQmJyfn9kZ6dfU72OWdf1uVZa73fr1der3NO9n7W7VnPej57PftZk4aGhoYCAAAAAAAAAEo0uewVAAAAAAAAAAA3rwEAAAAAAAAonZvXAAAAAAAAAJTOzWsAAAAAAAAASufmNQAAAAAAAAClc/MaAAAAAAAAgNK5eQ0AAAAAAABA6dy8BgAAAAAAAKB0bl4DAAAAAAAAUDo3rwEAAAAAAAAonZvXAAAAAAAAAJTOzWsAAAAAAAAASufmNQAAAAAAAAClc/MaAAAAAAAAgNK5eQ0AAAAAAABA6dy8BgAAAAAAAKB0bl4DAAAAAAAAUDo3rwEAAAAAAAAonZvXAAAAAAAAAJTOzWsAYFwLFiyISZMmxaRJk2LBggVlrw4AAABUilwNAN1z8xoAqLzly5fHX/zFX8Rv//Zvx9577x177bVX/PZv/3b8xV/8RSxfvrzs1QMAAICkydUApGJK2SsAANCvzZs3xznnnBOf+cxnYmhoaMT/rVq1KlatWhV/93d/F+9973vj4x//eOy6664lrSkAAACkR64GIDVuXgMAlfXud787vvjFL7Z+/83f/M2YO3duDA0NxdKlS+NnP/tZDA0NxVVXXRXPPvts/P3f/32JawsAAABpkasBSI1pwwGASvr85z/fCtiTJ0+OT33qU3H//ffHl7/85bjuuuvixz/+cXzyk5+MyZMn7/R6AAAAaDq5GoAUuXkNAFTO888/HwsWLGj9fu6558b73ve+VqCO2B683//+98c555zT+ttFF10UmzdvLnJVAQAAIDlyNQCpcvMaAKic//2//3c8/PDDERGx9957x4c+9KExX3vRRRfF3nvvHRERDz30UHzrW98qZB0BAAAgVXI1AKly8xoARnn44YfjkksuiTe96U2x3377xdSpU2PPPfeM3/iN34jXve518c53vjOuv/76+OUvfzluOUNDQ3HDDTfE6aefHrNmzYq99947pk2bFgceeGCceOKJsXDhwvj1r3/d87pddtll8cY3vjFmzpwZU6dOjenTp8drXvOa+OAHPxj3339/T+X94Ac/iHe+853xG7/xG/GCF7wgXvrSl8aRRx4Zn/nMZ+K5557rqawi3Xjjja2fTz755HjhC1845mtf+MIXxtve9rbW7zfccEOeqwYAANB4crVcDQD9mjQ0NDRU9koAQCquvvrqeP/73x8bN26c8LVHHnlkfO973+v4fz/84Q/j9NNPj5UrV45bxiGHHBLf+MY34rd/+7fHfd22bdtiwYIF8fGPfzw2bdo05uumTJkS5557bnz4wx+OSZMmjVvmX//1X8eVV14Z27ZtG3Pdbrjhhli0aFFccsklERFx8cUXj5hWrCwzZ86Mxx57LCIivvKVr8Spp5467uu/8pWvxDve8Y6IiDjggAPikUceyX0dAQAAmkiuHrlucjUA9GZK2SsAAKm48cYb48///M9bv++1114xb968eNnLXhZTpkyJp59+Ou6///649957x32+02233RZ/+Id/GM8880xEbA++r33ta+OQQw6JXXfdNR588MH43ve+F5s2bYrVq1fHG97whli6dGnMnj27Y3lbt26Nk08+Ob7+9a+3/rb//vvH61//+pgxY0Y899xz8f3vfz9+8pOfxK9//eu4/PLLY926dfHZz352zHU855xz4sorr2z9vueee8YxxxwTM2bMiEcffTS+853vxOrVq+Mtb3lLnHjiid3uwkI8/fTTrYAdEXHYYYdN+J721zz66KPxzDPPxF577ZXL+gEAADSVXC1XA8Cg3LwGgH/XPvL5L//yL+NjH/tYx2mznnvuufj2t78dK1as2On/Hn/88Xjb297WCtinnnpqfPzjH48DDjhgxOt+8YtfxHve85644YYb4umnn46TTz457r777thll112KvOSSy5pBewZM2bEZz7zmXjrW98akyePfPrHP/7jP8a73vWuePrpp+Nzn/tcHH/88SOm9Rp26623xic+8YnW729/+9vjf/2v/zUidK5duzb+83/+z3HTTTfF3/7t33baXTv5y7/8y65e16199tmnNTK93erVq0f8ftBBB01Y1ujXrF69Oo444ojBVhAAAIAR5Gq5GgAGZdpwAIjtwXnPPfeMiIgDDzwwHnrooQmnB+vkzDPPjM9//vMREfGud70rPve5z4352q1bt8ab3/zm+M53vhMREV/96lfj5JNPHvGaBx98MH7rt34rtm7dGnvuuWf84Ac/iEMPPXTMMm+55ZY47rjjIiJi9uzZ8aMf/Win7RgekR4R8Xu/93vx7W9/e6fAHhGxadOmmDdv3ogp2sab3qyf/TWegw8+OB588MGd/v7tb3873vKWt0TE9lH8Tz/9dFfl7bXXXvHss89GRMS//Mu/xPz58zNbVwAAgKaTq+VqAMjCzldUAGig4RHdEdtHJvcTGNetWxfXXXddRETsvffe8alPfWrc1++yyy5x+eWXt34ffm+7q666KrZu3RoREeeee+64ATsi4thjj22Fx1WrVsXdd9894v//7d/+rRWwh8vvFLAjIqZNmzZiJHkqnnvuudbPL3jBC7p+X/tr28sAAABgcHL1zuRqAOidm9cAEBH77rtvK4Tdc889cdttt/Vcxs033xzPP/98RESccMIJsccee0z4nte//vWtKdS+973v7fT///zP/9z6+ZRTTulqPY499tjWz6PLHB6NHhFxxBFHTBjajznmmHjZy17W1XKHhoYy/ddpdHjE9pHrw3bbbbeu1i0iYurUqa2fN27c2PX7AAAAmJhc3ZlcDQC98cxrAIiIXXfdNf7Tf/pP8ZWvfCW2bt0axx9/fLz1rW+Nt771rXHUUUfFPvvsM2EZ7SOv77///q6fVTU8Gv3JJ5+MDRs2xO677x4REU888UTcf//9rdd96lOf6mrk+r/927+1fn744YdH/F/7VGWvf/3ru1q317/+9fHII49M+NqiTJs2rfXz5s2bu37f8AcgEb2NLAcAAGBicvXY6yZXA0D33LwGgH/3qU99Ku6666647777YsuWLXH99dfH9ddfH5MmTYpDDz003vjGN8bv/d7vxR/8wR+MCHrD1qxZ0/p5+fLlsXz58p7X4cknn2yF7Mcee2zE//3t3/5tX+W1W7duXevngw46qKsyDjzwwJ6Xm6f2kfe9jPRuf203o/cBAADojVzdmVwNAN0zbTgA/LsZM2bE8uXLY8GCBTFz5szW34eGhmLVqlXx2c9+Nt761rfGzJkz46Mf/WjrmVnDnn766YHX4de//nVu5UWMfCbV8LRqExkO/aloH63/zDPPjJjubCy/+tWv4tlnn239Pn369FzWDQAAoMnk6s7kagDonm9eA0CbPfbYIy6++OL40Ic+FHfddVfcdttt8f/+3/+L733ve/HLX/4yIraPuj7//PNj2bJlccMNN7SmHGsPo5/+9Kfjr/7qrwZal/byXvSiF+002rsf7SOjf/WrX3X1ng0bNnT1um6nc+vWPvvsE5dccslOfz/kkENG/P7QQw/t9LfRfv7zn49bBgAAANmQq3cmVwNA99y8BoAOJk+eHK997Wvjta99bXzgAx+Ibdu2xdKlS+PKK6+MG2+8MSIi/umf/im+/vWvx1vf+taIiNhvv/1a73/ggQcGXof28p566qlYt25d7LvvvgOV2f7+0cFzLKOf7zWW//k//2df6zSWgw8+uGPI3nvvvWP//fdvTf929913Txia77rrrtbPBxxwQOy1116ZrisAAAAjydU7yNUA0D3ThgNAFyZPnhxHHnlkfOMb34j58+e3/v6///f/bv38+te/vvXz4sWLB17m/vvvP+L5WTfddNPAZc6ZM6f187JlyyZ8/dDQUHz/+98feLlZO+aYY1o/33rrrRO+/rvf/W7r52OPPTaPVQIAAGAccnVa5GoAUuXmNQD0YNKkSfEHf/AHrd9/8YtftH6eP39+TJmyfVKTH//4x/HNb35z4OW1L+vTn/50DA0NDVReezi9884747777hv39bfccks88sgjXZU9NDSU6b8HH3xwzGWdeOKJrZ8XLVoUGzduHPO1GzdujK997Wsd3wsAAECx5OqxydUA4OY1AERExLPPPhubN2/u6rXt04K1Txd2wAEHxJ/+6Z+2fv/zP//zePTRR7sqc9u2bbFu3bqd/v7//X//X+yyyy4RsT0Ud5ruayyPP/74Tn/77d/+7Zg7d27r9/e9732xbdu2ju/ftGlTfPCDH+x6eUX6oz/6o3jZy14WEdunfvtv/+2/jfnayy67LJ566qmI2D5l2gknnFDEKgIAADSKXL0zuRoAeufmNQBExIoVK+Lggw+Oiy++OH70ox91fM3WrVvjuuuui8985jOtv73lLW8Z8ZrLL7889t9//4iIePTRR+OII46If/zHfxwzyD766KNx1VVXxaGHHhqLFi3a6f9/8zd/My688MLW75dcckmcccYZY47a3rp1a9x8881x2mmnxWGHHdbxNe2BdPHixXHaaafFM888M+I1a9eujRNPPDFWrlwZu+22W8dyyjR16tQRHzh89KMfjc985jMjRtBv27YtrrrqqvjYxz7W+tull16a5PYAAABUnVwtVwNAFiYNDTpPCgDUwK233jpi6q/99tsvXvOa18RLX/rSmDJlSjz++OOxYsWKeOyxx1qveeMb3xi33nprTJ48cizY8uXL4y1veUv88pe/bP1txowZ8frXvz7222+/2LZtWzzxxBNx7733xk9/+tNWMPzMZz4Tf/mXf7nTug0NDcU73/nOWLhwYetvu+yyS7zmNa+JQw89NPbYY4945pln4qGHHop//dd/jeeeey4iIvbZZ58R69DuAx/4QHzqU59q/b7nnnvGscceGzNmzIhHH300brnllti0aVP8h//wH+KP//iP46qrroqIiIsvvjgWLFjQ7W7N3WmnnRZf+tKXWr//1m/9VsydOzeGhoZi6dKl8dOf/rT1f+985zvj85//fBmrCQAAUHtytVwNAFmYUvYKAEAKXvCCF8SUKVPi17/+dURsf+bWv/zLv4z5+re+9a3x+c9/fqeAHRFxxBFHxJ133hlnnnlmLFmyJCK2j7j+P//n/4xZ3n777ReveMUrOv7fpEmT4tprr43Xvva1cdFFF8WTTz4ZW7dujTvvvDPuvPPOMd9z5JFHjrm8T3ziEzF58uT45Cc/GUNDQ/Hss8/GP/3TP414zSte8Yq48cYbRzzXKjXXXHNN7L333vE//+f/jKGhofjxj38cP/7xj0e8ZtKkSfFf/+t/jSuvvLKktQQAAKg/uVquBoAs+OY1APy7J598Mm6++eb43ve+F3fffXf85Cc/iSeeeCK2bt0ae+21V/zmb/5mzJ07N/70T/80Xve613VV5tKlS+Mf/uEf4rbbbouHH344nnzyyZgyZUrss88+8YpXvCJe+9rXxu/93u/F0UcfHVOmTDym7Nlnn40vfelL8X//7/+Nf/3Xf41169bFpk2bYs8994yXvexl8Tu/8ztx9NFHx1ve8pY48MADJyzv+9//fvzt3/5t3HrrrfGLX/yitZ1ve9vb4swzz4y99torFixY0JpKLLUR4sN+8IMfxOc///m49dZbW89DO+CAA+Loo4+OM888M4444oiS1xAAAKD+5Gq5GgAG5eY1AAAAAAAAAKXbeU4WAAAAAAAAACiYm9cAAAAAAAAAlM7NawAAAAAAAABK5+Y1AAAAAAAAAKUr/eb1+9///pg0aVLr33/4D/+hp/cvWbIkTjvttJg1a1bsvvvuMX369Hj1q18d55xzTtx33319rdOqVavinHPOiVe/+tUxffr02H333WPWrFlx+umnx5IlS/oqEwAAAPIgVwMAAFAXk4aGhobKWvgPfvCDmDdvXmzbtq31t4MPPjgefPDBCd/7zDPPxFlnnRWLFi0a8zW77rprXHLJJXH++ed3vU6XX355LFiwILZs2TLma0499dS4+uqrY8899+y6XAAAAMiaXA0AAECdTClrwVu2bIl3vetdIwJ2L+/9kz/5kxGjtV/5ylfG4YcfHhs3bozbbrstHn/88diyZUtccMEFsWXLlrjooosmLPeiiy6Kyy67rPX7zJkz43d/93dj2rRpsWLFivjRj34UERHXX399PPHEE/Gtb30rpkwpbRcCAADQYHI1AAAAdVPatOEf+9jH4p577omIiLe//e09vfeyyy5rBexp06bF9ddfH/fcc09ce+21sWjRonjooYfinHPOab3+4osvju9+97vjlrlkyZIRAfvcc8+Nn/3sZ7Fo0aJYuHBh3HvvvfGVr3wlpk2bFhERN910U1x++eU9rTcAAABkRa4GAACgbkqZNvy+++6LOXPmxPPPPx/veMc74vjjj493vvOdETHx9GZr166Nl7/85bFhw4aIiPi7v/u7OPvsszu+9pRTTmlNfzZv3ry44447xiz39a9/ffzgBz9ove/666/v+Lq/+7u/i/e85z0REbHnnnvGT3/603jJS14y/gYDAABAhuRqAAAA6qjwb14PDQ3Fu971rnj++efjxS9+cXzyk5/s6f0LFy5sBexZs2bFWWedNeZrr7jiipg8efsmLl26NO6+++6Or1u+fHkrYO+yyy5xxRVXjFnm2WefHa94xSsiIuLZZ5+NL33pSz2tPwAAAAxCrgYAAKCuCr95/b/+1/+K22+/PSIiPv7xj8eMGTN6ev+NN97Y+vmMM86ISZMmjfnagw46KI477rjW7zfccMOEZR533HFx4IEHjlnmpEmT4owzzpiwTAAAAMiDXA0AAEBdFXrz+pFHHonzzjsvIiLe+MY3xp/92Z/19P5NmzbFsmXLWr8fffTRE76n/TW33HJLx9d85zvf6bvMO+64I55//vkJ3wMAAACDkqsBAACosylFLuw973lPPPvss7HbbrvF1VdfPe7o7k5W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Pz4iIq677ro48MAD49JLL41dd9219ZpFixbF+973vtbvH/zgB7sK2ECaqnDRz+p5eHlvaxnPLanC8StC+37o9TjYhwCQPrkaSFkVMoVcPfbyqnD8iiBXA0Bacr15HRFx5513xumnnx5TpkyJQw89NA455JB48YtfHJMmTYonnngifvjDH8aPf/zjEe856aST4uKLLx6zzA996ENx++23xy233BIbN26Mk08+OT784Q/HYYcdFps2bYrbbrttxDO+LrnkkjjqqKPGXc/jjjsuLrzwwvjwhz8cEREf/ehH44tf/GK86U1viqlTp8aKFSvi3nvvbb3+zW9+c1xwwQX97BIAAADomlwNAABAU+R683rq1Kmtn3/961/HvffeOyKojrbnnnvGggUL4q/+6q9il112GfN1u+66a3zjG9+Is846K772ta9FRMQ999wT99xzz06vW7BgQddh+NJLL42pU6fGpZdeGlu2bIk1a9a0pltrd8opp8TVV18dU6bkfu8faKA8RlsXOVqc8ji2kK2yposaXq5zGoiQqwH6IVfTL8cWsiVXA/3INSW+5z3vieOOOy5uvvnm+P73vx8/+tGP4uc//3k89dRTERGx1157xf777x9z5syJ448/Pk466aTYY489uip77733jkWLFsW73/3uWLhwYSxdujQee+yx2HXXXePAAw+M+fPnx5lnnhmzZ8/uen0nTZoUF154YZx00klxzTXXxE033RQPP/xwbNmyJfbff/+YN29enH766a1p0ACyVFRnLsupwcp8DogpzgCAJpCrAbonV/e+bLkaAEhN7kOcZ82aFbNmzYq/+Iu/yKX8448/PvPQO3v27PjEJz6RaZkAAADQD7kaAACApphc9goAUPxI6zJHdgOkbv7MOUm0kymsAwBAVcjVAOmQq4FBuHkNAAAAAAAAQOlynzYcgPGVNQJweLmebwXZ6OdcTun8q/r6AwDQXHI11EPVc2nV1x8gFb55DQAAAAAAAEDpfPMaAApkFG79DPItj/b3lnGcB/2Gim+aAAAARZOr60euVkcB2rl5DVCSsqY1G23+zDk6yDnLKshECDMpyfocLupczKPtUUcBACiDXN0ccnU9ydWdy1RHgaYzbTgAAAAAAAAApfPN64pavGZlaaNLex35Nfz6Mta3DqPUqnSsy2K6KFJW1VHE3Rhk21LZhn7l1S7n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O+20mDVrVuy+++6tMs8555y47777+ipz1apVcc4558SrX/3qmD59euy+++4xa9asOP3002PJkiV9lZm3vC78qY1kScn8mXPsdyBJeXzoCinL+pqszpenjv2rPLcpCymvGyPJ1fmrW/tTBXVs94F6kKtpGrm6PurYv5Krmym3b17ffffd8ed//ufxgx/8oOP/P/nkk/Hkk0/GPffcE5/97Gfj6KOPjoULF8ZBBx00YdnPPPNMnHXWWbFo0aIRf//Vr37VKvOqq66KSy65JM4///yu1/nyyy+PBQsWxJYtW0b8/YEHHogHHnggvvjFL8app54aV199dey5555dlwsAAAC9kqsBAABomtxuXq9evXqngD1r1qx45StfGS95yUviqaeeijvuuCMeeeSRiIi49dZbY968efH//t//i5e//OVjlrtly5b4kz/5kxGjtV/5ylfG4YcfHhs3bozbbrstHn/88diyZUtccMEFsWXLlrjooosmXN+LLrooLrvsstbvM2fOjN/93d+NadOmxYoVK+JHP/pRRERcf/318cQTT8S3vvWtmDKl3FnXU35GSJ3Z71Avw+dZ2aPksjjf8x5Z2cQ2qarPEWsKdb4+iupfOaZUjVydP/muHPY71Itc3X25TWyT5Oq0qfP1IVdTJ7lPG/5bv/Vb8dGPfjQeeeSRWL16dXz961+Pq6++OhYtWhQPPfRQXHPNNfHCF74wIiLWrFkT73jHO2JoaGjM8i677LJWwJ42bVpcf/31cc8998S1117bKvOcc85pvf7iiy+ecPq0JUuWjAjY5557bvzsZz+LRYsWxcKFC+Pee++Nr3zlKzFt2rSIiLjpppvi8ssv73ufAECWipo+p+wPImCYOk8VVKX+VGU9m06uBoB8yRg0jTpPFVSl/lRlPaskt5vX+++/f3zhC1+I++67L/76r/86DjjggJ0XPnlynHnmmfHlL3+59bdly5bFTTfd1LHMtWvXxic/+cnW75/+9KfjlFNOGfGa3XbbLa644oo4+eSTW3+baIqzCy64oPXzKaecEh/72Mdit912G/GaU089NT71qU+1fr/yyivjl7/85bjlAgAAQL/kagAAAJomt5vXRx11VJxxxhmxyy67TPja//Sf/lO87nWva/3+rW99q+PrFi5cGBs2bIiI7VOlnXXWWWOWecUVV8Tkyds3b+nSpXH33Xd3fN3y5ctb07DtsssuccUVV4xZ5tlnnx2veMUrIiLi2WefjS996UvjbFW+ih7JYeTIdvY7ZRgeCdnLP3pX1pQ3i9esHGjZ2iWaRp2vl6KvW66TVI1cnS/XlHLY75RBri6GXJ3m8mA0db5e5GrqKPdpw7t15JFHtn5+8MEHO77mxhtvbP18xhlnxKRJk8Ys76CDDorjjjuu9fsNN9wwYZnHHXdcHHjggWOWOWnSpDjjjDMmLJMdiu60et5Ccw0aVLJcjywMGph1IgCI0BeDppGr60lbTlHk6s7vB6DZ9MWgeMncvG4PzFu3bt3p/zdt2hTLli1r/X700UdPWGb7a2655ZaOr/nOd77Td5l33HFHPP/88xO+B6AXWYZjYbs3VeqMlnls1SvKos4DjE+uBthOri6PXJ3+smk2dR6ogmRuXt9zzz2tnzuN0l69enVs27YtIrYH8te85jUTlnnYYYe1fl61alXH17T/vf313ZS5devWuP/++yd8DwAAAORNrgYAAKDqppS9AhERDz/88IgR3Mcff/xOr1m9enXr5xkzZsS0adMmLPeggw5q/bx+/fpYt25d7Lvvvq2/rV27Np566qnW7wcffPCEZU6bNi323XffWLduXURE3HffffGqV71qwvd1cu99m+PIEx7u6717xJy+3leG4RGQeY6sMpUGwxavWVnaKL5B62Ge6z1/5pzMzpMizuleZdkGFLV92i2gKEVcG7Vp9Jtr7r1vc8Zr0lxyde/k6s7LALl67LLl6t7K0gcF6kKupghy9Q5J3Lx+//vf35rS7KCDDoo//MM/3Ok1TzzxROvn/fbbr6tyX/rSl474ff369SNCdnuZvZY7HLLXr1/f1Xs6eW7DUCxb0d/0aMeP/ViyZOXVwGvUqYMiAuvwMpwz3WnfT1kdH/t+uyp/GAZVlecHiM4rIqLvXEN25OreydUjy4Wqk6vTI1fnR66G4snV5E2u3qH0acMXLlwYX//611u/f+QjH4mpU6fu9Lrnnnuu9fMLXvCCrsoe/br2Mjr93k+5o8sAAACAIsnVAAAA1EWp37y+884748///M9bv5988snx9re/veNrN23a1Pp5t91266r80WF948aNY5bZb7mjy2R8WY8KNCKJToqefivlac3GWl4W506Zo3zb16HI5fSzvdopICVZtt3aN0iDXN08cjVFkKsnXp5c3d9y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L17U119/rc8//1yXLl0K2Bf1gnCRq52JXI1gkasRCXI1wkWuRk3I1QgWuToMMT897nL9+/f3uirriy++8Pr7qVOnjJycHLNNRkaG8d1331kzWASt8gqr5s2bGyNGjDBmzZplrFq1ynjooYfMdRnqFeKPPvqoOW1qaqqxdOlSr78XFxcb06dP97rKZd26dQH7zM3N9Wr/m9/8xiguLvZq89prrxmpqalmm1mzZoU0bgS2dOlSQ5LRrl07449//KNx+PDham0uX75svPLKK16fOsjOzjbKy8v99ku9ONezzz5r/O1vfzO+/fZbv22OHTtmjB492mt9/fvf//bbnnpxn9mzZ5vL/Y477gjpCnHqxbk8rxCfMGFCVPqkXpytsLDQaNu2rbmce/bsaXz88cc+2547d85YtmxZtRrwRL0gXORqZyJXI1jkaoSKXI1oIFfDF3I1QkWuDg8nr2No5cqV5opMTk42duzY4bPd+fPnvYr3t7/9bZxHilAdO3bM5y2oHnvssbBC9okTJ4y0tDRz2pdfftlvW8/bQfTt2zdgv5631Ro7dqzfdi+99JLZrmHDhsapU6eCHjsCW7dunbFw4UKjrKysxrYrVqzw2km88847PttRLzAMwygvLzcGDhxoroshQ4b4bEe9uE9eXp6RkpJiSDLGjx/vFaxqCtnUi7NFO2RTL853zz33mMu4f//+RlFRUdh9US8IF7naucjVCBa5GrFCroY/5Gr4Q65GqMjV4eHkdQwNHz7cXJG/+MUvArb9xz/+YbbNyMgwSktL4zRKRFO4IfuZZ54xp2vfvn3AK4MPHjzo9V0r27dv99nuk08+MdvUqVPHyM/P99tneXm5cc0115jt//SnPwU9dkSX547il7/8pc821Asqvfrqq+Z6aNy4sc821Iu7lJeXG9dff70hyWjUqJFx4sSJkEI29eJs0Q7Z1IuzffbZZ16h9NChQxH1R70gXORq9yFXI1LkaoSCXI2qyNUIhFyNUJCrw5coxMT58+e97jk/adKkgO1vv/12NWzYUJJ05swZrV+/Pqbjg7288cYb5uOJEycqISHBb9tWrVp5fZfG66+/XmOfOTk5atmypd8+ExISNHHixBr7ROxdf/315uMDBw74bEO9oFKzZs3Mx+fOnfPZhnpxl5deekkff/yxJOnZZ5/1qpFgUC8IBfXibC+//LL5ePLk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Qa4GuTp8nLyOobfffttcicnJycauXbt8tisqKjLatWtntp0xY0acR4poCTdknzhxwkhLSzOnXbBggd+248aNM9v17ds3YL+9e/c2244fP95vu/nz55vtGjZsaJw6dSrosaNmZWVlxu23324u46SkJOPNN98Muz/qxbkKCgqCblteXm6MHTvW6x83p0+frtaOekEoIZt6ca5z584F3XbFihVGQkKCuS6eeuopn+2oF2f75ptvjLp165rLePny5X7bbty40UhMTDTbvvHGG9XaUC8IF7nafcjV8IVcjWCRqxEL5GoYBrkaoSNXh4+T1zF2ww03mCuzdevWxo4dO7z+fvr0aWPIkCFmm4yMDOO7776zZrCIWLgh2zAM49FHHzWnrVevnvGvf/3L6+/FxcXGww8/bLaRZKxbty5gn7m5uV7tZ8yYYZSUlHi1WbZsmVGvXj2zzaxZs0IaNwIrLy83Jk6caC7fxMREY+nSpRH3S70405///GejV69exuLFi43vv//eb7svvvjCGDp0qNf6+v3vf++3PfXibqGEbMOgXpxq4cKFRp8+fYwlS5b43b6cPXvWeOKJJ4ykpCRzPbRs2dI4f/68336pF2d76KGHzGVcv359n0F77dq1RpMmTcx22dnZRnl5uc/+qBeEi1ztLuRqVEWuRijI1YgFcjUMg1yN8JCrw5NgGIYhxMzhw4fVp08f87tTEhMTNWDAALVt21anTp1Sbm6uLly4IElKSkrSO++8o5ycHCuHjCANHz5cR48e9frd8ePHdeLECUlSWlqa2rVrV226VatWqUWLFtV+X1paqmHDhmnt2rXm77p27aqePXvq0qVLWr9+vdd38MyaNUszZ86scZyPPvqonnzySfN5ixYt1L9/f6WkpGjbtm3atWuX+bchQ4Zo1apVSkpKqrFfBOfFF1/U1KlTzefXXHONbrrppqCmbdy4sWbNmuXzb9SLMz333HOaNm2apIp9QseOHdWhQwc1atRICQkJKigo0I4dO/TNN994TTdq1CgtW7bM77qgXtxt0aJFmjRpkiQpKytLBw4cCNieenEmzzqoW7euOnXqpA4dOig9PV1lZWXKz8/Xpk2bzONSSWrUqJHWr1+vLl26+O2XenG24uJiDRkyRBs2bDB/16lTJ/Xu3Vt16tTRjh07tG3bNvNvmZmZ2rJli1q2bOmzP+oF4SJXOxe5GsEgVyMU5GrEArkaErka4SFXhymmp8ZhGIZh5OXlGd27d/e6cqHqT9OmTY23337b6qEiBFlZWQHXqb+f/fv3++2zsLDQGD16dMDp69at6/c2I76Ul5cbs2fP9ro9ha+fsWPHBrwiFeHx/NRAqD81XclJvTjPiy++GFKNNGzY0Jg3b55RVlZWY9/Ui3uFeoW4YVAvTuRZB8H8DBo0yDhw4EBQfVMvzlZYWOh1uzF/Pz/+8Y+N/Pz8oPqjXhAOcrUzkasRDHI1QkGuRiyQq2EY5GqEj1wdOj55HSclJSVatmyZli5dqt27d+vEiRNKT09X27Ztdeutt2ry5Mlq0qSJ1cNECFq3bq2DBw+GPN3+/fvVunXrgG1yc3O1ePFibdq0SceOHVPdunXVsmVLDR06VD//+c/VqVOnkF83Ly9Pr7zyit577z0dOnRIpaWlyszMVN++fTVhwgQNHjw45D5Rs8cff9zvVd41CeZKTol6cZqvvvpKubm52rJli3bv3q38/HwVFhZKkq644gplZmaqe/fuGjx4sEaNGqUGDRqE1D/14j6hXiHuiXpxjuLiYm3dulWbNm3Spk2btG/fPhUUFKigoEDl5eVKT0/XD3/4Q/Xt21djx45Vr169Qn4N6sXZ1q9fr1dffVUfffSRjhw5osuXL6t58+bKzs7W6NGjNXLkSCUkJATdH/WCcJCrnYdcjWCQqxEqcjWijVwNiVyNyJGrg8fJawAAAAAAAAAAAACA5RKtHgAAAAAAAAAAAAAAAJy8BgAAAAAAAAAAAABYjpPXAAAAAAAAAAAAAADLcfIaAAAAAAAAAAAAAGA5Tl4DAAAAAAAAAAAAACzHyWsAAAAAAAAAAAAAgOU4eQ0AAAAAAAAAAAAAsBwnrwEAAAAAAAAAAAAAluPkNQAAAAAAAAAAAADAcpy8BgAAAAAAAAAAAABYjpPXAAAAAAAAAAAAAADLcfIaAAAAAAAAAAAAAGA5Tl4DAAAAAAAAAAAAACzHyWsAAAAAAAAAAAAAgOU4eQ0AAAAAAAAAAAAAsBwnrwEAAAAAAAAAAAAAluPkNQAAAAAAAAAAAADAcpy8BgAAAAAAAAAAAABYjpPXAAAAAAAAAAAAAADLcfIaAAAAAAAAAAAAAGA5Tl4DAAAAAAAAAAAAACzHyWsAAAAAAAAAAAAAgOU4eQ0AAAAAAAAAAAAAsBwnrwEAAAAAAAAAAAAAluPkNQAAAAAAAAAAAADAcv8H8RkNtYp5Sv8AAAAASUVORK5CYII=", - "text/plain": [ - "
" - ] - }, - "metadata": { - "image/png": { - "height": 343, - "width": 983 - } - }, - "output_type": "display_data" - } - ], - "source": [ - "fig, ax = plt.subplots(1, 2, figsize=(10, 5))\n", - "np.random.seed(0)\n", - "im1 = ps.generators.cylindrical_pillars_mesh(\n", - " shape=[401, 601],\n", - " seed=0,\n", - ")\n", - "im2 = ps.generators.cylindrical_pillars_mesh(\n", - " shape=[401, 601], \n", - " seed=0,\n", - ")\n", - "\n", - "ax[0].imshow(im1, origin='lower', interpolation='none')\n", - "ax[0].set_title('seed=0')\n", - "ax[1].imshow(im2, origin='lower', interpolation='none')\n", - "ax[1].set_title('seed=0');" - ] } ], "metadata": { diff --git a/porespy/generators/_micromodels.py b/porespy/generators/_micromodels.py index 9dd6a0021..4b9bf4843 100644 --- a/porespy/generators/_micromodels.py +++ b/porespy/generators/_micromodels.py @@ -32,12 +32,15 @@ def _extract(im, shape, spacing, truncate, lattice): a, b = (new_shape/2).astype(int) s = (slice(a, a+1, None), slice(b, b+1, None)) if truncate: - a, b = (shape/2).astype(int) + a, b = np.around(shape/2).astype(int) + sx = extend_slice(slices=s, shape=im.shape, pad=[a, b]) + im = im[sx] + im = im[:shape[0], :shape[1]] else: diag = np.around((spacing**2 + spacing**2)**0.5).astype(int) a, b = (np.ceil(shape/diag)*diag/2).astype(int) - sx = extend_slice(slices=s, shape=im.shape, pad=[a, b]) - im = im[sx] + sx = extend_slice(slices=s, shape=im.shape, pad=[a, b]) + im = im[sx] return im @@ -106,6 +109,8 @@ def rectangular_pillars_array( `_ to view online example. """ + if len(shape) != 2: + raise Exception('shape must be 2D for this function') if seed is not None: np.random.seed(seed) if isinstance(dist, str): @@ -133,7 +138,6 @@ def rectangular_pillars_array( ) tmp[sx] = True tmp = _extract(tmp, shape, spacing, truncate, lattice) - pts = _extract(pts, shape, spacing, truncate, lattice) return tmp @@ -202,6 +206,8 @@ def cylindrical_pillars_array( `_ to view online example. """ + if len(shape) != 2: + raise Exception('shape must be 2D for this function') if seed is not None: np.random.seed(seed) if isinstance(dist, str): @@ -235,7 +241,6 @@ def cylindrical_pillars_mesh( a: int = 1000, n: int = None, truncate : bool = True, - seed: int = None, ): r""" A 2D micromodel with randomly located cylindrical pillars of random radius @@ -263,9 +268,15 @@ def cylindrical_pillars_mesh( A flag to indicate if the output should be truncated to the given `shape` or if the returned image should be expanded to include the full boundary pillars. The default is `True`. - seed : int - The value to initialize numpy's random number generator. The default is - `None` which results in a new realization each time this function is called. + + Returns + ------- + im : ndarray + A ndarray with pillars locations determined by generating a triangular mesh + of the specified domain size and putting pillars at each vertex. Note that + this process is deterministic for a given set of input arguments so the + apparent randomness of the pillar locations is actually determined by the + underlaying mesh package used (`nanomesh`). Examples -------- @@ -274,10 +285,8 @@ def cylindrical_pillars_mesh( to view online example. """ - if seed is not None: - np.random.seed(seed) if len(shape) != 2: - raise Exception("Shape must be 2D") + raise Exception('shape must be 2D for this function') if n is None: n = a**0.5/f im = np.ones(shape, dtype=float) diff --git a/test/unit/test_generators.py b/test/unit/test_generators.py index ca1012c1d..ebbad8dd4 100644 --- a/test/unit/test_generators.py +++ b/test/unit/test_generators.py @@ -619,6 +619,81 @@ def test_polydisperse_cylinders(self): eps = fibers.sum()/fibers.size assert eps == 0.759302 + def test_rectangular_pillars_array(self): + im1 = ps.generators.rectangular_pillars_array(shape=[190, 190]) + assert im1.shape == (190, 190) + im2 = ps.generators.rectangular_pillars_array( + shape=[190, 190], + truncate=False,) + assert im2.shape == (201, 201) + im3 = ps.generators.rectangular_pillars_array(shape=[190, 190], seed=0) + im4 = ps.generators.rectangular_pillars_array(shape=[190, 190], seed=0) + im5 = ps.generators.rectangular_pillars_array(shape=[190, 190], seed=None) + assert np.all(im3 == im4) + assert ~np.all(im3 == im5) + im6 = ps.generators.rectangular_pillars_array( + shape=[190, 190], + lattice='triangular', + ) + assert ~np.all(im1 == im6) + im7 = ps.generators.rectangular_pillars_array( + shape=[190, 190], + dist='uniform', + dist_kwargs=dict(loc=1, scale=2)) + im8 = ps.generators.rectangular_pillars_array( + shape=[190, 190], + dist='uniform', + dist_kwargs=dict(loc=5, scale=5)) + assert np.sum(im7) < np.sum(im8) + + def test_cylindrical_pillars_array(self): + im1 = ps.generators.cylindrical_pillars_array(shape=[190, 190]) + assert im1.shape == (190, 190) + im2 = ps.generators.cylindrical_pillars_array( + shape=[190, 190], + truncate=False,) + assert im2.shape == (201, 201) + im3 = ps.generators.cylindrical_pillars_array(shape=[190, 190], seed=0) + im4 = ps.generators.cylindrical_pillars_array(shape=[190, 190], seed=0) + im5 = ps.generators.cylindrical_pillars_array(shape=[190, 190], seed=None) + assert np.all(im3 == im4) + assert ~np.all(im3 == im5) + im6 = ps.generators.cylindrical_pillars_array( + shape=[190, 190], + lattice='triangular', + ) + assert ~np.all(im1 == im6) + im7 = ps.generators.cylindrical_pillars_array( + shape=[190, 190], + dist='uniform', + dist_kwargs=dict(loc=1, scale=2)) + im8 = ps.generators.cylindrical_pillars_array( + shape=[190, 190], + dist='uniform', + dist_kwargs=dict(loc=5, scale=5)) + assert np.sum(im8) < np.sum(im7) + + def test_cylindrical_pillars_mesh(self): + im1 = ps.generators.cylindrical_pillars_mesh( + shape=[190, 190], + truncate=True, + ) + assert im1.shape == (190, 190) + im2 = ps.generators.cylindrical_pillars_mesh( + shape=[190, 190], + truncate=False, + ) + assert im2.shape == (224, 224) + im3 = ps.generators.cylindrical_pillars_mesh( + shape=[190, 190], + f=.5, + ) + im4 = ps.generators.cylindrical_pillars_mesh( + shape=[190, 190], + f=.85, + ) + assert im3.sum() > im4.sum() + if __name__ == '__main__': t = GeneratorTest()