From 644bcd76b9caa6d9ba3a7993fde74ce3bbc1069f Mon Sep 17 00:00:00 2001
From: Stephan Philips <s.g.j.philips@tudelft.nl>
Date: Wed, 20 Feb 2019 13:11:58 +0100
Subject: [PATCH] update docs

---
 docs/_build/doctrees/environment.pickle       | Bin 79198 -> 84202 bytes
 docs/_build/doctrees/index.doctree            | Bin 12099 -> 13352 bytes
 docs/_build/doctrees/intro.doctree            | Bin 100522 -> 163420 bytes
 docs/_build/doctrees/struct.doctree           | Bin 2416 -> 13580 bytes
 .../doctrees/tutorials/init_lib.doctree       | Bin 2341 -> 24646 bytes
 .../doctrees/tutorials/simple_pulse.doctree   | Bin 2432 -> 4391 bytes
 docs/_build/html/_modules/base_pulse.html     |   1 +
 docs/_build/html/_sources/index.rst.txt       |   7 +-
 docs/_build/html/_sources/intro.rst.txt       | 203 ++++++++++++++++-
 docs/_build/html/_sources/struct.rst.txt      |  47 +++-
 .../html/_sources/tutorials/init_lib.rst.txt  | 142 +++++++++++-
 .../_sources/tutorials/simple_pulse.rst.txt   |  18 +-
 docs/_build/html/index.html                   |  19 +-
 docs/_build/html/intro.html                   | 215 +++++++++++++++++-
 docs/_build/html/objects.inv                  | Bin 943 -> 974 bytes
 docs/_build/html/searchindex.js               |   2 +-
 docs/_build/html/struct.html                  |  72 +++++-
 docs/_build/html/tutorials/init_lib.html      | 158 ++++++++++++-
 docs/_build/html/tutorials/simple_pulse.html  |  39 +++-
 docs/index.rst                                |   7 +-
 docs/struct.rst                               |  47 +++-
 docs/tutorials/init_lib.rst                   | 143 +++++++++++-
 docs/tutorials/simple_pulse.rst               |  18 +-
 23 files changed, 1108 insertions(+), 30 deletions(-)

diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle
index c737e6b661ca8e6b7b25a3b82aa6068c62add2e2..169cbb6d5dd3c77467bad1f55d172b3084d1ca97 100644
GIT binary patch
delta 14672
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
PbZ!k-4AtryuJHc>kFuqd

delta 9856
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
Pa6>4IOIOl0z6t8TEHPTB

diff --git a/docs/_build/doctrees/index.doctree b/docs/_build/doctrees/index.doctree
index cfc554b6a7aa591bb50d0eac81d333acef1ff861..55262f8ac27b4a0c23feca58cd558aaa573b1451 100644
GIT binary patch
delta 2855
zcmb7GYitx%6z=SEc3b+QTl&~-r@PyIls=#eR-2;bQP9T4QlmivWV@YuJ8XB$?kp6L
zM^Oow!3SrI|0H0D5)zHsA3TguFeWA>8WIIfjFH5sV2Fr+2nmVj%<OL2Zb8@|ch9-^
zeBXTcoO5UHR~tTI<~^qOU5|fmzGgNQ8Q`Y5#wyUSO@M#+=WOlvtark;(xN+X*y6S5
z)1VYLSu-*4yG2^qZf_HMQ*wMPERRNnNPKKuj3s4s;xS<)o)DHV6XGKyNl{K_Q3KYW
zxk_l~o67^NNGTqQ#v_|HZcfEz5tj1(TtCUEYgd_dy~>sZC)J&5fSK72%`aE9<%)Lo
zO?7(3!FIxcD_|~R4z>;6GYYn?XvwJ|HUUR$VeSwZ?XQ>*;hd_)%|Ywk8F8oV-PYs!
zGhoW@g@$6g`8dX%&=93)eN2eCIp(Y~r3nre3x$HGGJ>_`Ji${)c0r>pL+k8)Xh-2s
z3oE3(lA)Dw*#mb<`tqo+AmL9Mbvar;5VcuT3{8Os=TIsd6=hZ7+SC;DvIJ{pKIZSI
zw8bejG=`RhX-j4|$1K|8CbGUV`3SX!0qeSDER@A&xCXPnvg;wa;05c3-D`6&|3kv`
z4k}k3IzHD@lAS9mVh)MNztm8eRqs^cx~mpGtK-d;IB$Y)tE%hopQIOIbLk)$OE20a
zx6UNMuPzUa&(ZNt@~AFSEn1BZc8mRcZ$ao8)wts4OmM!Y5pI^6=B&vSi`F;||2!7!
zZmz<2&~g?qRZu~(_D<q}J!NfNW%|>ykGSA2)FthqVJ{7D(6En&{WQEqgF?gGu)X57
z8Wl|xD2?NPMn@Iuh(c-QVopl0s2nixCuq$f9VcyCrhMofqfFJ!$W(yk`UzG$x?r)R
zj5`N?j(+}}&T(Gjplo@N<4f{NC|hSp1|90#j>ovm&|2NWU)B*n<`7<t`@Rryp}K{;
z0XM3B{0$xPcMj2vh`$OE+vojZ;|<!LEC#sha#Q&%v?+t;YV|uq^(n|YsXmE}e(qR7
z{fOXbda!mOXY1727wGKRT$WZ`Y&F1lRgTKSoWXB(ZbP2|_<EPEPlv9W78XS4a?RCJ
z)r$dIs+9UxZati?57^f0n2pnz7R0QZ1+&WO<79|C-8NarY?;Q)M@(WC%x!1L_KqHX
za5|bcbU<@?Dj=z%Zmgc!@uYqU#raIFnV7t;C!V9w)o{^vT7Sk#{TY<BPFzcCNqfMN
zY=iNJPWZ4f!CitLj}OU9EFB2EsPR}x+&5%46iB0}uXSnZd!$um4<tSQDD@P_jJcB*
zY{KR->dj+>TK9rxBY7B-IX;UD-?DftAm$F*Ybg>xeo`EcxLt-?BTTuS^!JOqiED-?
z|6G{s3GyDDUciY)IOlU278qf#r_-|owJ6qvII=aIh^hPO*fvn8{;q!l)z%|qzL~6f
zXnE$*=Bx7Lg|yb`^#<DpvSJ$1$i9N5+^jcm7C!L0xwWLw6p%WMaLMb*%6us+b7ce}
zN-^paC&r_rkx^MaAU#cU{8)T=G&U?ws8TQb5^Y3Uiq_0MbfMls<m=#8KT!X*W`Elx
z;<aSv>CesP>7RripTHfMRsX)M{uMx4XVY&<is3|r{h#_LQT^-4Hs4IvZrXv?epN=;
z?hn?mTME~b_j#s58I5q(Kg2CcHw9`9+|_h<%VFd4BFfTT>`CbhvQFWUQf#sCm?&=>
z7n5{xk|-vmt%p*qhGq!BTC`}QZD_x~8?Rxd$!$ql9NRc1CX?Y;MHSR+u`{3T+)YgB
zUP?DMLA$XDVr)1mY#o(ZJS7WZVJI4oZ4#oRF|k`n#jwI+L>7n9q{7DJ%&o3GpW~TF
zCCPoLQJX{RG11%E(u3wxCOG12>@i2hEn-ydHz+2`gsNCy?p+glHndVzOr%ZiuTU(>
Ycq$PQRpz4;(q+P=Xm_75@EzU%0h6C~BLDyZ

delta 2213
zcma)8drVtp6z98eFSie%&@^jdQ2Ksg2OUmOwk1B68D=1j`@<|zfvxQ8&FGMV1LI@M
zLe#ADk#qOYVl<isHPIkz$g<1_hG>k&#o+!hF-n#tl4&p)vzSF^Jm<S@p#sx?4(IVZ
zzw`LM@0NG?{A2R*iZh+9GxBv=nq{yeJE2N>h?${J>4s^=FU6YSPfIg8Sfy5OMyt2>
zVfdg%g`1Vnv09i=1MrD@59@{+rQ4<R%13p+J90vQMh|nDKPhZmRzz+3q`n$(@Nu}>
z6qc>r!AIfM@@CTrYDdQgcm`_B{p>V6VLl+AM&HW<SB2Us!r6<sLYb@wW)#o5;^*?k
zMHEh1Eb=+zm=bK&sJ*obn;3W<+oe34h^`&w5>kC6NNZ5LxCtqT2djK=-MVKT@j{+B
zg^1Kz;svC;B8Y9MeX|Mi{``R`uw?s8;mZj9MI_atwnRy4eql*SRJ)+9y0&VF2Y8T&
z_R;P&f<T8oCR0MMurB*+b7$>o7KyR4GOd+FoJ2c`9V9wP+)bj3#4d<Co_5}k>KONH
zZv30CVCN340q(7{!*>oJbLIYWBqa3!#U0us==Z^}s>T9n?Wg1co+=zFSHxb@rFIx^
z$NSD+mWEr-eQMeu8Wuz=W|ev2Q^ywQQ*Bn9SxXs|8JKppvq`w-YE>tVjOPm(vJY`5
z$tum5sE?XoBP`u#8=R=O!(6>t6)uPNdNJLP>1Wrc#~YT^3r4BgB9^9{A<MGboH&yP
zO-8JypuqL<!s&PsKZy8HrLh~rHbS;em5C{lt7wcf^{P>2QB<K_wqWdgV)|dZJk#Wr
zZZNpm)TrJtnEojC8%Czz$r7tsF*q}@%Y6s4g60mJtdcm#Y6%jqs1iZAnN)8n{-!&~
ze9+wNHTevDz`#cl@7VzVZgY=mw}ISgAZesdffSoFI=S8EsPkp9Ib##6n<J_OT=RTo
z;zo%<!ArMrYaC+(=-p^@u<Uh$!#8C*ZlpbHbhZsso)QcSo#`=Bo3?IzoP-?}SPL&!
zTJ4OgCvtE5tC{J7QDatuj{|Li^JFnzo_|qyVtX4r3VSfJ_X|Seh1Htytg_bOWcpAl
zefaV5k>sEbdf_2y1sE^ODyj65R61E2g_A*#bVY)xU>93}4}C$H3pYxO5`;qA{ZXQ>
zM8;$NBWe8wdhTCSS>uCp7Y^~Iu^Li87vpZB)y$Vn(St)|;HOX|R#u+x`7#2EEf&4s
zmUv-j*vnLSGi+DF+K(85xu8c~AZmvuqkre#I^@e*u)pN^@R8KP)TsWV_A3Ii>d;Z#
z#-Zf6uC1W0(IDDysQr6}4&;)M%ME>X6@XtAg*<=Xew3FYp`Nx4M=5$sMk#o?Evsab
z{UZnYnjc36>ve82<qn#1&wZOsSs?q589TAU_O&z0<k?p6h|4@Lfx9JQe4DZ?s;~Vt
z(czw#ps!`10`H@Ein+y>Ta3Mu`yuv5`2*9m;rB>r*r|3H#aPyq?jK5yP7EhA^xuI-
am>v=D8RJg!Py&w%G_lXce}?7uu73b;oRgFQ

diff --git a/docs/_build/doctrees/intro.doctree b/docs/_build/doctrees/intro.doctree
index 2b2cf8823759a0f1359b268279db2dcb9c98d93f..88a1cde75f89c15a916f1773b4d6b587d2fc2233 100644
GIT binary patch
literal 163420
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
OacB3?$+XVI=>G#;SRDlb

delta 2187
zcmZXVX=qee6vuN;##ywDld)+tZya?R&<rt~OC(yuxFk}<#)zP%sF~>C_!>1jhSZu!
z3fhhML1*;h7q=>iAc`PCP+UF)6_=u7a19ngK`2%f6$HKa-FKJwGGFG+oAW!%|DJR1
zqmO~(ySzO)*yyePBaeQv@cgT6+lPuXXW_t-K4Sp75#NXV_T7j5`M%rXygc((xUcRp
zqyTS+$<ZfpuizGan;v1_WPg72?)eqM`Sb@#zJ^g`Z2}^FcLw2SAhGdyw+MO*+LN0y
zsg>(enM`s`DwA8DD<un`LIpWkgY$5OL6ROEk3Slua2i&UD-&?s=w${CV3-SlenC1v
z9ZA1TkDiYmt!A@9VwKp6zt~u(g;m8iQ=-?K+0e0RRVrs*rC_h8ZSDG0Zhn48I&LmA
z$kS4cpuqRo_->BlW`mrIV-%^~!?<mi#N&9%wmV^vORH&i&HqA(_{(q<vy7IZAw6EV
zEw3t%@5(Sb)-L65k0`~gXOGTmp4;#<1^+*hrxPq!X#<jECwxoV{WuIiDchIj+;(_{
zW*b$uK;3u3*u9f6ROb}xyl;q5mhy4GOqZEB(p{xFo+=$P2?r~A9*JuF+9!{T>PYUl
zLy)w0(*9t%!$N@t$gA%#fc^ATt0gN%h4osfp9B+Pp^Qn~ympdS@}HXdZ_?b=8()kV
zQgXIxr<N~mFF2xkIwU=@zy(uy;PNS2;0v1hIfuD_s%4)2bWDpt6@dpDG9VBoM^yrg
z$jTb@(?+APlH{$%y%t=^Rb%tWp*2FkD}x}pwB2qd_>w)d2H_dR`q?<y1LRe6#r*Pd
z%0j=&sZ8@!Dm+=ow5^t_H8|bX5zwG9a|EO6zc^ijDo&C!Ju}cN2rJ6j8EVjK3T5YB
z3pzTNsoteU-6DLbsFv!%nOya@LAuuLg#knZa{_cv)9R2?&0ae+1H=4>zUO<)WG0Sj
zYK7C9>yy$o>$U&txCo62w|X};=9*v}by&NMf=ay?oOzXSsTZHcqwFsRXNQoM9Z<pt
zHjgBCX#K$kmYz@%>6vY5MJTHRjbX-oOF=|{)<Lb9i^V>%kT2BhRk5k7)xa7zXcfen
zfPE3L6J4w^O@dKM9IWTXQBWngfio=)R0+E-E4_UUs*lcmBhPFvdvq*p_)ClWyY%5&
zt}XO_6hox9LnFIBt!vF>CYozj&{56xVc}X8ME7LTaE95}+M~q~CUskRbxmDZLb|u&
zBDk!1q1%Zb9%)&Mg}z?T_dhf==16%LMgr_^;!;v@BRrN2mxU1_9Eg%J-57Nmmyk8x
f*aYt+F$~_wD52OulvXZpV^6Wt0qnFVZ^QU!M>AcQ

diff --git a/docs/_build/doctrees/struct.doctree b/docs/_build/doctrees/struct.doctree
index 10db82ef85691603af8d2c0713c9413c569f9cdc..da764a169e7b5916b0b52a439aa8d88cba0f5e92 100644
GIT binary patch
literal 13580
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
WSFW$pH{;)K0B>f{jKZL#TKPA(+3)=T

delta 191
zcmeCl`XI#Gz%n(Jb0h0SMhDJ<#G=IXqQruXDU+vYHcqLXqLIPc!;zGen34%3rev_k
zPRS5O5@?+QRg|HhA(f#!nNeCxP&-39Ln}kZn*}JsoxzyFym_H|BNJ0b+GcgFK4zUB
z_PoU0)XbD(py?S78MeheoFIXc%7RpgkY90zJW$FugS&Y0R=wxqJwhc#iFw6o`9-<$
Txv9m)iRnOvu~R0$Fi`;ji8Dqw

diff --git a/docs/_build/doctrees/tutorials/init_lib.doctree b/docs/_build/doctrees/tutorials/init_lib.doctree
index e0d1e81a898638ec52b2586af00415eb8e8c711a..250455de57ed0160cfe2c39dbe251eca6b5eeb7b 100644
GIT binary patch
literal 24646
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
XUcm$AF-sp34Pi%7%9nsnQZ4@<MXK__

delta 74
zcmX?hfN`l1YXi$vDb9(kNgFeK85t8dzX+Se#FP=Xxju3hvqFYJhHh~WXI^4%YDr~5
dYVnlXDH#TS#ToKIS~r8cc=D;(=aab;tO4f!8^izr

diff --git a/docs/_build/doctrees/tutorials/simple_pulse.doctree b/docs/_build/doctrees/tutorials/simple_pulse.doctree
index 613fc0c54c64f70061592adf785651d98d43db5c..29233e595e75ad2dbc74e2b7a6250e4ec14ced23 100644
GIT binary patch
delta 1825
zcmcIl&ubGw6gFvNe@SgE_RywwtVmOB>dAwMAWEyHl8b^M)-p+^d7-mA+nrrvgpvyC
zK~_++Mf7a3P!Oe8DfD2a|ArTj{tLd@-N}#sLJJ-?F!NsCd*A!MZ+E%x(@0{ubtT#R
zCXtP$z802Z6*%T~Sk$Hkn_A#k{jsP1lAnTv_kBv(#1PUU?6Jk{qQOi@juXq}l1bu9
zmvUYvIbq5o<_H&`c_NF3#Tl`wVM#*GJh3=+7#)=pozo_9fRTB@xhNIQf;!o(LP|x>
zNtO{x=2;1Q;a@p6aDX~Qf+!L7ID%NVz!?qoH_7l9OJLReEG!Vrk!Ln>N}_3CAKGSp
zIPLw|A5P^+cz!OwKM>Ks0lISpM9=+*Be(<ukcJqvz+eWFnd-}Uvf{!RT!cZm0LhtF
zjCZNHn?;_xvRvdA<`!Myum+~#c(5WBcR6Ry97jU;#8XNrDl%7en9&gSF4IsHA!U^u
zH5Hw%WO*dpCN`sarH&NiPnd0BR61qO#zJDowccPlBC5IEUsuyhX-i<G0hm#{=xy9Z
zJKo-^ZD<ltH*hOcy1#d(216)SJGS7c$-DQ+qMI!`ox8^Mh7L{Fs@pGXpkCG2Qzsyg
z17-IN-GR4{)a?lcB^sJlU&RNLAz8i`OZzHzJ)&H}yjFvG6;FWxLV+OQ+QPjDx6yy3
zEZk7BoKf4<W;5u5@)!%59Vb~Nka8))INs-gnkM6Da;#Aj_CnxjQDDl|6AFGsx$b}V
zsPFCtqI_1jft#f;v{Zc^?{6|gm)-?#p;OZyiT|WNdp(m{rjc+pm3ssA0p4NhmE8m2
zTeMn@_XRU_W5U}oAuwilI3uPE&-z}Ewnkd_q;MABTIU*L+DJZy^B5bQ4QN*ai3rw(
zcY%B8LmgfJ%~07~(bb^C$a@Ec>qx&~zt44~HK8eh>kR-;H396845iwpX<9nzz*GoD
z!)(mJ!SIWsGY$cZO&APq{EB^x$9`{oZ2i!3B?UXM4QsFpTd?VR9VRuHQ?{54zG^!e
cSj)gx#)V<^k=w@Ats*a*u<mX=Y9ERH0Y5X0NdN!<

delta 69
zcmZ3k)F8~-z%sRzb0TZf#*A7<#>CCVocov<!!{f7%wkr^Fv!p??%~W!%uOw+EJ!V$
YQadHXz^^z%9!TqEa2Ic86;NUX03cu%<p2Nx

diff --git a/docs/_build/html/_modules/base_pulse.html b/docs/_build/html/_modules/base_pulse.html
index badaf709..e50f08c3 100644
--- a/docs/_build/html/_modules/base_pulse.html
+++ b/docs/_build/html/_modules/base_pulse.html
@@ -286,6 +286,7 @@
 
 	<span class="k">def</span> <span class="nf">finish_init</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
 		<span class="c1"># function that finishes the initialisation</span>
+		<span class="c1"># TODO rewrite, so this function is embedded in the other ones.</span>
 		<span class="bp">self</span><span class="o">.</span><span class="n">uploader</span> <span class="o">=</span> <span class="n">keysight_uploader</span><span class="p">(</span><span class="bp">self</span><span class="o">.</span><span class="n">awg_devices</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">cpp_uploader</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">awg_channels</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">awg_channels_to_physical_locations</span> <span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">channel_delays_computed</span><span class="p">,</span> <span class="bp">self</span><span class="o">.</span><span class="n">channel_compenstation_limits</span><span class="p">)</span>
 
 <div class="viewcode-block" id="pulselib.mk_segment"><a class="viewcode-back" href="../intro.html#base_pulse.pulselib.mk_segment">[docs]</a>	<span class="k">def</span> <span class="nf">mk_segment</span><span class="p">(</span><span class="bp">self</span><span class="p">):</span>
diff --git a/docs/_build/html/_sources/index.rst.txt b/docs/_build/html/_sources/index.rst.txt
index 0a985924..81ee2632 100644
--- a/docs/_build/html/_sources/index.rst.txt
+++ b/docs/_build/html/_sources/index.rst.txt
@@ -9,11 +9,12 @@ This is a pulse library designed to provide all the control signals that are nee
 A lot of attention is given to performance, structure and ease of use.
 
 Features now include:
-	- Support for arbitrary pulse/sine wave based sequences (phase coherent atm)
+	- Support for arbitrary pulse/sine wave based sequences (phase coherent atm).
 	- Fully multidimensional. Execute any command as a loop in any dimension.
 	- Short and clean syntax. No sympy.
-	- Native support for virtual gates
-	- IQ toolkit and IQ virtual channels -- Full suppport for single sideband modulation (Along with PM/AM/FM)
+	- Native support for virtual gates.
+	- IQ toolkit and IQ virtual channels -- Full suppport for single sideband modulation (Along with PM/AM/FM).
+   - Automatic compenstation for DC offsets.
 	- High speed uploader for Keysight PXI systems which supports upload during playback.
 
 .. toctree::
diff --git a/docs/_build/html/_sources/intro.rst.txt b/docs/_build/html/_sources/intro.rst.txt
index 179896d9..1fadef40 100644
--- a/docs/_build/html/_sources/intro.rst.txt
+++ b/docs/_build/html/_sources/intro.rst.txt
@@ -11,4 +11,205 @@ Introduction
 	:members:
 
 .. automodule:: segments.segments_IQ
-	:members:
\ No newline at end of file
+	:members:
+
+# Initializing the library
+
+The general object that will manage all the segments and the interection with the AWG is the pulse object. The pulse object is best created in the station.
+```python
+	from pulse_lib.base_pulse import pulselib
+	p = pulselib()
+```
+
+Let's intitialize the AWG's and make some channels in the pulse library
+```python
+	# init AWG
+	awg1 = keysight_awg.SD_AWG('awg1', chassis = 0, slot= 2, channels = 4, triggers= 8)
+	awg2 = keysight_awg.SD_AWG('awg2', chassis = 0, slot= 3, channels = 4, triggers= 8)
+	awg3 = keysight_awg.SD_AWG('awg3', chassis = 0, slot= 4, channels = 4, triggers= 8)
+	awg4 = keysight_awg.SD_AWG('awg4', chassis = 0, slot= 5, channels = 4, triggers= 8)
+	
+	# add to pulse_lib
+	p.add_awgs('AWG1',awg1)
+	p.add_awgs('AWG2',awg2)
+	p.add_awgs('AWG3',awg3)
+	p.add_awgs('AWG4',awg4)
+	
+	# define channels
+	awg_channels_to_physical_locations = dict({'B0':('AWG1', 1), 'P1':('AWG1', 2),
+		'B1':('AWG1', 3), 'P2':('AWG1', 4),
+		'B2':('AWG2', 1), 'P3':('AWG2', 2),
+		'B3':('AWG2', 3), 'P4':('AWG2', 4),
+		'B4':('AWG3', 1), 'P5':('AWG3', 2),
+		'B5':('AWG3', 3), 'G1':('AWG3', 4),
+		'I_MW':('AWG4', 1), 'Q_MW':('AWG4', 2),	
+		'M1':('AWG4', 3), 'M2':('AWG4', 4)})
+		
+	p.define_channels(awg_channels_to_physical_locations)
+```
+Now we have some channels, we can also specity delays (e.g. due to different lenght of coaxial cables, cables that pass through a mixer, ...).
+```python
+	# format : dict of channel name with delay in ns (can be posive/negative)
+	p.add_channel_delay({'I_MW':50, 'Q_MW':50, 'M1':20, 'M2':-25, })
+```
+
+You might also want to define some virtual gates,
+this can simply be done by defining:
+```python
+	awg_virtual_gates = {'virtual_gates_names_virt' :
+		['vP1','vP2','vP3','vP4','vP5','vB0','vB1','vB2','vB3','vB4','vB5'],
+				'virtual_gates_names_real' :
+		['P1','P2','P3','P4','P5','B0','B1','B2','B3','B4','B5'],
+		 'virtual_gate_matrix' : np.eye(11)
+	}
+	p.add_virtual_gates(awg_virtual_gates)
+```
+The matrix can be updated with (not yet implemented):
+```python
+	p.update_virtual_gate_matrix(my_matrix)
+```
+To generate virtual channels for IQ signals, you can add the following code:
+```python
+	awg_IQ_channels = {'vIQ_channels' : ['qubit_1','qubit_2'],
+			'rIQ_channels' : [['I_MW','Q_MW'],['I_MW','Q_MW']],
+			'LO_freq' :[MW_source.frequency, 1e9]
+			# do not put the brackets for the MW source
+			# e.g. MW_source.frequency
+			}
+	
+	p.add_IQ_virt_channels(awg_IQ_channels)
+```
+Where the virtual channels are the new names of the new channels created to do IQ channals. Each of these channels refer to a real channel (note that you can refer to the same real channel multiple times). It is recomendable to create one IQ virtual channel for each qubit.
+
+Note to finize the initialisation of the pulse library, you should call:
+```python
+	p.finish_init()
+```
+This will prepare all the segment/sequencing objects you might need later.
+
+The code above can be placed in your station.
+
+# Generating segments
+
+Segments come by default in containers (e.g. for all the channels (real/virtual) you defined).
+Note that all segments in these containers are assumed to have the same length (so P1, P2, P3, ...).
+
+An example of defining some segments.
+```python
+
+	seg  = p.mk_segment('INIT')
+	seg2 = p.mk_segment('Manip')
+	seg3 = p.mk_segment('Readout')
+```
+Each segment has a unique name. This name we will use later for playback.
+
+## Making your first pulse
+
+To each segments you can add basic waveforms. Here you are free to add anything you want. 
+Some examples follow (times are by default in ns).
+```python
+	# B0 is the barrier 0 channel
+	# adds a linear ramp from 10 to 20 ns with amplitude of 5 to 10.
+	seg.B0.add_pulse([[10.,0.],[10.,5.],[20.,10.],[20.,0.]])
+	# add a block pulse of 2V from 40 to 70 ns, to whaterver waveform is already there
+	seg.B0.add_block(40,70,2)
+	# just waits (e.g. you want to ake a segment 50 ns longer)
+	seg.B0.wait(50)
+	# resets time back to zero in segment. Al the commannds we run before will be put at a negative time.
+	seg.B0.reset_time()
+	# this pulse will be placed directly after the wait()
+	seg.B0.add_block(0,10,2)
+```
+# Playback of pulses
+
+Once pulses are added, you can define a sequence like:
+```python
+	SEQ = [['INIT', 1, 0], ['Manip', 1, 0], ['Readout', 1, 0] ]
+```
+Where (e.g.) init is played once (1) and has a prescalor of 0 (see Keysight manual) 
+
+This sequence can be added to the pulse object and next be uploaded.
+```python
+	p.add_sequence('mysequence', SEQ)
+	p.start_sequence('mysequence')
+```
+
+
+# Some examples of easy pulses:
+(more advanced examples follow later)
+* 1D scan
+```python
+seg  = p.mk_segment('1D_scan')
+#lets sweep the virtual plunger,
+n_points = 100
+swing = 1000 #mV
+period = 1000 #ns
+
+v_start =swing/2
+step = swing/npoints
+
+for i in range(n_points):
+	seg.vP1.add_block(i*period, (i+1)period, v_start + i*step)
+#done.
+```
+* 2D scan
+```python
+seg  = p.mk_segment('2D_scan')
+#lets sweep the virtual plunger 1 versus virtual plunger 2,
+n_points1 = 100
+n_points2 = 100
+
+swing1 = 1000 #mV
+swing2 = 1000 #mV
+
+period = 1000 #ns
+period1 = period #ns
+period2 = period*n_points1 #ns
+
+
+v_start1 =swing1/2
+step1 = swing1/npoints1
+v_start1 =swing1/2
+step1 = swing1/npoints1
+
+for i in range(n_points1):
+	seg.vP1.add_block(i*period1, (i+1)period1, v_start1 + i*step1)
+seg.repeat(n_points2)
+for i in range(n_points2):
+	seg.vP1.add_block(i*period2, (i+1)period2, v_start2 + i*step2)
+#done.
+```
+* 2D FM scan
+```python
+lets build on top of the perv sample. let att the modulation on the real plungers (1 and 2) and barrier (2).
+seg.P1.add_sin(10e6, ...)
+...
+
+```
+* Ramsey experiment (using loops)
+```python
+seg  = p.mk_segment('Ramsey')
+
+# do pi/2 pulse
+seg.IQ.add_sin(0,100e-9,freq = 2e9, amp = 10, phase = 0)
+# wait -- use a loop object (has access to default numpy operators if it is numerical)
+times = lp.linspace(5,20e3, 500, axis=0, name="time", unit="ns")
+seg.IQ.wait(times)
+# reset time
+seg.IQ.reset_time()
+# do pi/2 pulse
+seg.IQ.add_sin(0,100e-9,freq = 2e9, amp = 10, phase = 0)
+```
+One can see that here a call to a single loopobject it made. We will be sweeping from 50ns to 20us. This sweep axis is 0 (first axis). The default is always a new axis. You only need to explicitely specify it if you want to parameters to be coupled (e.g. swept on the same axis). The name is optional and can be used for plotting, same for the unit.
+
+* Rabi experiment (power vs frequency of the pulse): Good example of a two dimensioal sweep
+```python
+seg  = p.mk_segment('RABI')
+
+t0 = 0
+t1 = 50
+freq = lp.linspace(1e9,1.1e9, 500, axis= 0, name="frequency", unit="Hz")
+amp = lp.linspace(5,20e3, 500, axis= 1, name="VoltageIQ", unit="a.u.")
+phase = 0
+seg.IQ.add_sin(t0,t1,freq, amp, phase)
+```
diff --git a/docs/_build/html/_sources/struct.rst.txt b/docs/_build/html/_sources/struct.rst.txt
index 50e8325e..5c25247a 100644
--- a/docs/_build/html/_sources/struct.rst.txt
+++ b/docs/_build/html/_sources/struct.rst.txt
@@ -1,4 +1,49 @@
 Structure of the library
 ========================
 
-bladibla
\ No newline at end of file
+The structure to the library is given by the following three classes:
+   - :ref:`seg`
+   - :ref:`seg_con`
+   - :ref:`seq`
+These is also the pulse-lib class, which is an organizational element. This element is used to generate empty segment containers. More info on how to do this can be found <here>.
+
+**Overview**
+
+A quick overview of the relation between the different structural elements can be found below,
+
+<<< image >>>
+
+
+.. _seg:
+
+Segments
+--------
+A segment is collection of data points that forms a single waveform. You can think of this as for example, the set of pulses that does the readout on you sample. 
+Note that a segment only contains the information for one channel.
+
+There are two types of segments:
+   - segments_base : these are segments that should be used for generating block pulses and ramps.
+   - segments_IQ : these are segments that are used to work with IQ signals of vector MW sources.
+Both types can be used interchangeably. More details can be found in the tutorials (or if you feel really courageous in the source code).
+
+
+.. _seg_con:
+
+Segment containers
+------------------
+A segment container, as the name already gives away, is a container of channels. If we would think of the example before, than in this element you would have the collection of all the channels that are involved in your readout pulse. This object is generated automatically, so no need for you to specify channels each time.
+
+There are some rules for segment containers though, 
+   - All segments in a segment container must have the same length when rendered
+   - A segment container contains by default all the AWG channels you have defined in your setup
+   - All elements in the segment container must contain times that are >= 0.
+
+.. _seq:
+
+Sequences
+---------
+Sequences are a collection of segment containers. Basically it means just concatenate different segment containers.
+
+One could for example make 3 segment containers, on for initialization of the qubits, one for manipulation and one for readout.
+When executing the experiment, you would tell the the AWG, play initialization -> manipulation -> readout. 
+
diff --git a/docs/_build/html/_sources/tutorials/init_lib.rst.txt b/docs/_build/html/_sources/tutorials/init_lib.rst.txt
index 45641b7c..f56ac905 100644
--- a/docs/_build/html/_sources/tutorials/init_lib.rst.txt
+++ b/docs/_build/html/_sources/tutorials/init_lib.rst.txt
@@ -1,2 +1,142 @@
 Tutorial : Initializing the library
-===================================
\ No newline at end of file
+===================================
+
+Before making a pulse, the pulse library needs to know some stuff from you. The main items you need to provide are:
+
+   - QCodes objects of the AWG's (only when using Keysight AWG's)
+   - Translation of you sample channels names (e.g. barrier gate 1) to the physical location if the set up (e.g. AWG3 channel 4)
+   - Virtual gates and virtual gate matrix if needed <reference needed here>
+   - Virtual IQ channels, if you are doing IQ modulation <link explaining IQ modulation >
+   - Channels delay's (e.g. if not all you coaxes have the same length)
+
+All these properties are contained in the ``pulselib`` object. Below a complete example is worked out to explaining how to do this.
+The source code of the example can be found in ``tutorials/init_pulselib.py`` if you would want to execute it yourselves [TODO].
+
+Tutorial example : initialization for a two-qubit setup
+-------------------------------------------------------
+
+For this setup, we have 6 coax cables going to the sample,
+
+   - B0, B1, B2 : gates that are connected to the barrier gates on the sample.
+   - P1, P2 : gates that are connected to the plungers on the sample.
+   - MW_gate : a screening gate on the sample that can be used for EDSR.
+   - MW_marker : a marker to control on/off state of the vector source.
+
+Practically the things that we want to set are:
+	1. Which channels of the AWG are corresponding to the gates on the sample.
+	2. Virtual gates to move easily around in charge stability diagrams.
+	3. Two virtual IQ channels, one per qubit.
+	4. A channel delay for the MW channel, to compensate for the time that the waveform spends in the vector signal source generator.
+
+Step 1 : initializing the pulse lib object and defining real gates
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The first thing we need to do is to make the ``pulselib`` object, once it is make, we can start to define extra properties.
+
+.. code-block:: python
+
+	from pulse_lib.base_pulse import pulselib
+	pulse = pulselib()
+
+That was it, let's now add some AWG's and define the channel names. In this example we will need 8 channels, thus two, 4 channel AWG's.
+
+.. code-block:: python
+
+	# init AWG
+	awg1 = keysight_awg.SD_AWG('awg1', chassis = 0, slot= 2, channels = 4, triggers= 8)
+	awg2 = keysight_awg.SD_AWG('awg2', chassis = 0, slot= 3, channels = 4, triggers= 8)
+	
+	# add to pulse_lib
+	pulse.add_awgs('AWG1',awg1)
+	pulse.add_awgs('AWG2',awg2)
+
+	
+	# define channels
+	awg_channels_to_physical_locations = dict({'B0':('AWG1', 1), 'P1':('AWG1', 2),
+		'B1':('AWG1', 3), 'P2':('AWG1', 4),'B2':('AWG2', 1), 
+		'MW_gate_I':('AWG2', 2), 'MW_gate_Q':('AWG2', 3),	
+		'MW_marker':('AWG2', 4)})
+		
+	pulse.define_channels(awg_channels_to_physical_locations)
+
+Note, when not using the Keysight back-end, you can just call ``p.add_awgs('AWG1', None)``. You will have to feed then the library in another uploaded (e.g. qtt virtual AWG).
+
+Step 2 : defining the virtual gates
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This is a quite straightforward process, just define the channels for the virtual gate and their corresponding real channels in a dictionary.
+
+.. code-block:: python
+
+	awg_virtual_gates = {
+		'virtual_gates_names_virt' :
+			['vB0', 'vB1', 'vB2', 'vP1', 'vP2'],
+		'virtual_gates_names_real' :
+			['B0', 'B1', 'B2', 'P1', 'P2'],
+		'virtual_gate_matrix' : np.eye(5)
+	}
+	pulse.add_virtual_gates(awg_virtual_gates)
+In this case we just constructed a 1 on 1 map of the virtual gates of real gates (diagonal virtual gate matrix). 
+
+The matrix can be updated at any time with:
+
+.. code-block:: python
+
+	pulse.update_virtual_gate_matrix(my_matrix)
+
+When the matrix is updated, it will automatically also update in all segments that have been created before.
+An example how to practically work with virtual gates can be found here [TODO].
+
+Step 3 : defining IQ channels
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+If you are new to IQ modulation, it is recommended to read the introduction on IQ modulation, here [TODO].
+
+When operating a vector source, you usually have to connect (usually) 3 coax cables:
+
+   - I channel
+   - Q channel
+   - marker
+   - ``[opt]`` if you want to go wide-band, you might also need to provide the negative image of the I/Q channel (currently not implemented .., though easy todo).
+
+Most of the time, you will want to make a virtual channel per qubit, as it allows you to keep easy track of the phase of the qubit. An example of this can be found in the mircowave tutorial.
+
+.. code-block:: python
+
+	awg_IQ_channels = {
+			'vIQ_channels' : ['qubit_1','qubit_2'],
+			'rIQ_channels' : [['MW_gate_I','MW_gate_Q'],['MW_gate_I','MW_gate_Q']],
+			'LO_freq' :[MW_source.frequency, 1e9]
+			# do not put the brackets for the MW source
+			# e.g. MW_source.frequency (this should be a qcodes parameter)
+			}
+	
+	pulse.add_IQ_virt_channels(awg_IQ_channels)
+
+At the moment markers are not added automatically, this is something that will be implemented in the next release of this library.
+
+Step 4 : defining channel delays
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+In our case here, we have to compensate for the fact that some signals take a longer time to get to the sample than other ones. More info on how this is practically accomplished, can be found here ``TODO``.
+Practically, example latencies could be the following:
+	
+	- 20 ns for the barrier and plunger gates to get from the AWG channels into the fridge.
+	- 70 ns to get to microwave channel from the IQ output into the fridge. 5 ns for the signal to reach the vector source, then the signal needs 45ns to be mixed with the carrier frequency, next 20 additional ns are needed to go down in the fridge.
+	- 5 ns marker delay
+
+Or translated into python code, 
+
+.. code-block:: python
+
+	pulse.add_channel_delay({
+		'B0': 20, 
+		'P1': 20,
+		'B1': 20, 
+		'P2': 20,
+		'B2': 20, 
+		'MW_gate_I': 70, 
+		'MW_gate_Q': 70,	
+		'MW_marker': 5
+	})
+
+Note, also negative delays are allowed. All units are in ``ns`` by default.
\ No newline at end of file
diff --git a/docs/_build/html/_sources/tutorials/simple_pulse.rst.txt b/docs/_build/html/_sources/tutorials/simple_pulse.rst.txt
index 97ebb235..3ec80d27 100644
--- a/docs/_build/html/_sources/tutorials/simple_pulse.rst.txt
+++ b/docs/_build/html/_sources/tutorials/simple_pulse.rst.txt
@@ -1,2 +1,18 @@
 Tutorial : Making simple pulses for DC control of qubits.
-=========================================================
\ No newline at end of file
+=========================================================
+
+For most experiments, pulses usually consist out of simple ramps and platea's.
+In the following there will be a few examples that show how to program these things.
+We will consider two experiments,
+
+	- a pulse that can be used for readout (elzerman style)
+	- a pulse to control a ST qubit
+
+Here you will learn how to make the pulse, but also how the channels are working together.
+
+Elzerman readout
+^^^^^^^^^^^^^^^^
+
+
+Controlling a ST qubit
+^^^^^^^^^^^^^^^^^^^^^^
\ No newline at end of file
diff --git a/docs/_build/html/index.html b/docs/_build/html/index.html
index 52dd96dd..399415cb 100644
--- a/docs/_build/html/index.html
+++ b/docs/_build/html/index.html
@@ -158,16 +158,27 @@
 A lot of attention is given to performance, structure and ease of use.</p>
 <dl class="docutils">
 <dt>Features now include:</dt>
-<dd><ul class="first last simple">
-<li>Support for arbitrary pulse/sine wave based sequences (phase coherent atm)</li>
+<dd><blockquote class="first">
+<div><ul class="simple">
+<li>Support for arbitrary pulse/sine wave based sequences (phase coherent atm).</li>
 <li>Fully multidimensional. Execute any command as a loop in any dimension.</li>
 <li>Short and clean syntax. No sympy.</li>
-<li>Native support for virtual gates</li>
-<li>IQ toolkit and IQ virtual channels – Full suppport for single sideband modulation (Along with PM/AM/FM)</li>
+<li>Native support for virtual gates.</li>
+<li>IQ toolkit and IQ virtual channels – Full suppport for single sideband modulation (Along with PM/AM/FM).</li>
+</ul>
+</div></blockquote>
+<ul class="last simple">
+<li><dl class="first docutils">
+<dt>Automatic compenstation for DC offsets.</dt>
+<dd><ul class="first last">
 <li>High speed uploader for Keysight PXI systems which supports upload during playback.</li>
 </ul>
 </dd>
 </dl>
+</li>
+</ul>
+</dd>
+</dl>
 <div class="toctree-wrapper compound">
 <p class="caption"><span class="caption-text">Getting started</span></p>
 <ul>
diff --git a/docs/_build/html/intro.html b/docs/_build/html/intro.html
index 3c8e5347..5650f162 100644
--- a/docs/_build/html/intro.html
+++ b/docs/_build/html/intro.html
@@ -76,11 +76,19 @@
               
             
             
-              <!-- Local TOC -->
-              <div class="local-toc"><ul>
-<li><a class="reference internal" href="#">Introduction</a></li>
+              <p class="caption"><span class="caption-text">Getting started</span></p>
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="struct.html">Structure of the library</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorials/init_lib.html">Tutorial : Initializing the library</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorials/simple_pulse.html">Tutorial : Making simple pulses for DC control of qubits.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorials/MW_pulse.html">Tutorial : Making pulses for Microwave control.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorials/sequence.html">Tutotial : Making from pulses a sequence</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorials/looping.html">Tutorial : Looping variables.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorials/reset_time_and_slicing.html">Concepts : Reset time and slicing of waveforms.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorials/example_PT.html">Advanced Tutorial : Programming a process tomography experiment to characterize a two qubit gate.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorials/example_RB.html">Advanced Tutorial : Designing pulses for a Randomised Benchmarking experiment.</a></li>
 </ul>
-</div>
+
             
           
         </div>
@@ -537,6 +545,205 @@ Args:</p>
 
 </dd></dl>
 
+<p># Initializing the library</p>
+<p>The general object that will manage all the segments and the interection with the AWG is the pulse object. The pulse object is best created in the station.
+<a href="#id1"><span class="problematic" id="id2">``</span></a><a href="#id3"><span class="problematic" id="id4">`</span></a>python</p>
+<blockquote>
+<div>from pulse_lib.base_pulse import pulselib
+p = pulselib()</div></blockquote>
+<p><a href="#id5"><span class="problematic" id="id6">``</span></a><a href="#id7"><span class="problematic" id="id8">`</span></a></p>
+<p>Let’s intitialize the AWG’s and make some channels in the pulse library
+<a href="#id9"><span class="problematic" id="id10">``</span></a><a href="#id11"><span class="problematic" id="id12">`</span></a>python</p>
+<blockquote>
+<div><p># init AWG
+awg1 = keysight_awg.SD_AWG(‘awg1’, chassis = 0, slot= 2, channels = 4, triggers= 8)
+awg2 = keysight_awg.SD_AWG(‘awg2’, chassis = 0, slot= 3, channels = 4, triggers= 8)
+awg3 = keysight_awg.SD_AWG(‘awg3’, chassis = 0, slot= 4, channels = 4, triggers= 8)
+awg4 = keysight_awg.SD_AWG(‘awg4’, chassis = 0, slot= 5, channels = 4, triggers= 8)</p>
+<p># add to pulse_lib
+p.add_awgs(‘AWG1’,awg1)
+p.add_awgs(‘AWG2’,awg2)
+p.add_awgs(‘AWG3’,awg3)
+p.add_awgs(‘AWG4’,awg4)</p>
+<p># define channels
+awg_channels_to_physical_locations = dict({‘B0’:(‘AWG1’, 1), ‘P1’:(‘AWG1’, 2),</p>
+<blockquote>
+<div>‘B1’:(‘AWG1’, 3), ‘P2’:(‘AWG1’, 4),
+‘B2’:(‘AWG2’, 1), ‘P3’:(‘AWG2’, 2),
+‘B3’:(‘AWG2’, 3), ‘P4’:(‘AWG2’, 4),
+‘B4’:(‘AWG3’, 1), ‘P5’:(‘AWG3’, 2),
+‘B5’:(‘AWG3’, 3), ‘G1’:(‘AWG3’, 4),
+‘I_MW’:(‘AWG4’, 1), ‘Q_MW’:(‘AWG4’, 2),
+‘M1’:(‘AWG4’, 3), ‘M2’:(‘AWG4’, 4)})</div></blockquote>
+<p>p.define_channels(awg_channels_to_physical_locations)</p>
+</div></blockquote>
+<p><a href="#id13"><span class="problematic" id="id14">``</span></a>`
+Now we have some channels, we can also specity delays (e.g. due to different lenght of coaxial cables, cables that pass through a mixer, …).
+<a href="#id15"><span class="problematic" id="id16">``</span></a><a href="#id17"><span class="problematic" id="id18">`</span></a>python</p>
+<blockquote>
+<div># format : dict of channel name with delay in ns (can be posive/negative)
+p.add_channel_delay({‘I_MW’:50, ‘Q_MW’:50, ‘M1’:20, ‘M2’:-25, })</div></blockquote>
+<p><a href="#id19"><span class="problematic" id="id20">``</span></a><a href="#id21"><span class="problematic" id="id22">`</span></a></p>
+<p>You might also want to define some virtual gates,
+this can simply be done by defining:
+<a href="#id23"><span class="problematic" id="id24">``</span></a><a href="#id25"><span class="problematic" id="id26">`</span></a>python</p>
+<blockquote>
+<div><dl class="docutils">
+<dt>awg_virtual_gates = {‘virtual_gates_names_virt’ :</dt>
+<dd><dl class="first last docutils">
+<dt>[‘vP1’,’vP2’,’vP3’,’vP4’,’vP5’,’vB0’,’vB1’,’vB2’,’vB3’,’vB4’,’vB5’],</dt>
+<dd>‘virtual_gates_names_real’ :</dd>
+<dt>[‘P1’,’P2’,’P3’,’P4’,’P5’,’B0’,’B1’,’B2’,’B3’,’B4’,’B5’],</dt>
+<dd>‘virtual_gate_matrix’ : np.eye(11)</dd>
+</dl>
+</dd>
+</dl>
+<p>}
+p.add_virtual_gates(awg_virtual_gates)</p>
+</div></blockquote>
+<p><a href="#id27"><span class="problematic" id="id28">``</span></a>`
+The matrix can be updated with (not yet implemented):
+<a href="#id29"><span class="problematic" id="id30">``</span></a><a href="#id31"><span class="problematic" id="id32">`</span></a>python</p>
+<blockquote>
+<div>p.update_virtual_gate_matrix(my_matrix)</div></blockquote>
+<p><a href="#id33"><span class="problematic" id="id34">``</span></a>`
+To generate virtual channels for IQ signals, you can add the following code:
+<a href="#id35"><span class="problematic" id="id36">``</span></a><a href="#id37"><span class="problematic" id="id38">`</span></a>python</p>
+<blockquote>
+<div><dl class="docutils">
+<dt>awg_IQ_channels = {‘vIQ_channels’ <span class="classifier-delimiter">:</span> <span class="classifier">[‘qubit_1’,’qubit_2’],</span></dt>
+<dd>‘rIQ_channels’ : [[‘I_MW’,’Q_MW’],[‘I_MW’,’Q_MW’]],
+‘LO_freq’ :[MW_source.frequency, 1e9]
+# do not put the brackets for the MW source
+# e.g. MW_source.frequency
+}</dd>
+</dl>
+<p>p.add_IQ_virt_channels(awg_IQ_channels)</p>
+</div></blockquote>
+<p><a href="#id39"><span class="problematic" id="id40">``</span></a>`
+Where the virtual channels are the new names of the new channels created to do IQ channals. Each of these channels refer to a real channel (note that you can refer to the same real channel multiple times). It is recomendable to create one IQ virtual channel for each qubit.</p>
+<p>Note to finize the initialisation of the pulse library, you should call:
+<a href="#id41"><span class="problematic" id="id42">``</span></a><a href="#id43"><span class="problematic" id="id44">`</span></a>python</p>
+<blockquote>
+<div>p.finish_init()</div></blockquote>
+<p><a href="#id45"><span class="problematic" id="id46">``</span></a>`
+This will prepare all the segment/sequencing objects you might need later.</p>
+<p>The code above can be placed in your station.</p>
+<p># Generating segments</p>
+<p>Segments come by default in containers (e.g. for all the channels (real/virtual) you defined).
+Note that all segments in these containers are assumed to have the same length (so P1, P2, P3, …).</p>
+<p>An example of defining some segments.
+<a href="#id47"><span class="problematic" id="id48">``</span></a><a href="#id49"><span class="problematic" id="id50">`</span></a>python</p>
+<blockquote>
+<div>seg  = p.mk_segment(‘INIT’)
+seg2 = p.mk_segment(‘Manip’)
+seg3 = p.mk_segment(‘Readout’)</div></blockquote>
+<p><a href="#id51"><span class="problematic" id="id52">``</span></a>`
+Each segment has a unique name. This name we will use later for playback.</p>
+<p>## Making your first pulse</p>
+<p>To each segments you can add basic waveforms. Here you are free to add anything you want.
+Some examples follow (times are by default in ns).
+<a href="#id53"><span class="problematic" id="id54">``</span></a><a href="#id55"><span class="problematic" id="id56">`</span></a>python</p>
+<blockquote>
+<div># B0 is the barrier 0 channel
+# adds a linear ramp from 10 to 20 ns with amplitude of 5 to 10.
+seg.B0.add_pulse([[10.,0.],[10.,5.],[20.,10.],[20.,0.]])
+# add a block pulse of 2V from 40 to 70 ns, to whaterver waveform is already there
+seg.B0.add_block(40,70,2)
+# just waits (e.g. you want to ake a segment 50 ns longer)
+seg.B0.wait(50)
+# resets time back to zero in segment. Al the commannds we run before will be put at a negative time.
+seg.B0.reset_time()
+# this pulse will be placed directly after the wait()
+seg.B0.add_block(0,10,2)</div></blockquote>
+<p><a href="#id57"><span class="problematic" id="id58">``</span></a>`
+# Playback of pulses</p>
+<p>Once pulses are added, you can define a sequence like:
+<a href="#id59"><span class="problematic" id="id60">``</span></a><a href="#id61"><span class="problematic" id="id62">`</span></a>python</p>
+<blockquote>
+<div>SEQ = [[‘INIT’, 1, 0], [‘Manip’, 1, 0], [‘Readout’, 1, 0] ]</div></blockquote>
+<p><a href="#id63"><span class="problematic" id="id64">``</span></a>`
+Where (e.g.) init is played once (1) and has a prescalor of 0 (see Keysight manual)</p>
+<p>This sequence can be added to the pulse object and next be uploaded.
+<a href="#id65"><span class="problematic" id="id66">``</span></a><a href="#id67"><span class="problematic" id="id68">`</span></a>python</p>
+<blockquote>
+<div>p.add_sequence(‘mysequence’, SEQ)
+p.start_sequence(‘mysequence’)</div></blockquote>
+<p><a href="#id69"><span class="problematic" id="id70">``</span></a><a href="#id71"><span class="problematic" id="id72">`</span></a></p>
+<p># Some examples of easy pulses:
+(more advanced examples follow later)
+* 1D scan
+<a href="#id73"><span class="problematic" id="id74">``</span></a><a href="#id75"><span class="problematic" id="id76">`</span></a>python
+seg  = p.mk_segment(‘1D_scan’)
+#lets sweep the virtual plunger,
+n_points = 100
+swing = 1000 #mV
+period = 1000 #ns</p>
+<p>v_start =swing/2
+step = swing/npoints</p>
+<dl class="docutils">
+<dt>for i in range(n_points):</dt>
+<dd>seg.vP1.add_block(i*period, (i+1)period, v_start + i*step)</dd>
+</dl>
+<p>#done.
+<a href="#id77"><span class="problematic" id="id78">``</span></a>`
+* 2D scan
+<a href="#id79"><span class="problematic" id="id80">``</span></a><a href="#id81"><span class="problematic" id="id82">`</span></a>python
+seg  = p.mk_segment(‘2D_scan’)
+#lets sweep the virtual plunger 1 versus virtual plunger 2,
+n_points1 = 100
+n_points2 = 100</p>
+<p>swing1 = 1000 #mV
+swing2 = 1000 #mV</p>
+<p>period = 1000 #ns
+period1 = period #ns
+period2 = period*n_points1 #ns</p>
+<p>v_start1 =swing1/2
+step1 = swing1/npoints1
+v_start1 =swing1/2
+step1 = swing1/npoints1</p>
+<dl class="docutils">
+<dt>for i in range(n_points1):</dt>
+<dd>seg.vP1.add_block(i*period1, (i+1)period1, v_start1 + i*step1)</dd>
+</dl>
+<p>seg.repeat(n_points2)
+for i in range(n_points2):</p>
+<blockquote>
+<div>seg.vP1.add_block(i*period2, (i+1)period2, v_start2 + i*step2)</div></blockquote>
+<p>#done.
+<a href="#id83"><span class="problematic" id="id84">``</span></a>`
+* 2D FM scan
+<a href="#id85"><span class="problematic" id="id86">``</span></a><a href="#id87"><span class="problematic" id="id88">`</span></a>python
+lets build on top of the perv sample. let att the modulation on the real plungers (1 and 2) and barrier (2).
+seg.P1.add_sin(10e6, …)
+…</p>
+<p><a href="#id89"><span class="problematic" id="id90">``</span></a>`
+* Ramsey experiment (using loops)
+<a href="#id91"><span class="problematic" id="id92">``</span></a><a href="#id93"><span class="problematic" id="id94">`</span></a>python
+seg  = p.mk_segment(‘Ramsey’)</p>
+<p># do pi/2 pulse
+seg.IQ.add_sin(0,100e-9,freq = 2e9, amp = 10, phase = 0)
+# wait – use a loop object (has access to default numpy operators if it is numerical)
+times = lp.linspace(5,20e3, 500, axis=0, name=”time”, unit=”ns”)
+seg.IQ.wait(times)
+# reset time
+seg.IQ.reset_time()
+# do pi/2 pulse
+seg.IQ.add_sin(0,100e-9,freq = 2e9, amp = 10, phase = 0)
+<a href="#id95"><span class="problematic" id="id96">``</span></a>`
+One can see that here a call to a single loopobject it made. We will be sweeping from 50ns to 20us. This sweep axis is 0 (first axis). The default is always a new axis. You only need to explicitely specify it if you want to parameters to be coupled (e.g. swept on the same axis). The name is optional and can be used for plotting, same for the unit.</p>
+<ul class="simple">
+<li>Rabi experiment (power vs frequency of the pulse): Good example of a two dimensioal sweep</li>
+</ul>
+<p><a href="#id97"><span class="problematic" id="id98">``</span></a><a href="#id99"><span class="problematic" id="id100">`</span></a>python
+seg  = p.mk_segment(‘RABI’)</p>
+<p>t0 = 0
+t1 = 50
+freq = lp.linspace(1e9,1.1e9, 500, axis= 0, name=”frequency”, unit=”Hz”)
+amp = lp.linspace(5,20e3, 500, axis= 1, name=”VoltageIQ”, unit=”a.u.”)
+phase = 0
+seg.IQ.add_sin(t0,t1,freq, amp, phase)
+<a href="#id101"><span class="problematic" id="id102">``</span></a><a href="#id103"><span class="problematic" id="id104">`</span></a></p>
 </div>
 
 
diff --git a/docs/_build/html/objects.inv b/docs/_build/html/objects.inv
index a4155de5080d16a5c0ed7ff71ae7f2aaedded4e6..2ec535a5e21ded36fe39ce12c33f912bec871ea3 100644
GIT binary patch
delta 866
zcmV-o1D*V@2hInOd4Ef8+b|H_`xFG)t=(qpU6XDC)IjP4$daJMu|$L)g`^xit6rnm
z>q$B!C0j{k!IHBvDDusl;mjjB&X@yQ)zSf}_Df}WErEO|LVIf#rC0Jxnwx(m^I3KP
zFXFEhS+L3_bB<hfjZUB!jB|SXn{I{mG%uOfAYF6}zBK%N4uAGiOtNcy(%h&DwDZgh
zqp1{1_>1^BNVcCs5He9SNekv-bOanWLc`=lswe88P@w%J%jX(&4nw95yIXMP8I3Y&
zHaV=bUb_YACVUSlZqRPQDl9o49q+-u08cwHOe1kp<UqYp;}h3>80{HW-Hy&fh#xi^
z$i3KNMGYEJU4N@AQEh6Shr@6#Thzj|f*egJ*Q7%cwq?PISK#!8ZDC`qx|ndQ*zOZZ
zguaLb@laU289rxY7E_&yJ(*&peA~g8Gyi@tPVuL$$7pSU1;4=3luDrsid%q-Id{T;
zI;BTG%7wa=DJXfA{06x2oFdz3`SdWkl2ws}d2dBldw-b7GfmJvOx}2W$6KZ`Vd1MX
z<$$2sAq<DQk<bvGdq#Q*&VA+z&;kX!BhK@sWEn^@zas5y#F5)DoE>4@<N?${Jc7hl
z42U-*HKEvD{QL9Q5rozuu-Kr@qVKm9Z7}ErhrEuD*9`O36IHdJw+qQ;l~SGJbHHp~
zzO_hm34eT_*6&yWA&2jP-lFR^E%!}k11?D8G!_B#0B9`8K}W&%dDus4ybu`YyJ_hl
z$$cEx7KqspU&hp0X7@8+dt(KY?%V3IY5hACA6FCILo-j7WW}CPEvaCR;JrXrBDW@7
z5^*2a$VJBs?3k)hTXzrreva$O(+|F7xIf-?d4FdOK7>jIzbH#<aQ_Zfqr!Am?g{KF
zygXwnQA^knTbAQRja>oa{fi;bbtXIsZFXO5>+9jz*4L+F`-#m*q2FbMku}rYDB%!%
zjrA%OvoUSQNV|aujZZ-MKh+yXyZWINx43{K@fw)>i!6<)!fG#Zv-pAcS7WqgIFU(g
z0$Vza$6K7@9%;BjPdezwCVw{uQ(0kmuq5jMBk}S?7-=a{x$V>QCW6DCk6xec>Ty^8
sjc_;CsJ2#&wCFCqh(#Yb8(qYy^N}!JQT)7V&qvr<R3vWeKhx-|&f}@4%K!iX

delta 835
zcmV-J1HAms2d@W^d4J7r+b|5i=P3ki*JSH8x3#?#Sb#1o(4!z*j4f0@t|X^PPkW8M
z-kxNXWG8Ox7_rk!AWP&&iu@=t8FN6ZS~?)reyI$vC6Mn#Xm8D;^h$n7d-JbkKFbcm
zi}))=7PNB7oFi9Vr4!N%#yP$FMYqCwnwLy#kS-bqUmAWs27h}gCh0XcX>L>n+Ii-M
z(Nqd0{6%;iB->8`2$86nqy_UZ+5-+7p<!|$)f074DA0bA=5q}?hauGl-7Prtj7FL?
zmmKC<uigTA6TSx+H>kH@6{ehz_V=J)fTtZFrhzyqa-d$Q@queTjP?w(Zb!!<_z#;6
z<X&tsqXw0zu76dQpf<J6Lou9-7P&AjAxG88Iq5)zYgusO6*zriTi6(@E(Y8xw)+GS
zp)UeKc_=Kt44-o`i=j@*o(wUPzU^X6&A(raWBh6DF<cu!!7s2hg;MB(;uYXx%$@L`
z4(Sn(a-l9o3QQhFzX2?)Q$!n0pB^MvvMPcw@2$vc4}TMJrV+Xa$s3P-yhR%07Iu{>
z1%he^HyrXtLIZSejr0PX+vW<;0tve#&hw>Y8Avj}BJFOJBX?mrJBo3W2ceF{BS;*@
zfOtdF5Q@{qzdwH+LD4!m76-IhwEY&Mbq0;#lGm|$%`jd)URC>fdysTiDb&e72h8T>
zTaC1rgnxgh^Ltjn%z2BJx}Kz+Ml!Bz3&d=QFXL@2v-_E^y|IEx_igpqOxqoZkEaRl
zq1h)(vSLq|pcErVuoTHk<kp0`B!Pm~$VJBr?3k)Bo%av@c8=%C(ht66ILq;_$$M+C
z_b3(YA``610a@jZ3fon=C$OvVy^7-_rVocu%YSlw8?h0iyniv|xz2<qVY2P>ZGAoL
z+xq&nZ@1X*3;ix4jI5dFMhS<)*EpM&irE;pqo-X*gvM7l{DtXtqdonQiaR{Om3R%v
z{YjR_RN=H2xH<fQ`?FEnGTg`{_T3KR@!_O+M;czOlLq=_lf4^*p{%eWFUdNHk@#Mr
z7(8hqk-6<_|HgyEyx(iHJw4vazaj3%8r9~Ckyg43FJjUMYNIQ0sy>oTmlU@*ZGD8B
NMMmPa{sZ5BdJzcKlso_c

diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js
index 026018b3..f58a9b9b 100644
--- a/docs/_build/html/searchindex.js
+++ b/docs/_build/html/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["index","intro","struct","tutorials/MW_pulse","tutorials/example_PT","tutorials/example_RB","tutorials/init_lib","tutorials/looping","tutorials/reset_time_and_slicing","tutorials/sequence","tutorials/simple_pulse"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.viewcode":1,sphinx:55},filenames:["index.rst","intro.rst","struct.rst","tutorials/MW_pulse.rst","tutorials/example_PT.rst","tutorials/example_RB.rst","tutorials/init_lib.rst","tutorials/looping.rst","tutorials/reset_time_and_slicing.rst","tutorials/sequence.rst","tutorials/simple_pulse.rst"],objects:{"":{base_pulse:[1,0,0,"-"]},"base_pulse.pulselib":{add_IQ_virt_channels:[1,2,1,""],add_awgs:[1,2,1,""],add_channel_compenstation_limits:[1,2,1,""],add_channel_delay:[1,2,1,""],add_virtual_gates:[1,2,1,""],define_channels:[1,2,1,""],mk_segment:[1,2,1,""],mk_sequence:[1,2,1,""]},"segments.data_classes":{IQ_data:[1,1,1,""],data_container:[1,1,1,""],get_effective_point_number:[1,3,1,""],pulse_data:[1,1,1,""]},"segments.data_classes.IQ_data":{append:[1,2,1,""],get_IQ_data:[1,2,1,""],slice_time:[1,2,1,""]},"segments.data_classes.pulse_data":{append:[1,2,1,""],get_resized_waveform:[1,2,1,""],get_vmax:[1,2,1,""],get_vmin:[1,2,1,""],integrate_waveform:[1,2,1,""],render:[1,2,1,""],slice_time:[1,2,1,""]},"segments.segments":{segment_container:[1,1,1,""]},"segments.segments.segment_container":{append:[1,2,1,""],enter_rendering_mode:[1,2,1,""],exit_rendering_mode:[1,2,1,""],extend_dim:[1,2,1,""],get_waveform:[1,2,1,""],reset_time:[1,2,1,""],shape:[1,4,1,""],slice_time:[1,2,1,""],total_time:[1,4,1,""]},"segments.segments_IQ":{segment_single_IQ:[1,1,1,""]},"segments.segments_IQ.segment_single_IQ":{get_IQ_data:[1,2,1,""]},base_pulse:{pulselib:[1,1,1,""]},segments:{data_classes:[1,0,0,"-"],segments:[1,0,0,"-"],segments_IQ:[1,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","function","Python function"],"4":["py","attribute","Python attribute"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:function","4":"py:attribute"},terms:{"10n":1,"140n":1,"20n":1,"class":[0,1],"default":1,"final":1,"function":[0,1],"int":1,"long":1,"new":1,"return":1,"short":0,"true":1,The:1,Will:1,actual:1,add:1,add_awg:1,add_channel_compenstation_limit:1,add_channel_delai:1,add_iq_virt_channel:1,add_virtual_g:1,added:1,adding:1,adiabat:1,advanc:0,after:1,algorithm:1,all:[0,1],allow:1,along:0,alreadi:1,also:0,amount:1,amp:1,ani:0,api:0,append:1,applic:1,arbitrari:0,arg:1,argument:1,arrai:1,atm:0,attent:0,automaticc:1,awg1:1,awg:[0,1],base:[0,1],base_level:1,base_puls:1,befor:1,benchmark:0,blabla:[],bladibla:2,block:1,bool:1,both:1,cach:1,calcul:1,call:1,can:[0,1],cannot:1,capabl:1,certain:1,chan1:1,chan2:1,chang:1,channel:[0,1],channnel:1,character:0,check:1,chirp:1,chrip:1,clean:0,cleaner:1,clear:1,clear_cache_on_exit:1,coher:0,coherenli:0,collector:1,combin:[0,1],command:0,compos:1,concept:0,concern:1,constain:1,construct:1,contain:[0,1],control:[0,1],convert:1,copi:1,correspond:1,current:1,cut:1,cut_seg:1,data:[0,1],data_class:1,data_contain:1,debug:1,defin:1,define_channel:1,delai:1,denot:1,depend:1,design:0,desir:1,develop:0,dict:1,dictionari:1,differ:[0,1],dimens:[0,1],discret:1,doc:1,doe:0,doing:1,doubl:1,dtype:1,duobl:1,dure:0,each:1,eas:0,element:1,end:1,ensur:1,enter_rendering_mod:1,entir:1,error:1,everyth:1,exampl:1,execut:[0,1],exist:1,exit:1,exit_rendering_mod:1,expect:1,experi:0,extend:1,extend_dim:1,extend_onli:1,extents:1,extra:1,fals:1,featur:0,first:[0,1],follow:1,format:1,found:0,freq1:1,freq2:1,freq:1,frequenc:1,from:[0,1],front:1,full:[0,1],fulli:0,fundamet:1,garbarg:1,gate:[0,1],gener:1,get:[0,1],get_effective_point_numb:1,get_iq_data:1,get_resized_waveform:1,get_vmax:1,get_vmin:1,get_waveform:1,give:1,given:[0,1],global:1,handi:1,have:1,high:0,how:[0,1],hvi:0,i_or_q:1,idea:1,includ:[0,1],index:[0,1],indic:1,individula:1,initi:0,input:1,insid:1,instead:1,instrument:1,integr:[0,1],integrate_waveform:1,intragr:1,intro:[],introduct:[],iq_channel:1,iq_data:1,iq_virt_channel:1,just:1,kei:1,keysight:[0,1],know:1,last:1,later:1,length:1,level:1,librari:[0,1],limit:1,linspac:1,list:1,lo_freq:1,local:1,locat:1,loop:[0,1],lot:0,low:1,main:1,make:[0,1],manag:1,mani:1,manual:1,matrix:1,max:1,maximum:1,mean:1,measur:1,memori:1,microwav:0,min:1,minimum:1,mk_segment:1,mk_sequenc:1,mod:1,mode:1,modul:[0,1],moment:1,more:[0,1],multidimension:0,my_input:1,my_seg:1,name:1,nativ:0,ndarrai:1,ndim:1,need:[0,1],neg:1,new_data:1,none:1,normal:1,note:1,noth:1,now:[0,1],number:1,numpi:1,object:[0,1],occup:1,occur:1,offset:1,one:1,ones:1,oper:1,opt:1,option:0,organis:1,oscil:1,other:1,outcom:1,overview:0,page:0,part:1,peculiar:1,per:1,perform:[0,1],phase:[0,1],place:1,plai:1,playback:0,point:1,pointer:1,possibl:1,post_delai:1,pratic:1,pre:1,pre_delai:1,prescal:1,present:1,previous:1,process:0,program:0,provid:0,puls:1,pulse_data:1,pulselib:1,purpos:1,put:1,pxi:0,qcode:1,qubit:[0,1],r_iq_channel:1,ram:1,randomis:0,rate:1,raw:1,read:1,real_channel:1,recomend:[],ref:1,refer:1,referenc:1,remov:1,render:1,repres:1,request:0,requir:1,reset:[0,1],reset_tim:1,run:[0,1],runn:1,sampl:1,sample_r:1,save:1,schedul:1,search:0,sec:1,see:1,segement:1,segment:[0,1],segment_contain:1,segment_singl:1,segment_single_iq:1,segments_iq:1,seq:1,sequenc:[0,1],seri:1,set:1,shape:1,shift:1,should:1,shrink:1,sideband:0,signal:[0,1],simpl:0,sine:[0,1],singl:[0,1],size:1,slice:[0,1],slice_tim:1,sourc:1,speed:0,spin:[0,1],ssb:1,standard:1,start:[0,1],start_tim:1,std:1,step:[0,1],still:1,stop:1,stop_tim:1,store:1,str:1,string:1,struct:[],structur:0,support:[0,1],suppport:0,sure:1,sympi:0,syntax:0,system:0,take:1,taken:1,termin:1,than:1,thei:1,them:1,thi:[0,1],though:1,through:[],time:[0,1],time_step:1,todo:1,toget:1,tomographi:0,toolkit:0,total:1,total_tim:1,totaltim:1,tupl:1,tutori:0,tutoti:0,two:[0,1],type:1,unit:1,until:1,upload:[0,1],usag:1,use:[0,1],used:1,using:[0,1],valu:1,variabl:0,viq_channel:1,virtual:[0,1],virtual_g:1,virtual_gate_matrix:1,virtual_gates_names_r:1,virtual_gates_names_virt:1,vmax:1,vmin:1,volatag:1,voltag:1,want:1,wave:[0,1],waveform:[0,1],wavoform:1,what:[0,1],wheather:1,when:[0,1],where:1,which:[0,1],whole:1,work:0,would:1,you:1,your:0,zero:1},titles:["Welcome to pulse lib\u2019s documentation","Introduction","Structure of the library","Tutorial : Making pulses for Microwave control.","Advanced Tutorial : Programming a process tomography experiment to characterize a two qubit gate.","Advanced Tutorial : Designing pulses for a Randomised Benchmarking experiment.","Tutorial : Initializing the library","Tutorial : Looping variables.","Concepts : Reset time and slicing of waveforms.","Tutotial : Making from pulses a sequence","Tutorial : Making simple pulses for DC control of qubits."],titleterms:{advanc:[4,5],benchmark:5,character:4,concept:8,control:[3,10],design:5,document:0,experi:[4,5],from:9,gate:4,indic:0,initi:6,introduct:1,lib:0,librari:[2,6],loop:7,make:[3,9,10],microwav:3,process:4,program:4,puls:[0,3,5,9,10],qubit:[4,10],randomis:5,reset:8,sequenc:9,simpl:10,slice:8,structur:2,tabl:0,test:[],time:8,tomographi:4,tutori:[3,4,5,6,7,10],tutoti:9,two:4,variabl:7,waveform:8,welcom:0}})
\ No newline at end of file
+Search.setIndex({docnames:["index","intro","struct","tutorials/MW_pulse","tutorials/example_PT","tutorials/example_RB","tutorials/init_lib","tutorials/looping","tutorials/reset_time_and_slicing","tutorials/sequence","tutorials/simple_pulse"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.viewcode":1,sphinx:55},filenames:["index.rst","intro.rst","struct.rst","tutorials/MW_pulse.rst","tutorials/example_PT.rst","tutorials/example_RB.rst","tutorials/init_lib.rst","tutorials/looping.rst","tutorials/reset_time_and_slicing.rst","tutorials/sequence.rst","tutorials/simple_pulse.rst"],objects:{"":{base_pulse:[1,0,0,"-"]},"base_pulse.pulselib":{add_IQ_virt_channels:[1,2,1,""],add_awgs:[1,2,1,""],add_channel_compenstation_limits:[1,2,1,""],add_channel_delay:[1,2,1,""],add_virtual_gates:[1,2,1,""],define_channels:[1,2,1,""],mk_segment:[1,2,1,""],mk_sequence:[1,2,1,""]},"segments.data_classes":{IQ_data:[1,1,1,""],data_container:[1,1,1,""],get_effective_point_number:[1,3,1,""],pulse_data:[1,1,1,""]},"segments.data_classes.IQ_data":{append:[1,2,1,""],get_IQ_data:[1,2,1,""],slice_time:[1,2,1,""]},"segments.data_classes.pulse_data":{append:[1,2,1,""],get_resized_waveform:[1,2,1,""],get_vmax:[1,2,1,""],get_vmin:[1,2,1,""],integrate_waveform:[1,2,1,""],render:[1,2,1,""],slice_time:[1,2,1,""]},"segments.segments":{segment_container:[1,1,1,""]},"segments.segments.segment_container":{append:[1,2,1,""],enter_rendering_mode:[1,2,1,""],exit_rendering_mode:[1,2,1,""],extend_dim:[1,2,1,""],get_waveform:[1,2,1,""],reset_time:[1,2,1,""],shape:[1,4,1,""],slice_time:[1,2,1,""],total_time:[1,4,1,""]},"segments.segments_IQ":{segment_single_IQ:[1,1,1,""]},"segments.segments_IQ.segment_single_IQ":{get_IQ_data:[1,2,1,""]},base_pulse:{pulselib:[1,1,1,""]},segments:{data_classes:[1,0,0,"-"],segments:[1,0,0,"-"],segments_IQ:[1,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","function","Python function"],"4":["py","attribute","Python attribute"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:function","4":"py:attribute"},terms:{"100e":1,"10e6":1,"10n":1,"140n":1,"1d_scan":1,"1e9":[1,6],"20e3":1,"20n":1,"20u":1,"2d_scan":1,"2e9":1,"45n":6,"50n":1,"case":6,"class":[0,1,2],"default":[1,2,6],"final":1,"function":[0,1],"import":[1,6],"int":1,"long":1,"new":[1,6],"return":1,"short":0,"true":1,For:[6,10],One:[1,2],That:6,The:[1,2,6],There:2,These:2,Will:1,abov:1,access:1,accomplish:6,actual:1,add:[1,6],add_awg:[1,6],add_block:1,add_channel_compenstation_limit:1,add_channel_delai:[1,6],add_iq_virt_channel:[1,6],add_puls:1,add_sequ:1,add_sin:1,add_virtual_g:[1,6],added:[1,6],adding:1,addit:6,adiabat:1,advanc:[0,1],after:1,ake:1,algorithm:1,all:[0,1,2,6],allow:[1,6],along:0,alreadi:[1,2],also:[0,1,2,6,10],alwai:1,amount:1,amp:1,amplitud:1,ani:[0,6],anoth:6,anyth:1,api:0,append:1,applic:1,arbitrari:0,arg:1,argument:1,around:6,arrai:1,assum:1,atm:0,att:1,attent:0,automat:[0,2,6],automaticc:1,awai:2,awg1:[1,6],awg2:[1,6],awg3:[1,6],awg4:1,awg:[0,1,2,6],awg_channels_to_physical_loc:[1,6],awg_iq_channel:[1,6],awg_virtual_g:[1,6],axi:1,back:[1,6],band:6,barrier:[1,6],base:[0,1],base_level:1,base_puls:[1,6],basic:[1,2],been:6,befor:[1,2,6],below:[2,6],benchmark:0,best:1,between:2,blabla:[],bladibla:[],block:[1,2],bool:1,both:[1,2],bracket:[1,6],build:1,cabl:[1,6],cach:1,calcul:1,call:[1,6],can:[0,1,2,6,10],cannot:1,capabl:1,carrier:6,certain:1,chan1:1,chan2:1,chang:1,channal:1,channel:[0,1,2,10],channnel:1,character:0,charg:6,chassi:[1,6],check:1,chirp:1,chrip:1,clean:0,cleaner:1,clear:1,clear_cache_on_exit:1,coax:6,coaxial:1,code:[1,2,6],coher:0,coherenli:0,collect:2,collector:1,combin:[0,1],come:1,command:0,commannd:1,compens:6,compenst:0,complet:6,compos:1,concaten:2,concept:0,concern:1,connect:6,consid:10,consist:10,constain:1,construct:[1,6],contain:[0,1,6],control:[0,1,6],convert:1,copi:1,correspond:[1,6],could:[2,6],coupl:1,courag:2,creat:[1,6],current:[1,6],cut:1,cut_seg:1,data:[0,1,2],data_class:1,data_contain:1,debug:1,defin:[1,2],define_channel:[1,6],delai:1,denot:1,depend:1,design:0,desir:1,detail:2,develop:0,diagon:6,diagram:6,dict:[1,6],dictionari:[1,6],differ:[0,1,2],dimens:[0,1],dimensio:1,directli:1,discret:1,doc:1,doe:[0,2],doing:[1,6],done:1,dot:[],doubl:1,down:6,dtype:1,due:1,duobl:1,dure:0,each:[1,2],eas:0,easi:[1,6],easili:6,edsr:6,element:[1,2],empti:2,end:[1,6],ensur:1,enter_rendering_mod:1,entir:1,error:1,everyth:1,exampl:[1,2,10],execut:[0,1,2,6],exist:1,exit:1,exit_rendering_mod:1,expect:1,experi:[0,1,2,10],explain:6,explicit:1,extend:1,extend_dim:1,extend_onli:1,extents:1,extra:[1,6],eye:[1,6],fact:6,fals:1,featur:0,feed:6,feel:2,few:10,finish_init:1,finiz:1,first:[0,1,6],follow:[1,2,6,10],form:2,format:1,found:[0,2,6],free:1,freq1:1,freq2:1,freq:1,frequenc:[1,6],fridg:6,from:[0,1,6],front:1,full:[0,1],fulli:0,fundamet:1,garbarg:1,gate:[0,1],gener:[1,2,6],get:[0,1,6],get_effective_point_numb:1,get_iq_data:1,get_resized_waveform:1,get_vmax:1,get_vmin:1,get_waveform:1,give:[1,2],given:[0,1,2],global:1,going:6,good:1,graphic:[],handi:1,has:1,have:[1,2,6],here:[1,2,6,10],high:0,highlight:[],how:[0,1,2,6,10],hvi:0,i_mw:1,i_or_q:1,idea:1,imag:[2,6],implement:[1,6],includ:[0,1],index:[0,1],indic:1,individula:1,info:[2,6],inform:2,init:[1,6],init_pulselib:6,initi:[0,1,2],initialis:1,input:1,insid:1,instead:1,instrument:1,integr:[0,1],integrate_waveform:1,interchang:2,interect:1,intiti:1,intragr:1,intro:[],introduct:6,involv:2,iq_channel:1,iq_data:1,iq_virt_channel:1,item:6,just:[1,2,6],keep:6,kei:1,keysight:[0,1,6],keysight_awg:[1,6],know:[1,6],last:1,latenc:6,later:1,learn:10,lenght:1,length:[1,2,6],let:[1,6],level:1,lib:2,librari:[0,1],like:1,limit:1,linear:1,link:6,linspac:1,list:1,lo_freq:[1,6],local:1,locat:[1,6],longer:[1,6],loop:[0,1],loopobject:1,lot:0,low:1,made:1,main:[1,6],make:[0,1,2,6],manag:1,mani:1,manip:1,manipul:2,manual:1,map:6,marker:6,matrix:[1,6],max:1,maximum:1,mean:[1,2],measur:1,memori:1,microwav:[0,6],might:[1,6],min:1,minimum:1,mircowav:6,mix:6,mixer:1,mk_segment:1,mk_sequenc:1,mod:1,mode:1,modul:[0,1,6],moment:[1,6],more:[0,1,2,6],most:[6,10],move:6,multidimension:0,multipl:1,must:2,mw_gate:6,mw_gate_i:6,mw_gate_q:6,mw_marker:6,mw_sourc:[1,6],my_input:1,my_matrix:[1,6],my_seg:1,mysequ:1,n_point:1,n_points1:1,n_points2:1,name:[1,2,6],nativ:0,ndarrai:1,ndim:1,need:[0,1,2,6],neg:[1,6],new_data:1,next:[1,6],none:[1,6],normal:1,note:[1,2,6],noth:1,now:[0,1,6],npoint:1,npoints1:1,number:1,numer:1,numpi:1,object:[0,1,2],occup:1,occur:1,off:6,offset:[0,1],onc:[1,6],one:[1,2,6],ones:[1,6],onli:[1,2,6],oper:[1,6],opt:[1,6],option:[0,1],organis:1,organiz:2,oscil:1,other:[1,6],our:6,out:[6,10],outcom:1,output:6,overview:[0,2],page:0,paramet:[1,6],part:1,pass:1,peculiar:1,per:[1,6],perform:[0,1],period1:1,period2:1,period:1,perv:1,phase:[0,1,6],physic:6,place:1,plai:[1,2],platea:10,playback:[0,1],plot:1,plunger:[1,6],point:[1,2],pointer:1,posiv:1,possibl:1,post_delai:1,power:1,practic:6,pratic:1,pre:1,pre_delai:1,prepar:1,prescal:1,prescalor:1,present:1,previous:1,process:[0,6],program:[0,10],properti:6,provid:[0,6],puls:[1,2],pulse_data:1,pulse_lib:[1,6],pulselib:[1,6],purpos:1,put:[1,6],pxi:0,python:[1,6],q_mw:1,qcode:[1,6],qtt:6,qubit:[0,1,2],qubit_1:[1,6],qubit_2:[1,6],quick:2,quit:6,r_iq_channel:1,rabi:1,ram:1,ramp:[1,2,10],ramsei:1,randomis:0,rang:1,rate:1,raw:1,reach:6,read:[1,6],readout:[1,2],real:1,real_channel:1,realli:2,recomend:1,recommend:6,ref:1,refer:[1,6],referenc:1,relat:2,releas:6,remov:1,render:[1,2],repeat:1,repres:1,request:0,requir:1,reset:[0,1],reset_tim:1,riq_channel:[1,6],rule:2,run:[0,1],runn:1,same:[1,2,6],sampl:[1,2,6],sample_r:1,save:1,scan:1,schedul:1,screen:6,sd_awg:[1,6],sd_p:[],search:0,sec:1,see:1,seg2:1,seg3:1,seg:1,segement:1,segment:[0,1,6],segment_contain:1,segment_singl:1,segment_single_iq:1,segments_bas:2,segments_iq:[1,2],sens:[],seq:1,sequenc:[0,1],seri:1,set:[1,2,6],setup:2,shape:1,shift:1,should:[1,2,6],show:10,shrink:1,sideband:0,signal:[0,1,2,6],simpl:0,simpli:1,sine:[0,1],singl:[0,1,2],size:1,slice:[0,1],slice_tim:1,slot:[1,6],some:[1,2,6],someth:6,sourc:[1,2,6],specifi:[1,2],speciti:1,speed:0,spend:6,spin:[0,1],ssb:1,stabil:6,standard:1,start:[0,1,6],start_sequ:1,start_tim:1,state:6,station:1,std:1,step1:1,step2:1,step:[0,1],still:1,stop:1,stop_tim:1,store:1,str:1,straightforward:6,string:1,struct:[],structur:0,stuff:6,style:10,support:[0,1],suppport:0,sure:1,sweep:1,swept:1,swing1:1,swing2:1,swing:1,sympi:0,syntax:0,system:0,take:[1,6],taken:1,tell:2,termin:1,than:[1,2,6],thei:1,them:1,thi:[0,1,2,6],thing:[6,10],think:2,though:[1,2,6],three:2,through:1,thu:6,time:[0,1,2,6],time_step:1,todo:[1,6],toget:1,togeth:10,tomographi:0,toolkit:0,top:1,total:1,total_tim:1,totaltim:1,track:6,translat:6,trigger:[1,6],tupl:1,tutori:[0,2],tutoti:0,two:[0,1,2,10],type:[1,2],uniqu:1,unit:[1,6],until:1,updat:[1,6],update_virtual_gate_matrix:[1,6],upload:[0,1,6],usag:1,use:[0,1],used:[1,2,6,10],using:[0,1,6],usual:[6,10],v_start1:1,v_start2:1,v_start:1,valu:1,variabl:0,vb0:[1,6],vb1:[1,6],vb2:[1,6],vb3:1,vb4:1,vb5:1,vector:[2,6],versu:1,viq_channel:[1,6],virtual:[0,1],virtual_g:1,virtual_gate_matrix:[1,6],virtual_gates_names_r:[1,6],virtual_gates_names_virt:[1,6],vmax:1,vmin:1,volatag:1,voltag:1,voltageiq:1,vp1:[1,6],vp2:[1,6],vp3:1,vp4:1,vp5:1,wait:1,want:[1,6],wave:[0,1],waveform:[0,1,2,6],wavoform:1,what:[0,1],whaterv:1,wheather:1,when:[0,1,2,6],where:1,which:[0,1,2,6],whole:1,wide:6,work:[0,2,6,10],would:[1,2,6],yet:1,you:[1,2,6,10],your:[0,1,2],yourselv:6,zero:1},titles:["Welcome to pulse lib\u2019s documentation","Introduction","Structure of the library","Tutorial : Making pulses for Microwave control.","Advanced Tutorial : Programming a process tomography experiment to characterize a two qubit gate.","Advanced Tutorial : Designing pulses for a Randomised Benchmarking experiment.","Tutorial : Initializing the library","Tutorial : Looping variables.","Concepts : Reset time and slicing of waveforms.","Tutotial : Making from pulses a sequence","Tutorial : Making simple pulses for DC control of qubits."],titleterms:{advanc:[4,5],benchmark:5,channel:6,character:4,concept:8,contain:2,control:[3,10],defin:6,delai:6,design:5,document:0,elzerman:10,exampl:6,experi:[4,5],from:9,gate:[4,6],indic:0,initi:6,introduct:1,lib:[0,6],librari:[2,6],loop:7,make:[3,9,10],microwav:3,object:6,overview:[],process:4,program:4,puls:[0,3,5,6,9,10],qubit:[4,6,10],randomis:5,readout:10,real:6,reset:8,segment:2,sequenc:[2,9],setup:6,simpl:10,slice:8,step:6,structur:2,tabl:0,test:[],time:8,tomographi:4,tutori:[3,4,5,6,7,10],tutoti:9,two:[4,6],variabl:7,virtual:6,waveform:8,welcom:0}})
\ No newline at end of file
diff --git a/docs/_build/html/struct.html b/docs/_build/html/struct.html
index d8666b85..05a111ee 100644
--- a/docs/_build/html/struct.html
+++ b/docs/_build/html/struct.html
@@ -27,7 +27,9 @@
   <link rel="stylesheet" href="_static/css/theme.css" type="text/css" />
   <link rel="stylesheet" href="_static/pygments.css" type="text/css" />
     <link rel="index" title="Index" href="genindex.html" />
-    <link rel="search" title="Search" href="search.html" /> 
+    <link rel="search" title="Search" href="search.html" />
+    <link rel="next" title="Tutorial : Initializing the library" href="tutorials/init_lib.html" />
+    <link rel="prev" title="Welcome to pulse lib’s documentation" href="index.html" /> 
 
   
   <script src="_static/js/modernizr.min.js"></script>
@@ -77,8 +79,16 @@
             
             
               <p class="caption"><span class="caption-text">Getting started</span></p>
-<ul>
-<li class="toctree-l1"><a class="reference internal" href="intro.html">Introduction</a></li>
+<ul class="current">
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Structure of the library</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorials/init_lib.html">Tutorial : Initializing the library</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorials/simple_pulse.html">Tutorial : Making simple pulses for DC control of qubits.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorials/MW_pulse.html">Tutorial : Making pulses for Microwave control.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorials/sequence.html">Tutotial : Making from pulses a sequence</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorials/looping.html">Tutorial : Looping variables.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorials/reset_time_and_slicing.html">Concepts : Reset time and slicing of waveforms.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorials/example_PT.html">Advanced Tutorial : Programming a process tomography experiment to characterize a two qubit gate.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="tutorials/example_RB.html">Advanced Tutorial : Designing pulses for a Randomised Benchmarking experiment.</a></li>
 </ul>
 
             
@@ -145,7 +155,52 @@
             
   <div class="section" id="structure-of-the-library">
 <h1>Structure of the library<a class="headerlink" href="#structure-of-the-library" title="Permalink to this headline">¶</a></h1>
-<p>bladibla</p>
+<dl class="docutils">
+<dt>The structure to the library is given by the following three classes:</dt>
+<dd><ul class="first last simple">
+<li><a class="reference internal" href="#seg"><span class="std std-ref">Segments</span></a></li>
+<li><a class="reference internal" href="#seg-con"><span class="std std-ref">Segment containers</span></a></li>
+<li><a class="reference internal" href="#seq"><span class="std std-ref">Sequences</span></a></li>
+</ul>
+</dd>
+</dl>
+<p>These is also the pulse-lib class, which is an organizational element. This element is used to generate empty segment containers. More info on how to do this can be found &lt;here&gt;.</p>
+<p><strong>Overview</strong></p>
+<p>A quick overview of the relation between the different structural elements can be found below,</p>
+<p>&lt;&lt;&lt; image &gt;&gt;&gt;</p>
+<div class="section" id="segments">
+<span id="seg"></span><h2>Segments<a class="headerlink" href="#segments" title="Permalink to this headline">¶</a></h2>
+<p>A segment is collection of data points that forms a single waveform. You can think of this as for example, the set of pulses that does the readout on you sample.
+Note that a segment only contains the information for one channel.</p>
+<dl class="docutils">
+<dt>There are two types of segments:</dt>
+<dd><ul class="first last simple">
+<li>segments_base : these are segments that should be used for generating block pulses and ramps.</li>
+<li>segments_IQ : these are segments that are used to work with IQ signals of vector MW sources.</li>
+</ul>
+</dd>
+</dl>
+<p>Both types can be used interchangeably. More details can be found in the tutorials (or if you feel really courageous in the source code).</p>
+</div>
+<div class="section" id="segment-containers">
+<span id="seg-con"></span><h2>Segment containers<a class="headerlink" href="#segment-containers" title="Permalink to this headline">¶</a></h2>
+<p>A segment container, as the name already gives away, is a container of channels. If we would think of the example before, than in this element you would have the collection of all the channels that are involved in your readout pulse. This object is generated automatically, so no need for you to specify channels each time.</p>
+<dl class="docutils">
+<dt>There are some rules for segment containers though,</dt>
+<dd><ul class="first last simple">
+<li>All segments in a segment container must have the same length when rendered</li>
+<li>A segment container contains by default all the AWG channels you have defined in your setup</li>
+<li>All elements in the segment container must contain times that are &gt;= 0.</li>
+</ul>
+</dd>
+</dl>
+</div>
+<div class="section" id="sequences">
+<span id="seq"></span><h2>Sequences<a class="headerlink" href="#sequences" title="Permalink to this headline">¶</a></h2>
+<p>Sequences are a collection of segment containers. Basically it means just concatenate different segment containers.</p>
+<p>One could for example make 3 segment containers, on for initialization of the qubits, one for manipulation and one for readout.
+When executing the experiment, you would tell the the AWG, play initialization -&gt; manipulation -&gt; readout.</p>
+</div>
 </div>
 
 
@@ -154,6 +209,15 @@
           </div>
           <footer>
   
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="tutorials/init_lib.html" class="btn btn-neutral float-right" title="Tutorial : Initializing the library" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="index.html" class="btn btn-neutral" title="Welcome to pulse lib’s documentation" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
 
   <hr/>
 
diff --git a/docs/_build/html/tutorials/init_lib.html b/docs/_build/html/tutorials/init_lib.html
index 2c2767df..1037c952 100644
--- a/docs/_build/html/tutorials/init_lib.html
+++ b/docs/_build/html/tutorials/init_lib.html
@@ -27,7 +27,9 @@
   <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
   <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
     <link rel="index" title="Index" href="../genindex.html" />
-    <link rel="search" title="Search" href="../search.html" /> 
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="Tutorial : Making simple pulses for DC control of qubits." href="simple_pulse.html" />
+    <link rel="prev" title="Structure of the library" href="../struct.html" /> 
 
   
   <script src="../_static/js/modernizr.min.js"></script>
@@ -77,8 +79,16 @@
             
             
               <p class="caption"><span class="caption-text">Getting started</span></p>
-<ul>
+<ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="../struct.html">Structure of the library</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Tutorial : Initializing the library</a></li>
+<li class="toctree-l1"><a class="reference internal" href="simple_pulse.html">Tutorial : Making simple pulses for DC control of qubits.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="MW_pulse.html">Tutorial : Making pulses for Microwave control.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="sequence.html">Tutotial : Making from pulses a sequence</a></li>
+<li class="toctree-l1"><a class="reference internal" href="looping.html">Tutorial : Looping variables.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="reset_time_and_slicing.html">Concepts : Reset time and slicing of waveforms.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="example_PT.html">Advanced Tutorial : Programming a process tomography experiment to characterize a two qubit gate.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="example_RB.html">Advanced Tutorial : Designing pulses for a Randomised Benchmarking experiment.</a></li>
 </ul>
 
             
@@ -145,6 +155,141 @@
             
   <div class="section" id="tutorial-initializing-the-library">
 <h1>Tutorial : Initializing the library<a class="headerlink" href="#tutorial-initializing-the-library" title="Permalink to this headline">¶</a></h1>
+<p>Before making a pulse, the pulse library needs to know some stuff from you. The main items you need to provide are:</p>
+<blockquote>
+<div><ul class="simple">
+<li>QCodes objects of the AWG’s (only when using Keysight AWG’s)</li>
+<li>Translation of you sample channels names (e.g. barrier gate 1) to the physical location if the set up (e.g. AWG3 channel 4)</li>
+<li>Virtual gates and virtual gate matrix if needed &lt;reference needed here&gt;</li>
+<li>Virtual IQ channels, if you are doing IQ modulation &lt;link explaining IQ modulation &gt;</li>
+<li>Channels delay’s (e.g. if not all you coaxes have the same length)</li>
+</ul>
+</div></blockquote>
+<p>All these properties are contained in the <code class="docutils literal notranslate"><span class="pre">pulselib</span></code> object. Below a complete example is worked out to explaining how to do this.
+The source code of the example can be found in <code class="docutils literal notranslate"><span class="pre">tutorials/init_pulselib.py</span></code> if you would want to execute it yourselves [TODO].</p>
+<div class="section" id="tutorial-example-initialization-for-a-two-qubit-setup">
+<h2>Tutorial example : initialization for a two-qubit setup<a class="headerlink" href="#tutorial-example-initialization-for-a-two-qubit-setup" title="Permalink to this headline">¶</a></h2>
+<p>For this setup, we have 6 coax cables going to the sample,</p>
+<blockquote>
+<div><ul class="simple">
+<li>B0, B1, B2 : gates that are connected to the barrier gates on the sample.</li>
+<li>P1, P2 : gates that are connected to the plungers on the sample.</li>
+<li>MW_gate : a screening gate on the sample that can be used for EDSR.</li>
+<li>MW_marker : a marker to control on/off state of the vector source.</li>
+</ul>
+</div></blockquote>
+<dl class="docutils">
+<dt>Practically the things that we want to set are:</dt>
+<dd><ol class="first last arabic simple">
+<li>Which channels of the AWG are corresponding to the gates on the sample.</li>
+<li>Virtual gates to move easily around in charge stability diagrams.</li>
+<li>Two virtual IQ channels, one per qubit.</li>
+<li>A channel delay for the MW channel, to compensate for the time that the waveform spends in the vector signal source generator.</li>
+</ol>
+</dd>
+</dl>
+<div class="section" id="step-1-initializing-the-pulse-lib-object-and-defining-real-gates">
+<h3>Step 1 : initializing the pulse lib object and defining real gates<a class="headerlink" href="#step-1-initializing-the-pulse-lib-object-and-defining-real-gates" title="Permalink to this headline">¶</a></h3>
+<p>The first thing we need to do is to make the <code class="docutils literal notranslate"><span class="pre">pulselib</span></code> object, once it is make, we can start to define extra properties.</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">pulse_lib.base_pulse</span> <span class="kn">import</span> <span class="n">pulselib</span>
+<span class="n">pulse</span> <span class="o">=</span> <span class="n">pulselib</span><span class="p">()</span>
+</pre></div>
+</div>
+<p>That was it, let’s now add some AWG’s and define the channel names. In this example we will need 8 channels, thus two, 4 channel AWG’s.</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="c1"># init AWG</span>
+<span class="n">awg1</span> <span class="o">=</span> <span class="n">keysight_awg</span><span class="o">.</span><span class="n">SD_AWG</span><span class="p">(</span><span class="s1">&#39;awg1&#39;</span><span class="p">,</span> <span class="n">chassis</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">slot</span><span class="o">=</span> <span class="mi">2</span><span class="p">,</span> <span class="n">channels</span> <span class="o">=</span> <span class="mi">4</span><span class="p">,</span> <span class="n">triggers</span><span class="o">=</span> <span class="mi">8</span><span class="p">)</span>
+<span class="n">awg2</span> <span class="o">=</span> <span class="n">keysight_awg</span><span class="o">.</span><span class="n">SD_AWG</span><span class="p">(</span><span class="s1">&#39;awg2&#39;</span><span class="p">,</span> <span class="n">chassis</span> <span class="o">=</span> <span class="mi">0</span><span class="p">,</span> <span class="n">slot</span><span class="o">=</span> <span class="mi">3</span><span class="p">,</span> <span class="n">channels</span> <span class="o">=</span> <span class="mi">4</span><span class="p">,</span> <span class="n">triggers</span><span class="o">=</span> <span class="mi">8</span><span class="p">)</span>
+
+<span class="c1"># add to pulse_lib</span>
+<span class="n">pulse</span><span class="o">.</span><span class="n">add_awgs</span><span class="p">(</span><span class="s1">&#39;AWG1&#39;</span><span class="p">,</span><span class="n">awg1</span><span class="p">)</span>
+<span class="n">pulse</span><span class="o">.</span><span class="n">add_awgs</span><span class="p">(</span><span class="s1">&#39;AWG2&#39;</span><span class="p">,</span><span class="n">awg2</span><span class="p">)</span>
+
+
+<span class="c1"># define channels</span>
+<span class="n">awg_channels_to_physical_locations</span> <span class="o">=</span> <span class="nb">dict</span><span class="p">({</span><span class="s1">&#39;B0&#39;</span><span class="p">:(</span><span class="s1">&#39;AWG1&#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span> <span class="s1">&#39;P1&#39;</span><span class="p">:(</span><span class="s1">&#39;AWG1&#39;</span><span class="p">,</span> <span class="mi">2</span><span class="p">),</span>
+        <span class="s1">&#39;B1&#39;</span><span class="p">:(</span><span class="s1">&#39;AWG1&#39;</span><span class="p">,</span> <span class="mi">3</span><span class="p">),</span> <span class="s1">&#39;P2&#39;</span><span class="p">:(</span><span class="s1">&#39;AWG1&#39;</span><span class="p">,</span> <span class="mi">4</span><span class="p">),</span><span class="s1">&#39;B2&#39;</span><span class="p">:(</span><span class="s1">&#39;AWG2&#39;</span><span class="p">,</span> <span class="mi">1</span><span class="p">),</span>
+        <span class="s1">&#39;MW_gate_I&#39;</span><span class="p">:(</span><span class="s1">&#39;AWG2&#39;</span><span class="p">,</span> <span class="mi">2</span><span class="p">),</span> <span class="s1">&#39;MW_gate_Q&#39;</span><span class="p">:(</span><span class="s1">&#39;AWG2&#39;</span><span class="p">,</span> <span class="mi">3</span><span class="p">),</span>
+        <span class="s1">&#39;MW_marker&#39;</span><span class="p">:(</span><span class="s1">&#39;AWG2&#39;</span><span class="p">,</span> <span class="mi">4</span><span class="p">)})</span>
+
+<span class="n">pulse</span><span class="o">.</span><span class="n">define_channels</span><span class="p">(</span><span class="n">awg_channels_to_physical_locations</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>Note, when not using the Keysight back-end, you can just call <code class="docutils literal notranslate"><span class="pre">p.add_awgs('AWG1',</span> <span class="pre">None)</span></code>. You will have to feed then the library in another uploaded (e.g. qtt virtual AWG).</p>
+</div>
+<div class="section" id="step-2-defining-the-virtual-gates">
+<h3>Step 2 : defining the virtual gates<a class="headerlink" href="#step-2-defining-the-virtual-gates" title="Permalink to this headline">¶</a></h3>
+<p>This is a quite straightforward process, just define the channels for the virtual gate and their corresponding real channels in a dictionary.</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">awg_virtual_gates</span> <span class="o">=</span> <span class="p">{</span>
+        <span class="s1">&#39;virtual_gates_names_virt&#39;</span> <span class="p">:</span>
+                <span class="p">[</span><span class="s1">&#39;vB0&#39;</span><span class="p">,</span> <span class="s1">&#39;vB1&#39;</span><span class="p">,</span> <span class="s1">&#39;vB2&#39;</span><span class="p">,</span> <span class="s1">&#39;vP1&#39;</span><span class="p">,</span> <span class="s1">&#39;vP2&#39;</span><span class="p">],</span>
+        <span class="s1">&#39;virtual_gates_names_real&#39;</span> <span class="p">:</span>
+                <span class="p">[</span><span class="s1">&#39;B0&#39;</span><span class="p">,</span> <span class="s1">&#39;B1&#39;</span><span class="p">,</span> <span class="s1">&#39;B2&#39;</span><span class="p">,</span> <span class="s1">&#39;P1&#39;</span><span class="p">,</span> <span class="s1">&#39;P2&#39;</span><span class="p">],</span>
+        <span class="s1">&#39;virtual_gate_matrix&#39;</span> <span class="p">:</span> <span class="n">np</span><span class="o">.</span><span class="n">eye</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
+<span class="p">}</span>
+<span class="n">pulse</span><span class="o">.</span><span class="n">add_virtual_gates</span><span class="p">(</span><span class="n">awg_virtual_gates</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>In this case we just constructed a 1 on 1 map of the virtual gates of real gates (diagonal virtual gate matrix).</p>
+<p>The matrix can be updated at any time with:</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">pulse</span><span class="o">.</span><span class="n">update_virtual_gate_matrix</span><span class="p">(</span><span class="n">my_matrix</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>When the matrix is updated, it will automatically also update in all segments that have been created before.
+An example how to practically work with virtual gates can be found here [TODO].</p>
+</div>
+<div class="section" id="step-3-defining-iq-channels">
+<h3>Step 3 : defining IQ channels<a class="headerlink" href="#step-3-defining-iq-channels" title="Permalink to this headline">¶</a></h3>
+<p>If you are new to IQ modulation, it is recommended to read the introduction on IQ modulation, here [TODO].</p>
+<p>When operating a vector source, you usually have to connect (usually) 3 coax cables:</p>
+<blockquote>
+<div><ul class="simple">
+<li>I channel</li>
+<li>Q channel</li>
+<li>marker</li>
+<li><code class="docutils literal notranslate"><span class="pre">[opt]</span></code> if you want to go wide-band, you might also need to provide the negative image of the I/Q channel (currently not implemented .., though easy todo).</li>
+</ul>
+</div></blockquote>
+<p>Most of the time, you will want to make a virtual channel per qubit, as it allows you to keep easy track of the phase of the qubit. An example of this can be found in the mircowave tutorial.</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">awg_IQ_channels</span> <span class="o">=</span> <span class="p">{</span>
+                <span class="s1">&#39;vIQ_channels&#39;</span> <span class="p">:</span> <span class="p">[</span><span class="s1">&#39;qubit_1&#39;</span><span class="p">,</span><span class="s1">&#39;qubit_2&#39;</span><span class="p">],</span>
+                <span class="s1">&#39;rIQ_channels&#39;</span> <span class="p">:</span> <span class="p">[[</span><span class="s1">&#39;MW_gate_I&#39;</span><span class="p">,</span><span class="s1">&#39;MW_gate_Q&#39;</span><span class="p">],[</span><span class="s1">&#39;MW_gate_I&#39;</span><span class="p">,</span><span class="s1">&#39;MW_gate_Q&#39;</span><span class="p">]],</span>
+                <span class="s1">&#39;LO_freq&#39;</span> <span class="p">:[</span><span class="n">MW_source</span><span class="o">.</span><span class="n">frequency</span><span class="p">,</span> <span class="mf">1e9</span><span class="p">]</span>
+                <span class="c1"># do not put the brackets for the MW source</span>
+                <span class="c1"># e.g. MW_source.frequency (this should be a qcodes parameter)</span>
+                <span class="p">}</span>
+
+<span class="n">pulse</span><span class="o">.</span><span class="n">add_IQ_virt_channels</span><span class="p">(</span><span class="n">awg_IQ_channels</span><span class="p">)</span>
+</pre></div>
+</div>
+<p>At the moment markers are not added automatically, this is something that will be implemented in the next release of this library.</p>
+</div>
+<div class="section" id="step-4-defining-channel-delays">
+<h3>Step 4 : defining channel delays<a class="headerlink" href="#step-4-defining-channel-delays" title="Permalink to this headline">¶</a></h3>
+<p>In our case here, we have to compensate for the fact that some signals take a longer time to get to the sample than other ones. More info on how this is practically accomplished, can be found here <code class="docutils literal notranslate"><span class="pre">TODO</span></code>.
+Practically, example latencies could be the following:</p>
+<blockquote>
+<div><ul class="simple">
+<li>20 ns for the barrier and plunger gates to get from the AWG channels into the fridge.</li>
+<li>70 ns to get to microwave channel from the IQ output into the fridge. 5 ns for the signal to reach the vector source, then the signal needs 45ns to be mixed with the carrier frequency, next 20 additional ns are needed to go down in the fridge.</li>
+<li>5 ns marker delay</li>
+</ul>
+</div></blockquote>
+<p>Or translated into python code,</p>
+<div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">pulse</span><span class="o">.</span><span class="n">add_channel_delay</span><span class="p">({</span>
+        <span class="s1">&#39;B0&#39;</span><span class="p">:</span> <span class="mi">20</span><span class="p">,</span>
+        <span class="s1">&#39;P1&#39;</span><span class="p">:</span> <span class="mi">20</span><span class="p">,</span>
+        <span class="s1">&#39;B1&#39;</span><span class="p">:</span> <span class="mi">20</span><span class="p">,</span>
+        <span class="s1">&#39;P2&#39;</span><span class="p">:</span> <span class="mi">20</span><span class="p">,</span>
+        <span class="s1">&#39;B2&#39;</span><span class="p">:</span> <span class="mi">20</span><span class="p">,</span>
+        <span class="s1">&#39;MW_gate_I&#39;</span><span class="p">:</span> <span class="mi">70</span><span class="p">,</span>
+        <span class="s1">&#39;MW_gate_Q&#39;</span><span class="p">:</span> <span class="mi">70</span><span class="p">,</span>
+        <span class="s1">&#39;MW_marker&#39;</span><span class="p">:</span> <span class="mi">5</span>
+<span class="p">})</span>
+</pre></div>
+</div>
+<p>Note, also negative delays are allowed. All units are in <code class="docutils literal notranslate"><span class="pre">ns</span></code> by default.</p>
+</div>
+</div>
 </div>
 
 
@@ -153,6 +298,15 @@
           </div>
           <footer>
   
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="simple_pulse.html" class="btn btn-neutral float-right" title="Tutorial : Making simple pulses for DC control of qubits." accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="../struct.html" class="btn btn-neutral" title="Structure of the library" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
 
   <hr/>
 
diff --git a/docs/_build/html/tutorials/simple_pulse.html b/docs/_build/html/tutorials/simple_pulse.html
index 0d70ca0a..b505bff7 100644
--- a/docs/_build/html/tutorials/simple_pulse.html
+++ b/docs/_build/html/tutorials/simple_pulse.html
@@ -27,7 +27,9 @@
   <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
   <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
     <link rel="index" title="Index" href="../genindex.html" />
-    <link rel="search" title="Search" href="../search.html" /> 
+    <link rel="search" title="Search" href="../search.html" />
+    <link rel="next" title="Tutorial : Making pulses for Microwave control." href="MW_pulse.html" />
+    <link rel="prev" title="Tutorial : Initializing the library" href="init_lib.html" /> 
 
   
   <script src="../_static/js/modernizr.min.js"></script>
@@ -77,8 +79,16 @@
             
             
               <p class="caption"><span class="caption-text">Getting started</span></p>
-<ul>
+<ul class="current">
 <li class="toctree-l1"><a class="reference internal" href="../struct.html">Structure of the library</a></li>
+<li class="toctree-l1"><a class="reference internal" href="init_lib.html">Tutorial : Initializing the library</a></li>
+<li class="toctree-l1 current"><a class="current reference internal" href="#">Tutorial : Making simple pulses for DC control of qubits.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="MW_pulse.html">Tutorial : Making pulses for Microwave control.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="sequence.html">Tutotial : Making from pulses a sequence</a></li>
+<li class="toctree-l1"><a class="reference internal" href="looping.html">Tutorial : Looping variables.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="reset_time_and_slicing.html">Concepts : Reset time and slicing of waveforms.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="example_PT.html">Advanced Tutorial : Programming a process tomography experiment to characterize a two qubit gate.</a></li>
+<li class="toctree-l1"><a class="reference internal" href="example_RB.html">Advanced Tutorial : Designing pulses for a Randomised Benchmarking experiment.</a></li>
 </ul>
 
             
@@ -145,6 +155,22 @@
             
   <div class="section" id="tutorial-making-simple-pulses-for-dc-control-of-qubits">
 <h1>Tutorial : Making simple pulses for DC control of qubits.<a class="headerlink" href="#tutorial-making-simple-pulses-for-dc-control-of-qubits" title="Permalink to this headline">¶</a></h1>
+<p>For most experiments, pulses usually consist out of simple ramps and platea’s.
+In the following there will be a few examples that show how to program these things.
+We will consider two experiments,</p>
+<blockquote>
+<div><ul class="simple">
+<li>a pulse that can be used for readout (elzerman style)</li>
+<li>a pulse to control a ST qubit</li>
+</ul>
+</div></blockquote>
+<p>Here you will learn how to make the pulse, but also how the channels are working together.</p>
+<div class="section" id="elzerman-readout">
+<h2>Elzerman readout<a class="headerlink" href="#elzerman-readout" title="Permalink to this headline">¶</a></h2>
+</div>
+<div class="section" id="controlling-a-st-qubit">
+<h2>Controlling a ST qubit<a class="headerlink" href="#controlling-a-st-qubit" title="Permalink to this headline">¶</a></h2>
+</div>
 </div>
 
 
@@ -153,6 +179,15 @@
           </div>
           <footer>
   
+    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
+      
+        <a href="MW_pulse.html" class="btn btn-neutral float-right" title="Tutorial : Making pulses for Microwave control." accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right"></span></a>
+      
+      
+        <a href="init_lib.html" class="btn btn-neutral" title="Tutorial : Initializing the library" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> Previous</a>
+      
+    </div>
+  
 
   <hr/>
 
diff --git a/docs/index.rst b/docs/index.rst
index 0a985924..81ee2632 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -9,11 +9,12 @@ This is a pulse library designed to provide all the control signals that are nee
 A lot of attention is given to performance, structure and ease of use.
 
 Features now include:
-	- Support for arbitrary pulse/sine wave based sequences (phase coherent atm)
+	- Support for arbitrary pulse/sine wave based sequences (phase coherent atm).
 	- Fully multidimensional. Execute any command as a loop in any dimension.
 	- Short and clean syntax. No sympy.
-	- Native support for virtual gates
-	- IQ toolkit and IQ virtual channels -- Full suppport for single sideband modulation (Along with PM/AM/FM)
+	- Native support for virtual gates.
+	- IQ toolkit and IQ virtual channels -- Full suppport for single sideband modulation (Along with PM/AM/FM).
+   - Automatic compenstation for DC offsets.
 	- High speed uploader for Keysight PXI systems which supports upload during playback.
 
 .. toctree::
diff --git a/docs/struct.rst b/docs/struct.rst
index 50e8325e..5c25247a 100644
--- a/docs/struct.rst
+++ b/docs/struct.rst
@@ -1,4 +1,49 @@
 Structure of the library
 ========================
 
-bladibla
\ No newline at end of file
+The structure to the library is given by the following three classes:
+   - :ref:`seg`
+   - :ref:`seg_con`
+   - :ref:`seq`
+These is also the pulse-lib class, which is an organizational element. This element is used to generate empty segment containers. More info on how to do this can be found <here>.
+
+**Overview**
+
+A quick overview of the relation between the different structural elements can be found below,
+
+<<< image >>>
+
+
+.. _seg:
+
+Segments
+--------
+A segment is collection of data points that forms a single waveform. You can think of this as for example, the set of pulses that does the readout on you sample. 
+Note that a segment only contains the information for one channel.
+
+There are two types of segments:
+   - segments_base : these are segments that should be used for generating block pulses and ramps.
+   - segments_IQ : these are segments that are used to work with IQ signals of vector MW sources.
+Both types can be used interchangeably. More details can be found in the tutorials (or if you feel really courageous in the source code).
+
+
+.. _seg_con:
+
+Segment containers
+------------------
+A segment container, as the name already gives away, is a container of channels. If we would think of the example before, than in this element you would have the collection of all the channels that are involved in your readout pulse. This object is generated automatically, so no need for you to specify channels each time.
+
+There are some rules for segment containers though, 
+   - All segments in a segment container must have the same length when rendered
+   - A segment container contains by default all the AWG channels you have defined in your setup
+   - All elements in the segment container must contain times that are >= 0.
+
+.. _seq:
+
+Sequences
+---------
+Sequences are a collection of segment containers. Basically it means just concatenate different segment containers.
+
+One could for example make 3 segment containers, on for initialization of the qubits, one for manipulation and one for readout.
+When executing the experiment, you would tell the the AWG, play initialization -> manipulation -> readout. 
+
diff --git a/docs/tutorials/init_lib.rst b/docs/tutorials/init_lib.rst
index 45641b7c..48e07242 100644
--- a/docs/tutorials/init_lib.rst
+++ b/docs/tutorials/init_lib.rst
@@ -1,2 +1,143 @@
 Tutorial : Initializing the library
-===================================
\ No newline at end of file
+===================================
+
+Before making a pulse, the pulse library needs to know some stuff from you. The main items you need to provide are:
+
+   - QCodes objects of the AWG's (only when using Keysight AWG's)
+   - Translation of you sample channels names (e.g. barrier gate 1) to the physical location if the set up (e.g. AWG3 channel 4)
+   - Virtual gates and virtual gate matrix if needed <reference needed here>
+   - Virtual IQ channels, if you are doing IQ modulation <link explaining IQ modulation >
+   - Channels delay's (e.g. if not all you coaxes have the same length)
+
+All these properties are contained in the ``pulselib`` object. Below a complete example is worked out to explaining how to do this.
+The source code of the example can be found in ``tutorials/init_pulselib.py`` if you would want to execute it yourselves [TODO].
+
+Tutorial example : initialization for a two-qubit setup
+-------------------------------------------------------
+
+For this setup, we have 6 coax cables going to the sample,
+
+   - B0, B1, B2 : gates that are connected to the barrier gates on the sample.
+   - P1, P2 : gates that are connected to the plungers on the sample.
+   - MW_gate : a screening gate on the sample that can be used for EDSR.
+   - MW_marker : a marker to control on/off state of the vector source.
+
+Practically the things that we want to set are:
+	1. Which channels of the AWG are corresponding to the gates on the sample.
+	2. Virtual gates to move easily around in charge stability diagrams.
+	3. Two virtual IQ channels, one per qubit.
+	4. A channel delay for the MW channel, to compensate for the time that the waveform spends in the vector signal source generator.
+	5. Voltage compensation boundaries for DC offsets ``write DC offset article``
+
+Step 1 : initializing the pulse lib object and defining real gates
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The first thing we need to do is to make the ``pulselib`` object, once it is make, we can start to define extra properties.
+
+.. code-block:: python
+
+	from pulse_lib.base_pulse import pulselib
+	pulse = pulselib()
+
+That was it, let's now add some AWG's and define the channel names. In this example we will need 8 channels, thus two, 4 channel AWG's.
+
+.. code-block:: python
+
+	# init AWG
+	awg1 = keysight_awg.SD_AWG('awg1', chassis = 0, slot= 2, channels = 4, triggers= 8)
+	awg2 = keysight_awg.SD_AWG('awg2', chassis = 0, slot= 3, channels = 4, triggers= 8)
+	
+	# add to pulse_lib
+	pulse.add_awgs('AWG1',awg1)
+	pulse.add_awgs('AWG2',awg2)
+
+	
+	# define channels
+	awg_channels_to_physical_locations = dict({'B0':('AWG1', 1), 'P1':('AWG1', 2),
+		'B1':('AWG1', 3), 'P2':('AWG1', 4),'B2':('AWG2', 1), 
+		'MW_gate_I':('AWG2', 2), 'MW_gate_Q':('AWG2', 3),	
+		'MW_marker':('AWG2', 4)})
+		
+	pulse.define_channels(awg_channels_to_physical_locations)
+
+Note, when not using the Keysight back-end, you can just call ``p.add_awgs('AWG1', None)``. You will have to feed then the library in another uploaded (e.g. qtt virtual AWG).
+
+Step 2 : defining the virtual gates
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This is a quite straightforward process, just define the channels for the virtual gate and their corresponding real channels in a dictionary.
+
+.. code-block:: python
+
+	awg_virtual_gates = {
+		'virtual_gates_names_virt' :
+			['vB0', 'vB1', 'vB2', 'vP1', 'vP2'],
+		'virtual_gates_names_real' :
+			['B0', 'B1', 'B2', 'P1', 'P2'],
+		'virtual_gate_matrix' : np.eye(5)
+	}
+	pulse.add_virtual_gates(awg_virtual_gates)
+In this case we just constructed a 1 on 1 map of the virtual gates of real gates (diagonal virtual gate matrix). 
+
+The matrix can be updated at any time with:
+
+.. code-block:: python
+
+	pulse.update_virtual_gate_matrix(my_matrix)
+
+When the matrix is updated, it will automatically also update in all segments that have been created before.
+An example how to practically work with virtual gates can be found here [TODO].
+
+Step 3 : defining IQ channels
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+If you are new to IQ modulation, it is recommended to read the introduction on IQ modulation, here [TODO].
+
+When operating a vector source, you usually have to connect (usually) 3 coax cables:
+
+   - I channel
+   - Q channel
+   - marker
+   - ``[opt]`` if you want to go wide-band, you might also need to provide the negative image of the I/Q channel (currently not implemented .., though easy todo).
+
+Most of the time, you will want to make a virtual channel per qubit, as it allows you to keep easy track of the phase of the qubit. An example of this can be found in the mircowave tutorial.
+
+.. code-block:: python
+
+	awg_IQ_channels = {
+			'vIQ_channels' : ['qubit_1','qubit_2'],
+			'rIQ_channels' : [['MW_gate_I','MW_gate_Q'],['MW_gate_I','MW_gate_Q']],
+			'LO_freq' :[MW_source.frequency, 1e9]
+			# do not put the brackets for the MW source
+			# e.g. MW_source.frequency (this should be a qcodes parameter)
+			}
+	
+	pulse.add_IQ_virt_channels(awg_IQ_channels)
+
+At the moment markers are not added automatically, this is something that will be implemented in the next release of this library.
+
+Step 4 : defining channel delays
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+In our case here, we have to compensate for the fact that some signals take a longer time to get to the sample than other ones. More info on how this is practically accomplished, can be found here ``TODO``.
+Practically, example latencies could be the following:
+	
+	- 20 ns for the barrier and plunger gates to get from the AWG channels into the fridge.
+	- 70 ns to get to microwave channel from the IQ output into the fridge. 5 ns for the signal to reach the vector source, then the signal needs 45ns to be mixed with the carrier frequency, next 20 additional ns are needed to go down in the fridge.
+	- 5 ns marker delay
+
+Or translated into python code, 
+
+.. code-block:: python
+
+	pulse.add_channel_delay({
+		'B0': 20, 
+		'P1': 20,
+		'B1': 20, 
+		'P2': 20,
+		'B2': 20, 
+		'MW_gate_I': 70, 
+		'MW_gate_Q': 70,	
+		'MW_marker': 5
+	})
+
+Note, also negative delays are allowed. All units are in ``ns`` by default.
\ No newline at end of file
diff --git a/docs/tutorials/simple_pulse.rst b/docs/tutorials/simple_pulse.rst
index 97ebb235..3ec80d27 100644
--- a/docs/tutorials/simple_pulse.rst
+++ b/docs/tutorials/simple_pulse.rst
@@ -1,2 +1,18 @@
 Tutorial : Making simple pulses for DC control of qubits.
-=========================================================
\ No newline at end of file
+=========================================================
+
+For most experiments, pulses usually consist out of simple ramps and platea's.
+In the following there will be a few examples that show how to program these things.
+We will consider two experiments,
+
+	- a pulse that can be used for readout (elzerman style)
+	- a pulse to control a ST qubit
+
+Here you will learn how to make the pulse, but also how the channels are working together.
+
+Elzerman readout
+^^^^^^^^^^^^^^^^
+
+
+Controlling a ST qubit
+^^^^^^^^^^^^^^^^^^^^^^
\ No newline at end of file
-- 
GitLab