Example #1
0
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))
Example #2
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)
Example #3
0
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)
Example #4
0
#------------------------------------------------------------------------------
# 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))
Example #5
0
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))
Example #6
0
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
Example #7
0
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)')
Example #9
0
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)