Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
artiq_experiments
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nicolas Nunez Barreto
artiq_experiments
Commits
8bdb7d82
Commit
8bdb7d82
authored
Sep 20, 2023
by
Nicolas Nunez Barreto
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
todotodo
parent
24e382ca
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
373 additions
and
4 deletions
+373
-4
000015167-IR_Scan_withcal_optimized.h5
..._v5/Data/Sidebands/000015167-IR_Scan_withcal_optimized.h5
+0
-0
000015168-IR_Scan_withcal_optimized.h5
..._v5/Data/Sidebands/000015168-IR_Scan_withcal_optimized.h5
+0
-0
000015169-IR_Scan_withcal_optimized.h5
..._v5/Data/Sidebands/000015169-IR_Scan_withcal_optimized.h5
+0
-0
RDS_sidebands2.py
...lots/20230817_RotationalDopplerShift_v5/RDS_sidebands2.py
+369
-0
RDS_piezobeamsizes_vert2.py
...912_RotationalDopplerShift_v7/RDS_piezobeamsizes_vert2.py
+4
-4
No files found.
analisis/plots/20230817_RotationalDopplerShift_v5/Data/Sidebands/000015167-IR_Scan_withcal_optimized.h5
0 → 100644
View file @
8bdb7d82
File added
analisis/plots/20230817_RotationalDopplerShift_v5/Data/Sidebands/000015168-IR_Scan_withcal_optimized.h5
0 → 100644
View file @
8bdb7d82
File added
analisis/plots/20230817_RotationalDopplerShift_v5/Data/Sidebands/000015169-IR_Scan_withcal_optimized.h5
0 → 100644
View file @
8bdb7d82
File added
analisis/plots/20230817_RotationalDopplerShift_v5/RDS_sidebands2.py
0 → 100644
View file @
8bdb7d82
import
h5py
import
matplotlib.pyplot
as
plt
import
numpy
as
np
import
sys
import
re
import
ast
from
scipy.optimize
import
curve_fit
import
os
from
scipy
import
interpolate
#Mediciones barriendo angulo del TISA y viendo kicking de resonancias oscuras
#C:\Users\Usuario\Documents\artiq\artiq_experiments\analisis\plots\20220106_CPT_DosLaseres_v08_TISA_DR\Data
os
.
chdir
(
'/home/nico/Documents/artiq_experiments/analisis/plots/20230817_RotationalDopplerShift_v5/Data'
)
"""
en este codigo ploteo espectros CPT de resonancias D-D para configuracion +2/+2 y +2/-2 (usando pentaprisma)
"""
def
find_nearest
(
array
,
value
):
array
=
np
.
asarray
(
array
)
idx
=
(
np
.
abs
(
array
-
value
))
.
argmin
()
return
idx
def
Split
(
array
,
n
):
length
=
len
(
array
)
/
n
splitlist
=
[]
jj
=
0
while
jj
<
length
:
partial
=
[]
ii
=
0
while
ii
<
n
:
partial
.
append
(
array
[
jj
*
n
+
ii
])
ii
=
ii
+
1
splitlist
.
append
(
partial
)
jj
=
jj
+
1
return
splitlist
def
SeeKeys
(
files
):
for
i
,
fname
in
enumerate
(
files
.
split
()):
data
=
h5py
.
File
(
fname
+
'.h5'
,
'r'
)
# Leo el h5: Recordar que nuestros datos estan en 'datasets'
print
(
fname
)
print
(
list
(
data
[
'datasets'
]
.
keys
()))
PiezoVerCounts
=
[]
PiezoVerFrequencies
=
[]
PIEZOVER_FILES
=
np
.
arange
(
922
,
948
,
1
)
for
i
in
PIEZOVER_FILES
:
#print(str(i) + ' - ' + fname)
data
=
h5py
.
File
(
f
'VaryingBeamlocation/Directions/Vertical/000014{i}-IR_Scan_withcal_optimized'
+
'.h5'
,
'r'
)
PiezoVerCounts
.
append
(
np
.
array
(
data
[
'datasets'
][
'counts_spectrum'
]))
PiezoVerFrequencies
.
append
(
np
.
array
(
data
[
'datasets'
][
'IR1_Frequencies'
]))
PiezoVerDCounts
=
[]
PiezoVerDFrequencies
=
[]
PIEZOVERD_FILES
=
list
(
np
.
arange
(
70
,
97
,
1
))
+
list
(
np
.
arange
(
99
,
116
))
for
i
in
PIEZOVERD_FILES
:
#print(str(i) + ' - ' + fname)
if
i
<
100
:
data
=
h5py
.
File
(
f
'VaryingBeamlocation/Directions/VerticalDense/0000150{i}-IR_Scan_withcal_optimized'
+
'.h5'
,
'r'
)
else
:
data
=
h5py
.
File
(
f
'VaryingBeamlocation/Directions/VerticalDense/000015{i}-IR_Scan_withcal_optimized'
+
'.h5'
,
'r'
)
PiezoVerDCounts
.
append
(
np
.
array
(
data
[
'datasets'
][
'counts_spectrum'
]))
PiezoVerDFrequencies
.
append
(
np
.
array
(
data
[
'datasets'
][
'IR1_Frequencies'
]))
PiezoDiagCounts
=
[]
PiezoDiagFrequencies
=
[]
PIEZODIAG_FILES
=
list
(
np
.
arange
(
948
,
976
,
1
))
for
i
in
PIEZODIAG_FILES
:
#print(str(i) + ' - ' + fname)
data
=
h5py
.
File
(
f
'VaryingBeamlocation/Directions/Diagonal/000014{i}-IR_Scan_withcal_optimized'
+
'.h5'
,
'r'
)
PiezoDiagCounts
.
append
(
np
.
array
(
data
[
'datasets'
][
'counts_spectrum'
]))
PiezoDiagFrequencies
.
append
(
np
.
array
(
data
[
'datasets'
][
'IR1_Frequencies'
]))
def
ErrorDRdepth
(
p
,
f
,
b
):
ep
=
np
.
sqrt
(
p
)
ef
=
np
.
sqrt
(
f
)
eb
=
np
.
sqrt
(
b
)
derivadap
=
1
/
((
f
-
b
)
**
2
)
derivadaf
=
((
p
-
b
)
/
((
f
-
b
)
**
2
))
**
2
derivadab
=
((
p
-
f
)
/
((
f
-
b
)
**
2
))
**
2
return
2
*
np
.
sqrt
(
derivadap
*
ep
*
ep
+
derivadaf
*
ef
*
ef
+
derivadab
*
eb
*
eb
)
def
Lorentzian
(
x
,
A
,
B
,
x0
,
gam
):
return
A
*
gam
**
2
/
(
gam
**
2
+
(
x
-
x0
)
**
2
)
+
B
#%%
"""
Ahora voy a intentar ajustarlas con una lorentziana que es mejor
"""
import
seaborn
as
sns
"""
Resonancias DD configuracion +2/-2 colineal variando la ubicacion del ion en los haces
Moviendo verticalmente el haz
"""
palette
=
sns
.
color_palette
(
"tab10"
)
pmlocmedvec
=
np
.
arange
(
0
,
len
(
PIEZOVER_FILES
),
1
)
#pmlocmedvec = [26]
plt
.
figure
()
bkg
=
np
.
min
(
PiezoVerCounts
[
5
])
pmdepthsdrver
=
[]
errorpmdepthsdrver
=
[]
Intensityver
=
[]
errorIntensityver
=
[]
jj
=
0
for
med
in
pmlocmedvec
:
Freqs
=
[
2
*
f
*
1e-6
for
f
in
PiezoVerFrequencies
[
med
][
1
:]]
Counts
=
[
c
for
c
in
PiezoVerCounts
[
med
][
1
:]]
popt
,
pcov
=
curve_fit
(
Lorentzian
,
Freqs
,
Counts
,
p0
=
(
-
200
,
2100
,
435.8
,
0.05
),
bounds
=
((
-
10000
,
0
,
435.5
,
0
),(
0
,
1e4
,
436.1
,
1
)))
pmdepthsdrver
.
append
(
1
-
(
np
.
min
(
Lorentzian
(
Freqs
,
*
popt
))
-
bkg
)
/
(
popt
[
1
]
-
bkg
))
errorpmdepthsdrver
.
append
(
ErrorDRdepth
(
np
.
min
(
Lorentzian
(
Freqs
,
*
popt
)),
popt
[
1
],
bkg
))
Intens
=
popt
[
1
]
Intensityver
.
append
(
Intens
)
# errorIntensity.append(2*np.sqrt(np.mean(Piezo1Counts[med][1:][0:20]))+np.sqrt(bkg))
if
med
not
in
[
800
]:
plt
.
plot
([
2
*
f
*
1e-6
for
f
in
PiezoVerFrequencies
[
med
][
1
:]],
[
c
for
c
in
PiezoVerCounts
[
med
][
1
:]],
'-o'
,
markersize
=
2
,
alpha
=
0.7
)
plt
.
plot
(
Freqs
,
Lorentzian
(
Freqs
,
*
popt
))
jj
=
jj
+
1
# plt.xlabel('Frecuencia (MHz)')
# plt.ylabel('Counts')
#plt.xlim(435.2, 436.5)
plt
.
grid
()
# plt.legend()
# #plt.title('Espectros para distintas geometrías')
plt
.
figure
()
plt
.
plot
(
np
.
arange
(
0
,
len
(
Intensityver
),
1
),
[
i
/
np
.
max
(
Intensityver
)
for
i
in
Intensityver
],
'-o'
,
markersize
=
8
)
plt
.
plot
(
np
.
arange
(
0
,
len
(
Intensityver
),
1
),
[
p
for
p
in
pmdepthsdrver
],
'o'
,
markersize
=
8
)
plt
.
xlabel
(
'Ion position'
)
plt
.
ylabel
(
'Intensity / DR Relative depth'
)
#plt.xticks([1,2,3,4,5])
#plt.xlim(200,3200)
plt
.
ylim
(
-
0.1
,
1.1
)
plt
.
grid
()
#plt.axvline(3, color='salmon')
plt
.
legend
()
#%%
"""
Ahora voy a intentar ajustarlas con una lorentziana que es mejor
"""
import
seaborn
as
sns
"""
Resonancias DD configuracion +2/-2 colineal variando la ubicacion del ion en los haces
Moviendo diagonalmente el haz
"""
palette
=
sns
.
color_palette
(
"tab10"
)
pmlocmedvec
=
np
.
arange
(
0
,
len
(
PIEZODIAG_FILES
),
1
)
#pmlocmedvec = [0,1]
plt
.
figure
()
bkg
=
np
.
min
(
PiezoDiagCounts
[
5
])
pmdepthsdrdiag
=
[]
errorpmdepthsdrdiag
=
[]
Intensitydiag
=
[]
errorIntensitydiag
=
[]
jj
=
0
for
med
in
pmlocmedvec
:
Freqs
=
[
2
*
f
*
1e-6
for
f
in
PiezoDiagFrequencies
[
med
][
1
:]]
Counts
=
[
c
for
c
in
PiezoDiagCounts
[
med
][
1
:]]
if
med
==
2
:
Freqs
=
Freqs
[
1
:
-
30
]
Counts
=
Counts
[
1
:
-
30
]
popt
,
pcov
=
curve_fit
(
Lorentzian
,
Freqs
,
Counts
,
p0
=
(
-
200
,
2100
,
435.8
,
0.05
),
bounds
=
((
-
10000
,
0
,
435.5
,
0
),(
0
,
1e4
,
436.1
,
1
)))
elif
med
==
1
:
Freqs
=
Freqs
[
10
:
-
30
]
Counts
=
Counts
[
10
:
-
30
]
popt
,
pcov
=
curve_fit
(
Lorentzian
,
Freqs
,
Counts
,
p0
=
(
-
200
,
2100
,
435.8
,
0.05
),
bounds
=
((
-
10000
,
0
,
435.7
,
0
),(
0
,
1e4
,
436.1
,
1
)))
elif
med
==
5
:
Freqs
=
Freqs
[
10
:
-
55
]
+
Freqs
[
-
30
:
-
1
]
Counts
=
Counts
[
10
:
-
55
]
+
Counts
[
-
30
:
-
1
]
popt
,
pcov
=
curve_fit
(
Lorentzian
,
Freqs
,
Counts
,
p0
=
(
-
200
,
2100
,
435.8
,
0.05
),
bounds
=
((
-
10000
,
0
,
435.5
,
0
),(
0
,
1e4
,
436.1
,
1
)))
else
:
popt
,
pcov
=
curve_fit
(
Lorentzian
,
Freqs
,
Counts
,
p0
=
(
-
200
,
2100
,
435.8
,
0.05
),
bounds
=
((
-
10000
,
0
,
435.5
,
0
),(
0
,
1e4
,
436.1
,
1
)))
pmdepthsdrdiag
.
append
(
1
-
(
np
.
min
(
Lorentzian
(
Freqs
,
*
popt
))
-
bkg
)
/
(
popt
[
1
]
-
bkg
))
errorpmdepthsdrdiag
.
append
(
ErrorDRdepth
(
np
.
min
(
Lorentzian
(
Freqs
,
*
popt
)),
popt
[
1
],
bkg
))
Intens
=
popt
[
1
]
Intensitydiag
.
append
(
Intens
)
# errorIntensity.append(2*np.sqrt(np.mean(Piezo1Counts[med][1:][0:20]))+np.sqrt(bkg))
if
med
not
in
[
800
]:
plt
.
plot
([
2
*
f
*
1e-6
for
f
in
PiezoDiagFrequencies
[
med
][
1
:]],
[
c
for
c
in
PiezoDiagCounts
[
med
][
1
:]],
'-o'
,
markersize
=
2
,
alpha
=
0.7
)
plt
.
plot
(
Freqs
,
Lorentzian
(
Freqs
,
*
popt
))
jj
=
jj
+
1
# plt.xlabel('Frecuencia (MHz)')
# plt.ylabel('Counts')
#plt.xlim(435.2, 436.5)
plt
.
grid
()
# plt.legend()
# #plt.title('Espectros para distintas geometrías')
plt
.
figure
()
plt
.
plot
(
np
.
arange
(
0
,
len
(
Intensitydiag
),
1
),
[
i
/
np
.
max
(
Intensitydiag
)
for
i
in
Intensitydiag
],
'-o'
,
markersize
=
8
)
plt
.
plot
(
np
.
arange
(
0
,
len
(
Intensitydiag
),
1
),
[
p
for
p
in
pmdepthsdrdiag
],
'o'
,
markersize
=
8
)
plt
.
xlabel
(
'Ion position'
)
plt
.
ylabel
(
'Intensity / DR Relative depth'
)
#plt.xticks([1,2,3,4,5])
#plt.xlim(200,3200)
plt
.
ylim
(
-
0.1
,
1.1
)
plt
.
grid
()
#plt.axvline(3, color='salmon')
plt
.
legend
()
#%%
"""
Ploteo en conjunto. La horizontal sale de RDS_piezo.py
"""
cap
=
3
plt
.
figure
()
plt
.
plot
(
np
.
arange
(
0
,
len
(
Intensitydiag
),
1
),
[
i
/
np
.
max
(
Intensitydiag
)
for
i
in
Intensitydiag
],
'-o'
,
markersize
=
8
)
#plt.plot(np.arange(0,len(Intensitydiag),1), [p for p in pmdepthsdrdiag], 'o',markersize=8, label='Diagonal')
plt
.
errorbar
(
np
.
arange
(
0
,
len
(
Intensitydiag
),
1
),
[
p
for
p
in
pmdepthsdrdiag
],
yerr
=
errorpmdepthsdrdiag
,
fmt
=
'o'
,
capsize
=
cap
,
markersize
=
8
,
label
=
'Diagonal'
)
#plt.plot(np.arange(0,len(Intensityver),1), [i/np.max(Intensityver) for i in Intensityver], '-o',markersize=8)
#plt.plot(np.arange(0,len(Intensityver),1), [p for p in pmdepthsdrver], 'o',markersize=8, label='Vertical')
plt
.
errorbar
(
np
.
arange
(
0
,
len
(
Intensityver
),
1
),
[
p
for
p
in
pmdepthsdrver
],
yerr
=
errorpmdepthsdrver
,
fmt
=
'o'
,
capsize
=
cap
,
markersize
=
8
,
label
=
'Vertical'
)
scale
=
1.6
#plt.plot([s*scale for s in np.arange(16,len(Intensity),1)-16], [i/np.max(Intensity) for i in Intensity[16:]], '-o',markersize=8)
#plt.plot([s*scale for s in np.arange(16,len(Intensity),1)-16], [p for p in pmdepthsdr[16:]], 'o',markersize=8, label='Horizontal')
plt
.
errorbar
([
s
*
scale
for
s
in
np
.
arange
(
16
,
len
(
Intensity
),
1
)
-
16
],
[
p
for
p
in
pmdepthsdr
[
16
:]],
yerr
=
errorpmdepthsdr
[
16
:],
fmt
=
'o'
,
capsize
=
cap
,
markersize
=
8
,
label
=
'Horizontal'
)
plt
.
xlabel
(
'Ion position'
)
plt
.
ylabel
(
'Intensity / DR Relative depth'
)
#plt.xticks([1,2,3,4,5])
plt
.
xlim
(
-
1
,
15
)
plt
.
ylim
(
-
0.1
,
1.1
)
plt
.
grid
()
#plt.axvline(3, color='salmon')
plt
.
legend
()
#%%
import
seaborn
as
sns
"""
Resonancias DD configuracion +2/-2 colineal variando la ubicacion del ion en los haces
Moviendo verticalmente el haz pero con mayor densidad de puuntos
"""
palette
=
sns
.
color_palette
(
"tab10"
)
pmlocmedvec
=
np
.
arange
(
0
,
len
(
PIEZOVERD_FILES
),
1
)
#pmlocmedvec = [6]
plt
.
figure
()
#bkg = np.min(PiezoVerDCounts[5])
bkg
=
150
pmdepthsdrverd
=
[]
errorpmdepthsdrverd
=
[]
Intensityverd
=
[]
errorIntensityverd
=
[]
jj
=
0
for
med
in
pmlocmedvec
:
Freqs
=
[
2
*
f
*
1e-6
for
f
in
PiezoVerDFrequencies
[
med
][
1
:]]
Counts
=
[
c
for
c
in
PiezoVerDCounts
[
med
][
1
:]]
popt
,
pcov
=
curve_fit
(
Lorentzian
,
Freqs
,
Counts
,
p0
=
(
-
200
,
2100
,
435.8
,
0.05
),
bounds
=
((
-
10000
,
0
,
435.5
,
0
),(
0
,
1e4
,
436.1
,
1
)))
pmdepthsdrverd
.
append
(
1
-
(
np
.
min
(
Lorentzian
(
Freqs
,
*
popt
))
-
bkg
)
/
(
popt
[
1
]
-
bkg
))
errorpmdepthsdrverd
.
append
(
ErrorDRdepth
(
np
.
min
(
Lorentzian
(
Freqs
,
*
popt
)),
popt
[
1
],
bkg
))
Intens
=
popt
[
1
]
Intensityverd
.
append
(
Intens
)
errorIntensityverd
.
append
(
2
*
np
.
sqrt
(
Intens
)
+
np
.
sqrt
(
bkg
))
if
med
not
in
[
800
]:
plt
.
plot
([
2
*
f
*
1e-6
for
f
in
PiezoVerDFrequencies
[
med
][
1
:]],
[
c
for
c
in
PiezoVerDCounts
[
med
][
1
:]],
'-o'
,
markersize
=
2
,
alpha
=
0.7
)
plt
.
plot
(
Freqs
,
Lorentzian
(
Freqs
,
*
popt
))
jj
=
jj
+
1
# plt.xlabel('Frecuencia (MHz)')
# plt.ylabel('Counts')
#plt.xlim(435.2, 436.5)
plt
.
grid
()
# plt.legend()
# #plt.title('Espectros para distintas geometrías')
plt
.
figure
()
plt
.
errorbar
(
np
.
arange
(
0
,
len
(
Intensityverd
),
1
),
[
i
/
np
.
max
(
Intensityverd
)
for
i
in
Intensityverd
],
yerr
=
[
e
/
np
.
max
(
Intensityverd
)
for
e
in
errorIntensityverd
],
fmt
=
'o'
,
capsize
=
3
,
markersize
=
8
)
plt
.
errorbar
(
np
.
arange
(
0
,
len
(
Intensityverd
),
1
),
[
p
for
p
in
pmdepthsdrverd
],
yerr
=
errorpmdepthsdrverd
,
fmt
=
'o'
,
color
=
'limegreen'
,
capsize
=
3
,
markersize
=
8
)
plt
.
xlabel
(
'Screw step'
)
plt
.
ylabel
(
'Intensity / DR Relative depth'
)
#plt.xticks([1,2,3,4,5])
plt
.
xlim
(
-
2
,
35
)
plt
.
ylim
(
-
0.1
,
1.1
)
plt
.
grid
()
#plt.axvline(3, color='salmon')
plt
.
legend
()
\ No newline at end of file
analisis/plots/20230912_RotationalDopplerShift_v7/RDS_piezobeamsizes_vert2.py
View file @
8bdb7d82
...
...
@@ -59,7 +59,7 @@ def Lorentzian2( x, A, B, x0, gam):
Piezo1Counts
=
[]
Piezo1Frequencies
=
[]
PIEZOS1_FILES
=
[
59
,
60
,
62
,
63
,
64
,
65
,
66
,
70
,
71
,
72
,
75
,
76
,
77
,
78
,
79
,
80
,
81
,
82
]
PIEZOS1_FILES
=
[
59
,
60
,
62
,
63
,
64
,
65
,
66
,
70
,
71
,
72
,
75
,
76
,
77
,
78
,
79
,
80
,
81
,
82
,
83
,
84
,
85
,
86
,
87
,
88
,
89
]
...
...
@@ -99,9 +99,9 @@ power=1
palette
=
sns
.
color_palette
(
"tab10"
)
pmlocmedvec2
=
np
.
arange
(
0
,
len
(
PIEZOS1_FILES
),
1
)
pmlocmedvec2
=
[
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
]
+
list
(
np
.
arange
(
11
,
len
(
PIEZOS1_FILES
),
1
)
)
pmlocmedvec2
=
[
0
,
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9
,
11
,
12
,
13
,
14
,
15
,
16
,
17
,
18
]
#pmlocmedvec2 =
,11,12,13,14,15,16,17,18]
#pmlocmedvec2 = []
...
...
@@ -199,7 +199,7 @@ plt.grid()
if
plotcurvita
:
plt
.
figure
()
plt
.
errorbar
(
np
.
arange
(
0
,
len
(
Intensityver2
),
1
),
[
i
/
np
.
max
(
Intensityver2
)
for
i
in
Intensityver2
],
yerr
=
np
.
sqrt
(
Intensityver2
)
/
np
.
max
(
Intensityver2
),
fmt
=
'-o'
,
capsize
=
3
,
markersize
=
8
)
#
plt.errorbar(np.arange(0,len(Intensityver2),1), [i/np.max(Intensityver2) for i in Intensityver2], yerr=np.sqrt(Intensityver2)/np.max(Intensityver2), fmt='-o', capsize=3,markersize=8)
plt
.
errorbar
(
np
.
arange
(
0
,
len
(
Intensityver2
),
1
),
[
p
for
p
in
pmdepthsdrver2
],
yerr
=
errorpmdepthsdrver2
,
fmt
=
'o'
,
capsize
=
3
,
markersize
=
8
)
#plt.errorbar(np.arange(0,len(Intensityver2),1), [p for p in Gamas2], yerr=ErrorGamas2, fmt='o', capsize=3, markersize=8)
plt
.
xlabel
(
'Ion position'
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment