{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "ncase=1.6;\n", "size=490;\n", "time=12;" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import cv2, imutils\n", "import sys\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "from skimage.measure import compare_ssim \n", "from glob import glob\n", "from scipy.spatial import distance\n", "from sklearn.metrics import r2_score\n", "import matplotlib.patches as patches\n", "from PIL import Image" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "def find_if_close(cnt1,cnt2):\n", " row1,row2 = cnt1.shape[0],cnt2.shape[0]\n", " for i in range(row1):\n", " for j in range(row2):\n", " dist = np.linalg.norm(cnt1[i]-cnt2[j])\n", " if abs(dist) < 50 :\n", " return True\n", " elif i==row1-1 and j==row2-1:\n", " return False" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "(985, 1312)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#selecting initial point\n", "import matplotlib.pyplot as plt\n", "import matplotlib.patches as patches\n", "from PIL import Image\n", "\n", "k0=0\n", "in_fns = glob(\"./pictures/*.jpg\") # Names of files\n", "in_fns = sorted(in_fns) # Order them\n", "fig,ax = plt.subplots(1)\n", "(xi,yi,xf,yf)=(0,0,3280,2464)\n", "#(xi,yi,xf,yf)=(0,800,1200,1700)\n", "img0A = cv2.imread(in_fns[k0])[yi:yf,xi:xf]\n", "img0B = cv2.imread(in_fns[k0+1])[yi:yf,xi:xf]\n", "img0C = cv2.imread(in_fns[k0+2])[yi:yf,xi:xf]\n", "img0D = cv2.imread(in_fns[k0+3])[yi:yf,xi:xf]\n", "#img0 = cv2.imread(in_fns[0])[yi:yf,xi:xf]\n", "#ax.imshow(img0)\n", "#plt.show()\n", "scale_percent=40\n", "width = int(img0A.shape[1] * scale_percent / 100)\n", "height = int(img0A.shape[0] * scale_percent / 100)\n", "dim = (width, height)\n", "img00A = cv2.GaussianBlur(cv2.cvtColor(cv2.resize(img0A, dim, interpolation = cv2.INTER_AREA), cv2.COLOR_BGR2GRAY), (21, 21), 0)\n", "img00B = cv2.GaussianBlur(cv2.cvtColor(cv2.resize(img0B, dim, interpolation = cv2.INTER_AREA), cv2.COLOR_BGR2GRAY), (21, 21), 0)\n", "img00C = cv2.GaussianBlur(cv2.cvtColor(cv2.resize(img0C, dim, interpolation = cv2.INTER_AREA), cv2.COLOR_BGR2GRAY), (21, 21), 0)\n", "img00D = cv2.GaussianBlur(cv2.cvtColor(cv2.resize(img0D, dim, interpolation = cv2.INTER_AREA), cv2.COLOR_BGR2GRAY), (21, 21), 0)\n", "ax.imshow(img00A,cmap='gray')\n", "plt.show()\n", "img00A.shape" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/Susana/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:1: UserWarning: DEPRECATED: skimage.measure.compare_ssim has been moved to skimage.metrics.structural_similarity. It will be removed from skimage.measure in version 0.18.\n", " \"\"\"Entry point for launching an IPython kernel.\n", "/Users/Susana/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:3: UserWarning: DEPRECATED: skimage.measure.compare_ssim has been moved to skimage.metrics.structural_similarity. It will be removed from skimage.measure in version 0.18.\n", " This is separate from the ipykernel package so we can avoid doing imports until\n", "/Users/Susana/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:5: UserWarning: DEPRECATED: skimage.measure.compare_ssim has been moved to skimage.metrics.structural_similarity. It will be removed from skimage.measure in version 0.18.\n", " \"\"\"\n" ] } ], "source": [ "(score, diff) = compare_ssim(img00A, img00B, full = True)\n", "diff = (diff * 255).astype(\"uint8\")\n", "(score2, diff2) = compare_ssim(img00B, img00C, full = True)\n", "diff2 = (diff2 * 255).astype(\"uint8\")\n", "(score3, diff3) = compare_ssim(img00C, img00D, full = True)\n", "diff3 = (diff3 * 255).astype(\"uint8\")\n", "thresh = cv2.threshold(diff, 0, 255, # Threshold to clean\n", " cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1] \n", "thresh2 = cv2.threshold(diff2, 0, 255, # Threshold to clean\n", " cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1] \n", "thresh3 = cv2.threshold(diff3, 0, 255, # Threshold to clean\n", " cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1] " ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/Susana/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:24: FutureWarning: arrays to stack must be passed as a \"sequence\" type such as list or tuple. Support for non-sequence iterables such as generators is deprecated as of NumPy 1.16 and will raise an error in the future.\n" ] } ], "source": [ "img=thresh\n", "contours,hier = cv2.findContours(img.copy(),cv2.RETR_EXTERNAL,2)\n", "#plt.imshow(cv2.drawContours(img, contours, -1, (0,255,0), 3),cmap='gray')\n", "LENGTH=len(contours)\n", "status = np.zeros((LENGTH,1))\n", "for i,cnt1 in enumerate(contours):\n", " x = i \n", " if i != LENGTH-1:\n", " for j,cnt2 in enumerate(contours[i+1:]):\n", " x = x+1\n", " dist = find_if_close(cnt1,cnt2)\n", " if dist == True:\n", " val = min(status[i],status[x])\n", " status[x] = status[i] = val\n", " else:\n", " if status[x]==status[i]:\n", " status[x] = i+1\n", "\n", "unified = []\n", "maximum = int(status.max())+1\n", "for i in range(maximum):\n", " pos = np.where(status==i)[0]\n", " if pos.size != 0:\n", " cont = np.vstack(contours[i] for i in pos)\n", " hull = cv2.convexHull(cont)\n", " unified.append(hull)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/Susana/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:24: FutureWarning: arrays to stack must be passed as a \"sequence\" type such as list or tuple. Support for non-sequence iterables such as generators is deprecated as of NumPy 1.16 and will raise an error in the future.\n" ] } ], "source": [ "img=thresh2\n", "contours,hier = cv2.findContours(img.copy(),cv2.RETR_EXTERNAL,2)\n", "#plt.imshow(cv2.drawContours(img, contours, -1, (0,255,0), 3),cmap='gray')\n", "LENGTH=len(contours)\n", "status = np.zeros((LENGTH,1))\n", "for i,cnt1 in enumerate(contours):\n", " x = i \n", " if i != LENGTH-1:\n", " for j,cnt2 in enumerate(contours[i+1:]):\n", " x = x+1\n", " dist = find_if_close(cnt1,cnt2)\n", " if dist == True:\n", " val = min(status[i],status[x])\n", " status[x] = status[i] = val\n", " else:\n", " if status[x]==status[i]:\n", " status[x] = i+1\n", "\n", "unified2 = []\n", "maximum = int(status.max())+1\n", "for i in range(maximum):\n", " pos = np.where(status==i)[0]\n", " if pos.size != 0:\n", " cont = np.vstack(contours[i] for i in pos)\n", " hull = cv2.convexHull(cont)\n", " unified2.append(hull)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/Susana/opt/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:24: FutureWarning: arrays to stack must be passed as a \"sequence\" type such as list or tuple. Support for non-sequence iterables such as generators is deprecated as of NumPy 1.16 and will raise an error in the future.\n" ] } ], "source": [ "img=thresh3\n", "contours,hier = cv2.findContours(img.copy(),cv2.RETR_EXTERNAL,2)\n", "#plt.imshow(cv2.drawContours(img, contours, -1, (0,255,0), 3),cmap='gray')\n", "LENGTH=len(contours)\n", "status = np.zeros((LENGTH,1))\n", "for i,cnt1 in enumerate(contours):\n", " x = i \n", " if i != LENGTH-1:\n", " for j,cnt2 in enumerate(contours[i+1:]):\n", " x = x+1\n", " dist = find_if_close(cnt1,cnt2)\n", " if dist == True:\n", " val = min(status[i],status[x])\n", " status[x] = status[i] = val\n", " else:\n", " if status[x]==status[i]:\n", " status[x] = i+1\n", "\n", "unified3 = []\n", "maximum = int(status.max())+1\n", "for i in range(maximum):\n", " pos = np.where(status==i)[0]\n", " if pos.size != 0:\n", " cont = np.vstack(contours[i] for i in pos)\n", " hull = cv2.convexHull(cont)\n", " unified3.append(hull)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "areamin=20000;\n", "positions0=[];\n", "areas0=[];\n", "ejes0=[];\n", "for i in range(0,len(unified)):\n", " if len(unified[i])>5:\n", " area=np.pi*cv2.fitEllipse(unified[i])[1][0]*cv2.fitEllipse(unified[i])[1][1]\n", " if area>areamin:\n", " positions0.append(cv2.fitEllipse(unified[i])[0])\n", " ejes0.append(cv2.fitEllipse(unified[i])[1])\n", " areas0.append(np.pi*cv2.fitEllipse(unified[i])[1][0]*cv2.fitEllipse(unified[i])[1][1])\n", "positions1=[];\n", "areas1=[];\n", "ejes1=[];\n", "for i in range(0,len(unified2)):\n", " if len(unified2[i])>5:\n", " area=np.pi*cv2.fitEllipse(unified2[i])[1][0]*cv2.fitEllipse(unified2[i])[1][1]\n", " if area>areamin:\n", " positions1.append(cv2.fitEllipse(unified2[i])[0])\n", " ejes1.append(cv2.fitEllipse(unified2[i])[1])\n", " areas1.append(np.pi*cv2.fitEllipse(unified2[i])[1][0]*cv2.fitEllipse(unified2[i])[1][1])\n", "positions2=[];\n", "areas2=[];\n", "ejes2=[];\n", "for i in range(0,len(unified3)):\n", " if len(unified3[i])>5:\n", " area=np.pi*cv2.fitEllipse(unified3[i])[1][0]*cv2.fitEllipse(unified3[i])[1][1]\n", " if area>areamin:\n", " positions2.append(cv2.fitEllipse(unified3[i])[0])\n", " ejes2.append(cv2.fitEllipse(unified3[i])[1])\n", " areas2.append(np.pi*cv2.fitEllipse(unified3[i])[1][0]*cv2.fitEllipse(unified3[i])[1][1])" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.plot(np.transpose(positions0)[0],-np.transpose(positions0)[1],'bo')\n", "plt.plot(np.transpose(positions1)[0],-np.transpose(positions1)[1],'ro')\n", "plt.plot(np.transpose(positions2)[0],-np.transpose(positions2)[1],'go')" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(727.0625, 122.45658111572266)]" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "dmin=20;\n", "clst0=[];\n", "for i in range(0,len(positions0)):\n", " distmin0=ejes0[i][1]/2;\n", " for j in range(0,len(positions1)):\n", " distmin1=ejes1[j][1]/2;\n", " dist=distance.euclidean(positions0[i],positions1[j])\n", " if dmin0.9:\n", " j.append(i);\n", "clst=[];\n", "size=[];\n", "for i in range(0,len(j)):\n", " clst.append(clst1[j[i]])\n", " size.append(size1[j[i]])\n", "#initial points DDD:\n", "heads=[i[0] for i in clst]\n", "heads" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "#now we start with a the nhead head\n", "nhead=0;\n", "fig,ax = plt.subplots(1)\n", "h,w=1*size[nhead],1*size[nhead]\n", "xmin=heads[nhead][0]-(w/2)\n", "ymin=heads[nhead][1]-(h/4)\n", "rect = patches.Rectangle((xmin,ymin),w,h,linewidth=1,edgecolor='r',facecolor='none')\n", "# Add the patch to the Axes\n", "ax.imshow(img00A,cmap='gray')\n", "ax.add_patch(rect)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "in_fns = glob(\"./pictures/*.jpg\") # Names of files\n", "in_fns = sorted(in_fns) # Order them\n", "imgAll=[];\n", "img0 = cv2.imread(in_fns[0])[yi:yf,xi:xf]\n", "scale_percent=40\n", "width = int(img0.shape[1] * scale_percent / 100)\n", "height = int(img0.shape[0] * scale_percent / 100)\n", "dim = (width, height)\n", "img00 = cv2.resize(img0, dim, interpolation = cv2.INTER_AREA)\n", "imgAll.append(img00)\n", "for i in range(1,len(in_fns)):\n", " img0 = cv2.imread(in_fns[i])[yi:yf,xi:xf]\n", " img00 = cv2.resize(img0, dim, interpolation = cv2.INTER_AREA)\n", " imgAll.append(img00)" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0 (583, 50) (870, 337)\n", "1 (706, 171) (920, 385)\n", "2 (727, 235) (941, 449)\n", "3 (748, 320) (962, 534)\n", "4 (770, 385) (984, 599)\n", "5 (813, 449) (1027, 663)\n", "6 (855, 513) (1069, 727)\n", "7 (877, 599) (1091, 813)\n", "8 (898, 641) (1112, 855)\n", "9 (962, 706) (1176, 920)\n", "10 (937, 739) (1151, 953)\n", "Tracking failure detected\n" ] }, { "ename": "SystemExit", "evalue": "", "output_type": "error", "traceback": [ "An exception has occurred, use %tb to see the full traceback.\n", "\u001b[0;31mSystemExit\u001b[0m\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/Users/Susana/opt/anaconda3/lib/python3.7/site-packages/IPython/core/interactiveshell.py:3334: UserWarning: To exit: use 'exit', 'quit', or Ctrl-D.\n", " warn(\"To exit: use 'exit', 'quit', or Ctrl-D.\", stacklevel=1)\n" ] } ], "source": [ "if __name__ == '__main__' :\n", " \n", " tracker_types = ['BOOSTING', 'MIL','KCF', 'TLD', 'MEDIANFLOW', 'GOTURN', 'MOSSE', 'CSRT']\n", " tracker_type = tracker_types[3]\n", " \n", " if tracker_type == 'BOOSTING':\n", " tracker = cv2.TrackerBoosting_create()\n", " if tracker_type == 'MIL':\n", " tracker = cv2.TrackerMIL_create()\n", " if tracker_type == 'KCF':\n", " tracker = cv2.TrackerKCF_create()\n", " if tracker_type == 'TLD':\n", " tracker = cv2.TrackerTLD_create()\n", " if tracker_type == 'MEDIANFLOW':\n", " tracker = cv2.TrackerMedianFlow_create()\n", " if tracker_type == 'GOTURN':\n", " tracker = cv2.TrackerGOTURN_create()\n", " if tracker_type == 'MOSSE':\n", " tracker = cv2.TrackerMOSSE_create()\n", " if tracker_type == \"CSRT\":\n", " tracker = cv2.TrackerCSRT_create()\n", " \n", " height , width , layers = imgAll[0].shape\n", " Data = np.zeros([len(imgAll),2])\n", " video = cv2.VideoWriter('output.avi', cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'), 20, (width, height))\n", "\n", " \n", " img = cv2.cvtColor(imgAll[0], cv2.COLOR_BGR2GRAY)\n", " frame = cv2.GaussianBlur(img, (21, 21), 0)\n", " bbox = (xmin, ymin, w, h)\n", " #bbox = cv2.selectROI(frame, False)\n", " \n", " # Initialize tracker with first frame and bounding box\n", " ok = tracker.init(frame, bbox)\n", " Data[0]=bbox[0]+bbox[2]/2,bbox[1]+bbox[3]/2\n", " p1 = (int(bbox[0]), int(bbox[1]))\n", " p2 = (int(bbox[0] + bbox[2]), int(bbox[1] + bbox[3]))\n", " cv2.rectangle(imgAll[0], p1, p2, (0,255,0), 2, 1)\n", " print(0,p1,p2) \n", " video.write(imgAll[0])\n", " \n", " for m in range(1,len(imgAll)):\n", " img = cv2.cvtColor(imgAll[m], cv2.COLOR_BGR2GRAY)\n", " frame = cv2.GaussianBlur(img, (21, 21), 0)\n", " ok, bbox = tracker.update(frame)\n", " if ok:\n", " # Tracking success\n", " p1 = (int(bbox[0]), int(bbox[1]))\n", " p2 = (int(bbox[0] + bbox[2]), int(bbox[1] + bbox[3]))\n", " #cv2.rectangle(frame, p1, p2, (255,0,0), 2, 1)\n", " else :\n", " #Tracking failure\n", " print('Tracking failure detected')\n", " np.savez('data', Data)\n", " video.release()\n", " sys.exit()\n", " #assign final value\n", " Data[m] = np.array([(p1[0]+p2[0])/2,(p1[1]+p2[1])/2])\n", " cv2.rectangle(imgAll[m], p1, p2, (0,255,0), 2, 1)\n", " print(m,p1,p2) \n", " video.write(imgAll[m])\n", "\n", " np.savez('data', Data)\n", " video.release()" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "Data2=Data[0:10]\n", "plt.title('Tracking')\n", "plt.xlabel('x')\n", "plt.ylabel('y')\n", "plt.plot(np.transpose(Data2)[0],-np.transpose(Data2)[1],'o')" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/plain": [ "(67.42587911848597, 12.227907080891292)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "vel=[]\n", "scale=1400\n", "for i in range(1,len(Data2)-1):\n", " dist=distance.euclidean((Data2[i][0],Data2[i][1]),(Data2[i+1][0],Data2[i+1][1]))\n", " dist2=dist*(100000/(2*scale*scale_percent))\n", " vel.append(dist2)\n", "plt.ylim(0, 1000)\n", "plt.plot(vel)\n", "plt.title('Velocity vs. time')\n", "plt.xlabel('time (min)')\n", "plt.ylabel('v (µm/min)')\n", "plt.show()\n", "np.mean(vel),np.std(vel)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "ename": "TypeError", "evalue": "Mismatch between array dtype ('object') and format specifier ('%.18e')", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m~/opt/anaconda3/lib/python3.7/site-packages/numpy/lib/npyio.py\u001b[0m in \u001b[0;36msavetxt\u001b[0;34m(fname, X, fmt, delimiter, newline, header, footer, comments, encoding)\u001b[0m\n\u001b[1;32m 1433\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1434\u001b[0;31m \u001b[0mv\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mformat\u001b[0m \u001b[0;34m%\u001b[0m \u001b[0mtuple\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrow\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mnewline\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1435\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mTypeError\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mTypeError\u001b[0m: must be real number, not list", "\nDuring handling of the above exception, another exception occurred:\n", "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;31m#ncase,nData,Size,Time,meanV,meanStd\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mncase\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mData2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0msize\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mtime\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mmean\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvel\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mstd\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvel\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msavetxt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m'data'\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0mstr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mncase\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m+\u001b[0m\u001b[0;34m'.dat'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m<__array_function__ internals>\u001b[0m in \u001b[0;36msavetxt\u001b[0;34m(*args, **kwargs)\u001b[0m\n", "\u001b[0;32m~/opt/anaconda3/lib/python3.7/site-packages/numpy/lib/npyio.py\u001b[0m in \u001b[0;36msavetxt\u001b[0;34m(fname, X, fmt, delimiter, newline, header, footer, comments, encoding)\u001b[0m\n\u001b[1;32m 1436\u001b[0m raise TypeError(\"Mismatch between array dtype ('%s') and \"\n\u001b[1;32m 1437\u001b[0m \u001b[0;34m\"format specifier ('%s')\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1438\u001b[0;31m % (str(X.dtype), format))\n\u001b[0m\u001b[1;32m 1439\u001b[0m \u001b[0mfh\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mwrite\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mv\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1440\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mTypeError\u001b[0m: Mismatch between array dtype ('object') and format specifier ('%.18e')" ] } ], "source": [ "#ncase,nData,Size,Time,meanV,meanStd\n", "data=[ncase,len(Data2),size,time,np.mean(vel),np.std(vel)]\n", "np.savetxt('data'+str(ncase)+'.dat', data)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.4" } }, "nbformat": 4, "nbformat_minor": 4 }