def main(): # Organism # Dendraster # Largest Organism diameter in mm Dorg = 0.3 dataFolder = '/Volumes/GRAVMACH1 2/HopkinsEmbroyologyCourse_GoodData/2018_06_11/Dendraster_starved_11Days_nofood' # Load the set of tracks we want to analyze TrackNames = {0: 'Dendraster1', 1: 'Dendraster2', 2: 'Dendraster3'} TrackFile = 'track.csv' SquaredDisp_XY = [] SquaredDisp_Z = [] trackLen_array = np.zeros(len(TrackNames.keys())) # SquaredDisp_subtracks = for ii, currFolder in TrackNames.items(): Track_curr = Track.GravMachineTrack( os.path.join(dataFolder, currFolder, TrackFile)) trackLen_array[ii] = Track_curr.trackLen SquaredDisp_Z.append( squared_displacement(Track_curr.Z, 0, Track_curr.trackLen)) SquaredDisp_XY.append( squared_displacement(Track_curr.X, 0, Track_curr.trackLen) + squared_displacement(Track_curr.Y, 0, Track_curr.trackLen)) maxTrackLen = np.max(trackLen_array) stackedArray_Z = np.zeros((len(TrackNames.keys(), maxTrackLen))) stackedArray_XY = np.zeros((len(TrackNames.keys(), maxTrackLen))) for ii in TrackNames.keys(): stackedArray_Z[ii, :trackLen_array[ii]] = SquaredDisp_Z[ii] stackedArray_XY[ii, :trackLen_array[ii]] = SquaredDisp_XY[ii] stackedArray_Z = np.ma.array(stackedArray_Z, mask=stackedArray_Z == 0) stackedArray_XY = np.ma.array(stackedArray_XY, mask=stackedArray_XY == 0) RMSD_Z = (stackedArray_Z.mean(axis=0)) RMSD_XY = (stackedArray_XY.mean(axis=0))
# print(50*'*') # print('Tail: {}'.format(TrackName)) # resultFolder = os.path.join(dataFolder,'TrackResults') # fullPath = os.path.join(dataFolder,TrackName) # # saveFile = os.path.join(resultFolder,TrackName+'_Blink_Signals'+'.pkl') # if(not os.path.exists(resultFolder)): # os.makedirs(resultFolder) #====================================================================== # Plots of Tracks #====================================================================== Tmin = 0 Tmax = 0 OrgTrack1 = Track.GravMachineTrack(dataFolder, file, Tmin, Tmax) # OrgTrack1.smoothTrack(20) #OrgTrack1.computeVelocity() # #BlinkFile = os.path.join(BlinkDataFolder, BlinkFile) #with open(BlinkFile, 'rb') as f: # # Time, peak_indicator, peak_indicator_neg, TimeBetweenBlinks, BlinkDurations = pickle.load(f) #OrgTrack1.loadPeaks(peak_indicator, peak_indicator_neg) OrgTrack1.plot3DComponents(signalZ=OrgTrack1.ZobjWheel, labels=1, save=1) #df = OrgTrack1.plotAlignedBlinks(labels=1)
def main(): font = cv2.FONT_HERSHEY_SIMPLEX # font = cv2.FONT_HERSHEY_COMPLEX_SMALL #-------------------------------------------------------------------------- # Acorn Worm #-------------------------------------------------------------------------- # path="F:/GravityMachineBackup/HopkinsEmbryologyCourse/2018_06_12/Starfish/StarFish6highfreq" #-------------------------------------------------------------------------- # Sea Cucumber #-------------------------------------------------------------------------- # path = '/Volumes/GRAVMACH1 2/HopkinsEmbroyologyCourse_GoodData/2018_06_07/seacucmber9_Auto' # path = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_07/seacucmber4_auto_verylong_goodtrack' #-------------------------------------------------------------------------- # Snail #-------------------------------------------------------------------------- # path = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_13/Snail/snail2' # path = '/Volumes/GRAVMACH1 2/HopkinsEmbroyologyCourse_GoodData/2018_06_13/Snail/snail4' #-------------------------------------------------------------------------- # Starfish #-------------------------------------------------------------------------- # path = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_12/Starfish/StarFish6' # path = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_12/Starfish/StarFish6' #-------------------------------------------------------------------------- # Dendraster #-------------------------------------------------------------------------- # path = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_11/Dendraster_starved_11Days_nofood/Dendraster3' #-------------------------------------------------------------------------- # Noctiluca #-------------------------------------------------------------------------- # path = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_14/Noctiluca/Noctilica7' # path = '/Volumes/DEEPAK-SSD/GravityMachine/PuertoRico_2018/GravityMachineData/2018_11_06/Tow_1/Centric_diatom_3_Good' path = '/Volumes/DEEPAK-SSD/Pyro_Division_Tracks/1130div' #------------------------------------------------------------------------------ # Folder in which images are stored #------------------------------------------------------------------------------ # If analyzing original images #------------------------------------------------------------------------------ imageFolder = '/Volumes/DEEPAK-SSD/Pyro_Division_Tracks/1130div/Cropped' # imageFolder = '/Volumes/DEEPAK-SSD/Pyro_Division_Tracks/1130div/RegisteredProcessed' # imageFolder = '/Volumes/DEEPAK-SSD/GravityMachine/MovieRawFiles/Centric_Diatom_small_40_240/Images_GS' # imageFolder = os.path.join(path,'images') # imageFolder = '/Volumes/GRAVMACH1 2/GravityMachine/Results/PIV_Results/seacucmber9_Auto_IMG_33743_33971_Registered' #------------------------------------------------------------------------------ # If analyzing preprocessed images then replace above folder with the folder containing those images #------------------------------------------------------------------------------ # imageFolder = '/Volumes/GRAVMACH1/GravityMachine/Results/flowtrace_python/Seacucumber4_T_744_Registered_GS' # imageFolder = '/Volumes/GRAVMACH1/GravityMachine/Results/flowtrace_python/Starfish6_SideView_FlowTrace_FINAL' # imageFolder = '/Volumes/GRAVMACH1/GravityMachine/Results/flowtrace_python/Starfish6_FrontView_FlowTrace_FINAL' # Acorn worm # path ='/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_06/AcornWorm_Experiment2_nolight/AcornWorm7' # imageFolder = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_06/AcornWorm_Experiment2_nolight/AcornWorm7/images' #Dendraster # path = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_11/Dendraster_starved_11Days_nofood/Dendraster3' # Brittle Star # path = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/BrittleStar/BrittleStar9_Long_Good_Ytracking' # Snail # path = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_13/Snail/snail1' # Polychaete 1 # path = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_12/Polychaete_4D/Polychaete6' # Polychaete 2 # path = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_13/Polychaete/Poly4' # # imageFolder = os.path.join(path,'images') # path = '/Volumes/GRAVMACH1/Hopkins_2018_08_31/MarSno2' # imageFolder = '/Volumes/GRAVMACH1/GravityMachine/Results/flowtrace_python/FinalVideos/MarineSnowFlowTrace' # Pyro Data # path = '/Volumes/GRAVMACH1/PyroTracks_2018_12_21/nnn1' # imageFolder = '/Volumes/GRAVMACH1/PyroTracks_2018_12_21/Pyro_Division_Processed_1' # imageFolder = '/Volumes/GRAVMACH1/PyroTracks_2018_12_21/Pyro_Ballooning_Cropped' dataFolder, fileName = os.path.split(path) imageType = 'Processed' rootImageFolder, folderName = os.path.split(imageFolder) # Choose the track to analyze TrackName = 'track_division.csv' savePath = os.path.join(rootImageFolder, folderName + '_TimeStamped') if (not os.path.exists(savePath)): os.makedirs(savePath) Tmin = 0 Tmax = 0 Track1 = Track.GravMachineTrack(path, TrackName, Tmin, Tmax) T_start = Track1.Time[0] if (imageType == 'Raw'): for ii in range(Track1.trackLen): if (Track1.ImageName[ii]): Time = Track1.Time[ii] - T_start ImgName = Track1.ImageName[ii] print(ImgName) frame_color = cv2.imread(os.path.join(imageFolder, ImgName)) # cv2.imshow('raw',frame_color) frame_gs = cv2.cvtColor(frame_color, cv2.COLOR_BGR2GRAY) clahe = cv2.createCLAHE(clipLimit=1.5, tileGridSize=(12, 12)) frame_clahe = clahe.apply(frame_gs) cv2.putText(frame_clahe, str(np.round(Time, decimals=2)) + ' s', (30, 30), font, 5, (255, 255, 255), 3, cv2.LINE_AA) # plt.clf() # cv2.imshow('frame',frame_clahe) # k = cv2.waitKey(1) & 0xff # if k == 27 : break # plt.show() cv2.imwrite(os.path.join(savePath, ImgName), frame_clahe) elif (imageType == 'Processed'): # List all images from the folder: FilesList = os.listdir(imageFolder) FilesList.sort() print(FilesList) FilesList = FilesList[1:] print(Track1.Time[0]) # imgName_start = FilesList[0][:-25] + '.tif' # imgName_end = FilesList[-1][:-25] + '.tif' imgName_start = FilesList[0] imgName_end = FilesList[-1] print(50 * '-') print(imgName_start) print(imgName_end) print(50 * '-') startIndex, *rest = np.where(Track1.ImageName == imgName_start) stopIndex, *rest = np.where(Track1.ImageName == imgName_end) startIndex = int(startIndex) stopIndex = int(stopIndex) indexArray = [] for ii in range(startIndex, stopIndex): if (Track1.ImageName[ii]): indexArray.append(ii) indexArray = np.array(indexArray) print(indexArray) imageCounter = 0 trackCounter = 0 while imageCounter < len(FilesList) - 1: file = FilesList[imageCounter] currIndex = indexArray[trackCounter] # imgName = file[:-25] + '.tif' imgName = file if (Track1.ImageName[currIndex] == imgName): print('Correct Image found in Track') trackCounter += 1 imageCounter += 1 else: print('Missing image: {}'.format(Track1.ImageName[currIndex])) while (Track1.ImageName[currIndex] != imgName): print('Searching for next available image...') trackCounter += 1 currIndex = indexArray[trackCounter] print(Track1.ImageName[currIndex]) print('Next sequential image found!') # Time = Track1.Time[currIndex] frame_a_color = cv2.imread(os.path.join(imageFolder, file)) frame_gs = cv2.cvtColor(frame_a_color, cv2.COLOR_BGR2GRAY) clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(12, 12)) frame_clahe = clahe.apply(frame_gs) cv2.putText(img=frame_clahe, text=str(np.round(Time, decimals=2)) + ' s', org=(10, 20), fontFace=font, fontScale=0.75, color=(255, 255, 255), thickness=2, lineType=cv2.LINE_AA) # plt.clf() cv2.imshow('frame', frame_clahe) k = cv2.waitKey(1) & 0xff if k == 27: break # ax = plt.gca() # plt.show() cv2.imwrite(os.path.join(savePath, imgName), frame_clahe)
#------------------------------------------------------------------------------ # If analyzing preprocessed images then replace above folder with the folder containing those images #------------------------------------------------------------------------------ # imageFolder = '/Volumes/GRAVMACH1/GravityMachine/Results/flowtrace_python/Seacucumber4_T_744_Registered_GS' # Choose the track to analyze TrackName = 'track000.csv' #-------------------------------------------------------------------------- # Load data from the track into numpy arrays #-------------------------------------------------------------------------- # Time, Xobj, Yobj, Zobj, ThetaWheel, ZobjWheel, ManualTracking,ImageName,focusMeasure, focusPhase, MaxfocusMeasure = readCSV(os.path.join(path,TrackName)) Tmin = 0 Tmax = 0 Track1 = Track.GravMachineTrack(path, TrackName, Tmin, Tmax) Track_full = Track.GravMachineTrack(path, TrackName) nData = Track1.trackLen # print("{:~^50} {}".format('No:of Data points:',nData)) #-------------------------------------------------------------------------- # Specify the time interval OR the starting image of the track on which do PIV #-------------------------------------------------------------------------- AnalysisDict = {0: 'ImageBasedSeq', 1: 'ImageBasedNonSeq', 2: 'TimeBased'} AnalysisType = 0 #-------------------------------------------------------------------------- # Global index of the dataset #-------------------------------------------------------------------------- indexArray = np.array(range(0, Track1.trackLen))
GainsList = [5, 10, 20, 50] # Columns df = pd.DataFrame(data=[], dtype='float') print(df) rootFolder = '/Volumes/GRAVMACH1/GravityMachine/YTrackingControls_2018_10_24/Speed_250um_s' # rootFolder = 'Y:\Projects\GravityMachine\YTrackingControls_2018_10_24\Speed_250um_s's trackFile = 'track.csv' Folders = os.listdir(os.path.join(rootFolder)) for currFolder in Folders: currTrack = Track.GravMachineTrack(path=os.path.join( rootFolder, currFolder), file=trackFile) liqLensAmp = 2 * currTrack.liqLensAmp[0] liqLensFreq = currTrack.liqLensFreq[0] liqLensGain = currTrack.liqLensGain[0] relError = computeRelativeError(currTrack) # Print the liquid lens parameters print('Liquid Lens Amplitude: {}'.format(liqLensAmp)) print('Liquid Lens Frequency: {}'.format(liqLensFreq)) print('Liquid Lens Max Gain: {}'.format(liqLensGain)) print('Relative Tracking Error (%): {}'.format(100 * relError))
path = 'F:/GravityMachineBackup/HopkinsEmbryologyCourse/2018_06_12/Starfish/StarFish6highfreq' dataFolder, fileName = os.path.split(path) savFile = os.path.join(dataFolder, fileName + '_Video.avi') imageFolder = os.path.join(path, 'images') saveFolder = os.path.join(path, 'images_proc') if (not os.path.exists(saveFolder)): os.makedirs(saveFolder) TrackName = 'track.csv' Track1 = Track.GravMachineTrack(path, TrackName) nData = Track1.trackLen pixelsize = 1000 / 314 fig = plt.figure(1) plt.ion() scalebar = ScaleBar(pixelsize, 'um') for ii in range(nData): if (Track1.ImageName[ii]): Time_curr = Track1.T[ii] # Load the image
def main(): #-------------------------------------------------------------------------- # Sea Cucumber #-------------------------------------------------------------------------- # dataFolder = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_07/SeaCucumber' # TrackNames = {0:'seacucmber4_auto_verylong_goodtrack'} # TimePoint = 200 #-------------------------------------------------------------------------- # Dendraster #-------------------------------------------------------------------------- # dataFolder = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_11/Dendraster_starved_11Days_nofood' # TrackNames = {0:'Dendraster3'} # TimePoint = 85 # -------------------------------------------------------------------------- # Brittle Star #-------------------------------------------------------------------------- # dataFolder = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/BrittleStar' # # TrackNames = {0:'BrittleStar9_Long_Good_Ytracking'} # # TimePoint = 53 #-------------------------------------------------------------------------- # Sea Urchin #-------------------------------------------------------------------------- # dataFolder = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_06/SeaUrchin' # # TrackNames = {0: 'SeaUrchin7'} # TimePoint = 66 #-------------------------------------------------------------------------- # Starfish #-------------------------------------------------------------------------- # dataFolder = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_12/Starfish' # TrackNames = {0:'StarFish7'} # TimePoint = 159 #-------------------------------------------------------------------------- # Acorn Worm #-------------------------------------------------------------------------- # dataFolder = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_06/AcornWorm_Experiment2_nolight' # TrackNames = {0: 'AcornWorm3'} # TimePoint = 119 #-------------------------------------------------------------------------- # Snail #-------------------------------------------------------------------------- # dataFolder = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_13/Snail' ## # TrackNames = {0:'snail1'} # TimePoint = 119 # -------------------------------------------------------------------------- # Polychaetes dataFolder = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_12/Polychaete_4D' TrackNames = {0:'Polychaete6'} TimePoint = 128 *rest,orgName = os.path.split(dataFolder) saveFolder = '/Users/deepak/Dropbox/GravityMachine/GravityMachineManuscript/EnsembleTrackStatistics' TimeDuration = 4 TrackFile = 'track_mod.csv' for ii, currFolder in TrackNames.items(): path = os.path.join(dataFolder, TrackNames[ii]) Track_curr = Track.GravMachineTrack(path, TrackFile) Track_curr.plot_XZ_fixedWindow(TimePoint = TimePoint, TimeDuration= TimeDuration)
def main(): # rootFolder = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/' # subFolders = {0:'Dendraster_starved_11Days_nofood',1:'Dendraster_starved_11Days_withfood',2:'Dendraster_well_fed_11Days_nofood'} #-------------------------------------------------------------------------- # Starfish #-------------------------------------------------------------------------- # dataFolder = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_12/Starfish' # TrackNames = {0:['StarFish1', 0,162],1:['StarFish6', 0,600],2:['StarFish7', 60,0],3:['StarFish9', 0,290]} #-------------------------------------------------------------------------- # Dendraster #-------------------------------------------------------------------------- # dataFolder = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_11/Dendraster_starved_11Days_nofood' # TrackNames = {0:['Dendraster1', 87,417], 1:['Dendraster2', 0,0], 2:['Dendraster3', 0,0]} # dataFolder = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_11/Dendraster_starved_11Days_withfood' # dataFolder = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_11/Dendraster_well_fed_11Days_nofood' #-------------------------------------------------------------------------- # Sea cucumber #-------------------------------------------------------------------------- # dataFolder = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_07/SeaCucumber' # TrackNames = {0:['seacucmber4_auto_verylong_goodtrack', 0,0], 1:['seacucmber9_Auto', 0,0]} # TrackNames = {0:['seacucmber4_auto_verylong_goodtrack', 0,0]} #-------------------------------------------------------------------------- # Sea Urchin #-------------------------------------------------------------------------- # dataFolder = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_06/SeaUrchin' # TrackNames = {0: ['SeaUrchin5',0,0],1: ['SeaUrchin7',0,500],2: ['SeaUrchin8',0,0]} #-------------------------------------------------------------------------- # Acorn Worm #-------------------------------------------------------------------------- # dataFolder = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_06/AcornWorm_Experiment2_nolight' # TrackNames = {0: ['AcornWorm2',0,0],1: ['AcornWorm3',0,0],2: ['AcornWorm4',0,0],3: ['AcornWorm7',50,140]} # -------------------------------------------------------------------------- # Brittle Star #-------------------------------------------------------------------------- # dataFolder = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/BrittleStar' # TrackNames = {0:['BrittleStar1',0,0],1:['BrittleStar9_Long_Good_Ytracking',0,0],2:['BrittleStar10_Ytracking_Good',0,0],3:['BrittleStar12_Ytracking_Good',0,0]} #-------------------------------------------------------------------------- # Snail #-------------------------------------------------------------------------- # dataFolder = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_13/Snail' # TrackNames = {0:['snail1',0,575],1:['snail2',0,0],2:['snail4',0,0],3:['snail6',0,0],4:['snail8',0,0],5:['snail10',0,0],6:['snail13',0,0]} # Noctilica # dataFolder = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_14/Noctiluca' # TrackNames = {0:['Noctilica6',50,0],1:['Noctilica7',0,1000]} # Polychaetes dataFolder = [ '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_12/Polychaete_4D', '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_13/Polychaete' ] # TrackNames = {0:['Polychaete1',0,112],1:['Polychaete2',0,113], 2:['Polychaete3',0,37], 3:['Polychaete4',0,55], 4:['Polychaete6',0,113]} TrackNames = [{ 0: ['Polychaete1', 0, 112], 1: ['Polychaete2', 0, 113], 2: ['Polychaete3', 0, 37], 3: ['Polychaete4', 0, 55], 4: ['Polychaete6', 0, 113] }, { 0: ['Poly1', 20, 80], 1: ['Poly2', 0, 116], 2: ['Poly3', 0, 0], 3: ['Poly4', 0, 93], 4: ['Poly5', 0, 34] }] # dataFolder = '/Volumes/GRAVMACH1/HopkinsEmbroyologyCourse_GoodData/2018_06_13/Polychaete' # TrackNames = {0:['Poly1',20,80],1:['Poly2',0,116], 2:['Poly3',0,0], 3:['Poly4',0,93], 4:['Poly5',0,34]} # *rest,orgName = os.path.split(dataFolder) # saveFolder = '/Users/deepak/Dropbox/GravityMachine/GravityMachineManuscript/EnsembleTrackStatistics' # Load the set of tracks we want to analyze # TrackNames = {0:['Dendraster1', 87,417],1:['Dendraster2', 0,0],2:['Dendraster3',0,0]} # TrackNames = {0:['Dendraster1', 0,600],1:['Dendraster2', 0,200],2:['Dendraster3',0,0]} # TrackNames = {0:['StarFish1', 0,162],1:['StarFish6', 0,600],2:['StarFish7', 60,0],3:['StarFish9', 0,290]} TrackFile = 'track_mod.csv' # colors = colors[128:] Velocities_X = np.array([]) Velocities_Y = np.array([]) Velocities_Z = np.array([]) Velocities_X_notWall = np.array([]) Velocities_Y_notWall = np.array([]) Velocities_Z_notWall = np.array([]) totalTrackLen = 0 TrackArray = [] plt.figure(1) print(dataFolder[1]) for kk in range(len(TrackNames)): if (kk == 0): cmap = plt.cm.YlOrRd colors = cmap(np.arange(256)) colors = colors[128:] linestyle = '--' else: cmap = plt.cm.Purples colors = cmap(np.arange(256)) colors = colors[128:] linestyle = '-' totalTracks = len(TrackNames[kk]) print(totalTracks) print(len(colors)) indices = np.array(len(colors) * np.linspace(0, 0.9, totalTracks), dtype='int') plt_colors = colors[indices] for ii, currFolder in TrackNames[kk].items(): path = os.path.join(dataFolder[kk], TrackNames[kk][ii][0]) Track_curr = Track.GravMachineTrack(path, TrackFile, TrackNames[kk][ii][1], TrackNames[kk][ii][2]) # TrackArray.append(Track.GravMachineTrack(path, TrackFile, TrackNames[kk][ii][1],TrackNames[kk][ii][2])) # Track_curr.plotTrackWalls(walls=1) # Track_curr.plotVelocity(Track_curr.Vx,Track_curr.Vy,Track_curr.Vz) # Track_curr.plot3DComponents(Track_curr.X_smooth,Track_curr.Y_smooth,Track_curr.Z_smooth, walls = 1) Track_curr.T = Track_curr.T - Track_curr.T[0] Track_curr.Z = Track_curr.Z - Track_curr.Z[0] plt.plot(Track_curr.T, Track_curr.Z, linewidth=2, linestyle=linestyle, color=plt_colors[ii]) plt.fill_between(Track_curr.T, Track_curr.Z, color=plt_colors[ii], alpha=0.2) AutoTracking = np.array(~Track_curr.ManualTracking[:-1], dtype='bool') #-------------------------------------------------------------------------- # Velocity distributions #-------------------------------------------------------------------------- # Velocities_X = np.hstack((Velocities_X,np.array(Track_curr.Vx[AutoTracking]))) # Velocities_Y = np.hstack((Velocities_Y,np.array(Track_curr.Vy[AutoTracking]))) # Velocities_Z = np.hstack((Velocities_Z,np.array(Track_curr.Vz[AutoTracking]))) # Velocities_X_notWall = np.hstack((Velocities_X_notWall,np.array(Track_curr.Vx[~Track_curr.atWall[:-1]&AutoTracking]))) # Velocities_Y_notWall = np.hstack((Velocities_Y_notWall,np.array(Track_curr.Vy[~Track_curr.atWall[:-1]&AutoTracking]))) # Velocities_Z_notWall = np.hstack((Velocities_Z_notWall,np.array(Track_curr.Vz[~Track_curr.atWall[:-1]&AutoTracking]))) #-------------------------------------------------------------------------- totalTrackLen += (max(Track_curr.Time) - min(Track_curr.Time)) plt.xlabel('Time (s)') plt.ylabel('Z displacement (mm)')
save_path_full = os.path.join(save_root, saveFile_full) overwrite = False if (not os.path.exists(save_path_noWalls) or not os.path.exists(save_path_full) or overwrite): for Organism, Tracks in TrackNames.items(): print('Current organism : {}'.format(Organism)) for ii, currTrack in Tracks.items(): print(currTrack) path = os.path.join(dataFolder[Organism], currTrack[0]) # Load the track into memory Track_curr = Track.GravMachineTrack(path, TrackFile, currTrack[1], currTrack[2]) # plt.figure() # plt.plot(Track_curr.Time,Track_curr.ZobjWheel,'bo-') # plt.plot(Track_curr.T,Track_curr.Z,'r-') # plt.show() # Track_curr.plotTrackWalls(walls=1) # Track_curr.plotVelocity(Track_curr.Vx,Track_curr.Vy,Track_curr.Vz) # Track_curr.plot3DComponents(Track_curr.X_smooth,Track_curr.Y_smooth,Track_curr.Z_smooth, walls = 1) Track_curr.T = Track_curr.T - Track_curr.T[0] Track_curr.Z = Track_curr.Z - Track_curr.Z[0] # plt.plot(Track_curr.T, Track_curr.Z, linewidth = 2, linestyle = linestyle, color = plt_colors[ii]) # plt.fill_between(Track_curr.T,Track_curr.Z,color = plt_colors[ii],alpha=0.2)