Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
L
labcode
Manage
Activity
Members
Code
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Deploy
Model registry
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
CST
labcode
Commits
88cbbf10
Commit
88cbbf10
authored
Sep 11, 2023
by
JupyterHub User
Browse files
Options
Downloads
Patches
Plain Diff
added innen radious plot diagramms and lists with all the values
parent
e784860c
No related branches found
No related tags found
No related merge requests found
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
hp4155/I-V_new.ipynb
+1
-1
1 addition, 1 deletion
hp4155/I-V_new.ipynb
hp4155/measurements.py
+16
-6
16 additions, 6 deletions
hp4155/measurements.py
hp4155/module.py
+1
-0
1 addition, 0 deletions
hp4155/module.py
hp4155/working_examples/pandas.ipynb
+26
-22
26 additions, 22 deletions
hp4155/working_examples/pandas.ipynb
with
44 additions
and
29 deletions
hp4155/I-V_new.ipynb
+
1
−
1
View file @
88cbbf10
...
...
@@ -237,7 +237,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.
11.4
"
"version": "3.
9.7
"
}
},
"nbformat": 4,
...
...
This diff is collapsed.
Click to expand it.
hp4155/measurements.py
+
16
−
6
View file @
88cbbf10
...
...
@@ -62,7 +62,8 @@ def I_V_Measurement(start,stop,step):
#exporting the data frame in an excel file
file_name
=
"
results.csv
"
path
=
r
"
C:\Users\user\Desktop
"
path
=
r
"
\\fileserver.cst.rwth-aachen.de\public\Datentransfer\Asonitis, Alexandros
"
#r"C:\Users\user\Desktop"
directory
=
os
.
path
.
join
(
path
,
file_name
)
df
.
to_csv
(
directory
)
...
...
@@ -141,7 +142,7 @@ def stress_sampling(V2_stress=10,V3_stress=3,stress_time=30,V2_sampling=10,V3_sa
#prepare full measurement
def
ctlm
(
field_name
=
'
M00
'
,
start
=-
50
*
10
**
(
-
3
),
stop
=
50
*
10
**
(
-
3
),
step
=
10
**
(
-
3
),
comp
=
10
,
distances
=
(
5
,
10
,
15
,
25
,
45
),
time
=
'
MED
'
):
def
ctlm
(
field_name
=
'
M00
'
,
start
=-
50
*
10
**
(
-
3
),
stop
=
50
*
10
**
(
-
3
),
step
=
10
**
(
-
3
),
comp
=
10
,
distances
=
(
5
,
10
,
15
,
25
,
45
),
time
=
'
MED
'
,
innen
=
0
):
#connect to the device
device
=
module
.
HP4155a
(
'
GPIB0::17::INSTR
'
)
...
...
@@ -153,6 +154,10 @@ def ctlm(field_name ='M00',start=-50*10**(-3),stop=50*10**(-3),step=10**(-3),com
plt
.
ylabel
(
'
Current(A)
'
)
plt
.
title
(
"
CTLM plot
"
)
#lists for appending all data values
ctlm_voltage
=
[]
ctlm_current
=
[]
ctlm_resistance
=
[]
#execute five measurements
for
j
in
range
(
len
(
distances
)):
...
...
@@ -203,6 +208,9 @@ def ctlm(field_name ='M00',start=-50*10**(-3),stop=50*10**(-3),step=10**(-3),com
voltage_values
=
device
.
return_data
(
'
V3
'
)
current_values
=
device
.
return_data
(
'
I3
'
)
ctlm_voltage
.
append
(
voltage_values
)
ctlm_current
.
append
(
current_values
)
resistance_values
=
[]
for
i
in
range
(
len
(
voltage_values
)):
...
...
@@ -221,7 +229,7 @@ def ctlm(field_name ='M00',start=-50*10**(-3),stop=50*10**(-3),step=10**(-3),com
print
(
df
)
file_name
=
field_name
+
"
_CTLM_
"
+
str
(
j
+
1
)
+
"
.txt
"
path
=
r
"
C:\Users\user\Desktop
"
path
=
r
"
\\fileserver.cst.rwth-aachen.de\public\Datentransfer\Asonitis, Alexandros
"
directory
=
os
.
path
.
join
(
path
,
file_name
)
#export DataFrame to text file (keep header row and index column)
f
=
open
(
directory
,
'
a
'
)
...
...
@@ -229,6 +237,10 @@ def ctlm(field_name ='M00',start=-50*10**(-3),stop=50*10**(-3),step=10**(-3),com
df_string
=
df
.
to_string
()
f
.
write
(
df_string
)
#plot diagramm
plt
.
legend
()
plt
.
show
()
#wait for confirmation from user after a measurement is done
while
True
:
answer
=
input
(
'
please press enter to continue with the next measurement or finish after the last measurement!
'
)
...
...
@@ -236,7 +248,5 @@ def ctlm(field_name ='M00',start=-50*10**(-3),stop=50*10**(-3),step=10**(-3),com
break
#close the connection and plot all the diagramms
plt
.
legend
()
plt
.
show
()
del
device
This diff is collapsed.
Click to expand it.
hp4155/module.py
+
1
−
0
View file @
88cbbf10
...
...
@@ -182,6 +182,7 @@ class HP4155a(object):
#set normal compliance for VAR1 and VAR2
def
comp
(
self
,
variable
,
value
):
"""
"""
command
=
f
"
:PAGE:MEAS:
{
variable
}
:COMP
{
value
}
"
self
.
inst
.
write
(
command
)
...
...
This diff is collapsed.
Click to expand it.
hp4155/working_examples/pandas.ipynb
+
26
−
22
View file @
88cbbf10
...
...
@@ -2,10 +2,22 @@
"cells": [
{
"cell_type": "code",
"execution_count":
1
,
"execution_count":
2
,
"id": "f3bb2a53-f571-4da3-b09f-4c8ee8c75a83",
"metadata": {},
"outputs": [],
"outputs": [
{
"ename": "ModuleNotFoundError",
"evalue": "No module named 'pandas'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m/tmp/ipykernel_6709/1825645653.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mimport\u001b[0m \u001b[0mpandas\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mmatplotlib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpyplot\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mdatetime\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mdatetime\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mnumpy\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0msklearn\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlinear_model\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mLinearRegression\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'pandas'"
]
}
],
"source": [
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
...
...
@@ -135,30 +147,20 @@
},
{
"cell_type": "code",
"execution_count":
6
,
"execution_count":
1
,
"id": "1f89f490-e901-43cb-b1f4-cda5b4cf6ae8",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"coefficient of determination: 0.9873880135298887\n",
"intercept: -0.00043234755330870747\n",
"slope: [0.00243783]\n"
"ename": "NameError",
"evalue": "name 'np' is not defined",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m/tmp/ipykernel_6709/2398863689.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mx\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvoltage_values\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mreshape\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;31m#column matrix\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0my\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0marray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcurrent_values\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0;31m#create a model\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0mmodel\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mLinearRegression\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mNameError\u001b[0m: name 'np' is not defined"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
...
...
@@ -175,11 +177,13 @@
"\n",
"plt.figure()\n",
"plt.plot(voltage_values,current_values,label='real curve') \n",
"plt.plot(x,model.coef_*x+model.intercept_,label='linear')\n",
"plt.xlabel('Voltage(V)')\n",
"plt.ylabel('Current(A)')\n",
"plt.title(\"I-V plot\")\n",
"plt.legend()\n",
"plt.show()\n",
"plt.plot(x,model.coef_*x+model.intercept_,label='linear')\n",
"plt.legend()\n",
"plt.show()"
]
},
...
...
%% Cell type:code id:f3bb2a53-f571-4da3-b09f-4c8ee8c75a83 tags:
```
python
import
pandas
as
pd
import
matplotlib.pyplot
as
plt
from
datetime
import
datetime
import
numpy
as
np
from
sklearn.linear_model
import
LinearRegression
```
%% Output
---------------------------------------------------------------------------
ModuleNotFoundError Traceback (most recent call last)
/tmp/ipykernel_6709/1825645653.py in <module>
----> 1 import pandas as pd
2 import matplotlib.pyplot as plt
3 from datetime import datetime
4 import numpy as np
5 from sklearn.linear_model import LinearRegression
ModuleNotFoundError: No module named 'pandas'
%% Cell type:code id:a9461575-0bd1-4e25-8403-ed4eb12ccce2 tags:
```
python
voltage_values
=
[
0.0
,
0.05
,
0.1
,
0.15
,
0.2
,
0.25
,
0.3
,
0.35
,
0.4
,
0.45
,
0.5
,
0.55
,
0.6
,
0.65
,
0.7
,
0.75
,
0.8
,
0.85
,
0.9
,
0.95
,
1.0
,
1.05
,
1.1
,
1.15
,
1.2
,
1.25
,
1.3
,
1.35
,
1.4
,
1.45
,
1.5
,
1.55
,
1.6
,
1.65
,
1.7
,
1.75
,
1.8
,
1.85
,
1.9
,
1.95
,
2.0
,
2.05
,
2.1
,
2.15
,
2.2
,
2.25
,
2.3
,
2.35
,
2.4
,
2.45
,
2.5
,
2.55
,
2.6
,
2.65
,
2.7
,
2.75
,
2.8
,
2.85
,
2.9
,
2.95
,
3.0
,
3.05
,
3.1
,
3.15
,
3.2
,
3.25
,
3.3
,
3.35
,
3.4
,
3.45
,
3.5
,
3.55
,
3.6
,
3.65
,
3.7
,
3.75
,
3.8
,
3.85
,
3.9
,
3.95
,
4.0
,
4.05
,
4.1
,
4.15
,
4.2
,
4.25
,
4.3
,
4.35
,
4.4
,
4.45
,
4.5
,
4.55
,
4.6
,
4.65
,
4.7
,
4.75
,
4.8
,
4.85
,
4.9
,
4.95
,
5.0
,
5.05
,
5.1
,
5.15
,
5.2
,
5.25
,
5.3
,
5.35
,
5.4
,
5.45
,
5.5
,
5.55
,
5.6
,
5.65
,
5.7
,
5.75
,
5.8
,
5.85
,
5.9
,
5.95
,
6.0
,
6.05
,
6.1
,
6.15
,
6.2
,
6.25
,
6.3
,
6.35
,
6.4
,
6.45
,
6.5
,
6.55
,
6.6
,
6.65
,
6.7
,
6.75
,
6.8
,
6.85
,
6.9
,
6.95
,
7.0
,
7.05
,
7.1
,
7.15
,
7.2
,
7.25
,
7.3
,
7.35
,
7.4
,
7.45
,
7.5
,
7.55
,
7.6
,
7.65
,
7.7
,
7.75
,
7.8
,
7.85
,
7.9
,
7.95
,
8.0
,
8.05
,
8.1
,
8.15
,
8.2
,
8.25
,
8.3
,
8.35
,
8.4
,
8.45
,
8.5
,
8.55
,
8.6
,
8.65
,
8.7
,
8.75
,
8.8
,
8.85
,
8.9
,
8.95
,
9.0
,
9.05
,
9.1
,
9.15
,
9.2
,
9.25
,
9.3
,
9.35
,
9.4
,
9.45
,
9.5
,
9.55
,
9.6
,
9.65
,
9.7
,
9.75
,
9.8
,
9.85
,
9.9
,
9.95
,
10.0
]
print
(
len
(
voltage_values
))
```
%% Output
201
%% Cell type:code id:b12e1696-12d9-4b94-9028-2610ec7e73c6 tags:
```
python
current_values
=
[
-
2.0172e-07
,
1.7837e-05
,
3.7577e-05
,
6.0445e-05
,
8.5833e-05
,
0.000113797
,
0.00014604
,
0.0001823
,
0.00022479
,
0.00027261
,
0.00032461
,
0.00038161
,
0.00044615
,
0.00051651
,
0.00059047
,
0.00066731
,
0.00075451
,
0.0008448
,
0.00093602
,
0.00102376
,
0.0011258
,
0.0012281
,
0.0013295
,
0.0014353
,
0.0015563
,
0.0016701
,
0.0017803
,
0.0018951
,
0.002029
,
0.0021518
,
0.0022691
,
0.0023878
,
0.0025273
,
0.0026616
,
0.0027876
,
0.002916
,
0.0030592
,
0.0032063
,
0.0033439
,
0.003475
,
0.0036308
,
0.0037965
,
0.0039297
,
0.0040698
,
0.0042341
,
0.004404
,
0.0045565
,
0.0046994
,
0.0048693
,
0.0050476
,
0.0052095
,
0.0053543
,
0.0055203
,
0.0057068
,
0.0058664
,
0.0060137
,
0.0061811
,
0.0063717
,
0.0065344
,
0.0066796
,
0.0068391
,
0.0070318
,
0.0072005
,
0.0073433
,
0.0074938
,
0.0076875
,
0.0078528
,
0.0079939
,
0.0081331
,
0.008324
,
0.0084877
,
0.0086322
,
0.0087642
,
0.0089491
,
0.0091169
,
0.0092587
,
0.0094001
,
0.0095756
,
0.0097471
,
0.0098836
,
0.0100007
,
0.0101695
,
0.0103403
,
0.0104739
,
0.0105835
,
0.010747
,
0.0109165
,
0.0110492
,
0.0111549
,
0.0113035
,
0.011437
,
0.011582
,
0.011752
,
0.011885
,
0.01199
,
0.012118
,
0.012294
,
0.012424
,
0.012515
,
0.012631
,
0.012812
,
0.012943
,
0.013039
,
0.013146
,
0.013317
,
0.01345
,
0.013551
,
0.013645
,
0.013811
,
0.01394
,
0.014039
,
0.014122
,
0.014289
,
0.014246
,
0.014127
,
0.014193
,
0.014335
,
0.014895
,
0.014997
,
0.015063
,
0.01521
,
0.01535
,
0.015448
,
0.015513
,
0.015641
,
0.015792
,
0.015895
,
0.015949
,
0.016056
,
0.016203
,
0.016302
,
0.016362
,
0.016492
,
0.016636
,
0.016745
,
0.016774
,
0.016874
,
0.017036
,
0.017124
,
0.017172
,
0.017251
,
0.01741
,
0.017513
,
0.017609
,
0.017646
,
0.017794
,
0.017869
,
0.017955
,
0.01802
,
0.018137
,
0.018244
,
0.018323
,
0.018396
,
0.018502
,
0.018611
,
0.018682
,
0.018713
,
0.018826
,
0.018934
,
0.019005
,
0.019042
,
0.019156
,
0.019268
,
0.019344
,
0.019375
,
0.019478
,
0.019604
,
0.019675
,
0.019701
,
0.019793
,
0.019926
,
0.019996
,
0.020026
,
0.020103
,
0.020242
,
0.020314
,
0.020345
,
0.020408
,
0.020549
,
0.020624
,
0.021077
,
0.020751
,
0.020862
,
0.02093
,
0.020973
,
0.021014
,
0.021131
,
0.021219
,
0.021269
,
0.021204
,
0.02139
,
0.02151
,
0.021572
,
0.02159
,
0.021701
,
0.021798
,
0.021869
,
0.021896
,
0.021991
,
0.022039
,
0.022167
]
print
(
len
(
current_values
))
```
%% Output
201
%% Cell type:code id:c7f1a914-cca3-4de7-8cbc-ccdb94197658 tags:
```
python
#add title to the results
header
=
[
'
Voltage(V)
'
,
'
Current(A)
'
]
data
=
{
header
[
0
]:
voltage_values
,
header
[
1
]:
current_values
}
df
=
pd
.
DataFrame
(
data
)
date
=
str
(
datetime
.
today
().
replace
(
microsecond
=
0
))
print
(
date
)
```
%% Output
2023-09-08 09:46:45
%% Cell type:code id:30ac24c1-d6ed-4e41-8d7c-fa0fe44e072f tags:
```
python
#export table in pdf file
fig
=
plt
.
figure
(
figsize
=
(
8
,
2
))
fig
.
suptitle
(
'
I-V measurement results at:
'
+
date
,
y
=
9
)
ax
=
fig
.
add_subplot
(
111
)
ax
.
table
(
cellText
=
df
.
values
,
rowLabels
=
df
.
index
,
colLabels
=
df
.
columns
,
loc
=
"
center
"
)
plt
.
axis
(
'
off
'
)
plt
.
savefig
(
'
results.pdf
'
,
format
=
"
pdf
"
,
bbox_inches
=
"
tight
"
)
```
%% Output
%% Cell type:code id:09d63039-ef49-4c65-be9d-9c7326428cdc tags:
```
python
#exporting the data frame in an excel file
#file_name = 'results '+date+'.xlsx'
#df.to_excel(file_name)
file_name
=
'
\ results
'
+
date
+
'
.txt
'
path
=
"
\\
FILESERVER\public\Datentransfer\Asonitis, Alexandros
"
+
file_name
#export DataFrame to text file (keep header row and index column)
with
open
(
path
,
'
a
'
)
as
f
:
f
.
write
(
'
title.
\n\n
'
)
df_string
=
df
.
to_string
()
f
.
write
(
df_string
)
```
%% Cell type:code id:1f89f490-e901-43cb-b1f4-cda5b4cf6ae8 tags:
```
python
x
=
np
.
array
(
voltage_values
).
reshape
((
-
1
,
1
))
#column matrix
y
=
np
.
array
(
current_values
)
#create a model
model
=
LinearRegression
()
model
.
fit
(
x
,
y
)
r_sq
=
model
.
score
(
x
,
y
)
print
(
f
"
coefficient of determination:
{
r_sq
}
"
)
print
(
f
"
intercept:
{
model
.
intercept_
}
"
)
print
(
f
"
slope:
{
model
.
coef_
}
"
)
plt
.
figure
()
plt
.
plot
(
voltage_values
,
current_values
,
label
=
'
real curve
'
)
plt
.
plot
(
x
,
model
.
coef_
*
x
+
model
.
intercept_
,
label
=
'
linear
'
)
plt
.
xlabel
(
'
Voltage(V)
'
)
plt
.
ylabel
(
'
Current(A)
'
)
plt
.
title
(
"
I-V plot
"
)
plt
.
legend
()
plt
.
show
()
plt
.
plot
(
x
,
model
.
coef_
*
x
+
model
.
intercept_
,
label
=
'
linear
'
)
plt
.
legend
()
plt
.
show
()
```
%% Output
coefficient of determination: 0.9873880135298887
intercept: -0.00043234755330870747
slope: [0.00243783]
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
/tmp/ipykernel_6709/2398863689.py in <module>
----> 1 x=np.array(voltage_values).reshape((-1,1)) #column matrix
2 y = np.array(current_values)
3
4 #create a model
5 model = LinearRegression()
NameError: name 'np' is not defined
%% Cell type:code id:49c0c86e-bc82-42c6-b6fa-a3b8fa926f6d tags:
```
python
```
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment