diff --git a/Cladocora/Data/FIRe Sep 2023/20092023_Cladocora_Leonit_and_Naharia.csv b/Cladocora/Data/FIRe Sep 2023/20092023_Cladocora_Leonit_and_Naharia.csv new file mode 100644 index 0000000..b8c4969 --- /dev/null +++ b/Cladocora/Data/FIRe Sep 2023/20092023_Cladocora_Leonit_and_Naharia.csv @@ -0,0 +1,46 @@ +,...1,Species,Colony,depth,Site,File,Time,DATE,TIME,PAR,Depth(m),T(C),Battery_V,Dark_Fo,Fm,Fv,fv_fm,Sigma,p,Alp1,Tau1,Alp2,Tau2,Alp3,Tau3,Alp4,Tau4,TauAv1,TauAv2,GAIN,Light_Fo,Fm.1,Fv.1,Fv_Fm.1,Sigma.1,p.1,Alp1.1,Tau1.1,Alp2.1,Tau2.1,Alp3.1,Tau3.1,Alp4.1,Tau4.1,TauAv1.1,TauAv2.1,Pmax.e.s +1,1,Cladocora,1,30,Leonid,20230920,N,9/20/2023,30670,609.6,14,29.5,16.5,353,708.3,355.3,0.502,385.3,0.12,0.69,334,0.22,2099,0.09,81397,--------,-------,767,8021,0,745.3,869,123.7,0.142,211,0.06,0.253,649,0.043,11299,0.704,11307,--------,-------,8487,8606,117.8 +2,2,Cladocora,1,30,Leonid,20230920,N,9/20/2023,30680,766.2,14,29.5,16.49,301.4,594.6,293.2,0.493,375.2,0.14,0.66,368,0.25,2179,0.1,113811,--------,-------,863,11662,0,673.3,776.6,103.3,0.133,238.3,0,0.25,778,0.054,9488,0.696,9492,--------,-------,7187,7311,139.1 +3,3,Cladocora,1,30,Leonid,20230920,N,9/20/2023,30693,600.3,13.9,29.5,16.49,334.3,665.4,331.1,0.498,389.3,0.15,0.66,291,0.25,1769,0.09,104182,--------,-------,691,10327,0,890.7,1013.8,123.1,0.121,217.5,0,0.2,626,0.055,11580,0.745,11594,--------,-------,9269,9395,107.9 +4,4,Cladocora,1,30,Leonid,20230920,N,9/20/2023,30700,471.3,13.9,29.5,16.48,243.6,465.3,221.8,0.477,333.6,0.09,0.71,407,0.18,3576,0.11,73977,--------,-------,1044,9268,200,567,646.6,79.6,0.123,197.5,0.03,0.203,552,0.033,14654,0.764,14661,--------,-------,11698,11796,85.5 +5,5,Cladocora,1,30,Leonid,20230920.01,N,9/20/2023,30708,600.9,13.9,29.5,16.48,349.6,684.3,334.7,0.489,417.2,0.18,0.65,346,0.25,2103,0.1,136976,--------,-------,830,14338,0,867.6,997.5,129.9,0.13,229.3,0,0.246,749,0.055,10610,0.699,10611,--------,-------,8044,8185,124.3 +6,6,Cladocora,2,30,Leonid,20230920.01,N,9/20/2023,30807,595,13.8,29.6,16.44,280.6,536,255.4,0.476,424.2,0.16,0.73,375,0.17,2439,0.1,106432,--------,-------,773,11429,0,648.7,751,102.3,0.136,202.5,0.02,0.253,676,0.7,11903,0.047,11914,--------,-------,8927,9067,112 +7,7,Cladocora,2,30,Leonid,20230920.01,N,9/20/2023,30818,636.6,13.8,29.6,16.44,303.6,561.6,258,0.459,393.5,0.13,0.68,322,0.21,1760,0.11,146492,--------,-------,655,17180,200,783.3,895.8,112.5,0.126,211.7,0,0.235,680,0.714,11505,0.051,11507,--------,-------,8828,8965,113.3 +8,8,Cladocora,2,30,Leonid,20230920.01,N,9/20/2023,30827,616.1,13.8,29.6,16.44,293.3,560.3,267,0.476,408.3,0.14,0.69,355,0.2,1896,0.11,105584,--------,-------,699,12285,0,734.5,847.1,112.6,0.133,208.5,0.02,0.239,582,0.706,12195,0.055,12202,--------,-------,9260,9422,108 +9,9,Cladocora,2,30,Leonid,20230920.01,N,9/20/2023,30835,621.9,13.8,29.6,16.43,382.2,711.7,329.5,0.463,441,0.1,0.69,347,0.21,1872,0.1,86894,--------,-------,705,9166,0,870.4,1003.8,133.4,0.133,220.3,0,0.249,743,0.696,10783,0.055,10788,--------,-------,8135,8280,122.9 +10,10,Cladocora,2,30,Leonid,20230920.01,N,9/20/2023,30845,553.7,13.8,29.6,16.43,314.4,593.3,278.9,0.47,408.6,0.16,0.66,309,0.24,1671,0.1,87151,--------,-------,669,9433,0,736.8,843.4,106.6,0.126,215.9,0,0.229,611,0.734,13346,0.037,13349,--------,-------,10320,10432,96.9 +11,11,Cladocora,3,30,Leonid,20230920.01,N,9/20/2023,30913,551.6,13.8,29.6,16.41,309.8,607.2,297.4,0.49,400.9,0.11,0.64,294,0.25,1901,0.1,82661,--------,-------,748,9147,0,717.4,827.5,110.1,0.133,208.2,0,0.237,680,0.038,12220,0.724,12229,--------,-------,9380,9489,106.6 +12,12,Cladocora,3,30,Leonid,20230920.01,N,9/20/2023,30922,504.3,13.8,29.6,16.41,314.6,612.2,297.6,0.486,402.5,0.09,0.64,324,0.26,1946,0.11,90535,--------,-------,791,10411,0,695.8,800.3,104.4,0.13,220.6,0,0.237,684,0.035,13362,0.728,13368,--------,-------,10251,10359,97.6 +13,13,Cladocora,3,30,Leonid,20230920.01,N,9/20/2023,30934,453.4,13.8,29.6,16.4,332.7,638.3,305.6,0.479,421.9,0.07,0.73,392,0.17,2977,0.1,142329,--------,-------,879,15298,0,747.8,844,96.2,0.114,242.8,0.17,0.128,712,0.779,14556,0.093,29849,--------,-------,12606,14211,79.3 +14,14,Cladocora,3,30,Leonid,20230920.01,N,9/20/2023,30943,517.1,13.8,29.6,16.4,324.8,619.2,294.5,0.476,425.4,0.09,0.66,346,0.23,1803,0.11,74873,--------,-------,724,9115,0,676.5,782.6,106.1,0.136,206.6,0,0.244,611,0.058,12469,0.698,12471,--------,-------,9398,9576,106.4 +15,15,Cladocora,3,30,Leonid,20230920.02,N,9/20/2023,30953,379.5,13.9,29.6,16.4,261,491.3,230.3,0.469,367.4,0.07,0.62,318,0.24,1978,0.13,65601,--------,-------,786,9477,0,550.7,635.1,84.3,0.133,175.2,0,0.232,551,0.076,15944,0.692,15964,--------,-------,12088,12379,82.7 +16,16,Cladocora,4,30,Leonid,20230920.02,N,9/20/2023,31011,377.9,13.9,29.6,16.38,347.5,666.7,319.2,0.479,394.5,0.07,0.64,319,0.24,1997,0.12,114350,--------,-------,778,14053,0,767.1,883.7,116.7,0.132,199.1,0,0.252,607,0.709,16072,0.039,16092,--------,-------,12023,12182,83.2 +17,17,Cladocora,4,30,Leonid,20230920.02,N,9/20/2023,31019,502.8,13.8,29.6,16.38,340.8,656.9,316.1,0.481,437.1,0.1,0.62,316,0.28,1569,0.1,92154,--------,-------,703,10072,0,712.9,822.1,109.2,0.133,215.3,0,0.224,602,0.074,12948,0.702,12957,--------,-------,9971,10192,100.3 +18,18,Cladocora,4,30,Leonid,20230920.02,N,9/20/2023,31028,420.9,13.8,29.6,16.37,305.2,561.6,256.4,0.457,430.3,0.17,0.56,442,0.29,1310,0.14,27438,--------,-------,740,4607,0,574.4,660.1,85.7,0.13,209.6,0,0.241,643,0.064,15150,0.695,15162,--------,-------,11423,11661,87.5 +19,19,Cladocora,4,30,Leonid,20230920.02,N,9/20/2023,31037,404.1,13.8,29.6,16.38,380.7,711.3,330.6,0.465,377.4,0.05,0.66,394,0.22,2380,0.12,96210,--------,-------,884,12384,0,774.3,889.8,115.5,0.13,235.8,0.2,0.188,714,0.726,15008,0.086,29872,--------,-------,12064,13597,82.9 +20,20,Cladocora,4,30,Leonid,20230920.02,N,9/20/2023,31045,447.8,13.8,29.6,16.37,353,673.4,320.3,0.476,398.8,0.07,0.67,366,0.21,2355,0.12,102474,--------,-------,839,12794,0,766.9,884.7,117.8,0.133,209.8,0,0.229,607,0.722,14158,0.049,14186,--------,-------,10900,11061,91.7 +21,21,Cladocora,5,30,Leonid,20230920.02,N,9/20/2023,31083,386,14,29.6,16.36,382.1,734.6,352.5,0.48,423.2,0.01,0.62,373,0.24,2015,0.13,71741,--------,-------,835,10138,0,732.4,838.8,106.4,0.127,216.3,0,0.211,580,0.74,15284,0.049,15297,--------,-------,12020,12181,83.2 +22,22,Cladocora,5,30,Leonid,20230920.02,N,9/20/2023,31091,584.3,14.1,29.6,16.36,368.9,711.6,342.7,0.482,402.7,0.09,0.68,339,0.22,2181,0.1,123922,--------,-------,795,12756,0,792.9,911,118.1,0.13,229.8,0.01,0.261,716,0.049,11799,0.69,11803,--------,-------,8765,8914,114.1 +23,23,Cladocora,5,30,Leonid,20230920.02,N,9/20/2023,31103,399.1,14,29.6,16.36,490.8,932.3,441.5,0.474,425,0.06,0.57,305,0.3,1695,0.13,89553,--------,-------,788,12265,0,1089.5,1219.5,130,0.107,240.5,0.18,0.106,753,0.806,15042,0.088,34163,--------,-------,13378,15209,74.8 +24,24,Cladocora,5,30,Leonid,20230920.02,N,9/20/2023,31113,550.3,14,29.6,16.36,574.2,1105.9,531.6,0.481,466.6,0.06,0.64,379,0.26,2050,0.11,79678,--------,-------,861,9272,0,991,1129.8,138.8,0.123,236.4,0,0.246,755,0.7,11791,0.053,11807,--------,-------,8920,9075,112.1 +25,25,Cladocora,5,30,Leonid,20230920.03,N,9/20/2023,31124,451.5,14,29.6,16.35,478.3,916.2,437.8,0.478,417,0.03,0.62,353,0.26,1985,0.12,76558,--------,-------,836,9914,0,1022.2,1160.6,138.4,0.119,212.2,0,0.202,672,0.764,14139,0.033,14151,--------,-------,11322,11417,88.3 +26,26,Cladocora,6,10,Naharia,20230920.03,N,9/20/2023,37336,900,5,29.9,16.29,338.4,552.4,214,0.387,382.9,0.16,0.7,369,0.2,2144,0.1,138725,--------,-------,761,14319,0,632.4,728.5,96.1,0.132,246.3,0,0.352,675,0.59,8667,0.058,8722,--------,-------,5683,5858,176 +27,27,Cladocora,6,10,Naharia,20230920.03,N,9/20/2023,37354,748.8,5.1,29.9,16.28,329.9,577.8,247.9,0.429,436.1,0.1,0.68,389,0.22,1964,0.1,91434,--------,-------,773,9862,0,701.5,791.4,89.8,0.113,269.3,0,0.236,795,0.059,10147,0.706,10160,--------,-------,7816,7953,127.9 +28,28,Cladocora,6,10,Naharia,20230920.03,N,9/20/2023,37364,900,5,29.9,16.28,211.6,336.9,125.3,0.372,379,0.15,0.67,335,0.23,1836,0.1,98146,--------,-------,712,10888,300,289.9,333.3,43.4,0.13,238.3,0,0.38,734,0.545,8257,0.075,8298,--------,-------,5164,5398,193.7 +29,29,Cladocora,6,10,Naharia,20230920.03,N,9/20/2023,37373,714.9,5,29.9,16.27,378.9,672.2,293.3,0.436,412.2,0.09,0.65,353,0.25,1819,0.1,71326,--------,-------,757,7935,0,770.3,868.9,98.6,0.114,249.6,0,0.226,749,0.713,10999,0.06,11008,--------,-------,8531,8681,117.2 +30,30,Cladocora,6,10,Naharia,20230920.03,N,9/20/2023,37383,900,5,29.8,16.27,216.3,320.4,104.1,0.325,416.3,0.07,0.64,361,0.25,1480,0.12,63624,--------,-------,673,8027,200,240.2,273.2,33,0.121,297.4,0,0.45,852,0.037,7682,0.513,7785,--------,-------,4544,4660,220.1 +31,31,Cladocora,7,10,Naharia,20230920.03,N,9/20/2023,37664,823.2,5,29.8,16.22,234.7,381.7,147,0.385,337,0.11,0.63,329,0.25,1278,0.12,26039,--------,-------,603,3652,0,700.4,781.3,81,0.104,263.2,0,0.204,779,0.726,10845,0.07,10862,--------,-------,8641,8797,115.7 +32,32,Cladocora,7,10,Naharia,20230920.03,N,9/20/2023,37674,900,4.9,29.8,16.21,222,352.4,130.4,0.37,378.5,0.1,0.68,354,0.21,1719,0.11,87980,--------,-------,674,10363,200,355.6,417.2,61.5,0.147,242.2,0,0.485,829,0.062,7052,0.454,7134,--------,-------,3878,4074,257.8 +33,33,Cladocora,7,10,Naharia,20230920.03,N,9/20/2023,37683,900,5,29.9,16.21,201.8,335.5,133.7,0.399,429.8,0.12,0.66,320,0.24,1652,0.1,127303,--------,-------,671,13829,300,352.3,410.8,58.5,0.142,264.7,0,0.437,698,0.473,6521,0.09,6667,--------,-------,3725,3991,268.4 +34,34,Cladocora,7,10,Naharia,20230920.03,N,9/20/2023,37692,630,5,29.8,16.21,175.8,296.6,120.8,0.407,370.2,0,0.61,406,0.26,3131,0.14,68389,--------,-------,1221,10415,300,338.2,359.3,21.2,0.059,281.4,0,0.05,665,0.116,14562,0.833,14567,--------,-------,13774,13866,72.6 +35,35,Cladocora,7,10,Naharia,20230920.04,N,9/20/2023,37701,900,4.9,29.9,16.2,340.3,576.6,236.3,0.41,410.7,0.12,0.7,388,0.2,2069,0.1,118553,--------,-------,767,12471,0,717.7,817.1,99.4,0.122,247.2,0,0.315,787,0.607,8097,0.078,8133,--------,-------,5599,5797,178.6 +36,36,Cladocora,8,10,Naharia,20230920.04,N,9/20/2023,37809,900,4.9,29.8,16.18,279.2,484.6,205.3,0.424,364.5,0.13,0.74,429,0.17,3304,0.09,149827,--------,-------,961,14198,0,444.6,518.4,73.8,0.142,249.6,0,0.38,698,0.056,9376,0.564,9417,--------,-------,5907,6103,169.3 +37,37,Cladocora,8,10,Naharia,20230920.04,N,9/20/2023,37819,900,4.9,29.8,16.18,252.5,435.3,182.8,0.42,376.4,0.16,0.67,325,0.24,1931,0.09,172710,--------,-------,744,16956,200,420.9,501.7,80.7,0.161,222.1,0,0.491,598,0.443,7116,0.066,7216,--------,-------,3691,3923,270.9 +38,38,Cladocora,8,10,Naharia,20230920.04,N,9/20/2023,37831,900,5,29.8,16.18,210,356.6,146.7,0.411,332.1,0.16,0.65,320,0.25,1822,0.1,120628,--------,-------,737,13181,300,385.7,452.5,66.7,0.148,265.3,0,0.445,761,0.489,7969,0.066,8192,--------,-------,4536,4776,220.5 +39,39,Cladocora,8,10,Naharia,20230920.04,N,9/20/2023,37841,900,4.9,29.8,16.17,257.3,409.8,152.6,0.372,407,0.13,0.68,351,0.22,2097,0.1,154797,--------,-------,775,15760,200,395.8,463.7,68,0.147,242.1,0.09,0.467,688,0.45,6791,0.082,6822,--------,-------,3683,3942,271.5 +40,40,Cladocora,8,10,Naharia,20230920.04,N,9/20/2023,37850,700.1,4.9,29.8,16.17,331.5,626.2,294.7,0.471,401.6,0.12,0.71,394,0.19,2662,0.1,136193,--------,-------,882,14079,0,769.7,877,107.3,0.122,224.5,0,0.26,672,0.056,10728,0.684,10741,--------,-------,7968,8121,125.5 +41,41,Cladocora,9,10,Naharia,20230920.04,N,9/20/2023,37998,575.7,4.9,29.8,16.14,375.2,708.2,333,0.47,427.9,0.05,0.7,369,0.2,2352,0.1,104512,--------,-------,811,11298,0,817.9,935,117.1,0.125,220,0,0.247,732,0.05,11644,0.703,11649,--------,-------,8811,8952,113.5 +42,42,Cladocora,9,10,Naharia,20230920.04,N,9/20/2023,38007,882.7,4.8,29.8,16.14,385.4,691.1,305.6,0.442,437.1,0.11,0.71,344,0.19,1907,0.1,106871,--------,-------,675,10947,0,805.9,917.6,111.6,0.122,251.5,0,0.297,771,0.637,8341,0.066,8358,--------,-------,5935,6094,168.5 +43,43,Cladocora,9,10,Naharia,20230920.04,N,9/20/2023,38016,731.4,4.8,29.8,16.14,339.6,626.2,286.6,0.458,392.5,0.11,0.69,339,0.21,2090,0.1,160382,--------,-------,754,16268,0,832.5,942.3,109.8,0.117,230.1,0,0.235,704,0.708,10473,0.057,10491,--------,-------,8043,8182,124.3 +44,44,Cladocora,9,10,Naharia,20230920.04,N,9/20/2023,38025,900,4.9,29.8,16.13,236.5,385.3,148.8,0.386,384,0.16,0.74,352,0.17,2862,0.09,391385,--------,-------,817,34709,200,365.5,434.6,69.1,0.159,220.6,0,0.459,649,0.139,2523,0.402,7996,--------,-------,4083,3867,244.9 +45,45,Cladocora,9,10,Naharia,20230920.05,N,9/20/2023,38035,829.8,4.8,29.8,16.13,318.5,581,262.6,0.452,414.8,0.13,0.65,297,0.26,1466,0.1,107751,--------,-------,628,11037,0,698.8,796.4,97.6,0.123,229.2,0,0.273,678,0.049,9149,0.678,9160,--------,-------,6722,6842,148.8 \ No newline at end of file diff --git a/Cladocora/Data/FIRe Sep 2023/Cladocora_Leonit _and _Naharia.csv b/Cladocora/Data/FIRe Sep 2023/Cladocora_Leonit _and _Naharia.csv new file mode 100644 index 0000000..b8c4969 --- /dev/null +++ b/Cladocora/Data/FIRe Sep 2023/Cladocora_Leonit _and _Naharia.csv @@ -0,0 +1,46 @@ +,...1,Species,Colony,depth,Site,File,Time,DATE,TIME,PAR,Depth(m),T(C),Battery_V,Dark_Fo,Fm,Fv,fv_fm,Sigma,p,Alp1,Tau1,Alp2,Tau2,Alp3,Tau3,Alp4,Tau4,TauAv1,TauAv2,GAIN,Light_Fo,Fm.1,Fv.1,Fv_Fm.1,Sigma.1,p.1,Alp1.1,Tau1.1,Alp2.1,Tau2.1,Alp3.1,Tau3.1,Alp4.1,Tau4.1,TauAv1.1,TauAv2.1,Pmax.e.s +1,1,Cladocora,1,30,Leonid,20230920,N,9/20/2023,30670,609.6,14,29.5,16.5,353,708.3,355.3,0.502,385.3,0.12,0.69,334,0.22,2099,0.09,81397,--------,-------,767,8021,0,745.3,869,123.7,0.142,211,0.06,0.253,649,0.043,11299,0.704,11307,--------,-------,8487,8606,117.8 +2,2,Cladocora,1,30,Leonid,20230920,N,9/20/2023,30680,766.2,14,29.5,16.49,301.4,594.6,293.2,0.493,375.2,0.14,0.66,368,0.25,2179,0.1,113811,--------,-------,863,11662,0,673.3,776.6,103.3,0.133,238.3,0,0.25,778,0.054,9488,0.696,9492,--------,-------,7187,7311,139.1 +3,3,Cladocora,1,30,Leonid,20230920,N,9/20/2023,30693,600.3,13.9,29.5,16.49,334.3,665.4,331.1,0.498,389.3,0.15,0.66,291,0.25,1769,0.09,104182,--------,-------,691,10327,0,890.7,1013.8,123.1,0.121,217.5,0,0.2,626,0.055,11580,0.745,11594,--------,-------,9269,9395,107.9 +4,4,Cladocora,1,30,Leonid,20230920,N,9/20/2023,30700,471.3,13.9,29.5,16.48,243.6,465.3,221.8,0.477,333.6,0.09,0.71,407,0.18,3576,0.11,73977,--------,-------,1044,9268,200,567,646.6,79.6,0.123,197.5,0.03,0.203,552,0.033,14654,0.764,14661,--------,-------,11698,11796,85.5 +5,5,Cladocora,1,30,Leonid,20230920.01,N,9/20/2023,30708,600.9,13.9,29.5,16.48,349.6,684.3,334.7,0.489,417.2,0.18,0.65,346,0.25,2103,0.1,136976,--------,-------,830,14338,0,867.6,997.5,129.9,0.13,229.3,0,0.246,749,0.055,10610,0.699,10611,--------,-------,8044,8185,124.3 +6,6,Cladocora,2,30,Leonid,20230920.01,N,9/20/2023,30807,595,13.8,29.6,16.44,280.6,536,255.4,0.476,424.2,0.16,0.73,375,0.17,2439,0.1,106432,--------,-------,773,11429,0,648.7,751,102.3,0.136,202.5,0.02,0.253,676,0.7,11903,0.047,11914,--------,-------,8927,9067,112 +7,7,Cladocora,2,30,Leonid,20230920.01,N,9/20/2023,30818,636.6,13.8,29.6,16.44,303.6,561.6,258,0.459,393.5,0.13,0.68,322,0.21,1760,0.11,146492,--------,-------,655,17180,200,783.3,895.8,112.5,0.126,211.7,0,0.235,680,0.714,11505,0.051,11507,--------,-------,8828,8965,113.3 +8,8,Cladocora,2,30,Leonid,20230920.01,N,9/20/2023,30827,616.1,13.8,29.6,16.44,293.3,560.3,267,0.476,408.3,0.14,0.69,355,0.2,1896,0.11,105584,--------,-------,699,12285,0,734.5,847.1,112.6,0.133,208.5,0.02,0.239,582,0.706,12195,0.055,12202,--------,-------,9260,9422,108 +9,9,Cladocora,2,30,Leonid,20230920.01,N,9/20/2023,30835,621.9,13.8,29.6,16.43,382.2,711.7,329.5,0.463,441,0.1,0.69,347,0.21,1872,0.1,86894,--------,-------,705,9166,0,870.4,1003.8,133.4,0.133,220.3,0,0.249,743,0.696,10783,0.055,10788,--------,-------,8135,8280,122.9 +10,10,Cladocora,2,30,Leonid,20230920.01,N,9/20/2023,30845,553.7,13.8,29.6,16.43,314.4,593.3,278.9,0.47,408.6,0.16,0.66,309,0.24,1671,0.1,87151,--------,-------,669,9433,0,736.8,843.4,106.6,0.126,215.9,0,0.229,611,0.734,13346,0.037,13349,--------,-------,10320,10432,96.9 +11,11,Cladocora,3,30,Leonid,20230920.01,N,9/20/2023,30913,551.6,13.8,29.6,16.41,309.8,607.2,297.4,0.49,400.9,0.11,0.64,294,0.25,1901,0.1,82661,--------,-------,748,9147,0,717.4,827.5,110.1,0.133,208.2,0,0.237,680,0.038,12220,0.724,12229,--------,-------,9380,9489,106.6 +12,12,Cladocora,3,30,Leonid,20230920.01,N,9/20/2023,30922,504.3,13.8,29.6,16.41,314.6,612.2,297.6,0.486,402.5,0.09,0.64,324,0.26,1946,0.11,90535,--------,-------,791,10411,0,695.8,800.3,104.4,0.13,220.6,0,0.237,684,0.035,13362,0.728,13368,--------,-------,10251,10359,97.6 +13,13,Cladocora,3,30,Leonid,20230920.01,N,9/20/2023,30934,453.4,13.8,29.6,16.4,332.7,638.3,305.6,0.479,421.9,0.07,0.73,392,0.17,2977,0.1,142329,--------,-------,879,15298,0,747.8,844,96.2,0.114,242.8,0.17,0.128,712,0.779,14556,0.093,29849,--------,-------,12606,14211,79.3 +14,14,Cladocora,3,30,Leonid,20230920.01,N,9/20/2023,30943,517.1,13.8,29.6,16.4,324.8,619.2,294.5,0.476,425.4,0.09,0.66,346,0.23,1803,0.11,74873,--------,-------,724,9115,0,676.5,782.6,106.1,0.136,206.6,0,0.244,611,0.058,12469,0.698,12471,--------,-------,9398,9576,106.4 +15,15,Cladocora,3,30,Leonid,20230920.02,N,9/20/2023,30953,379.5,13.9,29.6,16.4,261,491.3,230.3,0.469,367.4,0.07,0.62,318,0.24,1978,0.13,65601,--------,-------,786,9477,0,550.7,635.1,84.3,0.133,175.2,0,0.232,551,0.076,15944,0.692,15964,--------,-------,12088,12379,82.7 +16,16,Cladocora,4,30,Leonid,20230920.02,N,9/20/2023,31011,377.9,13.9,29.6,16.38,347.5,666.7,319.2,0.479,394.5,0.07,0.64,319,0.24,1997,0.12,114350,--------,-------,778,14053,0,767.1,883.7,116.7,0.132,199.1,0,0.252,607,0.709,16072,0.039,16092,--------,-------,12023,12182,83.2 +17,17,Cladocora,4,30,Leonid,20230920.02,N,9/20/2023,31019,502.8,13.8,29.6,16.38,340.8,656.9,316.1,0.481,437.1,0.1,0.62,316,0.28,1569,0.1,92154,--------,-------,703,10072,0,712.9,822.1,109.2,0.133,215.3,0,0.224,602,0.074,12948,0.702,12957,--------,-------,9971,10192,100.3 +18,18,Cladocora,4,30,Leonid,20230920.02,N,9/20/2023,31028,420.9,13.8,29.6,16.37,305.2,561.6,256.4,0.457,430.3,0.17,0.56,442,0.29,1310,0.14,27438,--------,-------,740,4607,0,574.4,660.1,85.7,0.13,209.6,0,0.241,643,0.064,15150,0.695,15162,--------,-------,11423,11661,87.5 +19,19,Cladocora,4,30,Leonid,20230920.02,N,9/20/2023,31037,404.1,13.8,29.6,16.38,380.7,711.3,330.6,0.465,377.4,0.05,0.66,394,0.22,2380,0.12,96210,--------,-------,884,12384,0,774.3,889.8,115.5,0.13,235.8,0.2,0.188,714,0.726,15008,0.086,29872,--------,-------,12064,13597,82.9 +20,20,Cladocora,4,30,Leonid,20230920.02,N,9/20/2023,31045,447.8,13.8,29.6,16.37,353,673.4,320.3,0.476,398.8,0.07,0.67,366,0.21,2355,0.12,102474,--------,-------,839,12794,0,766.9,884.7,117.8,0.133,209.8,0,0.229,607,0.722,14158,0.049,14186,--------,-------,10900,11061,91.7 +21,21,Cladocora,5,30,Leonid,20230920.02,N,9/20/2023,31083,386,14,29.6,16.36,382.1,734.6,352.5,0.48,423.2,0.01,0.62,373,0.24,2015,0.13,71741,--------,-------,835,10138,0,732.4,838.8,106.4,0.127,216.3,0,0.211,580,0.74,15284,0.049,15297,--------,-------,12020,12181,83.2 +22,22,Cladocora,5,30,Leonid,20230920.02,N,9/20/2023,31091,584.3,14.1,29.6,16.36,368.9,711.6,342.7,0.482,402.7,0.09,0.68,339,0.22,2181,0.1,123922,--------,-------,795,12756,0,792.9,911,118.1,0.13,229.8,0.01,0.261,716,0.049,11799,0.69,11803,--------,-------,8765,8914,114.1 +23,23,Cladocora,5,30,Leonid,20230920.02,N,9/20/2023,31103,399.1,14,29.6,16.36,490.8,932.3,441.5,0.474,425,0.06,0.57,305,0.3,1695,0.13,89553,--------,-------,788,12265,0,1089.5,1219.5,130,0.107,240.5,0.18,0.106,753,0.806,15042,0.088,34163,--------,-------,13378,15209,74.8 +24,24,Cladocora,5,30,Leonid,20230920.02,N,9/20/2023,31113,550.3,14,29.6,16.36,574.2,1105.9,531.6,0.481,466.6,0.06,0.64,379,0.26,2050,0.11,79678,--------,-------,861,9272,0,991,1129.8,138.8,0.123,236.4,0,0.246,755,0.7,11791,0.053,11807,--------,-------,8920,9075,112.1 +25,25,Cladocora,5,30,Leonid,20230920.03,N,9/20/2023,31124,451.5,14,29.6,16.35,478.3,916.2,437.8,0.478,417,0.03,0.62,353,0.26,1985,0.12,76558,--------,-------,836,9914,0,1022.2,1160.6,138.4,0.119,212.2,0,0.202,672,0.764,14139,0.033,14151,--------,-------,11322,11417,88.3 +26,26,Cladocora,6,10,Naharia,20230920.03,N,9/20/2023,37336,900,5,29.9,16.29,338.4,552.4,214,0.387,382.9,0.16,0.7,369,0.2,2144,0.1,138725,--------,-------,761,14319,0,632.4,728.5,96.1,0.132,246.3,0,0.352,675,0.59,8667,0.058,8722,--------,-------,5683,5858,176 +27,27,Cladocora,6,10,Naharia,20230920.03,N,9/20/2023,37354,748.8,5.1,29.9,16.28,329.9,577.8,247.9,0.429,436.1,0.1,0.68,389,0.22,1964,0.1,91434,--------,-------,773,9862,0,701.5,791.4,89.8,0.113,269.3,0,0.236,795,0.059,10147,0.706,10160,--------,-------,7816,7953,127.9 +28,28,Cladocora,6,10,Naharia,20230920.03,N,9/20/2023,37364,900,5,29.9,16.28,211.6,336.9,125.3,0.372,379,0.15,0.67,335,0.23,1836,0.1,98146,--------,-------,712,10888,300,289.9,333.3,43.4,0.13,238.3,0,0.38,734,0.545,8257,0.075,8298,--------,-------,5164,5398,193.7 +29,29,Cladocora,6,10,Naharia,20230920.03,N,9/20/2023,37373,714.9,5,29.9,16.27,378.9,672.2,293.3,0.436,412.2,0.09,0.65,353,0.25,1819,0.1,71326,--------,-------,757,7935,0,770.3,868.9,98.6,0.114,249.6,0,0.226,749,0.713,10999,0.06,11008,--------,-------,8531,8681,117.2 +30,30,Cladocora,6,10,Naharia,20230920.03,N,9/20/2023,37383,900,5,29.8,16.27,216.3,320.4,104.1,0.325,416.3,0.07,0.64,361,0.25,1480,0.12,63624,--------,-------,673,8027,200,240.2,273.2,33,0.121,297.4,0,0.45,852,0.037,7682,0.513,7785,--------,-------,4544,4660,220.1 +31,31,Cladocora,7,10,Naharia,20230920.03,N,9/20/2023,37664,823.2,5,29.8,16.22,234.7,381.7,147,0.385,337,0.11,0.63,329,0.25,1278,0.12,26039,--------,-------,603,3652,0,700.4,781.3,81,0.104,263.2,0,0.204,779,0.726,10845,0.07,10862,--------,-------,8641,8797,115.7 +32,32,Cladocora,7,10,Naharia,20230920.03,N,9/20/2023,37674,900,4.9,29.8,16.21,222,352.4,130.4,0.37,378.5,0.1,0.68,354,0.21,1719,0.11,87980,--------,-------,674,10363,200,355.6,417.2,61.5,0.147,242.2,0,0.485,829,0.062,7052,0.454,7134,--------,-------,3878,4074,257.8 +33,33,Cladocora,7,10,Naharia,20230920.03,N,9/20/2023,37683,900,5,29.9,16.21,201.8,335.5,133.7,0.399,429.8,0.12,0.66,320,0.24,1652,0.1,127303,--------,-------,671,13829,300,352.3,410.8,58.5,0.142,264.7,0,0.437,698,0.473,6521,0.09,6667,--------,-------,3725,3991,268.4 +34,34,Cladocora,7,10,Naharia,20230920.03,N,9/20/2023,37692,630,5,29.8,16.21,175.8,296.6,120.8,0.407,370.2,0,0.61,406,0.26,3131,0.14,68389,--------,-------,1221,10415,300,338.2,359.3,21.2,0.059,281.4,0,0.05,665,0.116,14562,0.833,14567,--------,-------,13774,13866,72.6 +35,35,Cladocora,7,10,Naharia,20230920.04,N,9/20/2023,37701,900,4.9,29.9,16.2,340.3,576.6,236.3,0.41,410.7,0.12,0.7,388,0.2,2069,0.1,118553,--------,-------,767,12471,0,717.7,817.1,99.4,0.122,247.2,0,0.315,787,0.607,8097,0.078,8133,--------,-------,5599,5797,178.6 +36,36,Cladocora,8,10,Naharia,20230920.04,N,9/20/2023,37809,900,4.9,29.8,16.18,279.2,484.6,205.3,0.424,364.5,0.13,0.74,429,0.17,3304,0.09,149827,--------,-------,961,14198,0,444.6,518.4,73.8,0.142,249.6,0,0.38,698,0.056,9376,0.564,9417,--------,-------,5907,6103,169.3 +37,37,Cladocora,8,10,Naharia,20230920.04,N,9/20/2023,37819,900,4.9,29.8,16.18,252.5,435.3,182.8,0.42,376.4,0.16,0.67,325,0.24,1931,0.09,172710,--------,-------,744,16956,200,420.9,501.7,80.7,0.161,222.1,0,0.491,598,0.443,7116,0.066,7216,--------,-------,3691,3923,270.9 +38,38,Cladocora,8,10,Naharia,20230920.04,N,9/20/2023,37831,900,5,29.8,16.18,210,356.6,146.7,0.411,332.1,0.16,0.65,320,0.25,1822,0.1,120628,--------,-------,737,13181,300,385.7,452.5,66.7,0.148,265.3,0,0.445,761,0.489,7969,0.066,8192,--------,-------,4536,4776,220.5 +39,39,Cladocora,8,10,Naharia,20230920.04,N,9/20/2023,37841,900,4.9,29.8,16.17,257.3,409.8,152.6,0.372,407,0.13,0.68,351,0.22,2097,0.1,154797,--------,-------,775,15760,200,395.8,463.7,68,0.147,242.1,0.09,0.467,688,0.45,6791,0.082,6822,--------,-------,3683,3942,271.5 +40,40,Cladocora,8,10,Naharia,20230920.04,N,9/20/2023,37850,700.1,4.9,29.8,16.17,331.5,626.2,294.7,0.471,401.6,0.12,0.71,394,0.19,2662,0.1,136193,--------,-------,882,14079,0,769.7,877,107.3,0.122,224.5,0,0.26,672,0.056,10728,0.684,10741,--------,-------,7968,8121,125.5 +41,41,Cladocora,9,10,Naharia,20230920.04,N,9/20/2023,37998,575.7,4.9,29.8,16.14,375.2,708.2,333,0.47,427.9,0.05,0.7,369,0.2,2352,0.1,104512,--------,-------,811,11298,0,817.9,935,117.1,0.125,220,0,0.247,732,0.05,11644,0.703,11649,--------,-------,8811,8952,113.5 +42,42,Cladocora,9,10,Naharia,20230920.04,N,9/20/2023,38007,882.7,4.8,29.8,16.14,385.4,691.1,305.6,0.442,437.1,0.11,0.71,344,0.19,1907,0.1,106871,--------,-------,675,10947,0,805.9,917.6,111.6,0.122,251.5,0,0.297,771,0.637,8341,0.066,8358,--------,-------,5935,6094,168.5 +43,43,Cladocora,9,10,Naharia,20230920.04,N,9/20/2023,38016,731.4,4.8,29.8,16.14,339.6,626.2,286.6,0.458,392.5,0.11,0.69,339,0.21,2090,0.1,160382,--------,-------,754,16268,0,832.5,942.3,109.8,0.117,230.1,0,0.235,704,0.708,10473,0.057,10491,--------,-------,8043,8182,124.3 +44,44,Cladocora,9,10,Naharia,20230920.04,N,9/20/2023,38025,900,4.9,29.8,16.13,236.5,385.3,148.8,0.386,384,0.16,0.74,352,0.17,2862,0.09,391385,--------,-------,817,34709,200,365.5,434.6,69.1,0.159,220.6,0,0.459,649,0.139,2523,0.402,7996,--------,-------,4083,3867,244.9 +45,45,Cladocora,9,10,Naharia,20230920.05,N,9/20/2023,38035,829.8,4.8,29.8,16.13,318.5,581,262.6,0.452,414.8,0.13,0.65,297,0.26,1466,0.1,107751,--------,-------,628,11037,0,698.8,796.4,97.6,0.123,229.2,0,0.273,678,0.049,9149,0.678,9160,--------,-------,6722,6842,148.8 \ No newline at end of file diff --git a/Cladocora/Output/Rplot.pdf b/Cladocora/Output/Rplot.pdf new file mode 100644 index 0000000..86b3fa8 Binary files /dev/null and b/Cladocora/Output/Rplot.pdf differ diff --git a/Cladocora/scripts/.Rhistory b/Cladocora/scripts/.Rhistory new file mode 100644 index 0000000..e69de29 diff --git a/Cladocora/scripts/leptoseris_data_analysis.R b/Cladocora/scripts/leptoseris_data_analysis.R new file mode 100644 index 0000000..5ff5192 --- /dev/null +++ b/Cladocora/scripts/leptoseris_data_analysis.R @@ -0,0 +1,72 @@ +####### LEPTOSERIS ANALYSIS +options(scipen = 999) +fire.data<- read_csv("data/formatted_fire_data.csv")## you need to path this to your data file + +#FIRe Data + +fire.data$depth <- as_factor(fire.data$depth) +fire_data <- fire.data %>% na.omit() +## thin data + +quartiles <- quantile(fire_data$fv_fm, probs = c(.25,.75)) +IQR_cor <- IQR(fire_data$fv_fm) + +lower <- quartiles[1] - 1.5*IQR_cor +upper <- quartiles[2] + 1.5*IQR_cor + +fvfm_no_outlier <- subset(fire_data, fire_data$fv_fm >lower & fire_data$fv_fm< upper) + +quartiles <- quantile(fire_data$Sigma, probs = c(.25,.75)) +IQR_cor <- IQR(fire_data$Sigma) + +lower <- quartiles[1] - 1.5*IQR_cor +upper <- quartiles[2] + 1.5*IQR_cor + +sigma_no_outlier <- subset(fire_data, fire_data$Sigma >lower & fire_data$Sigma< upper) + +quartiles <- quantile(fire_data$Pmax.e.s, probs = c(.25,.75)) +IQR_cor <- IQR(fire_data$Pmax.e.s) + +lower <- quartiles[1] - 1.5*IQR_cor +upper <- quartiles[2] + 1.5*IQR_cor + +Pmax.e.s_no_outlier <- subset(fire_data, fire_data$Pmax.e.s >lower & fire_data$Pmax.e.s< upper) + +quartiles <- quantile(fire_data$p, probs = c(.25,.75)) +IQR_cor <- IQR(fire_data$p) + +lower <- quartiles[1] - 1.5*IQR_cor +upper <- quartiles[2] + 1.5*IQR_cor + +p_no_outlier <- subset(fire_data, fire_data$p >lower & fire_data$p< upper) + +########################## STATS ANALYSIS LEPTOSERIS + +fvfm_no_outlier <- fvfm_no_outlier %>% filter(Species %in% "Leptoseris") + +KW_fvfm <- kruskal.test(fv_fm ~ depth, data = fvfm_no_outlier) +KW_fvfm +DT_fvfm <- dunnTest(fvfm_no_outlier$fv_fm ~ fvfm_no_outlier$depth, method = "bonferroni") +DT_fvfm + +# sigma stats analysis +sigma_no_outlier <- sigma_no_outlier %>% filter(Species %in% "Leptoseris") +KW_sigma<- kruskal.test(Sigma ~ depth, data = sigma_no_outlier) +KW_sigma +dt_sigma <- dunnTest(sigma_no_outlier$Sigma ~ sigma_no_outlier$depth, method = "bonferroni") +dt_sigma + +# p stats analysis +p_no_outlier <- p_no_outlier %>% filter(Species %in% "Leptoseris") +KW_p <- kruskal.test(p ~ depth, data = p_no_outlier) +KW_p +DT_p <- dunnTest(p_no_outlier$p ~ p_no_outlier$depth, method = "bonferroni") +DT_p + +#Pmax stats analysis +Pmax.e.s_no_outlier <- Pmax.e.s_no_outlier %>% filter(Species %in% "Leptoseris") +KW_pmax <- kruskal.test(Pmax.e.s ~ depth, data = Pmax.e.s_no_outlier) +KW_pmax +DT_pmax <- dunnTest(Pmax.e.s_no_outlier$Pmax.e.s ~ Pmax.e.s_no_outlier$depth, method = "bonferroni") +DT_pmax + diff --git a/Cladocora/scripts/packages_script.R b/Cladocora/scripts/packages_script.R new file mode 100644 index 0000000..9eb9d3b --- /dev/null +++ b/Cladocora/scripts/packages_script.R @@ -0,0 +1,66 @@ +#### Install useful packages +## Matt Doherty + + +# some packages may not be in your library if using a different computer than in the research office +# if you highlight library, press ctrl + f you can then replace this with the function "install.packages" +# after doing this run the whole script, press ctrl+ f again, change install.packages to library and run the script +# all functions should then be running smoothly!! + +## data analysis +library('dunn.test') + +#### data manipulation +library("tidyverse") +library("dplyr") +library("tidyr") +library("purrr") +library("magrittr") +library("hms") +library("stringr") +library("forcats") +library("reshape2") +library("data.table") +library("ggpubr") +library("car") +library("broom") + +### importing different data formats +library("readr") +library("readxl") +library("openxlsx") +library("reshape") + +### data visualisation +library("ggplot2") +library("GGally") +library("Cairo") +library("extrafont") +library("RColorBrewer") +library("viridis") +library("cowplot") +library("ggedit") +library("devtools") +library('grid') +library('ggbeeswarm') + +### functionality and spatial analysis +library("raster") +library("rgdal") +library("sf") +library("rgeos") + +### data testing +library("moments") +library("EnvStats") +library("moments") +library("FSA") + +##colpal +library("wesanderson") + +# gretchen packages +library('tidyverse') +library('readxl') +library('janitor') +library('dbplyr') diff --git a/Cladocora/scripts/photophysiology_data_visualisation.R b/Cladocora/scripts/photophysiology_data_visualisation.R new file mode 100644 index 0000000..d6fcafa --- /dev/null +++ b/Cladocora/scripts/photophysiology_data_visualisation.R @@ -0,0 +1,94 @@ +## Eilat photophysiology +options(scipen = 999) + +install.packages("tidyverse") +library(tidyverse) + +fire.data <- read_csv("/Users/talimass/Desktop/Cladocora_Leonit _and _Naharia.csv")## you need to path this to your data file + + +#FIRe Data + +fire.data$depth <- as_factor(fire.data$depth) +fire_data <- fire.data %>% na.omit() + +# fvfm + +quartiles <- quantile(fire_data$fv_fm, probs = c(.25,.75)) +IQR_cor <- IQR(fire_data$fv_fm) + +lower <- quartiles[1] - 1.5*IQR_cor +upper <- quartiles[2] + 1.5*IQR_cor + +fvfm_no_outlier <- subset(fire_data, fire_data$fv_fm >lower & fire_data$fv_fm< upper) + + +fvfm <- ggplot(data = fvfm_no_outlier,aes(x= depth, y=fv_fm, fill= Species))+ + geom_boxplot() + theme_classic() + stat_boxplot(geom = 'errorbar', width = 0.75, position = "dodge") + + labs(title="Quantum yield of photochemistry in PSII", y="Fv’/Fm’") + + theme(legend.position = "none") + + theme(axis.title.y = element_blank()) + + scale_x_discrete(limits = rev) + + coord_flip() + +fvfm + +### sigma + +quartiles <- quantile(fire_data$Sigma, probs = c(.25,.75)) +IQR_cor <- IQR(fire_data$Sigma) + +lower <- quartiles[1] - 1.5*IQR_cor +upper <- quartiles[2] + 1.5*IQR_cor + +sigma_no_outlier <- subset(fire_data, fire_data$Sigma >lower & fire_data$Sigma< upper) + + +sigma <- ggplot(data = sigma_no_outlier,aes(x= depth, y=Sigma, fill= Species))+ + geom_boxplot() + theme_classic() + stat_boxplot(geom = 'errorbar', width = 0.75, position = "dodge") + + labs(title="Functional absorption cross-section of PSII", y= "σPSII’(A2)") + + theme(legend.position = "none") + + theme(axis.title.y = element_blank()) + + scale_x_discrete(limits = rev) + + coord_flip() +sigma + +#### pmax + +quartiles <- quantile(fire_data$Pmax.e.s, probs = c(.25,.75)) +IQR_cor <- IQR(fire_data$Pmax.e.s) + +lower <- quartiles[1] - 1.5*IQR_cor +upper <- quartiles[2] + 1.5*IQR_cor + +Pmax.e.s_no_outlier <- subset(fire_data, fire_data$Pmax.e.s >lower & fire_data$Pmax.e.s< upper) + +pmax <- ggplot(data = Pmax.e.s_no_outlier,aes(x= depth, y=Pmax.e.s, fill= Species))+ + geom_boxplot() + theme_classic() + stat_boxplot(geom = 'errorbar', width = 0.75, position = "dodge") + + labs(title="Maximum photosynthetic rate ", y="Pmax (electron s-1 PSII-1)") + + theme(legend.position = "none") + + theme(axis.title.y = element_blank()) + + scale_x_discrete(limits = rev) + + coord_flip() +pmax + +#### p + +quartiles <- quantile(fire_data$p, probs = c(.25,.75)) +IQR_cor <- IQR(fire_data$p) + +lower <- quartiles[1] - 1.5*IQR_cor +upper <- quartiles[2] + 1.5*IQR_cor + +p_no_outlier <- subset(fire_data, fire_data$p >lower & fire_data$p< upper) + +p <- ggplot(data = p_no_outlier,aes(x= depth, y=p, fill= Species)) + + geom_boxplot() + theme_classic() + stat_boxplot(geom = 'errorbar', width = 0.75, position = "dodge") + + labs(title="connectivity parameter ", y="p") + + theme(legend.position = "none") + + theme(axis.title.y = element_blank()) + + scale_x_discrete(limits = rev) + + coord_flip() +p + +ggarrange(fvfm, sigma, pmax, p) \ No newline at end of file diff --git a/DIP/Data/imaging PAM/Plate_2_sea water.csv b/DIP/Data/imaging PAM/Plate_2_sea water.csv new file mode 100644 index 0000000..1a99ec5 --- /dev/null +++ b/DIP/Data/imaging PAM/Plate_2_sea water.csv @@ -0,0 +1,12 @@ +Date;Time;No.;PAR;F1;F2;F3;F4;Fm'1;Fm'2;Fm'3;Fm'4;Fo'1;Fo'2;Fo'3;Fo'4;Y(II)1;Y(II)2;Y(II)3;Y(II)4;NPQ1;NPQ2;NPQ3;NPQ4;ETR1;ETR2;ETR3;ETR4; +19.09.23;11:22:34;1;0;0.0500;0.0525;0.0632;0.0559;0.1127;0.0966;0.1706;0.1309;0.0500;0.0525;0.0632;0.0559;0.557;0.457;0.629;0.573;0.000;0.000;0.000;0.000; 0.0; 0.0; 0.0; 0.0; +19.09.23;11:25:37;2;1;0.0525;0.0539;0.0676;0.0578;0.1108;0.0975;0.1672;0.1289;0.0496;0.0527;0.0628;0.0555;0.527;0.447;0.595;0.551;0.000;0.000;0.000;0.000; 0.2; 0.2; 0.3; 0.2; +19.09.23;11:28:40;3;21;0.0554;0.0559;0.0770;0.0652;0.1078;0.0961;0.1647;0.1270;0.0490;0.0523;0.0624;0.0552;0.486;0.418;0.533;0.486;0.000;0.000;0.000;0.000; 4.3; 3.7; 4.7; 4.3; +19.09.23;11:31:42;4;56;0.0574;0.0574;0.0809;0.0686;0.1039;0.0917;0.1574;0.1216;0.0482;0.0510;0.0613;0.0541;0.448;0.374;0.486;0.435;0.020;0.000;0.020;0.020; 10.5; 8.8; 11.4; 10.2; +19.09.23;11:34:45;5;111;0.0598;0.0583;0.0868;0.0730;0.0985;0.0868;0.1495;0.1162;0.0470;0.0494;0.0601;0.0530;0.393;0.328;0.420;0.371;0.035;0.027;0.035;0.031; 18.3; 15.3; 19.6; 17.3; +19.09.23;11:37:47;6;186;0.0603;0.0559;0.0907;0.0745;0.0902;0.0789;0.1387;0.1069;0.0450;0.0468;0.0583;0.0510;0.332;0.292;0.346;0.303;0.063;0.055;0.059;0.055; 25.9; 22.8; 27.1; 23.7; +19.09.23;11:40:50;7;281;0.0588;0.0544;0.0897;0.0735;0.0809;0.0706;0.1235;0.0931;0.0426;0.0437;0.0554;0.0476;0.273;0.229;0.274;0.211;0.098;0.090;0.094;0.102; 32.2; 27.0; 32.3; 24.8; +19.09.23;11:43:52;8;336;0.0569;0.0520;0.0868;0.0711;0.0745;0.0642;0.1157;0.0873;0.0407;0.0412;0.0538;0.0461;0.237;0.191;0.250;0.185;0.129;0.125;0.118;0.125; 33.4; 26.9; 35.3; 26.2; +19.09.23;11:46:55;9;396;0.0559;0.0510;0.0853;0.0696;0.0706;0.0627;0.1078;0.0819;0.0395;0.0406;0.0520;0.0445;0.208;0.188;0.209;0.150;0.149;0.133;0.145;0.149; 34.7; 31.2; 34.8; 24.9; +19.09.23;11:49:57;10;461;0.0559;0.0520;0.0853;0.0681;0.0672;0.0588;0.1020;0.0770;0.0384;0.0389;0.0506;0.0430;0.168;0.117;0.163;0.115;0.169;0.161;0.169;0.176; 32.5; 22.6; 31.6; 22.2; +19.09.23;11:53:00;11;531;0.0549;0.0490;0.0833;0.0657;0.0642;0.0564;0.0975;0.0735;0.0374;0.0378;0.0495;0.0419;0.145;0.130;0.146;0.107;0.188;0.176;0.188;0.196; 32.3; 29.1; 32.5; 23.8; diff --git a/DIP/Data/imaging PAM/plate 2 sea water.pim b/DIP/Data/imaging PAM/plate 2 sea water.pim new file mode 100644 index 0000000..2a96786 Binary files /dev/null and b/DIP/Data/imaging PAM/plate 2 sea water.pim differ diff --git a/DIP/Data/imaging PAM/plate_4_ASF.csv b/DIP/Data/imaging PAM/plate_4_ASF.csv new file mode 100644 index 0000000..5cec9c2 --- /dev/null +++ b/DIP/Data/imaging PAM/plate_4_ASF.csv @@ -0,0 +1,14 @@ +Date;Time;No.;PAR;F1;F2;F3;F4;Fm'1;Fm'2;Fm'3;Fm'4;Fo'1;Fo'2;Fo'3;Fo'4;Y(II)1;Y(II)2;Y(II)3;Y(II)4;NPQ1;NPQ2;NPQ3;NPQ4;ETR1;ETR2;ETR3;ETR4; +19.09.23;13:14:43;1;0;0.0564;0.0466;0.0490;0.0480;0.1407;0.0995;0.1265;0.1127;0.0564;0.0466;0.0490;0.0480;0.599;0.532;0.612;0.574;0.000;0.000;0.000;0.000; 0.0; 0.0; 0.0; 0.0; +19.09.23;13:17:46;2;1;0.0574;0.0475;0.0510;0.0475;0.1348;0.0936;0.1196;0.1093;0.0554;0.0452;0.0480;0.0474;0.575;0.492;0.574;0.565;0.000;0.000;0.000;0.000; 0.2; 0.2; 0.2; 0.2; +19.09.23;13:20:49;3;21;0.0686;0.0529;0.0578;0.0539;0.1294;0.0917;0.1181;0.1083;0.0545;0.0448;0.0477;0.0472;0.470;0.422;0.510;0.502;0.024;0.000;0.016;0.000; 4.1; 3.7; 4.5; 4.4; +19.09.23;13:23:51;4;56;0.0770;0.0564;0.0647;0.0593;0.1304;0.0892;0.1176;0.1088;0.0546;0.0442;0.0476;0.0473;0.410;0.368;0.450;0.455;0.020;0.027;0.020;0.000; 9.6; 8.7; 10.6; 10.7; +19.09.23;13:26:54;5;111;0.0632;0.0525;0.0559;0.0515;0.1412;0.0985;0.1230;0.1113;0.0565;0.0464;0.0485;0.0478;0.552;0.468;0.546;0.537;0.000;0.000;0.000;0.000; 25.7; 21.8; 25.4; 25.1; +19.09.23;13:29:56;6;186;0.0975;0.0657;0.0863;0.0755;0.1260;0.0843;0.1137;0.1039;0.0539;0.0429;0.0470;0.0464;0.226;0.221;0.241;0.274;0.027;0.043;0.027;0.020; 17.6; 17.3; 18.9; 21.4; +19.09.23;13:32:59;7;281;0.0936;0.0613;0.0828;0.0735;0.1132;0.0745;0.0990;0.0931;0.0514;0.0402;0.0443;0.0441;0.173;0.178;0.163;0.211;0.059;0.082;0.071;0.051; 20.4; 21.0; 19.3; 24.8; +19.09.23;13:36:01;8;336;0.0887;0.0569;0.0784;0.0672;0.1029;0.0662;0.0922;0.0843;0.0492;0.0377;0.0428;0.0420;0.138;0.141;0.149;0.203;0.090;0.125;0.094;0.082; 19.5; 19.9; 21.0; 28.7; +19.09.23;13:39:04;9;396;0.0593;0.0475;0.0559;0.0485;0.1098;0.0770;0.0975;0.0868;0.0507;0.0410;0.0440;0.0426;0.460;0.382;0.427;0.441;0.071;0.075;0.075;0.075; 76.5; 63.6; 71.0; 73.3; +19.09.23;13:42:06;10;461;0.0887;0.0583;0.0794;0.0672;0.1000;0.0647;0.0887;0.0779;0.0485;0.0372;0.0421;0.0404;0.113;0.098;0.105;0.138;0.102;0.133;0.106;0.110; 21.8; 19.1; 20.3; 26.8; +19.09.23;13:45:09;11;531;0.0873;0.0574;0.0784;0.0667;0.0946;0.0618;0.0833;0.0750;0.0472;0.0362;0.0408;0.0396;0.078;0.071;0.059;0.111;0.122;0.153;0.129;0.125; 17.3; 15.9; 13.1; 24.8; +19.09.23;13:48:11;12;611;0.0828;0.0569;0.0735;0.0642;0.0873;0.0583;0.0770;0.0706;0.0453;0.0350;0.0392;0.0383;0.051;0.000;0.000;0.090;0.153;0.176;0.161;0.149; 13.0; 0.0; 0.0; 23.2; +19.09.23;13:51:14;13;701;0.0779;0.0520;0.0681;0.0593;0.0794;0.0539;0.0730;0.0672;0.0431;0.0334;0.0382;0.0373;0.000;0.000;0.067;0.117;0.192;0.212;0.184;0.169; 0.0; 0.0; 19.8; 34.4; diff --git a/DIP/Data/imaging PAM/plate_4_ASF.pim b/DIP/Data/imaging PAM/plate_4_ASF.pim new file mode 100644 index 0000000..23935b1 Binary files /dev/null and b/DIP/Data/imaging PAM/plate_4_ASF.pim differ diff --git a/DIP/Scripts/Test with photosynthesis pack_Combined JB HP script for PAM data and statistics of RLC parameters_HP.R b/DIP/Scripts/Test with photosynthesis pack_Combined JB HP script for PAM data and statistics of RLC parameters_HP.R new file mode 100644 index 0000000..bed5d09 --- /dev/null +++ b/DIP/Scripts/Test with photosynthesis pack_Combined JB HP script for PAM data and statistics of RLC parameters_HP.R @@ -0,0 +1,476 @@ +library(tidyverse) +# library(lubridate) +library(ggplot2) +#install.packages(photosynthesis) +library(photosynthesis) +# library(phytotools) +# library(plyr) +# library(tidyr) +# library(dplyr) +# library(reshape2) +# library("devtools") +# library("segmented") +# library("plotrix") +# library("gridExtra") +# library("lubridate") +# library("chron") + library("broom") +# library("ggpubr") +# library("minpack.lm") +# library("ggpmisc") + + + + + +#calculating RLC parameters using phytotools (pratt 1980) +#setwd("G:/Shared drives/Jessica Bellworthy/R/RapidLightCurves") + +PLATE1 +# Import data +#{r import_data} +Data <-read.csv("/Users/hputnam/Downloads/plate_4_ASF.csv", header=T, sep=";", na.string="NA") #reads in the data files +Data <- Data[, c("Date", "Time", "PAR", "ETR1","ETR2","ETR3","ETR4")]# change the ETR according the data +# change format from wide to long +Data <- Data %>% pivot_longer(., cols = starts_with("etr"), names_to = "id") +Data$value <- na_if(Data$value, 0) +#need to Remove all data at PAR values above where ETR hits zero +Data$PAR <- as.numeric(Data$PAR) +colnames(Data)[5] ="ETR" + +Data<-Data%>% mutate_all(funs(replace(., is.na(.), 0))) + +#plot all data +Data %>% + ggplot(aes(x=PAR, y=ETR, color=id))+ + geom_point()+ + geom_line()+ + facet_wrap("id")+ + theme_bw() + +#Remove outliers of ETR +Data <- Data %>% + subset(ETR<40) + +#plot data again +Data %>% + ggplot(aes(x=PAR, y=ETR, color=id))+ + geom_point()+ + geom_line()+ + facet_wrap("id")+ + theme_bw() + + +# Set column order PAR - ETR - ID +rlc.data <- Data +rlc.data$colony <- as.factor(rlc.data$id) + + +#rlc.data$ETR <- na_if(rlc.data$ETR, 0) +View(rlc.data) + +#rlc.data <- data.frame(stringsAsFactors=FALSE) + +ncurves <- length(unique(rlc.data$id)) # number of unique ids in the data +ids <- unique(rlc.data$id) # store the unique ids + +str(rlc.data) + +rlc.parameters <- data.frame( + id = ids, + alpha = 0, + beta = 0, + ETRmax = 0, + Ek = 0, + ps = 0 +) + +#photosyntehsis packedge +#https://cran.r-project.org/web/packages/photosynthesis/photosynthesis.pdf +#https://cran.r-project.org/web/packages/photosynthesis/vignettes/light-response.html +#k_sat = Pmax +#phi_J = alpha, maximum quantum yield +#theta_j = curvature parameter (unitless) +#Rd = dark respration, but will not be realistic if it is an ETR curve and +#not a PI curve, becasue ETR starts at 0 and not -rates of respiration + +rlc<-fit_photosynthesis(filter (rlc.data, colony=="ETR2"),.photo_fun = "aq_response", + .vars = list(.A = ETR, .Q = PAR)) +summary(rlc) + +library(purrr) + +fits = rlc.data |> + split(~ id) |> + map(fit_photosynthesis, .photo_fun = "aq_response", .vars = list(.A = ETR, .Q = PAR)) + +## Estimated parameters: +fits |> + map(coef) |> + map(t) |> + map(as.data.frame) |> + imap_dfr(~ mutate(.x, CO2_s = .y)) + + +### works through here + + + + + + + + + + + + + + + +# The 'rlc' object inherits class 'nls' and many methods can be used + +## Model summary: +summary(rlc) + +## Estimated parameters: +coef(rlc) + +## 95% confidence intervals: +#confint(rlc) + +## Tidy summary table using 'broom::tidy()' +#tidy(rlc, conf.int = TRUE, conf.level = 0.95) + +## Calculate light compensation point +coef(rlc) |> + t() |> + as.data.frame() |> + mutate(LCP = ((Rd) * (Rd * theta_J - k_sat) / (phi_J * (Rd - k_sat)))) |> + sum(resid(rlc) ^ 2) ## Calculate residual sum-of-squares + +b = coef(rlc) + +df_predict = data.frame(Qabs = seq(0, 0.84 * 1000, length.out = 100)) |> + mutate( + A = marshall_biscoe_1980( + Q_abs = Qabs, + k_sat = b["k_sat"], + b["phi_J"], + b["theta_J"] + ) - b["Rd"] + ) + +ggplot(mapping = aes(Qabs, A)) + + geom_line(data = df_predict) + + geom_point(data = filter(rlc.data, colony == "ETR2"),x=A, y=Qabs) + + labs( + x = expression("Irradiance (" * mu * mol ~ m^{-2} ~ s^{-1} * ")"), + y = expression(A[net] ~ "(" * mu * mol ~ m^{-2} ~ s^{-1} * ")") + ) + + theme_bw() + + + + +#for (i in 1:ncurves){ + + temp.id = ids[i] # extract the id of the curve to be rlcted + + print(paste("Now rlcting curve ", as.character(temp.id))) # to keep track what's happening if the data has many curves + + temp.rlc.data <- rlc.data[rlc.data$id==temp.id,] # extract the the data of a single curve into a temporary variable + PAR = temp.rlc.data$PAR + ETR = temp.rlc.data$ETR + + rlc = rlcPGH(PAR, ETR, rlcmethod = "Port") # for more options and explanation see package phytotools manual + + # store the rlcted RLC values into temporary variables + alpha.rlc = rlc$alpha[1] + beta.rlc = rlc$beta[1] + ps.rlc = rlc$ps[1] + + # store the parameters + rlc.parameters$id[i] <- temp.id + rlc.parameters$alpha[i] <- alpha.rlc + rlc.parameters$beta[i] <- beta.rlc + rlc.parameters$ps[i] <- ps.rlc + + # calculate ETRmax and Ek for the PGH model (see e.g.Ralph & Gademann 2005 Aquatic Botany 82 (3): 222 - 237). + # Note that the equation depends on the model rlcted, the code below applies only to the PGH model! + # Model equations are documented in the phytotools package code examples (and in the original papers): https://cran.r-project.org/web/packages/phytotools/phytotools.pdf + + ETRmax = ps.rlc*(alpha.rlc/(alpha.rlc + beta.rlc))*(beta.rlc/(alpha.rlc+beta.rlc))^(beta.rlc/alpha.rlc) + Ek = ETRmax/alpha.rlc + + # store the variables + rlc.parameters$ETRmax[i] <- ETRmax + rlc.parameters$Ek[i] <- Ek + + #plotting the curve and rlcted model into a tiff file. By default the file name is the id of the curve. + tiff(file=paste0(temp.id, ".tiff"), compression="lzw") + + # plot the data, + plot(x=PAR, y=ETR, main=temp.id) + + # plot the model rlc + with(rlc, { + P <- ps.rlc*(1-exp(-1*alpha.rlc*PAR/ps.rlc))*exp(-1*beta.rlc*PAR/ps.rlc) # the PGH model equation + lines(PAR,P) + } + ) # end of with + dev.off() #close the plotting devide. if this is not done, the next run of the loop will override the plot. + +} + +# now the data frame rlc.parameters contains the rlcted values for each curve. Tiff plots should be in current working directory. +rlc.parameters +View(rlc.parameters) + + +warnings() + +#rlc.parameters_first <- rlc.parameters +#View(rlc.parameters_first) + +write.csv(file="rlc.parameters.oculinaproject.csv",rlc.parameters) + + +#### check statistical differences +library(lme4) +library(nlme) +library(lmerTest) +library(MASS) +library(car) +library(predictmeans) + +rm(rlc.parameters) +# Get FvFm +d_PAM <- read.csv(file="all PAM_data.csv") +View(d_PAM) +FVFM <- subset(d_PAM, d_PAM$PAR=='1') +View(FVFM) +names(FVFM)[8]<-paste("FVFM") + +###manualy copy the FVFM to the rlc parameter data + +##manually calculate maxNPQ for each colony + +np <- read.csv(file = "all PAM_data.csv") +names(np)[1]<-paste("id") +head(np) +str(np) + +## NPQmax +npq_max <- ddply(np, .(id,depth), summarise, + max = max(NPQ, na.rm = F)) +view(npq_max) + +d <- read_csv('rlc.parameters.oculinaproject_NEW.csv') + +head(d) +View(d) +d$depth <- as.factor(d$depth) +d$id <- as.factor(d$id) + +etrMAX <- lm(ETRmax~depth, data=d) +summary(etrMAX) +anova(etrMAX) +# No sig diff p = 0.5074 + +#summary(glht(etrMAX, linfct=mcp(treatment="Tukey"))) + +#normality assumptions - OK +shapiro.test(d$ETRmax) +leveneTest(ETRmax~depth,d=d) + +###alpha +Alpha <- lm(alpha~depth, data=d2) # with the anomaly removed p = 0.7109 +anova(Alpha) +# No sig diff p = 0.321 + +#summary(glht(Alpha, linfct=mcp(treatment="Tukey"))) + +#normality assumptions - +shapiro.test(d2$alpha) #OK - with anomaly removed +leveneTest(alpha~depth,d=d) #OK + +###eK +head(d) +eK <- lm(Ek~depth, data=d) +summary(eK) +anova(eK) +# No sig diff p = 0.538 +#summary(glht(eK, linfct=mcp(treatment="Tukey"))) + +#normality assumptions -ok +shapiro.test(d$Ek) +leveneTest(Ek~depth,d=d) + +###FV/FM +head(d) +fv <- lm(fvfm~depth, data=d) +anova(fv) +# No sig diff p = 0.132 +#summary(glht(fv, linfct=mcp(treatment="Tukey"))) + +#normality assumptions +shapiro.test(d$fvfm) ### not normally distributed, two low deep outliers +leveneTest(fvfm~depth,d=d) +qqnorm(d$fvfm) + + +###beta +head(d) +b <- lm(beta~depth, data=d) +anova(b) +# No sig diff p = 0.6228 + + +#normality assumptions +shapiro.test(d$beta) ### not normally distributed +leveneTest(beta~depth,d=d) +qqnorm(d$fvfm) + + +## summary of results +library(plotrix) +# Remove one outlier from Ashdod deep - no Y(II) and no ETR, gives very high false alpha. Replace with NA but keep this sample in other columns +d2 <- read_csv('rlc.parameters.oculinaproject_NA.csv') + + +View(d2) + +Sum_all <- d2 %>% + group_by(depth) %>% + summarise_each(funs(mean(., na.rm=TRUE), n = sum(!is.na(.)), + se = sd(., na.rm=TRUE)/sqrt(sum(!is.na(.)))), alpha:fvfm) + +View(Sum_all) +write.csv(file="rlc.averages.oculinaproject_removedoutlier.csv", Sum_all) + + +#### Graphics in Box plots +#ETRmax +p.etr = ggplot(d, aes(y = ETRmax, x = depth)) + + geom_boxplot()+ + geom_point()+ + theme_classic()+ + theme(axis.title.x = element_blank(), axis.text = element_text(colour = "black")) + +#note here the removal of the outlier +p.alpha = ggplot(d2, aes(y = alpha, x = depth)) + + geom_boxplot()+ + geom_point()+ + theme_classic()+ + theme(axis.title.x = element_blank(), axis.text = element_text(colour = "black")) + +p.beta = ggplot(d, aes(y = beta, x = depth)) + + geom_boxplot()+ + geom_point()+ + theme_classic()+ + theme(axis.title.x = element_blank(), axis.text = element_text(colour = "black")) + +p.ek = ggplot(d, aes(y = Ek, x = depth)) + + geom_boxplot()+ + geom_point()+ + theme_classic()+ + theme(axis.title.x = element_blank(), axis.text = element_text(colour = "black")) + +p.fvfm = ggplot(d, aes(y = fvfm, x = depth)) + + geom_boxplot()+ + geom_point()+ + theme_classic()+ + theme(axis.title.x = element_blank(), axis.text = element_text(colour = "black")) + +#install.packages("cowplot") +library(cowplot) + +rlc.plots <- plot_grid(p.etr, p.alpha, p.beta, p.ek, p.fvfm, labels = c('A', 'B', 'C', 'D', 'E'), + label_x = 0.15, label_y = 0.985, label_size = 14,ncol = 2, align = "v", byrow = F, hjust =2) +rlc.plots +ggsave("PAM_OculinaProject2020.jpeg", plot = rlc.plots, width = 10, height = 18,dpi=600, + units = "cm") + + + + + +###graphics for light curve data against PAR on xaxis + +d <- read.csv("all PAM_data.csv") +head(d) +names(d)[8]<-paste("effective") + + +p_rETR <- ggplot(d, aes(y=rETR*0.5, x=PAR, colour=depth,group=depth)) + + #geom_point(size=2,alpha=0.5)+ + geom_smooth(size=2,alpha=0.5,na.rm = FALSE,level=0.95)+ + #geom_errorbar(data=Sum_all, aes(ymin=ETRmax_mean-ETRmax_se, ymax=ETRmax_mean+ETRmax_se) + scale_color_jco() + + theme_bw() %+replace% + theme(legend.position="none", + axis.line = element_line(colour = "black"), + panel.grid.major = element_blank(), panel.grid.minor.y=element_blank(), + panel.background = element_blank(), + axis.title =element_text(size=12), + axis.text=element_text(size=12), + axis.text.x = element_text(size=12))+ + #scale_x_continuous("PAR", labels = as.numeric(PAR), breaks = PAR)+ + xlab(bquote('?mol photons '~ m^-2~s^-1*''))+ylab('Relative ETR') +# labs(x=parse(text='µmol photons, m^-2s^-1'),y=parse(text='rETR'))+ +#guides(fill=guide_legend(title="Treatments")) +p_rETR + +p_effective <- ggplot(d, aes(y=effective, x=PAR, colour=depth,group=depth)) + + #geom_line(size=0.5)+#geom_point(aes(shape=treatment, color=treatment))+ + #geom_errorbar(aes(ymin = mean_eff-se, ymax= mean_eff+se), + #width=.5, position=position_dodge(0.05))+ + #geom_point(aes(colour= treatment),size=1,alpha=0.5)+ + geom_smooth(size=2,alpha=0.5,na.rm = FALSE,level=0.95)+ + scale_color_jco() + + theme_bw() %+replace% + theme(legend.position="none", + axis.line = element_line(colour = "black"), + panel.grid.major = element_blank(), panel.grid.minor.y=element_blank(), + panel.background = element_blank(), + axis.title =element_text(size=12), + axis.text=element_text(size=12), + axis.text.x = element_text(size=12))+ + #xlab(bquote('µmol photons' ('m^-2 s^-1'))) + xlab(bquote('?mol photons '~ m^-2~s^-1*''))+ylab('Effective quantum yield') +#labs(x=expression(paste("µmol photons ", m^{-2})),y='Effective quantum yield') +p_effective + +p_NPQ2 <- ggplot(d, aes(y=NPQ, x=PAR, colour=depth,group=depth)) + + # geom_line(size=0.5)+#geom_point(aes(shape=treatment, color=treatment))+ + # geom_errorbar(aes(ymin = mean_eff-se, ymax= mean_eff+se), + # width=.5, position=position_dodge(0.05))+ + #geom_point(aes(colour= treatment),size=2,alpha=0.5)+ + geom_smooth(size=2,alpha=0.5,na.rm = FALSE,level=0.95)+ + scale_color_jco() + + theme_bw() %+replace% + theme(legend.position="left", + axis.line = element_line(colour = "black"), + panel.grid.major = element_blank(), panel.grid.minor.y=element_blank(), + panel.background = element_blank(), + axis.title =element_text(size=12), + axis.text=element_text(size=12), + axis.text.x = element_text(size=12))+ + xlab(bquote('?mol photons '~ m^-2~s^-1*''))+ylab('Non-photochemical quenching')+ + # scale_x_continuous(limits = c(21, 32), breaks = seq(21, 32, by = 1)) + #labs(x=expression(paste("µmol photons ", m^{-2})), + # y='Non-photochemical quenching')+ + # labs(x=parse(text='µmol photons, m^-2s^-1'),y=parse(text='rETR'))+ + guides(color=guide_legend(override.aes=list(fill=NA))) +p_NPQ2 + +ggsave("for legend.tiff", plot = p_NPQ2, width = 8.5 , height = 8 ,dpi=600, + units = "cm") + +one_grid <- plot_grid(p_rETR2, p_effective, p_NPQ2, labels = c('A', 'B', 'C'), + # A negative rel_height shrinks space between elements + label_x = 0.15, label_y = 0.985, label_size = 14,ncol = 1) +one_grid +ggsave("RLC_June2020.tiff", plot = one_grid, width = 8.5 , height = 21 ,dpi=600, + units = "cm") diff --git a/DIP/Scripts/pi_curves_nls_TM_HP.Rmd b/DIP/Scripts/pi_curves_nls_TM_HP.Rmd new file mode 100644 index 0000000..0787200 --- /dev/null +++ b/DIP/Scripts/pi_curves_nls_TM_HP.Rmd @@ -0,0 +1,728 @@ +--- +title: "pi_curves_nls" +author: "Ariana S Huffmyer" +date: "3/18/2021" +output: + html_document: default + pdf_document: default +--- + +```{r setup, include=FALSE} +knitr::opts_chunk$set(echo = TRUE, cache = TRUE, message = FALSE, warning = FALSE) +``` + +```{r load_packages} +#Read in required libraries +library("devtools") +library("ggplot2") +library("segmented") +library("plotrix") +library("gridExtra") +library("lubridate") +library("chron") +library("plyr") +library("dplyr") +library("tidyr") +library("tidyverse") +library("broom") +library("ggpubr") +library("minpack.lm") +library("ggpmisc") + +``` + +Load metadata +```{r} +sample.info <- read.csv("RAnalysis/data/Spat_Info.csv", na.strings = "NA") +sample.info$Size.mm2 <- as.numeric(as.character(sample.info$Size.mm2)) + +#Plot Size as a function of Polyp Number +ggplot(data = sample.info, aes(x = Polyp.Number, y = Size.mm2)) + + stat_poly_line() + + stat_poly_eq(use_label(c("eq", "R2","P")), size = 4) + + geom_point() + + theme_classic() +``` + +PLATE1 +# Import data +```{r import_data} +Data <-read.csv("/Users/hputnam/Downloads/plate_4_ASF.csv", header=T, sep=";", na.string="NA") #reads in the data files +Data <- Data[, c("Date", "Time", "PAR", "ETR1","ETR2","ETR3","ETR4")] +# change format from wide to long +Data <- Data %>% pivot_longer(., cols = starts_with("ETR"), names_to = "Spat.ID") +Data$value <- na_if(Data$value, 0) +#need to Remove all data at PAR values above where ETR hits zero +Data$PAR <- as.numeric(Data$PAR) +colnames(Data)[5] ="ETR" + +``` + + +# View Data plots +```{r} +Data <- Data %>% + subset(ETR<40) + +Data %>% +ggplot(aes(x=PAR, y=ETR, color=Spat.ID))+ + geom_point()+ + geom_line()+ + facet_wrap("Spat.ID") + theme_bw() + +``` + +```{r} +set.seed(123) +Data.PI <- Data %>% subset(PAR<900) +curve.nlsPIC <- Data.PI %>% nls(ETR ~ (Am*((AQY*PAR)/(sqrt(Am^2 + (AQY*PAR)^2)))-Rd), data=., start=list(Am=0.7, AQY=0.001, Rd=.4)) +coef(curve.nlsPIC) +plot(ETR ~ PAR, data = Data.PI) +lines(0:900, + predict(curve.nlsPIC, + newdata = data.frame(PAR = 0:900))) +``` +# Define PI curve function as a nonlinear Least Squares regression of a quadratic fit, test nls fit +Aquatic Photosynthesis, Falkowski +Pmax = max photosynthesis (AKA Am from Bayesian script) +alpha = quantum yeild (AKA AQY from Bayesian script) +I/E = irradiance (AKA PAR from Bayesian script) +Rd = dark respiration + +Using fixed initial values (keeping for reference): +```{r} + +# Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR13")) +# Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR16")) +# Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR19")) +# Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR2")) +# Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR7")) +# Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR1")) + +nls_data1 <- Data.PI %>% +group_by(Spat.ID) %>% +nest(-Spat.ID) %>% +mutate(model1 = map(data, ~ +nls(ETR ~ (Am*((AQY*PAR)/(sqrt(Am^2 + (AQY*PAR)^2)))-Rd), data=., start=list(Am=0.7, AQY=0.001, Rd=.4)) %>% +tidy %>% +dplyr::select(term, estimate) %>% +spread(term, estimate))) %>% +unnest(model1) %>% +mutate(Ik = Am/AQY)%>% +mutate(Date = "20230505") %>% +mutate(Plate = "Plate1") %>% +mutate(Spat.ID.PAM = paste0(Date,"_",Plate,"_",Spat.ID)) #%>% +#write_csv(., "RAnalysis/output/Plate1_pi_curve_pars_NLS_fixedparms.csv") +``` + +Plot curve over data points. +```{r} +augmented <- Data.PI %>% + filter(PAR <900) %>% + nest(-Spat.ID) %>% + mutate( + fit = map(data, ~ nls(ETR ~ (Am*((AQY*PAR)/(sqrt(Am^2 + (AQY*PAR)^2)))-Rd), data=., start=list(Am=0.7, AQY=0.001, Rd=.4))), + augmented = map(fit, augment), + ) %>% + unnest(augmented) + +augmented$ID <-augmented$Spat.ID +Aug <- augmented %>% separate(ID, c("Sp", "Num", "Type")) + +#all colonies together +pdf("RAnalysis/output/Plate1_PI_Curve_Fit_Plots.pdf") +PI.curves <- Aug %>% +ggplot(aes(x=PAR, y=ETR, color=Spat.ID))+ + geom_point() + + geom_line(aes(y=.fitted, x=PAR,group=Spat.ID))+ + theme_classic()+ + labs(x = expression(paste('PAR (', mu, "mol photons m"^-2, 's'^-1,")")), + y = expression(paste("ETR")))+ + theme(legend.position = "top") +PI.curves +dev.off() + +``` +#PLATE 2 + +# Import data +```{r import_data} +Data <-read.csv("RAnalysis/data/ImagingPam/20230505_Spat_Plate2_newpoi.csv", header=T, sep=";", na.string="NA") #reads in the data files +Data <- Data[, c("Date", "Time", "PAR", "ETR1","ETR2","ETR3","ETR4","ETR5","ETR6","ETR7","ETR8","ETR9","ETR10","ETR11", + "ETR12","ETR13","ETR14","ETR15","ETR16","ETR17","ETR18", + "ETR19","ETR20","ETR21","ETR22")] +# change format from wide to long +Data <- Data %>% pivot_longer(., cols = starts_with("ETR"), names_to = "Spat.ID") +Data$value <- na_if(Data$value, 0) +#need to Remove all data at PAR values above where ETR hits zero +Data$PAR <- as.numeric(Data$PAR) +colnames(Data)[5] ="ETR" + +``` + + +# View Data plots +```{r} +Data %>% +ggplot(aes(x=PAR, y=ETR, color=Spat.ID))+ + geom_point()+ + theme_bw() +``` + +```{r} +set.seed(123) +Data.PI <- Data %>% subset(PAR<900) +curve.nlsPIC <- Data.PI %>% nls(ETR ~ (Am*((AQY*PAR)/(sqrt(Am^2 + (AQY*PAR)^2)))-Rd), data=., start=list(Am=0.7, AQY=0.001, Rd=.4)) +coef(curve.nlsPIC) +plot(ETR ~ PAR, data = Data.PI) +lines(0:900, + predict(curve.nlsPIC, + newdata = data.frame(PAR = 0:900))) +``` +# Define PI curve function as a nonlinear Least Squares regression of a quadratic fit, test nls fit +Aquatic Photosynthesis, Falkowski +Pmax = max photosynthesis (AKA Am from Bayesian script) +alpha = quantum yeild (AKA AQY from Bayesian script) +I/E = irradiance (AKA PAR from Bayesian script) +Rd = dark respiration + +Using fixed initial values +```{r} + +Data.PI <- Data.PI %>% subset(Spat.ID!="ETR12") +Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR13")) +Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR18")) +Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR19")) +Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR6")) +Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR7")) +Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR9")) +#Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR18")) +#Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR19")) + +nls_data2 <- Data.PI %>% +group_by(Spat.ID) %>% +nest(-Spat.ID) %>% +mutate(model1 = map(data, ~ +nls(ETR ~ (Am*((AQY*PAR)/(sqrt(Am^2 + (AQY*PAR)^2)))-Rd), data=., start=list(Am=0.7, AQY=0.001, Rd=.4)) %>% +tidy %>% +dplyr::select(term, estimate) %>% +spread(term, estimate))) %>% +unnest(model1) %>% +mutate(Ik = Am/AQY)%>% +mutate(Date = "20230505") %>% +mutate(Plate = "Plate2") %>% +mutate(Spat.ID.PAM = paste0(Date,"_",Plate,"_",Spat.ID)) %>% +write_csv(., "RAnalysis/output/Plate2_pi_curve_pars_NLS_fixedparms.csv") +``` + +Plot curve over data points. +```{r} +augmented <- Data.PI %>% + filter(PAR <900) %>% + nest(-Spat.ID) %>% + mutate( + fit = map(data, ~ nls(ETR ~ (Am*((AQY*PAR)/(sqrt(Am^2 + (AQY*PAR)^2)))-Rd), data=., start=list(Am=0.7, AQY=0.001, Rd=.4))), + augmented = map(fit, augment), + ) %>% + unnest(augmented) + +augmented$ID <-augmented$Spat.ID +Aug <- augmented %>% separate(ID, c("Sp", "Num", "Type")) + +#all colonies together +pdf("RAnalysis/output/Plate2_PI_Curve_Fit_Plots.pdf") +PI.curves <- Aug %>% +ggplot(aes(x=PAR, y=ETR, color=Spat.ID))+ + geom_point() + + geom_line(aes(y=.fitted, x=PAR,group=Spat.ID))+ + theme_classic()+ + labs(x = expression(paste('PAR (', mu, "mol photons m"^-2, 's'^-1,")")), + y = expression(paste("ETR")))+ + theme(legend.position = "top") +PI.curves +dev.off() + +``` + +#PLATE 3 + +# Import data +```{r import_data} +Data <-read.csv("RAnalysis/data/ImagingPam/20230510_Spat_Plate3.csv", header=T, sep=";", na.string="NA") #reads in the data files +Data <- Data[, c("Date", "Time", "PAR", "ETR1","ETR2","ETR3","ETR4","ETR5","ETR6","ETR7","ETR8","ETR9","ETR10","ETR11", + "ETR12","ETR13","ETR14","ETR15","ETR16","ETR17","ETR18", + "ETR19","ETR20","ETR21","ETR22")] +# change format from wide to long +Data <- Data %>% pivot_longer(., cols = starts_with("ETR"), names_to = "Spat.ID") +Data$value <- na_if(Data$value, 0) +#need to Remove all data at PAR values above where ETR hits zero +Data$PAR <- as.numeric(Data$PAR) +colnames(Data)[5] ="ETR" + +``` + + +# View Data plots +```{r} +Data %>% +ggplot(aes(x=PAR, y=ETR, color=Spat.ID))+ + geom_point()+ + theme_bw() +``` + +```{r} +set.seed(123) +Data.PI <- Data %>% subset(PAR<900) +curve.nlsPIC <- Data.PI %>% nls(ETR ~ (Am*((AQY*PAR)/(sqrt(Am^2 + (AQY*PAR)^2)))-Rd), data=., start=list(Am=0.7, AQY=0.001, Rd=.4)) +coef(curve.nlsPIC) +plot(ETR ~ PAR, data = Data.PI) +lines(0:900, + predict(curve.nlsPIC, + newdata = data.frame(PAR = 0:900))) +``` +# Define PI curve function as a nonlinear Least Squares regression of a quadratic fit, test nls fit +Aquatic Photosynthesis, Falkowski +Pmax = max photosynthesis (AKA Am from Bayesian script) +alpha = quantum yeild (AKA AQY from Bayesian script) +I/E = irradiance (AKA PAR from Bayesian script) +Rd = dark respiration + +Using fixed initial values +```{r} + +Data.PI <- Data.PI %>% subset(Spat.ID!="ETR1") +Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR14")) +Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR17")) +Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR19")) +Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR4")) +Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR6")) +#Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR9")) +#Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR18")) +#Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR19")) + +nls_data3 <- Data.PI %>% +group_by(Spat.ID) %>% +nest(-Spat.ID) %>% +mutate(model1 = map(data, ~ +nls(ETR ~ (Am*((AQY*PAR)/(sqrt(Am^2 + (AQY*PAR)^2)))-Rd), data=., start=list(Am=0.7, AQY=0.001, Rd=.4)) %>% +tidy %>% +dplyr::select(term, estimate) %>% +spread(term, estimate))) %>% +unnest(model1) %>% +mutate(Ik = Am/AQY)%>% +mutate(Date = "20230510") %>% +mutate(Plate = "Plate3") %>% +mutate(Spat.ID.PAM = paste0(Date,"_",Plate,"_",Spat.ID)) %>% +write_csv(., "RAnalysis/output/Plate3_pi_curve_pars_NLS_fixedparms.csv") +``` + +Plot curve over data points. +```{r} +augmented <- Data.PI %>% + filter(PAR <900) %>% + nest(-Spat.ID) %>% + mutate( + fit = map(data, ~ nls(ETR ~ (Am*((AQY*PAR)/(sqrt(Am^2 + (AQY*PAR)^2)))-Rd), data=., start=list(Am=0.7, AQY=0.001, Rd=.4))), + augmented = map(fit, augment), + ) %>% + unnest(augmented) + +augmented$ID <-augmented$Spat.ID +Aug <- augmented %>% separate(ID, c("Sp", "Num", "Type")) + +#all colonies together +pdf("RAnalysis/output/Plate3_PI_Curve_Fit_Plots.pdf") +PI.curves <- Aug %>% +ggplot(aes(x=PAR, y=ETR, color=Spat.ID))+ + geom_point() + + geom_line(aes(y=.fitted, x=PAR,group=Spat.ID))+ + theme_classic()+ + labs(x = expression(paste('PAR (', mu, "mol photons m"^-2, 's'^-1,")")), + y = expression(paste("ETR")))+ + theme(legend.position = "top") +PI.curves +dev.off() + +``` + + +#PLATE 4 + +# Import data +```{r import_data} +Data <-read.csv("RAnalysis/data/ImagingPam/20230510_Spat_Plate4.csv", header=T, sep=";", na.string="NA") #reads in the data files +Data <- Data[, c("Date", "Time", "PAR", "ETR1","ETR2","ETR3","ETR4","ETR5","ETR6","ETR7","ETR8","ETR9","ETR10","ETR11", + "ETR12","ETR13","ETR14","ETR15","ETR16","ETR17","ETR18", + "ETR19","ETR20","ETR21","ETR22")] +# change format from wide to long +Data <- Data %>% pivot_longer(., cols = starts_with("ETR"), names_to = "Spat.ID") +Data$value <- na_if(Data$value, 0) +#need to Remove all data at PAR values above where ETR hits zero +Data$PAR <- as.numeric(Data$PAR) +colnames(Data)[5] ="ETR" + +``` + + +# View Data plots +```{r} +Data %>% +ggplot(aes(x=PAR, y=ETR, color=Spat.ID))+ + geom_point()+ + theme_bw() +``` + +```{r} +set.seed(123) +Data.PI <- Data %>% subset(PAR<900) +curve.nlsPIC <- Data.PI %>% nls(ETR ~ (Am*((AQY*PAR)/(sqrt(Am^2 + (AQY*PAR)^2)))-Rd), data=., start=list(Am=0.7, AQY=0.001, Rd=.4)) +coef(curve.nlsPIC) +plot(ETR ~ PAR, data = Data.PI) +lines(0:900, + predict(curve.nlsPIC, + newdata = data.frame(PAR = 0:900))) +``` +# Define PI curve function as a nonlinear Least Squares regression of a quadratic fit, test nls fit +Aquatic Photosynthesis, Falkowski +Pmax = max photosynthesis (AKA Am from Bayesian script) +alpha = quantum yeild (AKA AQY from Bayesian script) +I/E = irradiance (AKA PAR from Bayesian script) +Rd = dark respiration + +Using fixed initial values +```{r} + +Data.PI <- Data.PI %>% subset(Spat.ID!="ETR19") +Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR2")) +Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR20")) +Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR7")) +#Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR4")) +#Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR6")) +#Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR9")) +#Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR18")) +#Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR19")) + +nls_data4 <- Data.PI %>% +group_by(Spat.ID) %>% +nest(-Spat.ID) %>% +mutate(model1 = map(data, ~ +nls(ETR ~ (Am*((AQY*PAR)/(sqrt(Am^2 + (AQY*PAR)^2)))-Rd), data=., start=list(Am=0.7, AQY=0.001, Rd=.4)) %>% +tidy %>% +dplyr::select(term, estimate) %>% +spread(term, estimate))) %>% +unnest(model1) %>% +mutate(Ik = Am/AQY)%>% +mutate(Date = "20230510") %>% +mutate(Plate = "Plate4") %>% +mutate(Spat.ID.PAM = paste0(Date,"_",Plate,"_",Spat.ID)) %>% +write_csv(., "RAnalysis/output/Plate4_pi_curve_pars_NLS_fixedparms.csv") +``` + +Plot curve over data points. +```{r} +augmented <- Data.PI %>% + filter(PAR <900) %>% + nest(-Spat.ID) %>% + mutate( + fit = map(data, ~ nls(ETR ~ (Am*((AQY*PAR)/(sqrt(Am^2 + (AQY*PAR)^2)))-Rd), data=., start=list(Am=0.7, AQY=0.001, Rd=.4))), + augmented = map(fit, augment), + ) %>% + unnest(augmented) + +augmented$ID <-augmented$Spat.ID +Aug <- augmented %>% separate(ID, c("Sp", "Num", "Type")) + +#all colonies together +pdf("RAnalysis/output/Plate4_PI_Curve_Fit_Plots.pdf") +PI.curves <- Aug %>% +ggplot(aes(x=PAR, y=ETR, color=Spat.ID))+ + geom_point() + + geom_line(aes(y=.fitted, x=PAR,group=Spat.ID))+ + theme_classic()+ + labs(x = expression(paste('PAR (', mu, "mol photons m"^-2, 's'^-1,")")), + y = expression(paste("ETR")))+ + theme(legend.position = "top") +PI.curves +dev.off() + +``` + + +#PLATE 5 + +# Import data +```{r import_data} +Data <-read.csv("RAnalysis/data/ImagingPam/20230510_Spat_Plate5.csv", header=T, sep=";", na.string="NA") #reads in the data files +Data <- Data[, c("Date", "Time", "PAR", "ETR1","ETR2","ETR3","ETR4","ETR5","ETR6","ETR7","ETR8","ETR9","ETR10","ETR11", + "ETR12","ETR13","ETR14","ETR15","ETR16","ETR17","ETR18", + "ETR19","ETR20","ETR21","ETR22")] +# change format from wide to long +Data <- Data %>% pivot_longer(., cols = starts_with("ETR"), names_to = "Spat.ID") +Data$value <- na_if(Data$value, 0) +#need to Remove all data at PAR values above where ETR hits zero +Data$PAR <- as.numeric(Data$PAR) +colnames(Data)[5] ="ETR" + +``` + + +# View Data plots +```{r} +Data %>% +ggplot(aes(x=PAR, y=ETR, color=Spat.ID))+ + geom_point()+ + theme_bw() +``` + +```{r} +set.seed(123) +Data.PI <- Data %>% subset(PAR<900) +curve.nlsPIC <- Data.PI %>% nls(ETR ~ (Am*((AQY*PAR)/(sqrt(Am^2 + (AQY*PAR)^2)))-Rd), data=., start=list(Am=0.7, AQY=0.001, Rd=.4)) +coef(curve.nlsPIC) +plot(ETR ~ PAR, data = Data.PI) +lines(0:900, + predict(curve.nlsPIC, + newdata = data.frame(PAR = 0:900))) +``` +# Define PI curve function as a nonlinear Least Squares regression of a quadratic fit, test nls fit +Aquatic Photosynthesis, Falkowski +Pmax = max photosynthesis (AKA Am from Bayesian script) +alpha = quantum yeild (AKA AQY from Bayesian script) +I/E = irradiance (AKA PAR from Bayesian script) +Rd = dark respiration + +Using fixed initial values +```{r} + +Data.PI <- Data.PI %>% subset(Spat.ID!="ETR10") +Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR16")) +Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR4")) +#Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR7")) +#Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR4")) +#Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR6")) +#Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR9")) +#Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR18")) +#Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR19")) + +nls_data5 <- Data.PI %>% +group_by(Spat.ID) %>% +nest(-Spat.ID) %>% +mutate(model1 = map(data, ~ +nls(ETR ~ (Am*((AQY*PAR)/(sqrt(Am^2 + (AQY*PAR)^2)))-Rd), data=., start=list(Am=0.7, AQY=0.001, Rd=.4)) %>% +tidy %>% +dplyr::select(term, estimate) %>% +spread(term, estimate))) %>% +unnest(model1) %>% +mutate(Ik = Am/AQY)%>% +mutate(Date = "20230510") %>% +mutate(Plate = "Plate5") %>% +mutate(Spat.ID.PAM = paste0(Date,"_",Plate,"_",Spat.ID)) %>% +write_csv(., "RAnalysis/output/Plate5_pi_curve_pars_NLS_fixedparms.csv") +``` + +Plot curve over data points. +```{r} +augmented <- Data.PI %>% + filter(PAR <900) %>% + nest(-Spat.ID) %>% + mutate( + fit = map(data, ~ nls(ETR ~ (Am*((AQY*PAR)/(sqrt(Am^2 + (AQY*PAR)^2)))-Rd), data=., start=list(Am=0.7, AQY=0.001, Rd=.4))), + augmented = map(fit, augment), + ) %>% + unnest(augmented) + +augmented$ID <-augmented$Spat.ID +Aug <- augmented %>% separate(ID, c("Sp", "Num", "Type")) + +#all colonies together +pdf("RAnalysis/output/Plate5_PI_Curve_Fit_Plots.pdf") +PI.curves <- Aug %>% +ggplot(aes(x=PAR, y=ETR, color=Spat.ID))+ + geom_point() + + geom_line(aes(y=.fitted, x=PAR,group=Spat.ID))+ + theme_classic()+ + labs(x = expression(paste('PAR (', mu, "mol photons m"^-2, 's'^-1,")")), + y = expression(paste("ETR")))+ + theme(legend.position = "top") +PI.curves +dev.off() + +``` + + +#PLATE 6 + +# Import data +```{r import_data} +Data <-read.csv("RAnalysis/data/ImagingPam/20230510_Spat_Plate6.csv", header=T, sep=";", na.string="NA") #reads in the data files +Data <- Data[, c("Date", "Time", "PAR", "ETR1","ETR2","ETR3","ETR4","ETR5","ETR6","ETR7","ETR8","ETR9","ETR10","ETR11", + "ETR12","ETR13","ETR14","ETR15","ETR16","ETR17","ETR18", + "ETR19","ETR20","ETR21")] +# change format from wide to long +Data <- Data %>% pivot_longer(., cols = starts_with("ETR"), names_to = "Spat.ID") +Data$value <- na_if(Data$value, 0) +#need to Remove all data at PAR values above where ETR hits zero +Data$PAR <- as.numeric(Data$PAR) +colnames(Data)[5] ="ETR" + +``` + + +# View Data plots +```{r} +Data %>% +ggplot(aes(x=PAR, y=ETR, color=Spat.ID))+ + geom_point()+ + theme_bw() +``` + +```{r} +set.seed(123) +Data.PI <- Data %>% subset(PAR<900) +curve.nlsPIC <- Data.PI %>% nls(ETR ~ (Am*((AQY*PAR)/(sqrt(Am^2 + (AQY*PAR)^2)))-Rd), data=., start=list(Am=0.7, AQY=0.001, Rd=.4)) +coef(curve.nlsPIC) +plot(ETR ~ PAR, data = Data.PI) +lines(0:900, + predict(curve.nlsPIC, + newdata = data.frame(PAR = 0:900))) +``` +# Define PI curve function as a nonlinear Least Squares regression of a quadratic fit, test nls fit +Aquatic Photosynthesis, Falkowski +Pmax = max photosynthesis (AKA Am from Bayesian script) +alpha = quantum yeild (AKA AQY from Bayesian script) +I/E = irradiance (AKA PAR from Bayesian script) +Rd = dark respiration + +Using fixed initial values +```{r} + +Data.PI <- Data.PI %>% subset(Spat.ID!="ETR12") +Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR18")) +Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR21")) +Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR3")) +#Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR4")) +#Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR6")) +#Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR9")) +#Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR18")) +#Data.PI <- Data.PI %>% subset(Spat.ID!=("ETR19")) + +nls_data6 <- Data.PI %>% +group_by(Spat.ID) %>% +nest(-Spat.ID) %>% +mutate(model1 = map(data, ~ +nls(ETR ~ (Am*((AQY*PAR)/(sqrt(Am^2 + (AQY*PAR)^2)))-Rd), data=., start=list(Am=0.7, AQY=0.001, Rd=.4)) %>% +tidy %>% +dplyr::select(term, estimate) %>% +spread(term, estimate))) %>% +unnest(model1) %>% +mutate(Ik = Am/AQY)%>% +mutate(Date = "20230510") %>% +mutate(Plate = "Plate6") %>% +mutate(Spat.ID.PAM = paste0(Date,"_",Plate,"_",Spat.ID)) %>% +write_csv(., "RAnalysis/output/Plate6_pi_curve_pars_NLS_fixedparms.csv") +``` + +Plot curve over data points. +```{r} +augmented <- Data.PI %>% + filter(PAR <900) %>% + nest(-Spat.ID) %>% + mutate( + fit = map(data, ~ nls(ETR ~ (Am*((AQY*PAR)/(sqrt(Am^2 + (AQY*PAR)^2)))-Rd), data=., start=list(Am=0.7, AQY=0.001, Rd=.4))), + augmented = map(fit, augment), + ) %>% + unnest(augmented) + +augmented$ID <-augmented$Spat.ID +Aug <- augmented %>% separate(ID, c("Sp", "Num", "Type")) + +#all colonies together +pdf("RAnalysis/output/Plate6_PI_Curve_Fit_Plots.pdf") +PI.curves <- Aug %>% +ggplot(aes(x=PAR, y=ETR, color=Spat.ID))+ + geom_point() + + geom_line(aes(y=.fitted, x=PAR,group=Spat.ID))+ + theme_classic()+ + labs(x = expression(paste('PAR (', mu, "mol photons m"^-2, 's'^-1,")")), + y = expression(paste("ETR")))+ + theme(legend.position = "top") +PI.curves +dev.off() + +``` + + + + + + + +```{r} +PI.params <- rbind(nls_data1, nls_data2, nls_data3, nls_data4, nls_data5, nls_data6) + +PI.params <- PI.params[,-2] + +# change format from wide to long +PI.params <- PI.params %>% pivot_longer(., cols = Am:Ik, names_to = "metric", values_to = "value") + +PI.params <- PI.params %>% subset(metric!="Rd") + +PI.params$Spat.ID.PAM <- paste0(PI.params$Date, "_", PI.params$Plate, "_", PI.params$Spat.ID) +PI.params <- left_join(PI.params, sample.info, by="Spat.ID.PAM") + +PI.params <- PI.params %>% + subset(Type!="Algae") + +ggplot(data = PI.params, aes(x = Size.mm2, y = value)) + + geom_point() + + facet_wrap(~metric, scales = "free_y") +``` + +Remove Outliers +```{r} +Am <- PI.params %>% + subset(metric=="Am") %>% + subset(value<80) %>% + subset(Size.mm2<6) + +AQY <- PI.params %>% + subset(metric=="AQY") %>% + subset(Size.mm2<6) + +Ik <- PI.params %>% + subset(metric=="Ik") %>% + subset(value<250) %>% + subset(Size.mm2<6) + +PI.params <- rbind(Am,AQY,Ik) + +ggplot(data = PI.params, aes(x = Size.mm2, y = value)) + + geom_point() + + facet_wrap(~metric, scales = "free_y") + +write_csv(PI.params, "RAnalysis/output/PI.params.csv") + +``` + +Plot metrics as a function of Spat Area +```{r} + +ggplot(data = PI.params, aes(x = Size.mm2, y = value)) + + geom_point() + + stat_poly_line() + + stat_poly_eq(use_label(c("eq", "R2","P")), size = 2.5) + + facet_wrap(~metric, scales = "free_y") + + theme_classic() + +``` + +Plot metrics as a function of Polyp Number +```{r} +ggplot(data = PI.params, aes(x = Polyp.Number, y = value)) + + stat_poly_line() + + stat_poly_eq(use_label(c("eq", "R2","P")), size = 2.5) + + geom_point() + + facet_wrap(~metric, scales = "free_y")+ + theme_classic() +``` diff --git a/Files/Manual Pyro Workbench.pdf b/Files/Manual Pyro Workbench.pdf new file mode 100644 index 0000000..fdd103f Binary files /dev/null and b/Files/Manual Pyro Workbench.pdf differ diff --git a/Files/Manual_FSO2-C.pdf b/Files/Manual_FSO2-C.pdf new file mode 100644 index 0000000..7250669 Binary files /dev/null and b/Files/Manual_FSO2-C.pdf differ diff --git a/Files/Manual_Optical_Temperature_Sensors (1).pdf b/Files/Manual_Optical_Temperature_Sensors (1).pdf new file mode 100644 index 0000000..92263b0 Binary files /dev/null and b/Files/Manual_Optical_Temperature_Sensors (1).pdf differ diff --git a/README.md b/README.md index 33a9488..6135a36 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -example +Tali Mass Lab note book and protocols diff --git a/_config.yml b/_config.yml index 578c668..d88ee87 100644 --- a/_config.yml +++ b/_config.yml @@ -3,13 +3,13 @@ # # Name of your site (displayed in the header) -name: Lab Notebook_Mass Lab +name: T. Mass's Lab Notebook_Mass Lab # Short bio or description (displayed in the header) -description: Open Lab Notebook of the Mass Lab +description: PI # URL of your avatar or profile pic (you could use your GitHub profile pic) -avatar: https://avatars0.githubusercontent.com/u/76209416?s=400&u=87ad0af4e38667266338454bdc9c450d234c76a5&v=4 +avatar: "https://avatars.githubusercontent.com/talimass" # # Flags below are optional @@ -18,15 +18,15 @@ avatar: https://avatars0.githubusercontent.com/u/76209416?s=400&u=87ad0af4e38667 # Includes an icon in the footer for each username you enter footer-links: dribbble: - email: + email: tmass@univ.haifa.ac.il facebook: flickr: - github: + github: https://github.com/talimass instagram: - linkedin: + linkedin: https://www.linkedin.com/in/tali-mass-7333984b/ pinterest: rss: # just type anything here for a working RSS icon - twitter: + twitter: MassTali stackoverflow: # your stackoverflow profile, e.g. "users/50476/bart-kiers" youtube: # channel/ or user/ googleplus: # anything in your profile username that comes after plus.google.com/ @@ -47,7 +47,7 @@ url: "http://talimass.github.io" # (http://yourusername.github.io/repository-name) # and NOT your User repository (http://yourusername.github.io) # then add in the baseurl here, like this: "/repository-name" -baseurl: "/Open_Lab_Notebook_Mass_Lab" +baseurl: "/Talimass_Lab_Notebook_Mass_Lab" # # !! You don't need to change any of the configuration flags below !! diff --git a/_posts/2020-12-06-Symbiont-cells-count.md b/_posts/2020-12-06-Symbiont-cells-count.md new file mode 100644 index 0000000..17ac3c2 --- /dev/null +++ b/_posts/2020-12-06-Symbiont-cells-count.md @@ -0,0 +1,34 @@ +--- +layout: post +title: Count coral symbiont cells with Fiji (ImageJ) +category: [ Symbiont, microscopy, image analysis ] +tags: [ Cell count, fluorescence ] +--- + +These instructions cover two ways to get algal cell counts using [Fiji](https://imagej.net/Fiji), one manual and one automated. A fluorescence microscope (Nikon Eclipse Ti, Japan) was used to image symbiotic algae (isolated from coral tissue) both in brightfield and in fluorescent light using 440 nm emission, to identify chlorophyll and to ensure counting of symbiont cells only. + +![Micro]({{site.baseurl}}/images/Microscope_images.png "Micro") + +## Manual Cell Counting +- Open the image you want to count with Fiji and go to `Plugins > Analyze > Cell counter`. A new counter window will open. +- To begin counting, click one 'Initialize' and on 'Type 1' in the counter window. Then click directly on a algal cell. A dot and a number will appear on the cell. If you click on an object by mistake, you can undo it by selecting 'Delete'. +- When you are finished counting, click the 'Results button'. A new window will appear with the total number of cell counted. Use `Results > File > Save as` to save your counts as .csv formatted files. Alternatively, the results log can be copied and pasted on an Excel spreadsheet. + +![Manual]({{site.baseurl}}/images/Manual_count.jpg "Manual") + +## Automated Cell Counting +- Open the image you want to count. If it is a color image (RGB), it will have to be converted to greyscale before proceeding. To do so, go to `Image > Type > 8-bit` or `Image > Type > 16-bit`. +- Once the image is in greyscale (8-bit or 16-bit) use `Image > Adjust > Threshold`. This will highlight the algal cells and will create a binary version of the image with only two pixel intensities: black = 0 and white = 255. +If there are partially overlying cells, `Process > Binary > Watershed` can be used to cut the cells apart by automatically adding a 1-pixel line. + +![Threshold]({{site.baseurl}}/images/Threshold.jpg "Threshold") + +- Once you have a binary image, go to `Analyze > Analyze Particles`. The 'Size' option effects what cells (and other particles) will be counted. The size will either be in pixels, or, if the image has been calibrated, in the chosen unit of measurement. To count all cells in the image, leave the 'Size' option at the default of '0 – Infinity'. To exclude particles based on size (for example to exclude particles that are not algal cells), change the 'Infinity' value (you can first measure the area of one algal cell by drawing a circle around it and then using `Analyze > Measure`; then use this measured area to set the maximum size of the count replacing 'Infinity'). +The 'Circularity' option excludes cells based on how close to perfectly round they are. To include all cells, leave the default 0.00 – 1.00 (1.00 is a perfect circle and 0.00 is a straight line). + +![Setup]({{site.baseurl}}/images/Count_setup.jpg "Setup") + +- The example below shows the results of the 'Overaly Masks' option. A copy of the image appears, and all counted cells are shown with numbers and with a different color (in this case light blue). These numbers, together with the area of the counted cells, will be displayed in the 'Results' window. The 'Summary' window shows a summary with the name of the image, the total number of counted cells and other information. +You can save your counts as .csv formatted files. Alternatively, the results log can be copied and pasted on an Excel spreadsheet. + +![Results]({{site.baseurl}}/images/Count_results.jpg "Results") \ No newline at end of file diff --git a/_posts/2020-12-07-Coral-physiology-protocol.md b/_posts/2020-12-07-Coral-physiology-protocol.md new file mode 100644 index 0000000..b15ce71 --- /dev/null +++ b/_posts/2020-12-07-Coral-physiology-protocol.md @@ -0,0 +1,58 @@ +--- +layout: post +title: Protocol for coral physiology +category: [ Physiology ] +tags: [ Coral, Protein, Algae count, Chlorophyll ] +--- + +These instructions allow to quantitatively assess coral physiological parameters, i.e. tissue biomass (protein concentration), algal density and chlorophyll concentration. + +### Procedure + +1. Remove the tissue from a frozen sample using an air brush within a 50ml falcon tube (if the sample was stored at -80°C the tissue will easily come off just by blasting air with the airbrush), then add 2ml of PBS/FSW to the tissue. If working with coral planulae or spats, add only 1ml of PBS/FSW. + +2. Dry the skeleton and save it for surface area measure (aluminum foil method). + +3. Homogenize the tissue with an electrical homogenizer. + +4. Remove 1ml of the tissue to a 1.5 ml Eppendorf tube, keep the rest in the falcon tube as spare. If working with coral planulae or spats, remove 0.5 ml of the tissue to a 1.5 ml Eppendorf tube. + +5. Centrifuge the 1.5 tube for 5 minutes at 5000rpm at 4°C. + +6. Remove 100ul from the supernatant to a 0.5 ml Eppendorf tube for host protein measure. For protein concentration measurements I used the [Micro BCA Protein Assay kit](https://www.thermofisher.com/order/catalog/product/23235?SID=srch-srp-23235#/23235?SID=srch-srp-23235) following the manufacturer’s protocol. + +7. Remove the supernatant (host tissue) work with pellet (algae). + +8. Resuspend the algae with 1ml FSW/PBS and homogenize. + +9. Centrifuge for 5 minutes at 5000rpm at 4°C. + +10. Remove the supernatant. If working with few amounts of coral planulae/spats (<10 per tube), go directly to step n° 14. + +11. Resuspend the algae with 1ml FSW/PBS and homogenize. + +12. Centrifuge for 5 minutes at 5000rpm at 4°C. + +13. Remove the supernatant thoroughly + +14. Resuspend the algae with 1ml FSW/PBS and homogenize. + +15. Take 30ul for algae count, using an hemocytometer. See the [protocol](https://fscucchia.github.io/FScucchia_Lab_Notebook-Mass_Lab/Symbiont-cells-count/) for counting symbiont cells with Fiji (ImageJ). + +16. Centrifuge for 5 minutes at 5000rpm at 4°C. + +17. Remove the supernatant thoroughly. + +18. Add 1ml 95% Acetone. + +19. Vortex. + +20. Incubate at 4-8°C (in the dark) for 8 - 24 hours. + +21. Centrifuge for 5 minutes at 5000rpm at 4°C. + +22. Check Optical Density (at wave lengths 630, 647, 664, and 697 nm) in a 96-well plate using 95% Acetone as blank (triplicates of 200 ul per each sample). I calculated chlorophyll a concentrations according to the equation of [Ritchie (2008)](https://link.springer.com/article/10.1007/s11099-008-0019-7): +Chl–a= –0.3319(A630) – 1.7485(A647) + 11.9442(A664) – 1.4306(A691) + + + diff --git a/_posts/2021-01-09-Cell culture protocol.md b/_posts/2021-01-09-Cell culture protocol.md new file mode 100644 index 0000000..05ca120 --- /dev/null +++ b/_posts/2021-01-09-Cell culture protocol.md @@ -0,0 +1,79 @@ +--- +layout: post +title: Coral tissue culture protocol follow Mass et al 2012 PlusOne +category: [ Library Prep, cell culture ] +tags: [ Coral, cell culture, Stylophora pistilata ] +--- + +Using the [DMEM no glucose](https://www.thermofisher.com/il/en/home/technical-resources/media-formulation.49.html) +and [antibiotic-antimycotics](https://www.sigmaaldrich.com/catalog/product/sigma/a5955?lang=en®ion=IL&gclid=CjwKCAiAxeX_BRASEiwAc1QdkTHI9jgWgbnXGSov48kLlqLCIoUz4GSq1O3bXiEthAf5XY6tGtfyHRoCCesQAvD_BwE) + +### Prepare CaFSW + +Add the follow to 1l of deionized H2O and filter with 0.2µm keep stock in 4C and worm to 25C before using + +| chemical comment | gram | +|-------------------|---------| +| NaCl | 23g | +| KCL | 0.763g | +| MgSO4-7H2O | 1.89g | +| MgCl2-6H2O | 10.45g | +| Na2SO4 | 3g | +| NaHCO3 | 0.25g | +| SrCl2 | 0.026g | + +### DMEM culture medium + +Add to [DMEM no glucose] (https://www.thermofisher.com/il/en/home/technical-resources/media-formulation.49.html) the follow + +| chemical comment | gram | comment | +|-------------------|-------|--------------------------------------------------------| +| NaCl | 9.05g | | +| KCL | 0.7g | | +| CaCl2 -2H2O | 0.71g | | +| MgCl2-6H2O | 5.1g | | +| Na2SO4 | 0.5g | | +| taurine | 0.5m | from stock 1.04µg/20ml DDW | +| NaOH3- | 1.85g | only if necessary, if the DMEM bought is without NaOH3 | +| Hepes | 2.98g | | + +Keep stock in -20C + +### Working solution + +Dilute the stock DMEM culture medium to 12.5%(vol/vol) in ASW: 20ml DMEM + 140ml ASW + +Add to the diluted DMEM mix : + +- 1.25% FCS +- 1% antibiotic-antimycotics (1.6ml) +- 5mM glucose (For DMEM without glucose) +- 20 µg/ml aspartic acid (0.0032g) +- 50 µg/ml ascorbic acid (0.008g) +- 1:100 L-Glutamine (1.6ml) +- Final pH 8 – monitor gently with NaOH 1M or NaCl 1M +- Filter all the medium in 0.2µm + + +### Tissue culture preperation + +All work must be done in the biological/laminar flow hood with filtered medium +All tips should be stored in the hood. Tips, pipettes, etc. should be exposed to UV light for at least 10 minutes + +All medium need to be in 26C + +Work with 6wells or 5ml petri-dish + +- Wash 0.2-0.7 cm long nubbins or fragments of nubbins for 15 min in PVP-Iodine +- 2 min wash in FASW and 1 min in DDW. +- Repeat this step if necessary (this steps are done in order to get rid of all the ciliates in medium) +- Pre Incubate nubbins for 4.5 h in CaFSW +3% antibiotics (slow rpm in room temp) +- Transfer the coral nubbin to culture medium (26C) +- Incubate in humidified chamber/incubator with 12/12 h light dark cycle at 26C for 48h. +- The tissue might fall of the skeleton and if not take it off by gentle pipetation. Take out the skeleton homogenize solution and add a drop of PVP-Iodine for 15 min. +- Transfer the medium to 15ml tube and spin down the medium contains the cells (5 min 500g in RT). +- Change the medium with fresh one +- Filter (0.2µm) the medium with the cells to a sterile plate (1ml to each plate) and add 4ml of fresh medium +- Incubate in humidified chamber with 12/12 h light dark cycle at 26C and change medium every 3 days. + +![cell culture]({{site.baseurl}}/images/Cell culture.png "cell culture") diff --git a/_posts/2021-01-09-Coverslips coating for cell culture.md b/_posts/2021-01-09-Coverslips coating for cell culture.md new file mode 100644 index 0000000..cb29c08 --- /dev/null +++ b/_posts/2021-01-09-Coverslips coating for cell culture.md @@ -0,0 +1,56 @@ +--- +layout: post +title: Coverslips coating for Coral tissue culture +category: [ Library Prep, cell culture ] +tags: [ Coral, cell culture, Stylophora pistilata ] +--- + +## Laminin Solution + +Laminin (Sigma # L 2020, 1mg/ml) +Aliquot into 20μl units +Store at -20ºC +• Add diluted Laminin solution to cell suspension at a ratio of 1 part Laminin solution to 3 parts cell suspension. + + +## Sodium borate solution (0.19M) + +7.6 g Na2B4O7 (Sigma # 221732) +200ml DDW +pH 8.2 + + +## Poly- D- lysine solution (1mg/ml) + +10mg Poly-D -lysine (Sigma# P 1024) +10ml Sodium borate solution +Filter Sodium borate solution only +Keep for 30 minutes at room temperature, +Store at -4º + + +## Borate Buffer pH 8.5 +2.375g Na2B4O7*10 H2O (Sodium Tetraborate) (Sigma # S 9640) +1.550g H3BO3 (Boric Acid) (Sigma # B 6768) +500ml DDW +pH-8.5 with 1M HCL +Filter and store at 4◦C + + +## PolyEthylenImine (PEI) solution (100μg/ml) + +0.1ml or 0.107g 50% PEI (Sigma# P 3143, 50ml) +49.9ml Borate Buffer +Aliquot into 1ml amounts, +Store at -70◦C +Before using : thaw 1ml aliquots and add 9ml Borate Buffer +Store rest at -20◦ C for no more than 1 mounth. + +## Coating coverslips + +Use about 50μl/cm2 Poly-D-lysine / Poly-Ethylene-Immine solution +Coat overnight at room temperature, +Aspirate solution using sterile Pasteur pipette +Wash in DDW, +Dry with sterile Pasteur pipettes. + diff --git a/_posts/2021-01-14-Sample prep_Fixation embedding and polishing protocol.md b/_posts/2021-01-14-Sample prep_Fixation embedding and polishing protocol.md new file mode 100644 index 0000000..d0e2030 --- /dev/null +++ b/_posts/2021-01-14-Sample prep_Fixation embedding and polishing protocol.md @@ -0,0 +1,60 @@ +--- +layout: post +title: Sample prep fixation embedding and polishing protocol follow Mass et al 2017 PNAS +category: [ Fixation, Microscopy, spectroscopy ] +tags: [ Coral, microscopy ] +--- + +### Standard Marine Fixation + +### Chemicals Needed: + +10 ml ampoules 16% Formaldehyde -EMS Sciences Cat #15710 +Sodium Cacodylate Trihydrate bioxtra10 g - Sigma Cat #C4945 +Na2CO3 +Epofix + +### To Make Up Solutions: + +22 g/L Na2CO3 in water filtered 0.2um + + +0.05M Na Cacodylate Buffer in 22g/L Na2CO3 +Add 10.7 gms Cacodylic acid (to 1000 ml 22g/L Na2CO3) + +### To Make Up Fixative: + +2% Formaldehyde in Sodium Cacodylate Buffered Sea-Water Fixative +Add 10 ml ampoule of 16% Formaldehyde to 70 ml of the made up buffer + + +### Fixation Steps + +1. Place samples in fresh Formaldehyde fixative and keep it at RT 0.5 hrs +2. Rinse with buffer (2 changes at 5 mins each) +3. Dehydrate in 50,60,70, in 1g/L of Na2CO3 in 0.002M Na Cacodylate Buffer, 15 mins for each step +4. 80,90, in 0.5 g/L Na2CO3 in 0.002M Na Cacodylate Buffer and 100% x2 Ethanol +5. Vacuum the sample for 3 min to evaporate the ethanol. +6. Usually we make up the resin (follow kit directions) when the samples are in 90% ethanol. +7. Transfer into embedding resin (3 changes at 5 mins vacuum) + +### Embedding Steps + +1. Measure amount of [Epofix resin](https://www.agarscientific.com/epofix) needed in a Dixie paper cup. Usually 8-10 grams is enough for one sample. +2. Calculate 3/25 amount of the resin to be the amount of hardener to add. Zero the balance and add the hardener into the cup. Take the cup and go upstairs. +3. Stir the mixture with a glass rod vigorously and make lots of small bubbles to ensure proper mixing. It usually takes 2 minutes +4. Place the cup in the desiccator (take the rod out) and pump it down for 5 minutes, then vent, and repeat 3 times. When venting, open the valve to ~2/3 of the full valve. There should be some bubbles only the surface by the end of this stage. +5. Take the epoxy out of the desiccator. Use a plastic pipet to drop the epoxy into the mold with the sample in it. Avoid bubbles as much as possible. Put enough epoxy to cover the entire sample. You can use the plastic pipet to remove some bubbles if needed. +6. Take the mold with epoxy filled and put it in the desiccator and repeat step 4 (pump 5 mins each for 3 times). After 3 times of pumping, leave the sample inside the desiccator for 12-14 hrs to cure. + +### Polishing Steps + +1. Start with the coarse sandpaper. Rinse with 22g/L Na2CO3 solution. Grind the back of the sample to make it flat first. Then grind the sample side until the desired surface is exposed. Add 22g/L Na2CO3 solution during the grinding to keep the sandpaper wet. Press the sample with suitable force but keep in mind that the coarse sandpaper can remove materials very fast. +2. After the desired surface is approximately exposed, change to the fine sandpaper. Same as the previous step, add 22g/L Na2CO3 solution during the grinding. This step should remove all the large scratches from the last step, and the sample surface should appear foggy at the end of this step. +3. After grinding, move on to polishing with aluminum oxide particles. Change the sandpaper to the felt pad and add 0.3 µm Al2O3 suspension with Na2CO3 solution. Use hand to spread it across the felt and start polishing. Add 22g/L Na2CO3 solution during the grinding. Moderate force is important: if the force is too small, it will be difficult to remove the scratches from grinding; if the force is too large, alumina particles can get stuck in the sample and create pits on the surface. Polish until a shiny mirror surface is observed and no obvious scratches can be found. +4. Move on to the final polishing with 0.05 µm Al2O3 suspension. Same procedure as the previous step, but remember to change the felt to the one for fine polishing and don’t mix up with the previous pad. It’s difficult to judge if this step is done by naked eye, so you can use the microscope to help. Usually if there are no scratches under 20× it should be good enough. +5. After polishing, clean the sample with a series of wipes. Prepare 4 wipes with the following order: wet with Na2CO3 solution, dry, wet with ethanol, dry. After polishing with 0.05 µm Al2O3, clean the sample through these wipes as the order above. Gently wipe once on each wipe. If there are watermarks or weird patterns on the surface, it means that the cleaning was not done properly so you need to repeat this step. + + + + diff --git a/_posts/2022-06-21-SDR-microplate-respirometry-protocol-Hawaii.md b/_posts/2022-06-21-SDR-microplate-respirometry-protocol-Hawaii.md new file mode 100644 index 0000000..0fdd592 --- /dev/null +++ b/_posts/2022-06-21-SDR-microplate-respirometry-protocol-Hawaii.md @@ -0,0 +1,85 @@ +--- +layout: post +title: SDR microplate respirometry protocol for coral planulae +category: [Respiration, Photosynthesis, Protocol ] +tags: [ Coral, Planulae, Physiology, pH, Temperature,Montipora capitata ] +--- + +This protocol details the step-by-step use of the PreSens/Loligo Microplate respiration system for measuring respiration and photosynthesis of coral planulae. + +[Original protocol](https://ahuffmyer.github.io/ASH_Putnam_Lab_Notebook/Mcapitata-Early-Life-History-Respirometry-Protocol/) written by Ariana Huffmyer and modified by [Jill Ashey](https://github.com/JillAshey) and me during our time at the Hawaiʻi Institute of Marine Biology in June-July 2022, conducting temperature and pH stress experiments with planulae and spats of the corals _Pocillopora acuta_ and _Montipora capitata_. + + +### Prepare equipment +- [PreSens Oxy-10 Sensor Dish Reader (SDR)](https://www.presens.de/products/detail/sdr-sensordish-reader-basic-set) in combination with [Loligo 24-well microplate](https://loligosystems.com/24-well-glass-microplate-80-ul) (80 µL each well) +- Glass coverslips +- PreSens software downloaded with calibrations entered as provided by manufacturer +- Aquarium lighting [Prime 16HD AI](https://www.aquaillumination.com/products/prime) +- Digital Incubator [MyTemp mini](https://www.benchmarkscientific.com/rpproducts/mytemp-mini-digital-incubator/) +- Filtered seawater (1 µm) +- MilliQ filtered water +- Bubbler and aeration +- Glass Transfer Pipets +- PC computer +- Kimwipes + +### Prepare planulae +- Take planulae out of the experimental system and rinse them in filtered seawater to clean any debris off of them +- Based on previous respirometry trials by Ariana Huffmyer, 5 _P. acuta_ larvae per well or 6 _M. capitata_ larvae per well will give good signals +- Use a disposable pipette to transfer planulae into a 6 or 24 well plate and separate them out to easily get the desired number of planulae + +### Calibrate oxygen spots +- Start by hydrating sensors in the wells ~20 minutes before using the plate with filtered seawater +- After hydration, fill the wells with 100% air saturated filtered seawater, which was aerated for about 20-30 minutes with the bubbler +- Place the 24 well plate on the SDR inside the incubator ![incubator_resp](https://github.com/fscucchia/FScucchia_Lab_Notebook-Mass_Lab/blob/master/images/incubator_resp.jpg?raw=true "incubator_resp") ![incubator_plate](https://github.com/fscucchia/FScucchia_Lab_Notebook-Mass_Lab/blob/master/images/incubator_plate.jpg?raw=true "incubator_plate") +- Open the PreSens software +- Make sure the SDR is connected to the computer +- Select “Connect SDR” and you should see SDR 710 and SDR 641 show up +- Select one of the SDR tabs +- Select “Oxygen” from the drop down menu. Select PSt5-1624-01_25C under Batch No. +- For each SDR (either 641 or 710), enter the correct Meas. Temp. depending on what incubator it is in and what temperature the incubator is currently at +- Enter 37 for the salinity for both SDRs +- Select pO2 (%air sat) under Oxygen Unit +- After these data are entered, select one SDR tab +- Click the calibration menu and select One-Point Adjustment +- Enter 100% at the bottom and click “OK” +- Perform this calibration at the start of each measuring day + +### Prepare plates and metadata +- Before preparing planulae, turn on the incubators and lights to the desired temperature and level to allow the incubator to come to temperature. Set the lights at 30% intensity on all channels with 0% on the UV channel. Measure the light at the level of the SDR plate and record +- Place a cover over the doors of the incubator to block ambient light +- *Note*: Only use kimwipes and be very gentle and careful with the plates. Be careful not to touch or scratch the oxygen sensor spots in the bottom of each well +- Before starting trials, set up a plate map and a metadata file +- Include 2-3 wells to serve as blanks, loaded with filtered seawater. Record the location of blanks on the plate map and record NA on the plate map for any wells that are missing sensors. Change the location of blanks in each run +- Well sensors need to be hydrated 20 minutes before loading the planulae as specified above +- Put the planulae in the wells and add a drop of filtered seawater to fill the well so that a convex meniscus forms and the water tension holds a tiny bulge slightly above the top of the plate. Ensure the plate is very dry to allow for this tension to form. If the plate is too wet a bubble will not form. If you need to refill or reset a well make sure to dry it with kimwipes. +![plate1](https://github.com/fscucchia/FScucchia_Lab_Notebook-Mass_Lab/blob/master/images/plate1.jpg?raw=true "plate1") +- Check the well for bubbles and pipette up and down gently to remove if needed. +- Carefully drop a micro coverslip over each well to seal it. It’s best to drop the coverslip gently, and at an angle to the well plate. +![plate2](https://github.com/fscucchia/FScucchia_Lab_Notebook-Mass_Lab/blob/master/images/plate2.jpg?raw=true "plate2") +- Check to make sure there are no bubbles in the wells. +- Put the plate on the SDR in the incubator. Make sure the oxygen sensors are right on top of the readers on the SDR. Ensure that A1 is aligned between the plate and the SDR. +- Check the temperature in the incubator with the digital thermometer regularly and launch hobo loggers to log temperature during the run. + +### Photosynthesis and respiration measurements +- For both SDR tabs, press “Log measurements”. The software will ask to save the file before starting the run. Save the file in the Hawaii 2022 folder on the PC. Name the file with date, run number, temperature, and initials. +- Make sure the lights are on and the temperature is correct. +- Once a measurement has been logged for both SDR’s, you can click START. +- Start the run with the light on for photosynthesis measurements (~30-40 minutes). +- Then turn off the light for light-enhanced respiration measurements (~20-25 minutes). +- Record start and stop times and the time the light was turned off. Record any notes on wells that have bubbles or other issues. +- You should see a general increase in photosynthesis rates and a decrease in respiration rates. The respiration rates will be much more stable than the photosynthesis rates due to the effect of light. + +### Close and save data +- At the end of the run, press “Export measurements” to save the data. Do not press close measurement before exporting! +- Save using the same naming as you did to log the measurements. +- Upload data sheets to the google drive or save onto a USB. + +### Clean equipment +- Use a glass pipette to remove the water and planulae from the wells GENTLY. +- Rinse the microplate with milliQ water and dry using a kimwipe. Roll the kimwipe up and gently dry each individual well being careful not to damage the spot. +- Because the oxygen spots are sensitive to light, put it in the bubble wrap and put it in the dark bag. Open the bag slightly so the plate can fully dry. + + + + diff --git a/_posts/2024-01-21-Forking_Modifying.md b/_posts/2024-01-21-Forking_Modifying.md new file mode 100644 index 0000000..327aae3 --- /dev/null +++ b/_posts/2024-01-21-Forking_Modifying.md @@ -0,0 +1,111 @@ +--- +layout: post +title: "Forking the Mass Open Lab Notebook for Your GitHub" +author: Maggie Schedl +--- + + +### Walk-though of Forking and Modifying this Notebook Site +#### All steps that can be done through the terminal instead of a GUI will be written for doing in the terminal because it is good practice to use the shell +_Written by Maggie Schedl_ + + +**Important Links:** +[Mass's Notebook](https://github.com/talimass/Talimass_Lab_Notebook_Mass_Lab) +[Original Jekyll Blog](https://github.com/barryclark/jekyll-now) + +### Steps + +1. Open your Terminal application. If you have a mac the name of the app is terminal. If you have a pc there should be an option to open the Command Prompt, or you may have to install putty. + +2. `cd name_of_folder_location` Get yourself into the folder you want, you can make folders with your finder or in the terminal as in the next step. If your folder is in a different place, like Documents put that in the path. + +3. `mkdir Notebook-Directory` Make a directory (same thing as a folder) where you want to put the repository for the Mass Lab Notebook. This is where all the files will go. + +4. `cd Notebook-Directory` Go into the directory you just made. + +5. `git init` Now make that directory an empty git repository. Git is a way to do version control, which tracks changes in your files and can help you if previous versions of you. + +> _You may get an error here that says invalid active developer path, use this code_ `xcode - select --install` _in your terminal to fix it, you should then be able to use git init._ + +6. Login to [GitHub](https://github.com/) and go to [Mass's Notebook](https://github.com/talimass/Talimass_Lab_Notebook_Mass_Lab) . If you don't have an account, make one. It's free! + +7. Click the button in the top right corner that says Fork. It will take everything from Tali's repository and create a copy in your account. Once that is done go into the settings of that repository and change the name. For example mine is Talimass_Lab_Notebook_Mass_Lab. Just remember to not use spaces. + +8. Whenever you want to get back to the home of your repository just click the <>Code tab. In that tab click the green button on the right that says Clone or Download. It will give you a link, copy that link. + +9. You want to make a clone of this repository on your personal computer and have it connect to GitHub. This way you can change things on your computer, then send them to GitHub as a way of version control. In your command prompt or terminal you should still be in the directory you created for this notebook. You can always use the command `pwd` to check your working directory. + +10.`git clone https://github.com/GitHub-user-name/Your-Notebook-Repo-Name.git` The terminal will print out some things saying that it's downloading the repository. Now you have a remote copy of your repo, and you should be able to see it in your finder window too. + +11. Back in GitHub online, go to the setting tab again. Scroll to the GitHub Pages section; this is where you tell the site that you want your notebook to be made into a website. Use the dropdown menu to change the source to master branch. + +12. A box will come up that says your site is ready to be published/is published and then gives you a link that will look something like this: https://github.com/talimass/Talimass_Lab_Notebook_Mass_Lab/ but with your username and repo name. You may have to go back and click on settings again for it to go. Copy this url. + +13. Go back to the <>Code section. At the top it says "Open Lab Notebook" and the link to Mass's Notebook. Click edit, rename the description to whatever you want, and paste the link you got from the settings page. This makes it so that people can click the link directly when they get to your repository and it will take them to your site instead of Hollie's. + +14. On your computer finder go to the folder where your repository is. Open the file called _config.yml in your preferred text editor. I use [Atom](https://atom.io/) + +15. The _config.yml file is basically a map for your site. Change all of these to personalize the site: + - Name + - Description + - Avatar _This puts in an image you want, if you want just the profile picture on your GitHub account already you can right click on it to and copy the image link. If you want another one you can specify the path to that image._ + - All the social media _This is then put at the footer of all your pages._ + +16. It shouldn't be necessary to change any of the other sections, if you mess those up your site won't publish. Save this file, but that only saves it to your computer. We have to add it to Git and send it to GitHub before it will change anything online. + +17. In your terminal, making sure you are in the notebook directory: +`git add _config.yml` _This adds the file you just edited to Git_ + +18.`git commit -m "adding new config file"` _Commits your changes and gives a little description of what you changed. You always have to include a commit message, and it is helpful if later you need a specific version of a file and commits were well labeled_ + +19. `git push origin master` _This pushes your changes to GitHub. Because this is your site and we set it to build from the master branch the origin is master. + +> _You may have to put in your login information if this is your first push. You can also set this up so you won't have to login again: `git config --global user.name "John Doe"` and `git config --global user.email johndoe@example.com`_ + +20. There are a few more things to change. On your computer open the _layouts folder and open the default.html file. Edit line 45 to be the link to your GitHub notebook (ex. https://github.com/talimass/Talimass_Lab_Notebook_Mass_Lab) + +21. Save the file and push it to GitHub + +`git add _layouts` _You can add the whole folder even if you just edited one file. This makes things a lot easier if you edit a lot of posts at once and can commit them all in one line of code._ + +`git commit -m "adding new admin link"` + +`git push origin master` + +22. You also have a file called README.md. If you saw at the bottom of the <>Code page on GitHub there is a little window that says Open For Science. This is where you can write anything that describes your lab notebook. You can keep it how it is or change it to include your name, etc. + +23. Save and add to GitHub in the same way + +`git add README.md` + +`git commit -m "adding new README file"` + +`git push origin master` + +24. The last thing you'll probably want to edit before moving on to posts is the about page. Tali has this page set up to be as your CV. This file is set up as a [Markdown file](https://guides.github.com/features/mastering-markdown/) meaning it has the .md extension. This is a certain way of writing files with simple syntax like # or ** that make headings and type styles instead of changing them with buttons like in Word. [Another Markdown Cheatsheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet) or a [tutorial](https://www.markdowntutorial.com/). You can also look at the [Raw code](https://raw.githubusercontent.com/Mass-Lab/Open_Lab_Notebook_Mass_Lab/master/about.md) of Tali's about page (this is what you should see when you open the file) to get ideas for layouts. Save the file and add it. + +`git add about.md` + +`git commit -m "adding new about file"` + +`git push origin master` + +25. Now you're almost ready to make a post. However, there are already posts on your page from where you forked your repository. In GitHub you can click on the _posts folder, click on each post, click the small trashcan icon in the upper righthand corner and delete the post. It'll ask you to commit and it looks pretty serious, but as long as you are deleting from your repository (ex. https://github.com/talimass/Talimass_Lab_Notebook_Mass_Lab/) you are fine. Make sure to not delete the post_template.sh file. As a general rule if you delete all files in a folder it will remove the folder. + +26. Before we can change around things on the computer and push them to GitHub, you have to pull the changes you made in GitHub to your computer. Communication is key 👌 +In the terminal + +`git pull origin master` + +27. To make a new post open a blank file in your text editor and save it to the _posts directory for your notebook. _Important: you have to use the specific Jeykll markdown file naming convention for the posts/blog to build on the site properly: YYYY-MM-DD-Post-Name.md_ + +28. The first section of your file needs something called a YAML header +`---` +`layout: post` +`title: Your title` +`tags: [ specfic, tags, if, you, want, them]` +`---` +This is what sets up the layout for each post. + +29. Write your post in Markdown format. Here are examples from Putnam lab [MS](https://meschedl.github.io/MESPutnam_Open_Lab_Notebook/Montipora-Larvae-DNA-RNA-Test/), [Hollie](https://github.com/hputnam/Putnam_Lab_Notebook/blob/master/_posts/2016-08-31-Geoduck_RNA_Testing.md), [Kevin](https://github.com/kevinhwong1/KevinHWong_Notebook/blob/master/_posts/2019-03-14-Citrate-Synthase-Troubleshooting.md), and [Erin](https://github.com/echille/E.-Chille-Open-Lab-Notebook/blob/master/_posts/2019-04-01-Montipora-Larvae-DNA-RNA-Extraction-Batch-4.md). Look at the Raw version of any of these files to get the syntax for each element, ex links, images, and tables. Save images into your image folder, you can create other folders for things like pdfs or R scripts. Think of your notebook repository just as your physical one, where you put all your information. Csv files can even be easily added to the repo and looked at online: [example](https://github.com/kevinhwong1/Astrangia_Nutrition/blob/master/RAnalysis/Data/BouyantWeight_Apoc2019.csv). The easiest way to get ideas is to look at the notebooks for everyone in the lab and emulate what you like that they have. Save, commit, and push your post to the online repo and it should post within 10 minutes to the actual site. \ No newline at end of file diff --git a/_posts/2024-01-21-Respirometer Manual.md b/_posts/2024-01-21-Respirometer Manual.md new file mode 100644 index 0000000..5e21350 --- /dev/null +++ b/_posts/2024-01-21-Respirometer Manual.md @@ -0,0 +1,353 @@ +#Respirometer Manual + +Last Revised: Mass Lab - Tali Mass - 20230521 + +[FireSting-O2 PyroScience] (https://www.pyroscience.com/en/products/all-meters/fso2-c4) +[OXROB10 PyroScience] (https://www.pyroscience.com/en/products/all-sensors/oxrob10) +Chamber stirring system + + +Protocol for Respirometry (oxygen flux in sealed chambers) using the PyroScience FireSting sensor, probes and software in a temperature controlled setting. This includes Apex controller for temperature manipulation and control of the respirometry water baths. + + + + +# **Contents** +- [**Supplies**](#Supplies) +- [**Water Bath Setup**](#Bath) +- [**Temperature Control**](#Temperature) +- [**Connecting the Battery**](#Battery) +- [**FireSting Setup**](#FireSting) +- [**Software Setup**](#Software_Setup) +- [**Running the Program and Exporting Data**](#Run_Program_Export_Data) +- [**Probe Calibration**](#Calibrate) +- [**Stirring System Setup**](#Stir) +- [**Filling and Securing Chambers**](#Chambers) +- [**Inserting Oxy-10 Probes**](#Probes) +- [**Final Chamber Checks**](#Final_Checks) +- [**Water Changeover for Additional Runs**](#Water_Change) +- [**Exporting Data**](#Data_Export) +- [**Removing Chambers from Respirometer**](#Removing) +- [**Take-Down and Clean Up**](#Take-Down) +- [**Troubleshooting**](#Troubleshooting) +- [**Chamber Oring Replacement**](#ChamberOring) +- [**Stir System Oring Replacement**](#StirSystemOrings) + + + + **Supplies** + +- [Oxygen meter and Sensors PyroScience](https://www.pyroscience.com/en/products/all-meters/fso2-c4) +- [OXROB10 Oxygen Probes](https://www.pyroscience.com/en/products/all-sensors/oxrob10) +- [Pt100 Temperature Probes] (https://www.pyroscience.com/en/products/all-sensors/tdip15) +- [Pyroscience software of FSO2-C4 : Optical Oxygen & Temp Meter FireSting®-O2 (4 Channels] (https://www.pyroscience.com/en/downloads/laboratory-devices) +- [Respirometer stand (with 4 screw-on legs) or underwater stirring plate](https://github.com/talimass/Talimass_Lab_Notebook_Mass_Lab/blob/master/images/20221103_104853_table%20and%20chambers.jpg?raw=true) + ![Side view](https://github.com/talimass/Talimass_Lab_Notebook_Mass_Lab/blob/master/images/table%20with%20chambers.jpg?raw=true) +- [Replacement motor](https://www.maxongroup.com/maxon/view/service_search?query=459049) - Maxon Motors Part # 459049 - 110182 A-max 26, 7W 6v DC motor + 144035 Planetary Gearhead, 26B, 53:1 +- [Replacement Switch](https://au.element14.com/itw-switches/19n402r15/microswitch-v4-roller-lever/dp/521875) +- [Silicon - DuPont Molykote 112 High Performance Silicon Food Grade](https://www.mcmaster.com/1204K42/) +- Stir system large orings - Oil-Resistant Buna-N O-Ring +3 mm Wide, 165 mm ID +- Stir system small orings - Oil-Resistant Buna-N O-Ring +3 mm Wide, 125 mm ID +- [Chambers](https://github.com/talimass/Talimass_Lab_Notebook_Mass_Lab/blob/master/images/Chamber.jpg?raw=true) (8 can be measured at any one time with the FireSting-O2) + - MAKE SURE BOTH TOP AND BOTTOM OF THE CHAMBERS ARE LABELLED +- Magnetic stir bars x8 (35-40mm) +- Chamber screw key - ADD PHOTO HERE +- [Battery] (https://github.com/talimass/Talimass_Lab_Notebook_Mass_Lab/blob/master/images/Battery.jpg?raw=true) + - Height 2.4" Width 5.3" Depth 1.3" +- [Battery Charger] (https://github.com/talimass/Talimass_Lab_Notebook_Mass_Lab/blob/master/images/Charger.jpg?raw=true) +- Strap Wrench +- Parafilm +- [Large cooler](https://smile.amazon.com/gp/product/B004QILD6W/ref=ppx_yo_dt_b_asin_title_o08_s00?ie=UTF8&psc=1) + - Lenght 38.19 x width 17.32 x height 17.72 inches +- [Chiller x2](https://www.petco.com/shop/en/petcostore/product/aqua-euro-usa-max-chill-aquarium-chiller-110-hp) + - e.g., AquaEuro 1/10 HP SKU 1457110 +- [Chiller Tubing](https://www.mcmaster.com/5233K68/) + - ID 1/2" and OD 3/4" +- [Chiller Pump - Hydor Centrifical Pump 300 All-Purpose Pump, 300 GPH](https://smile.amazon.com/gp/product/B003SNG9I8/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1) +- [Aqueon Pro 300 Submersible Aquarium Heater, 300 Watts](https://www.petco.com/shop/en/petcostore/product/aqueon-pro-300-submersible-aquarium-heater) +- [Digital Thermometer Cat 150778](https://www.fishersci.com/shop/products/fisher-scientific-traceable-digital-thermometers-11/150778#?keyword=digital%20thermometer) +- [Light sensor and meter if measuring photosynthesis](https://www.apogeeinstruments.com/mq-510-full-spectrum-underwater-quantum-meter/) +- 0% oxygen calibration capsules +- [Minimum Data Sheet]() + + **Water Bath Setup** + +1. Make sure you choose a tank that can contain the respirometry stand (L49cm X W31cm X H32cm) and have an extra room for all coral fragments, or use two tanks, one for the respirometry stand and the other one for all coral fragments to grow in. Fill the tank with source water, enough to just fully submerge the chambers once the chambers are placed inside (~31-32 cm high). + - [Tank set up] (https://github.com/talimass/Talimass_Lab_Notebook_Mass_Lab/blob/master/images/Tank%20set%20up.jpg?raw=true) + +Measure and record the temperature and salinity of the source water (where the corals are kept). + +1. Fill the cooler with source water, enough to fully submerge the chambers once the stirring rack and chambers are placed inside, and set up the temperature of that water. + +1. Place an aquarium pump and a heater into each bin. The pump(s) and heater(s) must be fully submerged before powering on. Plug in each piece of equipment, making sure the outlets have an appropriate voltage. Adjust the temperature of the bins so that they approximate the water temperature experienced by the coral being measured. Power on the pump and check for water flow. + +1. Add a heater to the cooler **The heater(s) must be fully submerged to the indicated locations for your brand of heater before powering on, or they can melt or crack** + + +1. While you wait for the bath and source water to reach the desired temperature, set up the FireSting O2 and prepare the stirring system and chambers. + + + **Connecting the Battery** + +1. Make sure the battery is charged. +1. Unscrew the cap of the sealed [battery compartment] (https://github.com/talimass/Talimass_Lab_Notebook_Mass_Lab/blob/master/images/Battery%20compartment.jpg?raw=true) on the underside of the respirometer and locate the red and black cables. Attach the red clip to the positive terminal (marked in red) on the battery and the black clip to the negative terminal (marked in black). Test your connection and battery power by turning the switch on the other side of battery compartment [**clockwise**] (https://github.com/talimass/Talimass_Lab_Notebook_Mass_Lab/blob/master/images/battery%20power.jpg?raw=true). The conveyor belt should start moving at a quick pace. Turn the switch off. +1. If the belt does not move or moves slowly, the battery needs to be switched out and recharged. +1. As an additional check, you can unscrew a chamber base, insert a stir bar in the center divet of the base, then reseal the chamber. Place the chamber in one of the chamber slots and note the rotation speed of the stir bar. If the stir bar is spinning slowly or not at all, the battery needs to be switched out and recharged. + +1. Place the connected battery inside the compartment **gently** and screw the lid on tightly, making sure the o-ring is properly positioned. Use a boa grip to tighten the lid with 1-2 quarter turns, then wrap with parafilm around the lid to seal the cap as a backup. +1. The connection point of the wires are very delicate. Rough handing or too much tension on the wires from twisting may disconnect the wire from its base, requiring soldering to reattach the the metal foot of the wire to the metal point on the base. If this disconnectin occurs, see [Troubleshooting](#Troubleshooting). +1. Once the battery is placed inside, and everything is sealed, do one last check of power to make sure the motor is running (observe the black bands moving along their tracks at quick speed), then turn it off to conserve the battery until you're ready to start your runs. + +1. Once you are sure the battery compartment is water tight, submerge the respirometer in the cooler's water bath. + + + + **FireSting Setup** + +Below is an example of the entire set-up. This can be modified to be specific to whatever lab or space you are in, but the **electronics need to be completely dry and far above/away from any potential water leak or water source**. + +![labeledoxysetup](https://github.com/talimass/Talimass_Lab_Notebook_Mass_Lab/blob/master/images/The%20whole%20set%20up.jpg?raw=true) + +Be very delicate with the oxygen probes. Leave the cap on the end when not in use and do not scratch the tip. The oxygen cord should never be coiled too tightly or bent, or the sensor will break. + +1. Insert each numbered Temp probe into the corresponding Temp port on the FireSting by aligning the red dots and pushing gently until the dots meet. +1. Remove the **red caps on the FireSting Oxygen ports** and place all caps in the bag and in the Pyroscience suitcase. +1. Remove the caps on the oxygen probes you are going to use and place each cap in its bag. +1. Insert each numbered O2 probe into the corresponding O2 port on the FireSting by aligning the metal pin on the port with the opening on the probe end. Push in and turn the probe clockwise to catch the pin. +1. Leave the black cap on the O2 probe until you’re ready to use the probe, then place these caps in the bag labeled “Oxygen Sensor Caps”. +1. Plug the USB connector cord into your computer and the other end into the FireSting + + +![Oxygen meter](https://github.com/talimass/Talimass_Lab_Notebook_Mass_Lab/blob/master/images/20230105_10051_Oxymeter.jpg?raw=true) + + **Software Setup** + +## Final Chamber Checks + +Last checks before starting to record data: + +1. Stir bars spinning in place and at normal speed (If not, the battery needs to be switched out and recharged - see Take-Down instructions for proper procedures) +2. Chambers are securely fastened on the respirometer stand +3. No bubbles are present inside the chambers or on the sensors. +4. The sensors are snug and secure in the chambers +5. The correct probes are in the correct chambers. +6. All the data is recorded on your datasheet (Each fragment is associated with the correct Cell number and sensor number). + + +### FireSting Measurement Manual Pyro Workbench Software Setup + +Perform instructions in the correct order!! + +## Set up +1. Set-up one FireSting device with four oxygen sensors and one temperature sensor (Use the– Manual Pyro Workbench). +2. Choose to measure oxygen concentration with units of- µmol/L and record every 10 sec. +3. Measure water salinity. +4. Calibrate the oxygen sensors with air saturated seawater. Insert an air pump into a glass with ~700ml seawater and let it bubble for 10 minutes. Transfer the water to a metabolic cell, insert a magnetic stirrer and the oxygen sensor, close the hole with plasteline, let it stable and calibrate +5. • Insert the coral fragments to the chambers (one fragment into one cell) and leave one cell empty (blank- for measuring the oxygen production/consumption of the sea water). The plugs with the coral fragments should be held by the screw inside the chambers. Once the source water is at the desired temperature, submerge the chamber top and bottom and shake off or wipe away any air bubbles. Screw the plug with the coral fragment to the bottom of the chamber, while underwater. Then fill the other part of the chamber with water, insert a magnetic stir bar and close the chamber. Flip it, open the plastic lid (place the plastic screw in a bag) and let it fill with water, then, screw the chamber into the table. Make sure that they are tightly screwed and that the water level covers the chambers. +6. Insert an oxygen sensor to each cell, through the hole at the top of the chamber. The sensor tip should be at least 2 cm into the chamber, and not more than a half of it should be submerged in the water. ![coral in the chamber] ( +7. Use a syringe to fill in with seawater or to take out all the air bubbles and seal the holes with plasteline (after you insert the oxygen sensor). +8. Turn the stir system power switch to on, and check for proper stir bar placement. If any stir bars are not spinning or are out of place, try to place it using a stir bar stick or loosen the bolt and gently jiggle the chamber until the bar is reset in the center of the divot. +9. When all chambers are ready, immerse the temperature sensor (Pt100) into the water tank. +10. Cover the cells for 30 minutes in complete darkness. +11. After 30min of acclimation to the dark, oxygen conc. will be measured first in the dark and then in six increasing light intensities (50, 100, 200, 300, 400, and 600 µmol photons/m-2/s-1), which will elevate every 15min. + + +## Oxygen sensor installation + +Be very delicate with the oxygen probes. Leave the cap on the end when not in use and do not scratch or touch their tips. The oxygen cord should never be coiled too tightly or bent, or the sensor will break. + +1. Remove the red caps on the FireSting Oxygen ports and place them in a bag and in the Pyroscience suitcase. +2. Remove the caps on the oxygen probes you are going to use and place each cap in its bag. + + + **Probe Calibration** + +1. Calibrate the temperature (Pt100) and oxygen sensors [Use the Pyro Workbench & Data Inspector manual] (https://github.com/talimass/Talimass_Lab_Notebook_Mass_Lab/blob/master/Files/Manual%20Pyro%20Workbench.pdf) and measure water salinity: +2. Calibrate the Pt100 temperature sensor first [use the Optical Temperature Sensors Manual] (https://github.com/talimass/Talimass_Lab_Notebook_Mass_Lab/blob/master/Files/Manual_Optical_Temperature_Sensors%20(1).pdf) +3. Calibrate the oxygen sensors [use the oxygen sensors manual] (https://github.com/talimass/Talimass_Lab_Notebook_Mass_Lab/blob/master/Files/Manual_FSO2-C.pdf) +4. 2-point calibration (optional): upper and 0% calibration; recommended for measurements at low O2 and high accuracy measurements over the full range. +5. For seawater saturated with air, insert an air pump into a glass with 600ml seawater and let it bubble for 10 minutes. Insert the oxygen and temperature sensor into the glass and ensure that the sensor tips are immersed in the water and are free of air bubbles then measure it and let it stable. +For de-oxygenated water Fill 50ml of demineralized water (DO NOT USE SEAWATER FOR THIS CALIBRATION) into a glass flask (e.g. Duran flask) + + + + **Stirring System Setup** +![Oxy10 Front](https://github.com/Putnam-Lab/Lab_Management/blob/master/images/oxy10_base.JPG?raw=true) + +Check all orings connecting the drive motor to the stirplate for cracks. Lubricate with silicon before each run as needed + +1. Unscrew the cap of the sealed battery compartment on the underside of the respirometer and locate the red and black cables. ADD PHOTO HERE Attach the red clip to the positive terminal (marked in red) on the battery and the black clip to the negative terminal (marked in black). + - The connection point of the black wire is very delicate. Rough handing or too much tension on the wires from twisting may disconnect the wire from its base, requiring soldering to reattach the the metal foot of the wire to the metal point on the base. If this disconnectin occurs, see [Troubleshooting](#Troubleshooting). +1. Test your connection and battery power by turning the switch on the other side of battery compartment **clockwise**. ADD PHOTO HERE The stirring system should start moving at a quick pace. Turn the switch off. + - If the system does not move or moves slowly, the battery needs to be switched out and recharged. + - As an additional check, you can unscrew a chamber base, insert a stir bar in the center divet of the base, then reseal the chamber. Place the chamber in one of the chamber slots and note the rotation speed of the stir bar. If the stir bar is spinning slowly or not at all, the battery needs to be switched out and recharged. ADD PHOTO HERE + +1. Place the connected battery inside the compartment **gently** and screw the lid on tightly, making sure the o-ring is properly positioned. Use a boa grip to tighten the lid with 1-2 quarter turns, then wrap with parafilm around the lid to seal the cap. ADD PHOTO HERE + + - Once the battery is placed inside, and everything is sealed, do one last check of power to make sure the motor is running (observe the black bands moving along their tracks at quick speed), then turn it off to conserve the battery until you're ready to start your runs. + +1. Once you are sure the battery compartment is water tight, submerge the respirometer in the cooler's water bath and look for excessive bubbles. + +1. Situate the heater so it is fully submerged but not touching the respirometer stand or the Apex temp probe, and away from the battery compartment if possible. + - Consider the best placement of the temp probe, heater, and chiller outflow for adequate water monitoring and circulation. Ex. Temp probe along the back of the cooler, centered. The heater suction cupped on one far side of the cooler. The chiller inflow and outflow placed on the opposide far side of the cooler. ADD PHOTO HERE + **Filling and Securing Chambers** + +![Oxy10 Front](https://github.com/Putnam-Lab/Lab_Management/blob/master/images/oxy10_singlechamber.JPG?raw=true) +![Oxy10 Front](https://github.com/Putnam-Lab/Lab_Management/blob/master/images/oxy10_chamberbase.JPG?raw=true) + + +1. Unscrew the bottom from a chamber and place a magnetic stir bar in the center divet. Once the source water is at the desired temperature, submerge the chamber top and bottom and shake off or wipe away any air bubbles. - ADD PHOTO HERE + - If including organisms, secure them in the bottom of the chamber before screwing the top and bottom together until **hand tight**. Check again for bubbles and remove any as necessary. **Record the time of when you seal each chamber** and leave submerged to maintain temperature until ready to secure on the respirometer. ADD PHOTO HERE + - The probes will need to reach the submerged chamber without straining the wire, [insert the probes into the chamber](#Probes) at this time before placing the chambers onto the respirometer. +- ADD PHOTO HERE + +1. Use the screw key to loosen the bolts of the holding plates on the respirometer just until the plates are moveable but not detached. +- ADD PHOTO HERE + +1. Place the chamber in a chamber slot and then insert the Oxy-10 probes. + +![Oxy10 Chambers with Probes](https://github.com/Putnam-Lab/Lab_Management/blob/master/images/oxy10_chambers.JPG?raw=true) + +- Be careful to not damage the probes or introduce bubbles to the chamber, insert the temperature probe into the larger probe port and gently guide it down until it fits snuggly and securely. +- Once the temperature probe is in place, gently guide the oxygen probe into its port, being careful to not scratch the probe tip. The probe tip should be at least 2 cm into the chamber, but can be inserted farther, as long as the probe isn't touching any organisms or objects in the chamber. + - ADD PHOTO HERE +1. Check for bubbles inside the chamber. If any bubbles are present, remove them at this time. + - You may be able to guide small bubbles out of the airlock seal on the chamber lid by unscrewing the airlock seal and guiding the bubbles out, then rescrewing on the airlock finger tight. + - ADD PHOTO HERE + - Note that if cooler water is not from the same source as your second bin water (used to fill the chambers), you must remove air bubbles only while submerging the chamber in the second bin's water. + - If there are large bubbles or a large quantity of bubbles after moving the chamber, remove the chamber from the respirometer, place back into the source water, unscrew the bottom to wipe or shake away any bubbles, then close and re-secure the chamber. Note the new time of when you sealed the chamber. + + +2. Repeat for all 10 chambers, filling at least one chamber with only water, without any organisms, for a "BLANK" dataset to account for background oxygen flux. + +1. Once all chambers are in place, with probes and no bubbles, tighten the screws on the respirometer finger tight, making sure the holding plates are over the chamber bottoms. - ADD PHOTO HERE Test if the chambers are secure by attempting to gently move the chambers. There should be no movement. + +1. Once all chambers are secure, turn the stir system power switch **clockwise** to on, and check for proper stir bar placement. If any stir bars are not spinning or are out of place, loosen the bolt and gently jiggle the chamber until the bar is reset in the center of the divot. + - If necessary, remove the chamber, place back into the source water, unscrew the bottom to move the stir bar into place, then close and re-secure the chamber. Note the new time of when you seal the chamber. + + **Final Chamber Checks** + +Last checks before starting to record data using the PreSens program: + +1. Stir bars spinning in place and at normal speed (If not, the battery needs to be switched out and recharged - see [Take-Down](#Take-Down) instructions for proper procedures) + +1. Chambers are securely fastened on the respirometer stand + +1. No bubbles are present inside the chambers + +1. The correct probes are in the correct chambers (Every numbered temperature probe is with its corresponding numbered oxygen probe and in the numbered chamber you've assigned to the probe pair). Make sure you have recorded this on your datasheet. + +1. The probes are snug and secure in the chambers + + + **Water Changeover for Additional Runs** + +If using the respirometer at more than one temperature (i.e. Thermal Performance Curves) + +1. Once all the chambers are out of the source water and you've started recording data for your current run, do a water change (if necessary) of your source water and program the Apex to your new desired temperature. + +1. Once you've stopped recording data for your current run, program the Apex for the water bath to your new desried temperature (same as the source water). + +1. While you wait for the temperature in your bath water to stabilize, collect water samples, if needed for your data set, or start [preparing the chambers](#Chambers) with the new source water using the same steps above. + + **Removing Chambers from Respirometer** + +1. Turn off the battery by turning the switch **counter-clockwise**. + +1. Remove the probes and carefully place or drape them in a secure location. + +1. Unscrew the holding plates and remove the chambers. +1. **YOU MUST MEASURE THE TOTAL VOLUME OF WATER IN THE CHAMBER IN ORDER TO CALCULATE THE RATE TAKING INTO ACCOUNT THE SAMPLE WATER DISPLACEMENT** + +1. If saving water samples, note the time when you either unscrew the airlock seal on the lid (best method for pouring the water into another container) or unscrew the bottom (keep the chamber upside down for this method). + +1. Unscrew the bottom of the chamber to fully drain the water, then place the two chamber parts in the source water. + 1. If you have any organisms secured in the bottom of the chamber, be as swift as possible to minimize time spent out of the water. + +1. Keep the chamber lid very near or loosely on top of the chamber bottom, unscrewed, to not confuse which organism goes in which numbered chamber, while still allowing for water flow until you're ready to move the chambers to the water bath. + +1. Once the source water and water bath are at the desired temperature, follow the same steps to [fill and secure the chambers](#Chambers) to prepare for your next run. + + **Respirometer Take-Down and CleanUp** + +1. Turn off the Apex and +2. Turn off the power to the respirometer battery by turning the switch **counter-clockwise**. + +1. Remove the probes and carefully place or drape them in a secure location. + +1. Unscrew the holding plates and remove the chambers. + 1. If collecting water samples, note the time when you either unscrew the airlock seal on the lid (best method for pouring the water into another container) or unscrew the bottom (keep the chamber upside down for this method). + +1. Remove any organisms from the chambers and store or dispose of those organisms as appropriate. + +1. Drain the source water bin and fill with fresh water. + +1. Place the unsealed chambers, stir bars, heaters, aquarium pumps, and temperature probes in the bin to soak, keeping all outlet plugs out and away from the water. + 1. Let the pumps run for some time (without the chiller being on) to flush fresh water through the hoses. + +1. Taking the respirometer out of the water bath + 1. When lifting the stand out of the bath, keep it tilted slightly so that the lid to the battery compartment is lower than the opposite side with the power switch. + 1. If any water seeped into the battery compartment, this will force the water away from other electrical components of the compartment. + 1. Drain the water bath and refill with fresh water. Place the respirometer in the fresh water to soak. + +1. While letting everything soak, collect and organize the Oxy10 probes so the Oxygen probes are together and the temperature probes are together + 1. Fill two beakers with DI water and gently drape the probes over a line or surface so the probe tips (any portion exposed to the water) are submerged in DI, with O2 probes in one beaker and temp probes in another. + +1. Breaking down the respirometer after soaking + 1. Lift the respirometer out of the freshwater bath using the same tilt method as before. + 1. Remove the parafilm and use a boa grip to loosen the cap utnil you can unscrew it by hand. + 1. Take out the battery and detach the positive and negative clips from the battery terminals. + 1. Check for any leaked water by wiping a towel, cloth, or chemwipe around the inside of the compartment. + 1. Place the respirometer on a stable surface to dry overnight (with the battery compartment opening-side down). + +1. Using a clean rag or chemwipe with ethanol, wipe down the cord of each Oxy10 probe to remove any remaining salt deposits or particulates, then recoil the probes and store in their original labeled bags. + - Be extremely careful when handling probes and make sure to avoid touching the Oxygen probe tips as they are the most sensitive. + + +12. Leave items to soak overnight if possible, then remove from the fresh water and place on a clean surface to dry. + + + **Troubleshooting** + + + +**Disconnected battery wire** + +- Access the battery compartment by simply unscrewing (rotating counterclockwise) the PVC tubing which holds the battery and connections. No screwdrivers are required. +- A temporary hold may be aquired using electrical tape until you can solder the affected wire. +- A soldering iron with a fine tip is needed to reconnect the end of the wire to a small square attachment point inside the battery compartment. Before soldering, test the appropriate connection point by holding the end of the wire to the metal connection point and turning the motor ON. +- Do NOT touch any metal while the motor is on. +- Once a connection point is found, use a heated soldering iron and solder to seal that connection. Let rest for a few minutes, then test the motor by turning it ON again. + + **ChamberOring** (make video) + + **StirSystemOrings** + +[Stirring O-ring Replacement](https://github.com/Putnam-Lab/Lab_Management/blob/master/images/Stand_Oring_replacement.mov) + +Remove bolts holding top and bottom plates together + +Save all bolts and plastic spacers + +Remove old orings + +Replace center orings with 2 of the longer 165mm orings +![Central Orings](https://github.com/Putnam-Lab/Lab_Management/blob/master/images/stand_oring2.png?raw=true) + +Replace the outer 4 with the shorter 125mm orings +![Outer Orings](https://github.com/Putnam-Lab/Lab_Management/blob/master/images/stand_oring4.png?raw=true) + +Connect to center motor hub + +Replace plastic spacers + +Replace top plate + +Replace and tighten bolts + + + **References** +* * [Putnam Lab Protocol] (https://github.com/Putnam-Lab/Lab_Management/blob/master/Lab_Resources/Equipment_Protocols/Respirometry_Protocol/Respirometry_Manual.md) +* * [Silbiger Lab Protocol](https://github.com/SilbigerLab/Protocols/tree/master/Physiological_Parameter_Protocols/Protocols/Respirometry_Protocol) diff --git a/_posts/2024-01-21-Specific Title Pertaining to Method and Samples Processed.md b/_posts/2024-01-21-Specific Title Pertaining to Method and Samples Processed.md new file mode 100644 index 0000000..71c6d0d --- /dev/null +++ b/_posts/2024-01-21-Specific Title Pertaining to Method and Samples Processed.md @@ -0,0 +1,32 @@ +--- +layout: post +title: General Template For Sample Processing Notebook Post +category: [ Protocol ] +--- + +# Specific Title Pertaining to Method and Samples Processed + +### Include a Link to the protocol (from your lab notebook) used for processing these samples. Also include links and details for anything you used that is different from that post. + +**Goal for Processing:** What was your goal for the day? +**Major Results** What is your major result with respect to your goal? +**Major Take Aways** Are there any broader conclusions that came from your labwork today, or links to other posts? + +**Components** + +- List/table of samples that you processed this day +- Mention **all** things that went differently in this day's processing that aren't in the referenced protocol +- Note if a sample is a re-processing or not +- If you are making a library, provide a table of the multiplexing done, and include the index/barcode sequences if available +- If you are putting something in a 96 well plate for the plate reader, include a plate map of where your samples went + +**QC/Data Acquired** + +- List all QC measures performed for this processing, if you have links to posts about their protocols, include them here. +- Provide all data for QC ex: Qubit table, gel image, volumes of homogenized tissue, plate reader outputs, tapestation reports + +**Next Steps** +- Will you be re-doing some samples? +- Are there many more samples to process in the same way going forward? +- Are you going to be scaling up the processing level once you are comfortable with the protocol? +- Etc etc etc \ No newline at end of file diff --git a/_posts/2024-01-23-Protocol Title- General for the Technique.md b/_posts/2024-01-23-Protocol Title- General for the Technique.md new file mode 100644 index 0000000..ec1ba25 --- /dev/null +++ b/_posts/2024-01-23-Protocol Title- General for the Technique.md @@ -0,0 +1,52 @@ +--- +layout: post +title: General Template For Writing A Protocol in Your Lab Notebook +tags: [ Protocol ] +--- + +# Protocol Title: General for the Technique + +**Goal or reason for the technique, and conceptual description of the method (if applicable).** + +Example 1: Methyl binding domain enrichment of DNA for highly methylated regions. Sheared DNA is hybridized with the methyl binding domain protein that binds to regions of DNA with a lot of CpG methylation. The protein is attached to co-molecules and to a magnetic bead, so that un-bound DNA can be washed away, and the bound DNA can be released and ethanol precipitated as the highly methylated regions of your DNA sample. + +Example 2: Air brushing and homogenization technique for _Montipora_ coral fragments. Air brushing tissue off fragments and subsequent homogenization (blending) of tissue removes tissue in the most complete manner for complex structured corals for later surface area analysis, and homogenization breaks open coral host cells for further diagnostic assays. + +## Materials and Equipment +List ALL the materials and equipment you need for the protocol. +- For reagents/kits provide a [link]() to the company website **and** the catalog number. +- If it is a really basic lab material (ie. sterile 1.5mL tube), then just say that without a link. +- For equipment, list the equipment, specifications (like centrifuge that can go to 4 degrees, air brusher with however much psi), and company that made the equipment and model number we have in the lab. + +If there is a company protocol (like with an extraction kit from Zymo), save it as a pdf to your notebook github, and link it here. These are likely going to be less specific than the one you write. + +### Protocol Steps + +#### Make headings for separate sections of the protocol (if applicable) +- Bullet or number list all steps. +- Be specific about what is being added to what and clear, don't shorten names of reagents in different ways. +- Be consistent with your language of techniques and materials. + +#### Specifics +- Try to remember to include things that are simple/second nature, ie. every vortex, spin down or pipette mix. +- If a lot of different tubes are happening, you can write in that you labeled a set of tubes something, and call on that name later on when referring to those tubes. +- If you are discarding a liquid, where did it go? Hazardous Waste bottle, trough, container that can be poured down the sink? +- If you use a thermocycler program, **list the entire program** even if it is a crazy one. **And** say what it is called in our machines and what login it's under. Ex: + - 8 degrees for 4 minutes + - 16 degrees for 1 minute with 3% ramp rate + - 22 degrees for 1 minute with 3% ramp rate + - 28 degrees for 1 minute with 3% ramp rate + - 36 degrees for 1 minute with 3% ramp rate + - 36.5 degrees for 1 minute with 3% ramp rate + - 37 degrees for 8 minutes + - repeat back from the first step one time through again +- Photos can be really helpful! +- Include **all** troubleshooting tips, ie. some samples become foamy or mucusy at this step, carefully watch your pipette tip and aspirate very slowly to avoid the chunks. Or bubbles at this stage are not a concern because after the next centrifugation step they will be pushed down. +- If there are master mixes in the protocol, use some sort of place holder like _n_ for number of samples to put in to the description of the calculation. + +#### QC Steps +- List what steps to do for QC (if applicable). +- List data/sample type you arrive at when you're done, ex: absorbance values, extracted DNA, sequencable libraries, etc etc. + + +**Any final notes you want to provide!** \ No newline at end of file diff --git a/_posts/2025-10-09-Skeleton thickness and porosity_Fiji.md b/_posts/2025-10-09-Skeleton thickness and porosity_Fiji.md new file mode 100644 index 0000000..cff04ec --- /dev/null +++ b/_posts/2025-10-09-Skeleton thickness and porosity_Fiji.md @@ -0,0 +1,84 @@ +#Skeleton thickness and porosity_Fiji + +##Orientation of the data set + +Open data and reslice: image->stack->reslice + +![image](https://github.com/talimass/Talimass_Lab_Notebook_Mass_Lab/blob/master/images/Fiji_Reslice.png?raw=true) + +Reslice from the top or from right to make the stack horizontal + +![image](https://github.com/talimass/Talimass_Lab_Notebook_Mass_Lab/blob/master/images/reslice_stack.png?raw=true) + +Save Substack by using ROI of intrast. ROI can be saved to ROImanager and reopened from there: Analyze->Tools->ROImanager + +![image](https://github.com/talimass/Talimass_Lab_Notebook_Mass_Lab/blob/master/images/ROImanager.png?raw=true) + +##Data segmentation using trainable weka segmentation + +In Fiji, open Plugin -> Segmentation -> trainable weka segmentation + +![image](https://github.com/talimass/Talimass_Lab_Notebook_Mass_Lab/blob/master/images/Waka.png?raw=true) + +After open rename the labels of the class in setting. + + +![image](https://github.com/talimass/Talimass_Lab_Notebook_Mass_Lab/blob/master/images/weka_open.png?raw=true) + +Using the freehand tool, mark the area at each section and add to the relevant class. Repeat in about 20 slices. + +![image](https://github.com/talimass/Talimass_Lab_Notebook_Mass_Lab/blob/master/images/weka_seg.png?raw=true) + +Once the segmentation is complete, use the train classifier option. +It is possible to save data, save classifiers, and reload them in the next set. + +![image](https://github.com/talimass/Talimass_Lab_Notebook_Mass_Lab/blob/master/images/weka_after.png?raw=true) + +Make sure the segmentation is correct before creating the results. + +After creating the result, adjust the threshold to BW using the Otso. Make sure the void value is 0 and the skeleton is 255, if not, invert the image: edit -> invert. + +##Thickness calculation using Bone J + +Reslice the binary stack from the bottom to get stack in the same orientation, and that slice one will be the top of the coral. + +Open Fiji and make sure you have the BoneJ plugin; if not, add it. + +###Fiji +Open binary data set the scale at: analyze->set scale in micron + +Open: Plugin->bonej->slicegeometry and set the parameters: + +![image](https://github.com/talimass/Talimass_Lab_Notebook_Mass_Lab/blob/master/images/bonej setting.png?raw=true) + +Plot the Mean Thick 3D (¬µm) by slice from the csv file + +##Thickness and porosity using Python + +On Coral1: open command prompt (CMD) +Run: C:\ProgramData\miniconda3\Scripts\activate.bat +Create a working conda environment: as instructed +[here] (https://youtu.be/hDGSZMLS5F4?t=342) + +After creating a working environment, install Python on it as instructed +[here] (https://youtu.be/hDGSZMLS5F4?t=342) + +Activate the environment by: conda activate XXX + +Copy the path of the Python code and run it + +The Python code works well on the Lynx system; however, on Windows, saving the calculated volume fails to save the numbers correctly. Therefore, it is possible to calculate the total volume with Fiji. + +###To measure the total volume in Fiji, do this: +1. Open the total volume dataset +2. Image > Stacks > Z project, Projection type: Sum. It will produce a new image as output. +3. Analyze > Set measurements > check the 'Integrated density' box +4. Click on the result of the Z sum projection, then Analyze > Measure +5. The value in the last column, 'RawIntDen' is your volume in units of pixels +6. Multiply this by 15*15*15 to get volume in um^3 + + + + + + diff --git a/_posts/2025-11-17-test.md b/_posts/2025-11-17-test.md new file mode 100644 index 0000000..976c1a8 --- /dev/null +++ b/_posts/2025-11-17-test.md @@ -0,0 +1 @@ +#this is to test if my post stay only on my local lab book \ No newline at end of file diff --git a/_posts/
Steps-.md b/_posts/
Steps-.md new file mode 100644 index 0000000..e94348e --- /dev/null +++ b/_posts/
Steps-.md @@ -0,0 +1,101 @@ +--- +layout: post +title: Making an Online Github Notebook +date: '2018-05-08' +categories: Protocols +tags: [Protocols, Github] +--- + + #
Protocol to make an Online Github Notebook + +This protocol will guide you through making your own online notebook forked from Jekyll-now. For more information about the original webside layout, click [here](https://github.com/barryclark/jekyll-now). To set up your online notebook, you will need to have the following programs on your computer: + - Gitbash (for PCs, Macs have Terminal already installed) + - A Markdown editor (e.g. Atom or MOU) + +#
Steps: + +## 1. Fork The Repository from [Mass_Lab_Notebook] (https://github.com/Mass-Lab/Open_Lab_Notebook_Mass_Lab) or [Jekyll-now](https://github.com/barryclark/jekyll-now) + +* Fork the repository to **yourgithubusername**.github.io +* Make sure you have a directory on your computer + +## 2. Edit config.yml file + +* Name of your site (displayed in the header) +name: **Fill in here** +* Short bio or description (displayed in the header) +description: **Fill in here** +* URL of your avatar or profile pic +avatar: **Add File Link Here** +* Edit the following lines appropriately: **6, 9, 12, 20 - 32** + +** If you are unsure what to change, compare other notebook config.yml files and determine what is different** + +## 3. Add config.yml to site + +Download Gitbash (PC) or Open Terminal (Mac) + +``` +cd Desktop/Notebook/XXXXXX_Lab_Notebook +git add config.yml +git commit -m "adding new config file" +git push origin master +``` + +## 4. Add New Admin Link: + +In your computer folder (XXXXXX_Lab_Notebook): +- Open **_layouts** +- Edit **default.html** + * Change **line 45** to your Github notebook link +- Save and push file to origin master: + +``` +cd Desktop/Notebook/XXXXXX_Lab_Notebook +cd _layouts +git add default.html +git commit -m "adding new admin link" +git push origin master +``` + +## 5. Edit about.md page + +In your computer folder (XXXXXX_Lab_Notebook): +* Open and edit **about.md** + * Change all information to your personal information + * Add a CV +* Save and Push to origin master + +``` +cd Desktop/Notebook/XXXXXX_Lab_Notebook +git add about.md +git commit -m "adding new about page" +git push origin master +``` + +## 6. Edit READMe.md file + +In your computer folder (XXXXXX_Lab_Notebook): +* Open and edit ReadMe.md + * Edit all information +* Save and push to origin master + +``` +cd Desktop/Notebook/XXXXXX_Lab_Notebook +git add READMe.md +git commit -m "adding new READMe" +git push origin master +``` + +## 7. How to add a post + +* Make a new post in a markdown editor using the **post_template.sh** +* Save new post in **_posts folder** +* Push to origin master + +``` +cd Desktop/Notebook/XXXXXX_Lab_Notebook/_posts +git add New_Post.md +git commit -m "adding new post" +git push origin master +``` \ No newline at end of file diff --git a/images/20221103_104853_table and chambers.jpg b/images/20221103_104853_table and chambers.jpg new file mode 100644 index 0000000..b786141 Binary files /dev/null and b/images/20221103_104853_table and chambers.jpg differ diff --git a/images/20230105_10051_Oxymeter.jpg b/images/20230105_10051_Oxymeter.jpg new file mode 100644 index 0000000..3a8b6f9 Binary files /dev/null and b/images/20230105_10051_Oxymeter.jpg differ diff --git a/images/All_samples_Soliel_2025.jpg b/images/All_samples_Soliel_2025.jpg new file mode 100644 index 0000000..e4f5773 Binary files /dev/null and b/images/All_samples_Soliel_2025.jpg differ diff --git a/images/Atomix_Soliel.jpg b/images/Atomix_Soliel.jpg new file mode 100644 index 0000000..ce34082 Binary files /dev/null and b/images/Atomix_Soliel.jpg differ diff --git a/images/Battery compartment.jpg b/images/Battery compartment.jpg new file mode 100755 index 0000000..aa23217 Binary files /dev/null and b/images/Battery compartment.jpg differ diff --git a/images/Battery.jpg b/images/Battery.jpg new file mode 100755 index 0000000..51e2879 Binary files /dev/null and b/images/Battery.jpg differ diff --git a/images/BoneJ.png b/images/BoneJ.png new file mode 100644 index 0000000..9127770 Binary files /dev/null and b/images/BoneJ.png differ diff --git a/images/Cell culture.png b/images/Cell culture.png new file mode 100644 index 0000000..a6a3f35 Binary files /dev/null and b/images/Cell culture.png differ diff --git a/images/Chamber.jpg b/images/Chamber.jpg new file mode 100755 index 0000000..ad79fa9 Binary files /dev/null and b/images/Chamber.jpg differ diff --git a/images/Charger.jpg b/images/Charger.jpg new file mode 100755 index 0000000..979b29e Binary files /dev/null and b/images/Charger.jpg differ diff --git a/images/Coral_set_up_soliel_2025.png b/images/Coral_set_up_soliel_2025.png new file mode 100644 index 0000000..dacf4e2 Binary files /dev/null and b/images/Coral_set_up_soliel_2025.png differ diff --git a/images/Fiji_Reslice.png b/images/Fiji_Reslice.png new file mode 100644 index 0000000..1734c1e Binary files /dev/null and b/images/Fiji_Reslice.png differ diff --git a/images/Firesting setup.jpg b/images/Firesting setup.jpg new file mode 100644 index 0000000..c5f6a94 Binary files /dev/null and b/images/Firesting setup.jpg differ diff --git a/images/ROImanager.png b/images/ROImanager.png new file mode 100644 index 0000000..cc450c8 Binary files /dev/null and b/images/ROImanager.png differ diff --git a/images/Soliel_beam.jpg b/images/Soliel_beam.jpg new file mode 100644 index 0000000..b54b267 Binary files /dev/null and b/images/Soliel_beam.jpg differ diff --git a/images/Tank set up.jpg b/images/Tank set up.jpg new file mode 100755 index 0000000..2d71c82 Binary files /dev/null and b/images/Tank set up.jpg differ diff --git a/images/The whole set up.jpg b/images/The whole set up.jpg new file mode 100644 index 0000000..8b88258 Binary files /dev/null and b/images/The whole set up.jpg differ diff --git a/images/Waka.png b/images/Waka.png new file mode 100644 index 0000000..265cf17 Binary files /dev/null and b/images/Waka.png differ diff --git a/images/Workbench 1.png b/images/Workbench 1.png new file mode 100644 index 0000000..a3b5275 Binary files /dev/null and b/images/Workbench 1.png differ diff --git a/images/Workbench 2.jpeg b/images/Workbench 2.jpeg new file mode 100644 index 0000000..b678198 Binary files /dev/null and b/images/Workbench 2.jpeg differ diff --git a/images/Workbench 3.png b/images/Workbench 3.png new file mode 100644 index 0000000..2eed647 Binary files /dev/null and b/images/Workbench 3.png differ diff --git a/images/battery power.jpg b/images/battery power.jpg new file mode 100755 index 0000000..a359812 Binary files /dev/null and b/images/battery power.jpg differ diff --git a/images/bonej setting.png b/images/bonej setting.png new file mode 100644 index 0000000..9127770 Binary files /dev/null and b/images/bonej setting.png differ diff --git a/images/coral in a chamber.jpg b/images/coral in a chamber.jpg new file mode 100644 index 0000000..5453fb5 Binary files /dev/null and b/images/coral in a chamber.jpg differ diff --git a/images/oxy10_base.JPG b/images/oxy10_base.JPG new file mode 100644 index 0000000..1a920f3 Binary files /dev/null and b/images/oxy10_base.JPG differ diff --git a/images/reslice_stack.png b/images/reslice_stack.png new file mode 100644 index 0000000..73158b0 Binary files /dev/null and b/images/reslice_stack.png differ diff --git a/images/table with chambers.jpg b/images/table with chambers.jpg new file mode 100755 index 0000000..27acf24 Binary files /dev/null and b/images/table with chambers.jpg differ diff --git a/images/weka_after.png b/images/weka_after.png new file mode 100644 index 0000000..c80bac5 Binary files /dev/null and b/images/weka_after.png differ diff --git a/images/weka_open.png b/images/weka_open.png new file mode 100644 index 0000000..cf52f46 Binary files /dev/null and b/images/weka_open.png differ diff --git a/images/weka_seg.png b/images/weka_seg.png new file mode 100644 index 0000000..e7b0e41 Binary files /dev/null and b/images/weka_seg.png differ diff --git a/images/workbanch4.png b/images/workbanch4.png new file mode 100644 index 0000000..e9b6007 Binary files /dev/null and b/images/workbanch4.png differ