|
2 | 2 | import math |
3 | 3 | import random |
4 | 4 | import sys |
| 5 | +import threading |
5 | 6 | import time |
6 | 7 | import traceback |
7 | 8 | from datetime import datetime |
@@ -2838,83 +2839,102 @@ def _GiveRight(self, channel3): |
2838 | 2839 | channel3.ManualWater_Right(int(1)) |
2839 | 2840 | channel3.RightValue1(float(self.win.RightValue.text()) * 1000) |
2840 | 2841 |
|
2841 | | - def _get_irregular_timestamp(self, Channel2): |
| 2842 | + def _get_irregular_timestamp(self, Channel2, data_lock: threading.Lock): |
2842 | 2843 | """Get timestamps occurred irregularly (e.g. licks and reward delivery time)""" |
2843 | 2844 | while not Channel2.msgs.empty(): |
2844 | 2845 | Rec = Channel2.receive() |
2845 | 2846 | if Rec[0].address == "/LeftLickTime": |
2846 | | - self.B_LeftLickTime = np.append( |
2847 | | - self.B_LeftLickTime, Rec[1][1][0] |
2848 | | - ) |
| 2847 | + with data_lock: |
| 2848 | + self.B_LeftLickTime = np.append( |
| 2849 | + self.B_LeftLickTime, Rec[1][1][0] |
| 2850 | + ) |
2849 | 2851 | elif Rec[0].address == "/RightLickTime": |
2850 | | - self.B_RightLickTime = np.append( |
| 2852 | + with data_lock: |
| 2853 | + self.B_RightLickTime = np.append( |
2851 | 2854 | self.B_RightLickTime, Rec[1][1][0] |
2852 | 2855 | ) |
2853 | 2856 | elif Rec[0].address == "/LeftRewardDeliveryTime": |
2854 | | - self.B_LeftRewardDeliveryTime = np.append( |
| 2857 | + with data_lock: |
| 2858 | + self.B_LeftRewardDeliveryTime = np.append( |
2855 | 2859 | self.B_LeftRewardDeliveryTime, Rec[1][1][0] |
2856 | 2860 | ) |
2857 | 2861 | elif Rec[0].address == "/RightRewardDeliveryTime": |
2858 | | - self.B_RightRewardDeliveryTime = np.append( |
| 2862 | + with data_lock: |
| 2863 | + self.B_RightRewardDeliveryTime = np.append( |
2859 | 2864 | self.B_RightRewardDeliveryTime, Rec[1][1][0] |
2860 | 2865 | ) |
2861 | 2866 | elif Rec[0].address == "/LeftRewardDeliveryTimeHarp": |
2862 | | - self.B_LeftRewardDeliveryTimeHarp = np.append( |
| 2867 | + with data_lock: |
| 2868 | + self.B_LeftRewardDeliveryTimeHarp = np.append( |
2863 | 2869 | self.B_LeftRewardDeliveryTimeHarp, Rec[1][1][0] |
2864 | 2870 | ) |
2865 | 2871 | elif Rec[0].address == "/RightRewardDeliveryTimeHarp": |
2866 | | - self.B_RightRewardDeliveryTimeHarp = np.append( |
| 2872 | + with data_lock: |
| 2873 | + self.B_RightRewardDeliveryTimeHarp = np.append( |
2867 | 2874 | self.B_RightRewardDeliveryTimeHarp, Rec[1][1][0] |
2868 | 2875 | ) |
2869 | 2876 | elif Rec[0].address == "/PhotometryRising": |
2870 | | - self.B_PhotometryRisingTimeHarp = np.append( |
| 2877 | + with data_lock: |
| 2878 | + self.B_PhotometryRisingTimeHarp = np.append( |
2871 | 2879 | self.B_PhotometryRisingTimeHarp, Rec[1][1][0] |
2872 | 2880 | ) |
2873 | 2881 | elif Rec[0].address == "/PhotometryFalling": |
2874 | | - self.B_PhotometryFallingTimeHarp = np.append( |
| 2882 | + with data_lock: |
| 2883 | + self.B_PhotometryFallingTimeHarp = np.append( |
2875 | 2884 | self.B_PhotometryFallingTimeHarp, Rec[1][1][0] |
2876 | 2885 | ) |
2877 | 2886 | elif Rec[0].address == "/OptogeneticsTimeHarp": |
2878 | | - self.B_OptogeneticsTimeHarp = np.append( |
| 2887 | + with data_lock: |
| 2888 | + self.B_OptogeneticsTimeHarp = np.append( |
2879 | 2889 | self.B_OptogeneticsTimeHarp, Rec[1][1][0] |
2880 | 2890 | ) |
2881 | 2891 | elif Rec[0].address == "/ManualLeftWaterStartTime": |
2882 | | - self.B_ManualLeftWaterStartTime = np.append( |
| 2892 | + with data_lock: |
| 2893 | + self.B_ManualLeftWaterStartTime = np.append( |
2883 | 2894 | self.B_ManualLeftWaterStartTime, Rec[1][1][0] |
2884 | 2895 | ) |
2885 | 2896 | elif Rec[0].address == "/ManualRightWaterStartTime": |
2886 | | - self.B_ManualRightWaterStartTime = np.append( |
| 2897 | + with data_lock: |
| 2898 | + self.B_ManualRightWaterStartTime = np.append( |
2887 | 2899 | self.B_ManualRightWaterStartTime, Rec[1][1][0] |
2888 | 2900 | ) |
2889 | 2901 | elif Rec[0].address == "/EarnedLeftWaterStartTime": |
2890 | | - self.B_EarnedLeftWaterStartTime = np.append( |
| 2902 | + with data_lock: |
| 2903 | + self.B_EarnedLeftWaterStartTime = np.append( |
2891 | 2904 | self.B_EarnedLeftWaterStartTime, Rec[1][1][0] |
2892 | 2905 | ) |
2893 | 2906 | elif Rec[0].address == "/EarnedRightWaterStartTime": |
2894 | | - self.B_EarnedRightWaterStartTime = np.append( |
| 2907 | + with data_lock: |
| 2908 | + self.B_EarnedRightWaterStartTime = np.append( |
2895 | 2909 | self.B_EarnedRightWaterStartTime, Rec[1][1][0] |
2896 | 2910 | ) |
2897 | 2911 | elif Rec[0].address == "/AutoLeftWaterStartTime": |
2898 | | - self.B_AutoLeftWaterStartTime = np.append( |
| 2912 | + with data_lock: |
| 2913 | + self.B_AutoLeftWaterStartTime = np.append( |
2899 | 2914 | self.B_AutoLeftWaterStartTime, Rec[1][1][0] |
2900 | 2915 | ) |
2901 | 2916 | elif Rec[0].address == "/AutoRightWaterStartTime": |
2902 | | - self.B_AutoRightWaterStartTime = np.append( |
| 2917 | + with data_lock: |
| 2918 | + self.B_AutoRightWaterStartTime = np.append( |
2903 | 2919 | self.B_AutoRightWaterStartTime, Rec[1][1][0] |
2904 | 2920 | ) |
2905 | 2921 | elif Rec[0].address == "/EnvironmentSensorTemperature": |
2906 | | - value = Rec[1][1][0] if type(Rec[1][1][0]) != float else round(Rec[1][1][0], 1) |
2907 | | - self.B_EnvironmentSensorTemperature.append(value) |
| 2922 | + with data_lock: |
| 2923 | + value = Rec[1][1][0] if type(Rec[1][1][0]) != float else round(Rec[1][1][0], 1) |
| 2924 | + self.B_EnvironmentSensorTemperature.append(value) |
2908 | 2925 |
|
2909 | 2926 | elif Rec[0].address == "/EnvironmentSensorHumidity": |
2910 | | - value = Rec[1][1][0] if type(Rec[1][1][0]) != float else round(Rec[1][1][0], 1) |
2911 | | - self.B_EnvironmentSensorHumidity.append(value) |
| 2927 | + with data_lock: |
| 2928 | + value = Rec[1][1][0] if type(Rec[1][1][0]) != float else round(Rec[1][1][0], 1) |
| 2929 | + self.B_EnvironmentSensorHumidity.append(value) |
2912 | 2930 |
|
2913 | 2931 | elif Rec[0].address == "/EnvironmentSensorPressure": |
2914 | | - self.B_EnvironmentSensorPressure.append(Rec[1][1][0]) |
| 2932 | + with data_lock: |
| 2933 | + self.B_EnvironmentSensorPressure.append(Rec[1][1][0]) |
2915 | 2934 |
|
2916 | 2935 | elif Rec[0].address == "/EnvironmentSensorTimestamp": |
2917 | | - self.B_EnvironmentSensorTimestamp.append(Rec[1][1][0]) |
| 2936 | + with data_lock: |
| 2937 | + self.B_EnvironmentSensorTimestamp.append(Rec[1][1][0]) |
2918 | 2938 |
|
2919 | 2939 | def _DeletePreviousLicks(self, Channel2): |
2920 | 2940 | """Delete licks from the previous session""" |
|
0 commit comments