diff --git a/build/lib.linux-x86_64-3.7/pulse_lib/base_pulse.py b/build/lib.linux-x86_64-3.7/pulse_lib/base_pulse.py
index 7ac78019af4f5d6fbc1895a74af151d938d5423b..5fa0e4789c08aae3383e121daba0cf638934b9d0 100644
--- a/build/lib.linux-x86_64-3.7/pulse_lib/base_pulse.py
+++ b/build/lib.linux-x86_64-3.7/pulse_lib/base_pulse.py
@@ -134,6 +134,7 @@ class pulselib:
 
 	def finish_init(self):
 		# function that finishes the initialisation
+		# TODO rewrite, so this function is embedded in the other ones.
 		self.uploader = keysight_uploader(self.awg_devices, self.cpp_uploader, self.awg_channels, self.awg_channels_to_physical_locations , self.channel_delays_computed, self.channel_compenstation_limits)
 
 	def mk_segment(self):
diff --git a/build/lib.linux-x86_64-3.7/pulse_lib/segments/segments_IQ.py b/build/lib.linux-x86_64-3.7/pulse_lib/segments/segments_IQ.py
index a6df470e4cb779375ab0942df2325f07398f3a3c..5896811de56a42b8d959d803048abc534b1720b0 100644
--- a/build/lib.linux-x86_64-3.7/pulse_lib/segments/segments_IQ.py
+++ b/build/lib.linux-x86_64-3.7/pulse_lib/segments/segments_IQ.py
@@ -45,7 +45,6 @@ class segment_single_IQ(segment_single):
 		self._last_edit = datetime.datetime.now()
 
 		self.ndim = 0
-		self.shape = []
 		self.units = []
 		self.names = []
 
diff --git a/build/lib.linux-x86_64-3.7/pulse_lib/segments/segments_base.py b/build/lib.linux-x86_64-3.7/pulse_lib/segments/segments_base.py
index fc92ac566080c49d5b4660f7ae1aca7065565f4c..9d63b45e85e15b83543d85ddcf4644fa19efb82f 100644
--- a/build/lib.linux-x86_64-3.7/pulse_lib/segments/segments_base.py
+++ b/build/lib.linux-x86_64-3.7/pulse_lib/segments/segments_base.py
@@ -77,6 +77,7 @@ class segment_single():
 	
 	@last_edited
 	@loop_controller
+	
 	def reset_time(self, time=None, extend_only = False):
 		'''
 		resets the time back to zero after a certain point
diff --git a/dist/pulse_lib-1.1-py3.7-linux-x86_64.egg b/dist/pulse_lib-1.1-py3.7-linux-x86_64.egg
index ecb5657a353f8a30e1267129a4d086521b058021..a8281e87dab05b1c0411aa0c19f7854ae618b319 100644
Binary files a/dist/pulse_lib-1.1-py3.7-linux-x86_64.egg and b/dist/pulse_lib-1.1-py3.7-linux-x86_64.egg differ
diff --git a/docs/_build/doctrees/basic_things_to_know/IQ_mod.doctree b/docs/_build/doctrees/basic_things_to_know/IQ_mod.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..d727a3cbfbca3bc53acf2197197a39f191f799b5
Binary files /dev/null and b/docs/_build/doctrees/basic_things_to_know/IQ_mod.doctree differ
diff --git a/docs/_build/doctrees/basic_things_to_know/virtual_gates.doctree b/docs/_build/doctrees/basic_things_to_know/virtual_gates.doctree
new file mode 100644
index 0000000000000000000000000000000000000000..2e63436d2ef06e8629f807c12380db74b72a0f3f
Binary files /dev/null and b/docs/_build/doctrees/basic_things_to_know/virtual_gates.doctree differ
diff --git a/docs/_build/doctrees/environment.pickle b/docs/_build/doctrees/environment.pickle
index 6f0221542d2986c3410f7ce53c2bfa05355c59a6..f1c0ec6dc68ae11286278e5cfd7351d56e1bdc53 100644
Binary files a/docs/_build/doctrees/environment.pickle and b/docs/_build/doctrees/environment.pickle differ
diff --git a/docs/_build/doctrees/tutorials/init_lib.doctree b/docs/_build/doctrees/tutorials/init_lib.doctree
index d23b3b17e3b93106ca0e5fa7e42a2b8005d3ecee..8a5ddbbfb06749d8ad77e9e6b9528ce3e795c013 100644
Binary files a/docs/_build/doctrees/tutorials/init_lib.doctree and b/docs/_build/doctrees/tutorials/init_lib.doctree differ
diff --git a/docs/_build/doctrees/tutorials/simple_pulse.doctree b/docs/_build/doctrees/tutorials/simple_pulse.doctree
index b7afbaadf5a5cef72482b4db3ea58a64e1dc8323..eed726a887f3cdc7d1c98d06646de68482c2b7a7 100644
Binary files a/docs/_build/doctrees/tutorials/simple_pulse.doctree and b/docs/_build/doctrees/tutorials/simple_pulse.doctree differ
diff --git a/docs/_build/html/_sources/basic_things_to_know/IQ_mod.rst.txt b/docs/_build/html/_sources/basic_things_to_know/IQ_mod.rst.txt
new file mode 100644
index 0000000000000000000000000000000000000000..b0f93f3b6659dc1558be4db7afae41d2d47de70f
--- /dev/null
+++ b/docs/_build/html/_sources/basic_things_to_know/IQ_mod.rst.txt
@@ -0,0 +1,52 @@
+.. _IQ_mod_basics:
+
+IQ modulation
+=============
+
+IQ modulation is a technique used in telecomunications to easily provide a multitude of signals with a controlled phase and frequency.
+This technique is widely used for qubits as it is fully phase coherent.
+
+An example of a signal you want to generate might be:
+
+<< imgae of 2 sinuesses at different times >>
+
+Principle
+^^^^^^^^^
+
+The principle of IQ modulation relies on mixing the I (in-phase) and the Q (quadrature) signal with a carrier. The circuit of an IQ modulator is shown below:
+
+<< image IQ mixer >>
+
+So, if we quickly work out the signal that this circuit generates, we get:
+
+	:math:`I = A(t)*cos(\omega t + \phi)`
+
+	:math:`Q = A(t)*cos(\omega t + \frac{\pi}{2} + \phi) = A*sin(\omega t + \phi)`
+
+	:math:`I \otimes MW_a = A(t)*cos(\omega t + \phi) * cos(\omega_c t)= \frac{A(t)}{2}\left(cos((\omega - \omega_c)t + \phi) + cos((\omega + \omega_c)t + \phi)\right)`
+
+	:math:`Q \otimes MW_b = A(t)*sin(\omega t + \phi) * sin(\omega_c t)= \frac{A(t)}{2}(cos((\omega - \omega_c)t + \phi) - cos((\omega + \omega_c)t + \phi))`
+
+Resulting in:
+
+	:math:`I \otimes MW_a + Q \otimes MW_b = A(t) cos((\omega - \omega_c)t + \phi)`
+
+As seen in the outcome, we can easily generate mircowaves of any frequency with any amplide profile.  This type of modulation is heavily used when performing single qubit gates. *Tip : always make sure to do not modulate on a frequency of* :math:`\omega = 0` *. This will result in a lot of extra* :math:`\frac{1}{f}` *noise, hence worse qubit performace*
+
+Note that next to going down in frequenncy, it is also possible to go up. In priciple yous just have to invert :math:`\omega \rightarrow -\omega`:
+
+	:math:`I = A(t)*cos(\omega t + \phi)`
+
+	:math:`Q = A(t)*cos(\omega t - \frac{\pi}{2} + \phi) = -A(t)*sin(\omega t + \phi)`
+
+Which, when mixing with the carrier results in:
+
+	:math:`I \otimes MW_a + Q \otimes MW_b = A(t) cos((\omega + \omega_c)t + \phi)`
+
+Important note, don't forget that there is noting holding you back from doing:
+
+	:math:`I = \sum_i A_i(t)*cos(\omega_i t + \phi_i)`
+
+	:math:`Q = \sum_i A_i(t)*sin(\omega_i t + \phi_i)`
+
+In this way you can easily generate multiple microwave frequencies at the same know. In the telecom world this is called frequency multiplexing.
\ No newline at end of file
diff --git a/docs/_build/html/_sources/basic_things_to_know/virtual_gates.rst.txt b/docs/_build/html/_sources/basic_things_to_know/virtual_gates.rst.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0def40dd44606cbdd3842fc0551c1191bcba7e91
--- /dev/null
+++ b/docs/_build/html/_sources/basic_things_to_know/virtual_gates.rst.txt
@@ -0,0 +1,42 @@
+.. _virt_gates:
+
+Virtual Gates
+=============
+
+When working with spin qubits, gates control the interaction between the electrons. 
+Often there is cross talk between the gates, e.g. when you change the chemical potential of the first dot with the P1 gate, you would see that the chemical potential of the dots near to the first dot, would also be effected.
+These effect, are classical in nature (-> just capacitance) and can be corrected easily when the capacitaces are known.
+
+
+Defining a virtual gate matrix
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+A virtual gate matrix is a matrix that relates the virtual gate voltages to the real voltages.
+	
+	:math:`\begin{pmatrix} P1 \\ P2 \\ P3 \end{pmatrix} = M \begin{pmatrix} vP1 \\ vP2 \\ vP3 \end{pmatrix}`
+
+When there would me no cross effects, this matrix would look like:
+	
+	:math:`M = \begin{pmatrix} 1  & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix}`
+
+Which gives a one to one map of the virtual gate voltages to the real voltages. In reality, this will not be the case. First you need to measure the cross capacitances between all the dots. This can for example quite easily by extracted <reference> from charge stablility diagram, but there are also many other methods <references>.
+
+Using the cross capacitances, you can generate the following matrix:
+
+	:math:`M^{-1} = \begin{pmatrix} C_{11}  & C_{12} & C_{13} \\ C_{21} & C_{22} & C_{23} \\ C_{31} & C_{32} & C_{33} \end{pmatrix}`
+
+Then when you invert is to :math:`m`, you have your virtual gate matrix.
+
+*tip : When contructing the* :math:`M^{-1}` *matrix, it is recommended to normalize each row of this matrix. Otherwise the ratio of real voltage to virtual gate voltage will always change drasically when adding a gate to the matrix. Also the value of the virtual gate will be kind of similar to the real voltage (easier to keep intution with the voltages).*
+
+How does the software deal with virtual gates
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+As seen in the example :ref:`init file<example_init_lib>` you can define both real and virtual channels.
+
+In the example case, we have the channel B0, B1, B2, P1, P2, and their virtual versions, perluded by the v character (note you can call them anyway you like).
+When assinging pulses to these channels, you can add to the real ones and virtual ones at the same time. When rendering the following will be done, e.g. for B0:
+
+	:math:`B_{0,new}(t) = B_0(t) + \sum_i x_i \: vB_i(t) + \sum_i y_i \: vP_i(t)`
+
+Where :math:`x_i` and :math:`y_i` represent parts out of the virtual gate matrix (-> the first row).
\ No newline at end of file
diff --git a/docs/_build/html/_sources/tutorials/init_lib.rst.txt b/docs/_build/html/_sources/tutorials/init_lib.rst.txt
index 5c3af3b4380acf315a1a0e68fff9a36b150ba120..e52366a87bda0188fe3dc4057f779abd82bb45f9 100644
--- a/docs/_build/html/_sources/tutorials/init_lib.rst.txt
+++ b/docs/_build/html/_sources/tutorials/init_lib.rst.txt
@@ -7,14 +7,15 @@ Before making a pulse, the pulse library needs to know some stuff from you. The
 
    - 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 >
+   - Virtual gates and :ref:`virtual gate matrix<virt_gates>` if needed.
+   - Virtual IQ channels, if you are doing :ref:`IQ modulation<IQ_mod_basics>`
    - :ref:`Channels delay's<chan_delay>` (e.g. if not all you coaxes have the same length)
    - Which channel need a :ref:`DC offset compenstation<dc_offset_comp>` and what the what the allowed values are.
 
 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.
 
+.. _example_init_lib:
 Example : initialization for a two-qubit setup
 ----------------------------------------------
 
diff --git a/docs/_build/html/_sources/tutorials/simple_pulse.rst.txt b/docs/_build/html/_sources/tutorials/simple_pulse.rst.txt
index c98fd74f354c8cc40ca6d397bf48ebb2f7472eda..a2a0fd1ddd2031c7d3512e261eb6f748fad5a891 100644
--- a/docs/_build/html/_sources/tutorials/simple_pulse.rst.txt
+++ b/docs/_build/html/_sources/tutorials/simple_pulse.rst.txt
@@ -30,7 +30,7 @@ Before we can make any pulse, we need to ask the ``pulselib`` object for a segme
 	my_new_pulse_container  = pulse.mk_segment()
 
 Where ``my_new_pulse_container`` is of the type ``segment_container``.
-From this object we can now access all the channels. For example, if we want to make a block pulse on the plunger gate of dot 1, we can call,
+This is an object that contains the pulses for all channels. Now we can access each channnel and perform operations. For example, if you want to make a block pulse on the plunger gate of dot 1, we can call,
 
 .. code-block:: python
 
@@ -39,13 +39,13 @@ From this object we can now access all the channels. For example, if we want to
 	amp = 100 # mV
 	my_new_pulse_container.P1.add_block(start, stop, amp)
 
-So if we want to apply operations on gates, we can access them like:
+The syntax for this last line of code goes as follows:
 
 .. code-block:: python
 
 	segment_container_obj.my_gate_name.operation_you_want_to_do
 
-In this case, we have quite a few gates available (defined in the :ref:`init of pulse_lib<init_lib>`). We can check them,
+In this case, there are quite a few gates available (they were defined in the :ref:`init of pulse_lib<init_lib>`). An other way of checking, is just asking the segment_container object,
 
 .. code-block:: python
 
@@ -77,8 +77,8 @@ Default operations are (can be extended if needed):
 	- adding block shaped pulses
 	- adding ramp's
 	- adding an arbitrary row of times and voltages that define a pulse shape.
-	- add sinus shaped data (for modulation options, use a microwave object)
-	- counting 
+	- add sinus shaped data (for modulation options, use an IQ segment)
+	- Repeating segments 
 	- feature possibility add numpy data.
 
 Important operators are:
@@ -95,7 +95,7 @@ To get intuition what each of this operators does, it is best to try to execute
 Segment container operations
 """"""""""""""""""""""""""""
 
-As mentioned before, this are the containers that contain all the segments and allow you to do also some operation on all the segments at the same time.
+As mentioned before, this are the containers that contain all the segments of all the channnels. There are also some commands that can be executed on the whole container.
 
 Operations include:
 
@@ -105,9 +105,3 @@ Operations include:
 	- reset time : define total_time in all segments as the new time zero.
 
 More on operation can be found in the segment container tutorial.
-
-
-How do virtual gates exactly work here?
-"""""""""""""""""""""""""""""""""""""""
-
-As you
\ No newline at end of file
diff --git a/docs/_build/html/basic_things_to_know/IQ_mod.html b/docs/_build/html/basic_things_to_know/IQ_mod.html
new file mode 100644
index 0000000000000000000000000000000000000000..67bd6a525f69d0788e732b6797c964f6e25285aa
--- /dev/null
+++ b/docs/_build/html/basic_things_to_know/IQ_mod.html
@@ -0,0 +1,238 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>IQ modulation &mdash; pulse lib 0.2 alpha documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+
+  
+  
+    
+
+  
+
+  <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" /> 
+
+  
+  <script src="../_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search">
+          
+
+          
+            <a href="../index.html" class="icon icon-home"> pulse lib
+          
+
+          
+          </a>
+
+          
+            
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <!-- Local TOC -->
+              <div class="local-toc"><ul>
+<li><a class="reference internal" href="#">IQ modulation</a><ul>
+<li><a class="reference internal" href="#principle">Principle</a></li>
+</ul>
+</li>
+</ul>
+</div>
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">pulse lib</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+      <li>IQ modulation</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/basic_things_to_know/IQ_mod.rst.txt" rel="nofollow"> View page source</a>
+          
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <div class="section" id="iq-modulation">
+<span id="iq-mod-basics"></span><h1>IQ modulation<a class="headerlink" href="#iq-modulation" title="Permalink to this headline">¶</a></h1>
+<p>IQ modulation is a technique used in telecomunications to easily provide a multitude of signals with a controlled phase and frequency.
+This technique is widely used for qubits as it is fully phase coherent.</p>
+<p>An example of a signal you want to generate might be:</p>
+<p>&lt;&lt; imgae of 2 sinuesses at different times &gt;&gt;</p>
+<div class="section" id="principle">
+<h2>Principle<a class="headerlink" href="#principle" title="Permalink to this headline">¶</a></h2>
+<p>The principle of IQ modulation relies on mixing the I (in-phase) and the Q (quadrature) signal with a carrier. The circuit of an IQ modulator is shown below:</p>
+<p>&lt;&lt; image IQ mixer &gt;&gt;</p>
+<p>So, if we quickly work out the signal that this circuit generates, we get:</p>
+<blockquote>
+<div><p><span class="math notranslate nohighlight">\(I = A(t)*cos(\omega t + \phi)\)</span></p>
+<p><span class="math notranslate nohighlight">\(Q = A(t)*cos(\omega t + \frac{\pi}{2} + \phi) = A*sin(\omega t + \phi)\)</span></p>
+<p><span class="math notranslate nohighlight">\(I \otimes MW_a = A(t)*cos(\omega t + \phi) * cos(\omega_c t)= \frac{A(t)}{2}\left(cos((\omega - \omega_c)t + \phi) + cos((\omega + \omega_c)t + \phi)\right)\)</span></p>
+<p><span class="math notranslate nohighlight">\(Q \otimes MW_b = A(t)*sin(\omega t + \phi) * sin(\omega_c t)= \frac{A(t)}{2}(cos((\omega - \omega_c)t + \phi) - cos((\omega + \omega_c)t + \phi))\)</span></p>
+</div></blockquote>
+<p>Resulting in:</p>
+<blockquote>
+<div><span class="math notranslate nohighlight">\(I \otimes MW_a + Q \otimes MW_b = A(t) cos((\omega - \omega_c)t + \phi)\)</span></div></blockquote>
+<p>As seen in the outcome, we can easily generate mircowaves of any frequency with any amplide profile.  This type of modulation is heavily used when performing single qubit gates. <em>Tip : always make sure to do not modulate on a frequency of</em> <span class="math notranslate nohighlight">\(\omega = 0\)</span> <em>. This will result in a lot of extra</em> <span class="math notranslate nohighlight">\(\frac{1}{f}\)</span> <em>noise, hence worse qubit performace</em></p>
+<p>Note that next to going down in frequenncy, it is also possible to go up. In priciple yous just have to invert <span class="math notranslate nohighlight">\(\omega \rightarrow -\omega\)</span>:</p>
+<blockquote>
+<div><p><span class="math notranslate nohighlight">\(I = A(t)*cos(\omega t + \phi)\)</span></p>
+<p><span class="math notranslate nohighlight">\(Q = A(t)*cos(\omega t - \frac{\pi}{2} + \phi) = -A(t)*sin(\omega t + \phi)\)</span></p>
+</div></blockquote>
+<p>Which, when mixing with the carrier results in:</p>
+<blockquote>
+<div><span class="math notranslate nohighlight">\(I \otimes MW_a + Q \otimes MW_b = A(t) cos((\omega + \omega_c)t + \phi)\)</span></div></blockquote>
+<p>Important note, don’t forget that there is noting holding you back from doing:</p>
+<blockquote>
+<div><p><span class="math notranslate nohighlight">\(I = \sum_i A_i(t)*cos(\omega_i t + \phi_i)\)</span></p>
+<p><span class="math notranslate nohighlight">\(Q = \sum_i A_i(t)*sin(\omega_i t + \phi_i)\)</span></p>
+</div></blockquote>
+<p>In this way you can easily generate multiple microwave frequencies at the same know. In the telecom world this is called frequency multiplexing.</p>
+</div>
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2019, Stephan Philips
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  
+
+    
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+        <script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
+    
+
+  
+
+  <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/_build/html/basic_things_to_know/virtual_gates.html b/docs/_build/html/basic_things_to_know/virtual_gates.html
new file mode 100644
index 0000000000000000000000000000000000000000..8229c991475b6f9e41b86cbd05f47fe9da09a221
--- /dev/null
+++ b/docs/_build/html/basic_things_to_know/virtual_gates.html
@@ -0,0 +1,232 @@
+
+
+<!DOCTYPE html>
+<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
+<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
+<head>
+  <meta charset="utf-8">
+  
+  <meta name="viewport" content="width=device-width, initial-scale=1.0">
+  
+  <title>Virtual Gates &mdash; pulse lib 0.2 alpha documentation</title>
+  
+
+  
+  
+  
+  
+
+  
+
+  
+  
+    
+
+  
+
+  <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" /> 
+
+  
+  <script src="../_static/js/modernizr.min.js"></script>
+
+</head>
+
+<body class="wy-body-for-nav">
+
+   
+  <div class="wy-grid-for-nav">
+
+    
+    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
+      <div class="wy-side-scroll">
+        <div class="wy-side-nav-search">
+          
+
+          
+            <a href="../index.html" class="icon icon-home"> pulse lib
+          
+
+          
+          </a>
+
+          
+            
+            
+          
+
+          
+<div role="search">
+  <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
+    <input type="text" name="q" placeholder="Search docs" />
+    <input type="hidden" name="check_keywords" value="yes" />
+    <input type="hidden" name="area" value="default" />
+  </form>
+</div>
+
+          
+        </div>
+
+        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
+          
+            
+            
+              
+            
+            
+              <!-- Local TOC -->
+              <div class="local-toc"><ul>
+<li><a class="reference internal" href="#">Virtual Gates</a><ul>
+<li><a class="reference internal" href="#defining-a-virtual-gate-matrix">Defining a virtual gate matrix</a></li>
+<li><a class="reference internal" href="#how-does-the-software-deal-with-virtual-gates">How does the software deal with virtual gates</a></li>
+</ul>
+</li>
+</ul>
+</div>
+            
+          
+        </div>
+      </div>
+    </nav>
+
+    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
+
+      
+      <nav class="wy-nav-top" aria-label="top navigation">
+        
+          <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
+          <a href="../index.html">pulse lib</a>
+        
+      </nav>
+
+
+      <div class="wy-nav-content">
+        
+        <div class="rst-content">
+        
+          
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div role="navigation" aria-label="breadcrumbs navigation">
+
+  <ul class="wy-breadcrumbs">
+    
+      <li><a href="../index.html">Docs</a> &raquo;</li>
+        
+      <li>Virtual Gates</li>
+    
+    
+      <li class="wy-breadcrumbs-aside">
+        
+            
+            <a href="../_sources/basic_things_to_know/virtual_gates.rst.txt" rel="nofollow"> View page source</a>
+          
+        
+      </li>
+    
+  </ul>
+
+  
+  <hr/>
+</div>
+          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
+           <div itemprop="articleBody">
+            
+  <div class="section" id="virtual-gates">
+<span id="virt-gates"></span><h1>Virtual Gates<a class="headerlink" href="#virtual-gates" title="Permalink to this headline">¶</a></h1>
+<p>When working with spin qubits, gates control the interaction between the electrons.
+Often there is cross talk between the gates, e.g. when you change the chemical potential of the first dot with the P1 gate, you would see that the chemical potential of the dots near to the first dot, would also be effected.
+These effect, are classical in nature (-&gt; just capacitance) and can be corrected easily when the capacitaces are known.</p>
+<div class="section" id="defining-a-virtual-gate-matrix">
+<h2>Defining a virtual gate matrix<a class="headerlink" href="#defining-a-virtual-gate-matrix" title="Permalink to this headline">¶</a></h2>
+<p>A virtual gate matrix is a matrix that relates the virtual gate voltages to the real voltages.</p>
+<blockquote>
+<div><span class="math notranslate nohighlight">\(\begin{pmatrix} P1 \\ P2 \\ P3 \end{pmatrix} = M \begin{pmatrix} vP1 \\ vP2 \\ vP3 \end{pmatrix}\)</span></div></blockquote>
+<p>When there would me no cross effects, this matrix would look like:</p>
+<blockquote>
+<div><span class="math notranslate nohighlight">\(M = \begin{pmatrix} 1  &amp; 0 &amp; 0 \\ 0 &amp; 1 &amp; 0 \\ 0 &amp; 0 &amp; 1 \end{pmatrix}\)</span></div></blockquote>
+<p>Which gives a one to one map of the virtual gate voltages to the real voltages. In reality, this will not be the case. First you need to measure the cross capacitances between all the dots. This can for example quite easily by extracted &lt;reference&gt; from charge stablility diagram, but there are also many other methods &lt;references&gt;.</p>
+<p>Using the cross capacitances, you can generate the following matrix:</p>
+<blockquote>
+<div><span class="math notranslate nohighlight">\(M^{-1} = \begin{pmatrix} C_{11}  &amp; C_{12} &amp; C_{13} \\ C_{21} &amp; C_{22} &amp; C_{23} \\ C_{31} &amp; C_{32} &amp; C_{33} \end{pmatrix}\)</span></div></blockquote>
+<p>Then when you invert is to <span class="math notranslate nohighlight">\(m\)</span>, you have your virtual gate matrix.</p>
+<p><em>tip : When contructing the</em> <span class="math notranslate nohighlight">\(M^{-1}\)</span> <em>matrix, it is recommended to normalize each row of this matrix. Otherwise the ratio of real voltage to virtual gate voltage will always change drasically when adding a gate to the matrix. Also the value of the virtual gate will be kind of similar to the real voltage (easier to keep intution with the voltages).</em></p>
+</div>
+<div class="section" id="how-does-the-software-deal-with-virtual-gates">
+<h2>How does the software deal with virtual gates<a class="headerlink" href="#how-does-the-software-deal-with-virtual-gates" title="Permalink to this headline">¶</a></h2>
+<p>As seen in the example <a class="reference internal" href="../tutorials/init_lib.html#example-init-lib"><span class="std std-ref">init file</span></a> you can define both real and virtual channels.</p>
+<p>In the example case, we have the channel B0, B1, B2, P1, P2, and their virtual versions, perluded by the v character (note you can call them anyway you like).
+When assinging pulses to these channels, you can add to the real ones and virtual ones at the same time. When rendering the following will be done, e.g. for B0:</p>
+<blockquote>
+<div><span class="math notranslate nohighlight">\(B_{0,new}(t) = B_0(t) + \sum_i x_i \: vB_i(t) + \sum_i y_i \: vP_i(t)\)</span></div></blockquote>
+<p>Where <span class="math notranslate nohighlight">\(x_i\)</span> and <span class="math notranslate nohighlight">\(y_i\)</span> represent parts out of the virtual gate matrix (-&gt; the first row).</p>
+</div>
+</div>
+
+
+           </div>
+           
+          </div>
+          <footer>
+  
+
+  <hr/>
+
+  <div role="contentinfo">
+    <p>
+        &copy; Copyright 2019, Stephan Philips
+
+    </p>
+  </div>
+  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/rtfd/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 
+
+</footer>
+
+        </div>
+      </div>
+
+    </section>
+
+  </div>
+  
+
+
+  
+
+    
+    
+      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
+        <script type="text/javascript" src="../_static/jquery.js"></script>
+        <script type="text/javascript" src="../_static/underscore.js"></script>
+        <script type="text/javascript" src="../_static/doctools.js"></script>
+        <script type="text/javascript" src="../_static/language_data.js"></script>
+        <script async="async" type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/latest.js?config=TeX-AMS-MML_HTMLorMML"></script>
+    
+
+  
+
+  <script type="text/javascript" src="../_static/js/theme.js"></script>
+
+  <script type="text/javascript">
+      jQuery(function () {
+          SphinxRtdTheme.Navigation.enable(true);
+      });
+  </script> 
+
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/_build/html/objects.inv b/docs/_build/html/objects.inv
index 2b507511acf27026b940803b6923020bc11e0ccb..ea980441576acc92ade7e451acc918a48ad8433f 100644
Binary files a/docs/_build/html/objects.inv and b/docs/_build/html/objects.inv differ
diff --git a/docs/_build/html/searchindex.js b/docs/_build/html/searchindex.js
index 24deadf9f4b03fa23226936870204d282570d370..20d7a38a8767ba4b01d9ed90c541392b30ad975f 100644
--- a/docs/_build/html/searchindex.js
+++ b/docs/_build/html/searchindex.js
@@ -1 +1 @@
-Search.setIndex({docnames:["autodoc/base_pulse","autodoc/segment","autodoc/segment_IQ","autodoc/segment_base","basic_things_to_know/DC_offset_s","channel_delays","index","intro","struct","tutorials/MW_pulse","tutorials/Pulsing_examples/ST_qubit","tutorials/Pulsing_examples/elzerman_readout","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:["autodoc/base_pulse.rst","autodoc/segment.rst","autodoc/segment_IQ.rst","autodoc/segment_base.rst","basic_things_to_know/DC_offset_s.rst","channel_delays.rst","index.rst","intro.rst","struct.rst","tutorials/MW_pulse.rst","tutorials/Pulsing_examples/ST_qubit.rst","tutorials/Pulsing_examples/elzerman_readout.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:[0,0,0,"-"]},"base_pulse.pulselib":{add_IQ_virt_channels:[0,2,1,""],add_awgs:[0,2,1,""],add_channel_compenstation_limits:[0,2,1,""],add_channel_delay:[0,2,1,""],add_virtual_gates:[0,2,1,""],define_channels:[0,2,1,""],mk_segment:[0,2,1,""],mk_sequence:[0,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,3,1,""],slice_time:[1,2,1,""],total_time:[1,3,1,""]},"segments.segments_IQ":{segment_single_IQ:[2,1,1,""]},"segments.segments_IQ.segment_single_IQ":{get_IQ_data:[2,2,1,""]},"segments.segments_base":{segment_single:[3,1,1,""]},"segments.segments_base.segment_single":{add_IQ_ref_channel:[3,2,1,""],add_block:[3,2,1,""],add_np:[3,2,1,""],add_pulse:[3,2,1,""],add_ramp:[3,2,1,""],add_reference_channel:[3,2,1,""],add_sin:[3,2,1,""],append:[3,2,1,""],get_segment:[3,2,1,""],integrate:[3,2,1,""],last_edit:[3,3,1,""],plot_segment:[3,2,1,""],pulse_data_all:[3,3,1,""],repeat:[3,2,1,""],reset_time:[3,2,1,""],shape:[3,3,1,""],slice_time:[3,2,1,""],total_time:[3,3,1,""],v_max:[3,2,1,""],v_min:[3,2,1,""],wait:[3,2,1,""]},base_pulse:{pulselib:[0,1,1,""]},segments:{segments:[1,0,0,"-"],segments_IQ:[2,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","attribute","Python attribute"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:attribute"},terms:{"100e":[],"10e6":[],"10mhz":10,"10n":1,"140n":1,"1d_scan":[],"1e9":14,"1ghz":10,"1khz":10,"20e3":[],"20n":1,"20u":[],"2d_scan":[],"2e9":[],"45n":14,"50n":[],"case":[5,14,18],"class":[0,1,2,6,8],"default":[0,5,8,14,18],"final":[1,10],"function":[0,1,6,10,18],"import":[10,14,18],"int":[0,1,4],"long":0,"new":[0,1,14,18],"return":[0,1,2,3,4],"short":6,"static":4,"true":[1,3],"try":[10,18],But:18,For:[4,5,8,14,18],One:8,That:14,The:[0,1,4,5,8,10,14,18],There:8,These:8,Will:0,about:10,abov:[],access:18,accomplish:14,accord:4,act:4,actual:1,add:[0,2,3,4,14,18],add_awg:[0,14],add_block:[3,18],add_channel_compenstation_limit:[0,14],add_channel_delai:[0,5,14],add_iq_ref_channel:3,add_iq_virt_channel:[0,14],add_np:3,add_puls:3,add_ramp:3,add_reference_channel:3,add_sequ:[],add_sin:3,add_virtual_g:[0,14],added:[0,3,14],adding:[0,18],addit:14,adiabat:2,advanc:6,after:[0,3,5,18],ake:[],algorithm:1,all:[0,1,3,4,6,8,14,18],allow:[1,14,18],along:6,alreadi:[1,8],also:[3,6,8,10,14,18],alwai:[],amount:4,amp:[2,18],amplitud:[],ani:[6,14,18],anoth:[3,14,18],anyth:[],api:6,append:[1,3,4,18],appli:[4,8,18],applic:[0,2],arbitrari:[6,18],arg:[0,1,2,3],argument:[],around:[4,14],arrai:[0,1,2,3],arriv:5,articl:[],artif:5,ask:18,assum:[4,10,11],atm:6,att:[],attent:6,automat:[3,4,6,8,14],automaticc:0,automodul:[],avail:18,awai:8,awg1:[0,14],awg2:14,awg3:14,awg4:[],awg:[0,1,3,4,6,8,10,14],awg_channels_to_physical_loc:14,awg_iq_channel:14,awg_virtual_g:14,axi:[],back:14,backward:5,band:14,barrier:14,base:6,base_level:[],base_puls:[0,14],basic:[3,8],becom:18,been:14,befor:[3,5,14,18],begin:18,below:[4,5,8,14,18],benchmark:[],best:18,between:[4,8,10],biast:4,bit:[5,10],blabla:[],bladibla:[],bladiebal:[],bladiebla:[],block:[1,2,4,8,18],bool:[1,3],both:[1,8],bracket:14,buffer:18,build:[],cabl:14,cach:[],calcul:[3,4],call:[1,5,14,18],can:[0,2,3,4,5,6,8,14,18],cannot:1,capabl:1,capacitor:4,carrier:14,caus:5,certain:1,chan1:[0,1],chan2:1,chan:[4,5],chang:[1,4,18],channal:[],channel:[0,1,2,3,4,6,8,18],channel_nam:3,channels_nam:3,channnel:0,chapter:8,character:[],charg:[4,10,11,14],chassi:14,check:[1,18],chirp:2,chrip:2,clean:6,cleaner:2,clear:1,clear_cache_on_exit:[],coax:[4,14],coaxial:[],code:[8,14],coher:[6,10],coherenli:6,collect:8,collector:[],combin:[0,1,4,6],come:[],command:6,commannd:[],comp:4,compar:10,compens:[3,4],compenst:[5,6,14],complet:14,compon:[],compos:1,concaten:[8,18],concept:[],concern:[0,3],connect:14,consid:[5,18],consist:18,constain:0,construct:[2,11,14],contain:[0,1,3,4,5,6,14],control:[2,4,6,14],control_st:[],convert:0,copi:1,correct:[4,5,14],correspond:14,correspons:3,could:[8,14],count:[3,5,18],coupl:10,courag:8,creat:[10,14],current:[1,3,4,14,18],cut:1,cut_seg:1,data:[1,2,3,5,6,8,18],data_class:[],data_contain:[],dc_offset_comp:[],debug:1,declar:14,decot:[],defin:[0,1,3,5,8,18],define_channel:[0,14],delai:[0,1,3],denot:[0,2],depend:10,design:6,desir:[],detail:8,develop:6,devic:4,diagon:14,diagram:[10,11,14],dict:[0,14],dictionari:[0,14],differ:[1,5,6,8,10],dimens:[1,3,6],dimensio:[],directli:[],discret:[],doc:0,doe:[6,18],doing:[10,14],done:[3,4,5,14],dot:18,doubl:[0,1,3],down:[4,14],dtype:1,due:[],duobl:[],dure:6,each:[0,1,3,4,8,18],eas:6,easi:14,easili:14,edsr:14,effect:[],element:[0,2,8,18],elzerman:18,elzerman_puls:[],empti:8,enabl:4,end:[14,18],ensur:[],enter_rendering_mod:1,entir:[],entiti:18,equival:[],error:0,essenti:[],establish:10,everyth:1,exampl:[0,1,4,5,8,10,18],execut:[1,6,8,14,18],exist:[],exit:1,exit_rendering_mod:1,expect:[1,3],experi:[8,10,18],explain:14,explicit:[],extend:[1,18],extend_dim:1,extend_onli:1,extens:18,extents:0,extra:[1,14],eye:14,fact:14,fals:1,fast:4,featur:[6,18],feed:14,feel:8,few:[5,18],figur:18,filter:[4,14],finish_init:[],finiz:[],first:[0,5,6,14],float64:3,follow:[0,4,5,8,10,11,14,18],form:[3,8],format:2,forward:5,found:[6,8,14,18],frac:10,free:[],freq1:2,freq2:2,freq:0,frequenc:[0,14],fridg:14,from:[1,2,4,6,14,18],front:[0,5],fuction:3,full:[1,3,6],fulli:6,fundamet:[],garbarg:[],gate:[0,3,6,8,10],gener:[0,2,8,14],geq:8,get:[1,2,3,4,6,14,18],get_effective_point_numb:[],get_iq_data:2,get_resized_waveform:[],get_seg:3,get_vmax:[],get_vmin:[],get_waveform:1,give:[0,8],given:[0,1,4,6,8,18],global:[0,2],going:14,good:[],graphic:[],grasp:18,had:4,handi:1,happen:[],has:[],have:[0,4,8,10,11,14,18],here:[3,5,14],high:[4,6,14],highlight:[],hit:4,how:[3,5,6,14],human:3,hvi:6,i_mw:[],i_or_q:2,i_or_q_part:3,idea:0,imag:[5,14],implement:14,includ:[2,6,18],index:[1,3,6],indic:[3,14],individula:0,infinit:4,infit:[],info:14,inform:[8,14],init:[14,18],init_pulselib:14,initi:[6,8,10],initialis:[],input:[1,3],insid:2,instead:[1,2],instrument:0,integr:[3,4,6,14],integrate_waveform:[],interchang:8,interect:[],intergr:3,intiti:[],intragr:0,intro:[],introduc:18,introduct:14,intuit:18,involv:8,iq_channel:1,iq_data:[],iq_virt_channel:0,item:14,just:[0,1,8,10,14,18],keep:[10,14],kei:0,keysight:[0,6,14],keysight_awg:14,know:[1,14],last:[0,5,18],last_edit:3,latenc:14,later:[0,8],learn:18,lenght:3,length:[1,8,14],let:[5,10,11,14],level:4,lib:8,librari:[0,6],like:[10,11,18],limit:[0,4,14],line:14,linear:[],link:14,linspac:1,list:[0,3],lo_freq:[0,14],load:10,local:0,locat:[0,10,14],longer:[5,14],look:[10,11],loop:[1,6],loopobject:[],lot:6,low:[],made:5,main:[2,14],make:[0,1,3,6,8,14],manag:[],mani:[],manip:[],manipul:[8,10],manual:0,map:14,marker:14,match:14,matrix:[0,14],max:4,maxim:[4,14,18],maximum:1,mean:[1,4,5,8,14],measur:1,memori:[],mention:18,microwav:[14,18],might:[10,14],min:[],minim:[4,14],minimum:[],mircowav:14,mix:14,mixer:[],mk_segment:[0,18],mk_sequenc:0,mod:2,mode:1,modul:[2,6,14,18],moment:[1,3,14],more:[2,3,6,8,10,14,18],most:[4,14,18],move:14,much:3,multidimension:6,multipl:[],multiplication_factor:3,must:8,mw_gate:14,mw_gate_i:[14,18],mw_gate_q:[14,18],mw_marker:[14,18],mw_sourc:14,my_gate_nam:18,my_input:0,my_matrix:14,my_new_pulse_contain:18,my_seg:[],mysequ:[],n_point:[],n_points1:[],n_points2:[],name:[0,1,2,3,8,14],nativ:6,ndarrai:[1,2],ndim:1,need:[0,1,4,5,6,8,10,11,14,18],neg:[1,14],neutral:[],new_data:[],next:14,none:[0,1,14],normal:[],note:[8,10,14],noth:1,now:[1,6,10,14,18],npoint:[],npoints1:[],number:[0,3],numer:[],numpi:[0,1,3,18],object:[0,1,2,3,5,6,8,18],occup:[],occur:1,off:[10,14],offet:[],offset:[1,5,6],ohm:14,onc:14,one:[2,3,8,14,18],ones:[0,1,14],onli:[8,10,14],oper:[2,10,14],operation_you_want_to_do:18,opt:[2,14],option:[4,6,18],organis:[0,1],organiz:8,origin:4,oscil:0,other:[1,4,5,14],our:[5,11,14],out:[4,10,14,18],outcom:1,output:14,over:4,overview:[6,8],page:6,paramet:14,part:[3,4],pass:[4,14],path:5,peculiar:0,per:[0,3,14],perform:[1,6,8,11],period1:[],period2:[],period:[],perv:[],phase:[2,6,14],physic:14,pictur:4,place:[],plai:[0,8],platea:18,playback:6,plot:3,plot_seg:3,plunger:[14,18],point:[0,3,5,8,10,11],pointer:[1,3],pointer_to_channel:3,posiv:[],possibl:[2,5,18],post:3,post_delai:[1,3],power:[],practic:[4,11,14],pratic:1,pre:1,pre_delai:[1,3],prepar:[],prescal:0,prescalor:[],present:18,previou:[10,18],previous:0,principl:3,print:18,process:14,program:18,properti:14,provid:[4,6,14],puls:[0,1,2,3,4,5,8,10,11],pulse_data:[],pulse_data_al:3,pulse_lib:[14,18],pulselib:[0,5,14,18],purpos:2,push:[3,5],put:[1,3,14],pxi:6,python:14,q_mw:[],qcode:[0,14],qtt:14,qubit:[2,4,6,8,11],qubit_1:[14,18],qubit_2:[14,18],quick:8,quit:[14,18],r_iq_channel:0,rabi:[],ram:1,ramp:[8,18],ramsei:[],randomis:[],rang:[4,14],rate:3,rather:3,raw:1,reach:14,read:[0,10,14],readabl:3,readout:[8,10,18],real:[],real_channel:1,realli:8,recomend:[],recommend:14,redefin:18,ref:[1,4],refer:[0,3,5,14],referenc:1,regim:11,relat:8,releas:14,remov:4,render:[1,3,8],render_ful:3,repeat:[3,18],repres:0,request:6,requir:1,reservoir:10,reset:[1,18],reset_tim:[1,3],restart:18,result:18,retak:[],riq_channel:14,row:18,rule:8,run:6,runn:1,sai:[],same:[3,5,8,14,18],sampl:[3,4,5,8,11,14],sample_r:[1,3],save:[],scan:[],schedul:[],scheme:10,screen:14,sd_awg:14,sd_p:[],search:6,sec:[],second:3,section:[10,18],see:[0,3,4,5,14],seg2:[],seg3:[],seg:[],segement:[],segment:[0,1,2,4,5,6,10,14],segment_contain:[0,1,18],segment_container_obj:18,segment_data:3,segment_singl:3,segment_single_iq:[2,3],segment_typ:3,segments_bas:[3,8],segments_iq:[2,8],send:[3,4,5],sens:[],separ:10,seq:0,sequenc:[0,3,4,6],seri:1,set:[0,1,4,5,8,14],setup:[4,8],shape:[1,3,18],shift:[2,4],should:[0,1,3,8,14],show:[5,18],shrink:[],sideband:6,signal:[0,3,4,5,6,8,14],simp:[],simpl:[5,6],simple_puls:[],simpli:[],sine:6,singl:[1,2,3,6,8,11],singlet:10,singlet_tiplet_qubit:[],sinu:18,size:1,slice:[1,18],slice_tim:[1,3],slightli:5,slot:14,small:5,softwar:[4,14],some:[5,8,14,18],someth:14,sourc:[0,1,2,3,8,14],space:10,specifi:[8,14],speciti:[],speed:6,spend:14,spin:[2,4,6],ssb:0,stabil:[10,14],stabilt:11,standard:2,start:[1,6,14,18],start_sequ:[],start_tim:[],state:[10,14],station:[],std:2,step1:[],step2:[],step:6,still:1,stop:[1,10,18],stop_tim:[],store:2,str:[0,1,2,3],straightforward:14,string:[],struct:[],structur:6,stuff:14,style:[],support:[0,6],suppport:6,sure:[0,1,14],sweep:[],swept:[],swing1:[],swing2:[],swing:[],symmetr:4,sympi:6,syntax:6,system:[6,10],take:[5,14],taken:0,tell:8,ten:5,termin:1,test:[],test_link:[],than:[0,14],thei:[1,4],them:[0,10,18],theori:18,therefor:[],thi:[0,1,2,3,4,5,6,8,10,14,18],thing:[10,14,18],think:[],though:[1,8,14],three:8,through:4,thu:14,time:[0,1,2,3,4,5,8,10,14,18],time_reset:10,time_step:[],todo:[2,4,14],toget:1,togeth:18,tomographi:[],toolkit:6,top:[],total:[0,1,4,10],total_tim:[1,3,18],totaltim:1,track:[10,14],translat:14,trigger:14,triplet:[],trough:[],tune:11,tunnel:10,tupl:[0,1,3],tutori:[10,14,18],tutoti:[],two:[0,8,11,18],type:[2,8,18],uniqu:[],unit:14,unlimit:[],until:1,updad:[],updat:14,update_virtual_gate_matrix:14,upload:[0,1,6,14],usag:[1,18],use:[1,2,4,6,18],used:[0,1,2,4,8,10,14,18],using:[1,6,14,18],usual:[5,14,18],v_max:3,v_min:3,v_start1:[],v_start2:[],v_start:[],valu:[0,3,5,14],van:[],variabl:[],vb0:[14,18],vb1:[14,18],vb2:[14,18],vb3:[],vb4:[],vb5:[],vector:[8,14],veri:10,versu:[],via:[],viq_channel:[0,14],virtual:[0,3,6],virtual_g:[0,1],virtual_gate_matrix:[0,14],virtual_gates_names_r:[0,14],virtual_gates_names_virt:[0,14],vmax:1,vmin:1,volatag:1,voltag:[0,4,18],voltageiq:[],vp1:[14,18],vp2:[14,18],vp3:[],vp4:[],vp5:[],wai:4,wait:[3,18],want:[0,1,2,3,5,10,14,18],wave:6,waveform:[1,3,5,6,8,14,18],wavefrom:[],waveshap:3,wavoform:1,weakli:10,were:14,what:[1,5,6,10,14,18],whaterv:[],wheather:1,when:[1,4,6,8,10,14],where:[0,10,18],which:[1,3,6,8,14],whole:1,wide:14,word:4,work:[6,8,14],would:[1,4,8,14],write:[],yet:[],you:[0,1,2,3,4,5,8,10,14,18],your:[6,8],yourselv:14,zeeman:10,zero:[4,14,18]},titles:["&lt;no title&gt;","&lt;no title&gt;","&lt;no title&gt;","Segment base class desription","Compenstating for DC offset\u2019s","Channels delays","Welcome to pulse lib\u2019s documentation","&lt;no title&gt;","Structure of the library","Tutorial : Making pulses for Microwave control.","Controlling a ST qubit","Elzerman readout","Advanced Tutorial : Programming a process tomography experiment to characterize a two qubit gate.","Advanced Tutorial : Designing pulses for a Randomised Benchmarking experiment.","Initializing the library","Tutorial : Looping variables.","Concepts : Reset time and slicing of waveforms.","Tutotial : Making from pulses a sequence","Making simple pulses for DC control of qubits."],titleterms:{"class":3,advanc:[12,13],base:3,basic:18,benchmark:13,boundari:14,channel:[5,14],character:12,compens:14,compenst:4,concept:16,construct:18,contain:[8,18],control:[9,10,18],defin:14,delai:[5,14],design:13,desript:3,detail:4,document:6,elzerman:11,exactli:18,exampl:14,experi:[12,13],from:17,gate:[12,14,18],here:18,how:18,implement:4,indic:6,initi:14,introduct:[],lib:[6,14],librari:[8,14],loop:15,make:[9,17,18],microwav:9,object:14,offset:[4,14],oper:18,overview:[],process:12,program:12,puls:[6,9,13,14,17,18],qubit:[10,12,14,18],randomis:13,readout:11,real:14,reset:16,segment:[3,8,18],sequenc:[8,17],setup:14,simpl:18,slice:16,step:14,structur:8,tabl:6,test:[],time:16,tomographi:12,tutori:[9,12,13,15],tutoti:17,two:[12,14],variabl:15,virtual:[14,18],voltag:14,waveform:16,welcom:6,work:18}})
\ No newline at end of file
+Search.setIndex({docnames:["autodoc/base_pulse","autodoc/segment","autodoc/segment_IQ","autodoc/segment_base","basic_things_to_know/DC_offset_s","basic_things_to_know/IQ_mod","basic_things_to_know/virtual_gates","channel_delays","index","intro","struct","tutorials/MW_pulse","tutorials/Pulsing_examples/ST_qubit","tutorials/Pulsing_examples/elzerman_readout","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:["autodoc/base_pulse.rst","autodoc/segment.rst","autodoc/segment_IQ.rst","autodoc/segment_base.rst","basic_things_to_know/DC_offset_s.rst","basic_things_to_know/IQ_mod.rst","basic_things_to_know/virtual_gates.rst","channel_delays.rst","index.rst","intro.rst","struct.rst","tutorials/MW_pulse.rst","tutorials/Pulsing_examples/ST_qubit.rst","tutorials/Pulsing_examples/elzerman_readout.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:[0,0,0,"-"]},"base_pulse.pulselib":{add_IQ_virt_channels:[0,2,1,""],add_awgs:[0,2,1,""],add_channel_compenstation_limits:[0,2,1,""],add_channel_delay:[0,2,1,""],add_virtual_gates:[0,2,1,""],define_channels:[0,2,1,""],mk_segment:[0,2,1,""],mk_sequence:[0,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,3,1,""],slice_time:[1,2,1,""],total_time:[1,3,1,""]},"segments.segments_IQ":{segment_single_IQ:[2,1,1,""]},"segments.segments_IQ.segment_single_IQ":{get_IQ_data:[2,2,1,""]},"segments.segments_base":{segment_single:[3,1,1,""]},"segments.segments_base.segment_single":{add_IQ_ref_channel:[3,2,1,""],add_block:[3,2,1,""],add_np:[3,2,1,""],add_pulse:[3,2,1,""],add_ramp:[3,2,1,""],add_reference_channel:[3,2,1,""],add_sin:[3,2,1,""],append:[3,2,1,""],get_segment:[3,2,1,""],integrate:[3,2,1,""],last_edit:[3,3,1,""],plot_segment:[3,2,1,""],pulse_data_all:[3,3,1,""],repeat:[3,2,1,""],reset_time:[3,2,1,""],shape:[3,3,1,""],slice_time:[3,2,1,""],total_time:[3,3,1,""],v_max:[3,2,1,""],v_min:[3,2,1,""],wait:[3,2,1,""]},base_pulse:{pulselib:[0,1,1,""]},segments:{segments:[1,0,0,"-"],segments_IQ:[2,0,0,"-"]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","attribute","Python attribute"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:attribute"},terms:{"100e":[],"10e6":[],"10mhz":12,"10n":1,"140n":1,"1d_scan":[],"1e9":16,"1ghz":12,"1khz":12,"20e3":[],"20n":1,"20u":[],"2d_scan":[],"2e9":[],"45n":16,"50n":[],"case":[6,7,16,20],"class":[0,1,2,8,10],"default":[0,7,10,16,20],"final":[1,12],"function":[0,1,8,12,20],"import":[5,12,16,20],"int":[0,1,4],"long":0,"new":[0,1,6,16,20],"return":[0,1,2,3,4],"short":8,"static":4,"true":[1,3],"try":[12,20],But:20,For:[4,7,10,16,20],One:10,That:16,The:[0,1,4,5,7,10,12,16,20],Then:6,There:[10,20],These:[6,10],Using:6,Will:0,a_i:5,about:12,abov:[],access:20,accomplish:16,accord:4,act:4,actual:1,add:[0,2,3,4,6,16,20],add_awg:[0,16],add_block:[3,20],add_channel_compenstation_limit:[0,16],add_channel_delai:[0,7,16],add_iq_ref_channel:3,add_iq_virt_channel:[0,16],add_np:3,add_puls:3,add_ramp:3,add_reference_channel:3,add_sequ:[],add_sin:3,add_virtual_g:[0,16],added:[0,3,16],adding:[0,6,20],addit:16,adiabat:2,advanc:8,after:[0,3,7,20],ake:[],algorithm:1,all:[0,1,3,4,6,8,10,16,20],allow:[1,16],along:8,alreadi:[1,10],also:[3,5,6,8,10,12,16,20],alwai:[5,6],amount:4,amp:[2,20],amplid:5,amplitud:[],ani:[5,8,16,20],anoth:[3,16,20],anyth:[],anywai:6,api:8,append:[1,3,4,20],appli:[4,10],applic:[0,2],arbitrari:[8,20],arg:[0,1,2,3],argument:[],around:[4,16],arrai:[0,1,2,3],arriv:7,articl:[],artif:7,ask:20,assing:6,assum:[4,12,13],atm:8,att:[],attent:8,automat:[3,4,8,10,16],automaticc:0,automodul:[],avail:20,awai:10,awg1:[0,16],awg2:16,awg3:16,awg4:[],awg:[0,1,3,4,8,10,12,16],awg_channels_to_physical_loc:16,awg_iq_channel:16,awg_virtual_g:16,axi:[],b_0:6,back:[5,16],backward:7,band:16,barrier:16,base:8,base_level:[],base_puls:[0,16],basic:[3,10],becom:20,been:16,befor:[3,7,16,20],begin:[6,20],below:[4,5,7,10,16,20],benchmark:[],best:20,between:[4,6,10,12],biast:4,bit:[7,12],blabla:[],bladibla:[],bladiebal:[],bladiebla:[],block:[1,2,4,10,20],bool:[1,3],both:[1,6,10],bracket:16,buffer:20,build:[],cabl:16,cach:[],calcul:[3,4],call:[1,5,6,7,16,20],can:[0,2,3,4,5,6,7,8,10,16,20],cannot:1,capabl:1,capacit:6,capacitac:6,capacitor:4,carrier:[5,16],caus:7,certain:1,chan1:[0,1],chan2:1,chan:[4,7],chang:[1,4,6,20],channal:[],channel:[0,1,2,3,4,6,8,10,20],channel_nam:3,channels_nam:3,channnel:[0,20],chapter:10,charact:6,character:[],charg:[4,6,12,13,16],chassi:16,check:[1,20],chemic:6,chirp:2,chrip:2,circuit:5,classic:6,clean:8,cleaner:2,clear:1,clear_cache_on_exit:[],coax:[4,16],coaxial:[],code:[10,16,20],coher:[5,8,12],coherenli:8,collect:10,collector:[],combin:[0,1,4,8],come:[],command:[8,20],commannd:[],comp:4,compar:12,compens:[3,4],compenst:[7,8,16],complet:16,compon:[],compos:1,concaten:[10,20],concept:[],concern:[0,3],connect:16,consid:[7,20],consist:20,constain:0,construct:[2,13,16],contain:[0,1,3,4,7,8,16],control:[2,4,5,6,8,16],control_st:[],contruct:6,convert:0,copi:1,correct:[4,6,7,16],correspond:16,correspons:3,cos:5,could:[10,16],count:[3,7,20],coupl:12,courag:10,creat:[12,16],cross:6,current:[1,3,4,16,20],cut:1,cut_seg:1,data:[1,2,3,7,8,10,20],data_class:[],data_contain:[],dc_offset_comp:[],debug:1,declar:16,decot:[],defin:[0,1,3,7,10,20],define_channel:[0,16],delai:[0,1,3],denot:[0,2],depend:12,design:8,desir:[],detail:10,develop:8,devic:4,diagon:16,diagram:[6,12,13,16],dict:[0,16],dictionari:[0,16],differ:[1,5,7,8,10,12],dimens:[1,3,8],dimensio:[],directli:[],discret:[],doc:0,doe:[8,20],doing:[5,12,16],don:5,done:[3,4,6,7,16],dot:[6,20],doubl:[0,1,3],down:[4,5,16],drasic:6,dtype:1,due:[],duobl:[],dure:8,each:[0,1,3,4,6,10,20],eas:8,easi:16,easier:6,easili:[5,6,16],edsr:16,effect:6,electron:6,element:[0,2,10,20],elzerman:20,elzerman_puls:[],empti:10,enabl:4,end:[6,16,20],ensur:[],enter_rendering_mod:1,entir:[],entiti:20,equival:[],error:0,essenti:[],establish:12,everyth:1,exampl:[0,1,4,5,6,7,10,12,20],execut:[1,8,10,16,20],exist:[],exit:1,exit_rendering_mod:1,expect:[1,3],experi:[10,12,20],explain:16,explicit:[],extend:[1,20],extend_dim:1,extend_onli:1,extens:20,extents:0,extra:[1,5,16],extract:6,eye:16,fact:16,fals:1,fast:4,featur:[8,20],feed:16,feel:10,few:[7,20],figur:20,file:6,filter:[4,16],finish_init:[],finiz:[],first:[0,6,7,8,16],float64:3,follow:[0,4,6,7,10,12,13,16,20],forget:5,form:[3,10],format:2,forward:7,found:[8,10,16,20],frac:[5,12],free:[],freq1:2,freq2:2,freq:0,frequenc:[0,5,16],frequennci:5,fridg:16,from:[1,2,4,5,6,8,16],front:[0,7],fuction:3,full:[1,3,8],fulli:[5,8],fundamet:[],garbarg:[],gate:[0,3,5,8,10,12,20],gener:[0,2,5,6,10,16],geq:10,get:[1,2,3,4,5,8,16,20],get_effective_point_numb:[],get_iq_data:2,get_resized_waveform:[],get_seg:3,get_vmax:[],get_vmin:[],get_waveform:1,give:[0,6,10],given:[0,1,4,8,10,20],global:[0,2],goe:20,going:[5,16],good:[],graphic:[],grasp:20,had:4,handi:1,happen:[],has:[],have:[0,4,5,6,10,12,13,16],heavili:5,henc:5,here:[3,7,16,20],high:[4,8,16],highlight:[],hit:4,hold:5,how:[3,7,8,16,20],human:3,hvi:8,i_mw:[],i_or_q:2,i_or_q_part:3,idea:0,imag:[5,7,16],imga:5,implement:16,includ:[2,8,20],index:[1,3,8],indic:[3,16],individula:0,infinit:4,infit:[],info:16,inform:[10,16],init:[6,16,20],init_pulselib:16,initi:[8,10,12],initialis:[],input:[1,3],insid:2,instead:[1,2],instrument:0,integr:[3,4,8,16],integrate_waveform:[],interact:6,interchang:10,interect:[],intergr:3,intiti:[],intragr:0,intro:[],introduc:20,introduct:16,intuit:20,intut:6,invert:[5,6],involv:10,iq_channel:1,iq_data:[],iq_virt_channel:0,item:16,just:[0,1,5,6,10,12,16,20],keep:[6,12,16],kei:0,keysight:[0,8,16],keysight_awg:16,kind:6,know:[1,5,16],known:6,last:[0,7,20],last_edit:3,latenc:16,later:[0,10],learn:20,left:5,lenght:3,length:[1,10,16],let:[7,12,13,16],level:4,lib:10,librari:[0,8],like:[6,12,13],limit:[0,4,16],line:[16,20],linear:[],link:[],linspac:1,list:[0,3],lo_freq:[0,16],load:12,local:0,locat:[0,12,16],longer:[7,16],look:[6,12,13],loop:[1,8],loopobject:[],lot:[5,8],low:[],made:7,main:[2,16],make:[0,1,3,5,8,10,16],manag:[],mani:6,manip:[],manipul:[10,12],manual:0,map:[6,16],marker:16,match:16,math:[],matrix:[0,16],max:4,maxim:[4,16,20],maximum:1,mean:[1,4,7,10,16],measur:[1,6],memori:[],mention:20,method:6,microwav:[5,16],might:[5,12,16],min:[],minim:[4,16],minimum:[],mircowav:[5,16],mix:[5,16],mixer:5,mk_segment:[0,20],mk_sequenc:0,mod:2,mode:1,modul:[2,8,16,20],moment:[1,3,16],more:[2,3,8,10,12,16,20],most:[4,16,20],move:16,much:3,multidimension:8,multipl:5,multiplex:5,multiplication_factor:3,multitud:5,must:10,mw_a:5,mw_b:5,mw_gate:16,mw_gate_i:[16,20],mw_gate_q:[16,20],mw_marker:[16,20],mw_sourc:16,my_gate_nam:20,my_input:0,my_matrix:16,my_new_pulse_contain:20,my_seg:[],mysequ:[],n_point:[],n_points1:[],n_points2:[],name:[0,1,2,3,10,16],nativ:8,natur:6,ndarrai:[1,2],ndim:1,need:[0,1,4,6,7,8,10,12,13,16,20],neg:[1,16],neutral:[],new_data:[],next:[5,16],nois:5,none:[0,1,16],normal:6,note:[5,6,10,12,16],noth:1,now:[1,8,12,16,20],npoint:[],npoints1:[],number:[0,3],numer:[],numpi:[0,1,3,20],object:[0,1,2,3,7,8,10,20],occup:[],occur:1,off:[12,16],offet:[],offset:[1,7,8],often:6,ohm:16,omega:5,omega_c:5,omega_i:5,onc:16,one:[2,3,6,10,16,20],ones:[0,1,6,16],onli:[10,12,16],oper:[2,12,16],operation_you_want_to_do:20,opt:[2,16],option:[4,8,20],organis:[0,1],organiz:10,origin:4,oscil:0,other:[1,4,6,7,16,20],otherwis:6,otim:5,our:[7,13,16],out:[4,5,6,12,16,20],outcom:[1,5],output:16,over:4,overview:[8,10],page:8,paramet:16,part:[3,4,6],pass:[4,16],path:7,peculiar:0,per:[0,3,16],perform:[1,5,8,10,13,20],performac:5,period1:[],period2:[],period:[],perlud:6,perv:[],phase:[2,5,8,16],phi:5,phi_i:5,physic:16,pictur:4,place:[],plai:[0,10],platea:20,playback:8,plot:3,plot_seg:3,plunger:[16,20],pmatrix:6,point:[0,3,7,10,12,13],pointer:[1,3],pointer_to_channel:3,posiv:[],possibl:[2,5,7,20],post:3,post_delai:[1,3],potenti:6,power:[],practic:[4,13,16],pratic:1,pre:1,pre_delai:[1,3],prepar:[],prescal:0,prescalor:[],present:20,previou:[12,20],previous:0,pricipl:5,principl:3,print:20,process:16,profil:5,program:20,properti:16,provid:[4,5,8,16],psi:[],puls:[0,1,2,3,4,6,7,10,12,13],pulse_data:[],pulse_data_al:3,pulse_lib:[16,20],pulselib:[0,7,16,20],purpos:2,push:[3,7],put:[1,3,16],pxi:8,python:16,q_mw:[],qcode:[0,16],qtt:16,quadratur:5,qubit:[2,4,5,6,8,10,13],qubit_1:[16,20],qubit_2:[16,20],quick:10,quickli:5,quit:[6,16,20],r_iq_channel:0,rabi:[],ram:1,ramp:[10,20],ramsei:[],randomis:[],rang:[4,16],rate:3,rather:3,ratio:6,raw:1,reach:16,read:[0,12,16],readabl:3,readout:[10,12,20],real:6,real_channel:1,realiti:6,realli:10,recomend:[],recommend:[6,16],redefin:20,ref:[1,4],refer:[0,3,6,7],referenc:1,regim:13,relat:[6,10],releas:16,reli:5,remov:4,render:[1,3,6,10],render_ful:3,repeat:[3,20],repres:[0,6],request:8,requir:1,reservoir:12,reset:[1,20],reset_tim:[1,3],restart:20,result:[5,20],retak:[],right:5,rightarrow:5,riq_channel:16,row:[6,20],rule:10,run:8,runn:1,sai:[],same:[3,5,6,7,10,16],sampl:[3,4,7,10,13,16],sample_r:[1,3],save:[],scan:[],schedul:[],scheme:12,screen:16,sd_awg:16,sd_p:[],search:8,sec:[],second:3,section:[12,20],see:[0,3,4,6,7,16],seen:[5,6],seg2:[],seg3:[],seg:[],segement:[],segment:[0,1,2,4,7,8,12,16],segment_contain:[0,1,20],segment_container_obj:20,segment_data:3,segment_singl:3,segment_single_iq:[2,3],segment_typ:3,segments_bas:[3,10],segments_iq:[2,10],send:[3,4,7],sens:[],separ:12,seq:0,sequenc:[0,3,4,8],seri:1,set:[0,1,4,7,10,16],setup:[4,10],shape:[1,3,20],shift:[2,4],should:[0,1,3,10,16],show:[7,20],shown:5,shrink:[],sideband:8,signal:[0,3,4,5,7,8,10,16],similar:6,simp:[],simpl:[7,8],simple_puls:[],simpli:[],sin:5,sine:8,singl:[1,2,3,5,8,10,13],singlet:12,singlet_tiplet_qubit:[],sinu:20,sinuess:5,size:1,slice:[1,20],slice_tim:[1,3],slightli:7,slot:16,small:7,softwar:[4,16],some:[7,10,16,20],someth:16,sourc:[0,1,2,3,10,16],space:12,specifi:[10,16],speciti:[],speed:8,spend:16,spin:[2,4,6,8],ssb:0,stabil:[12,16],stabilt:13,stablil:6,standard:2,start:[1,8,16,20],start_sequ:[],start_tim:[],state:[12,16],station:[],std:2,step1:[],step2:[],step:8,still:1,stop:[1,12,20],stop_tim:[],store:2,str:[0,1,2,3],straightforward:16,string:[],struct:[],structur:8,stuff:16,style:[],sum_i:[5,6],support:[0,8],suppport:8,sure:[0,1,5,16],sweep:[],swept:[],swing1:[],swing2:[],swing:[],symmetr:4,sympi:8,syntax:[8,20],system:[8,12],take:[7,16],taken:0,talk:6,techniqu:5,telecom:5,telecomun:5,tell:10,ten:7,termin:1,test:[],test_link:[],than:[0,16],thei:[1,4,20],them:[0,6,12],theori:20,therefor:[],thi:[0,1,2,3,4,5,6,7,8,10,12,16,20],thing:[12,16,20],think:[],though:[1,10,16],three:10,through:4,thu:16,time:[0,1,2,3,4,5,6,7,10,12,16,20],time_reset:12,time_step:[],tip:[5,6],todo:[2,4,16],toget:1,togeth:20,tomographi:[],toolkit:8,top:[],total:[0,1,4,12],total_tim:[1,3,20],totaltim:1,track:[12,16],translat:16,trigger:16,triplet:[],trough:[],tune:13,tunnel:12,tupl:[0,1,3],tutori:[12,16,20],tutoti:[],two:[0,10,13,20],type:[2,5,10,20],uniqu:[],unit:16,unlimit:[],until:1,updad:[],updat:16,update_virtual_gate_matrix:16,upload:[0,1,8,16],usag:[1,20],use:[1,2,4,8,20],used:[0,1,2,4,5,10,12,16,20],using:[1,8,16,20],usual:[7,16,20],v_max:3,v_min:3,v_start1:[],v_start2:[],v_start:[],valu:[0,3,6,7,16],van:[],variabl:[],vb0:[16,20],vb1:[16,20],vb2:[16,20],vb3:[],vb4:[],vb5:[],vb_i:6,vector:[10,16],veri:12,version:6,versu:[],via:[],viq_channel:[0,16],virtual:[0,3,8],virtual_g:[0,1],virtual_gate_matrix:[0,16],virtual_gates_names_r:[0,16],virtual_gates_names_virt:[0,16],vmax:1,vmin:1,volatag:1,voltag:[0,4,6,20],voltageiq:[],vp1:[6,16,20],vp2:[6,16,20],vp3:6,vp4:[],vp5:[],vp_i:6,wai:[4,5,20],wait:[3,20],want:[0,1,2,3,5,7,12,16,20],wave:8,waveform:[1,3,7,8,10,16,20],wavefrom:[],waveshap:3,wavoform:1,weakli:12,were:[16,20],what:[1,7,8,12,16,20],whaterv:[],wheather:1,when:[1,4,5,6,8,10,12,16],where:[0,6,12,20],which:[1,3,5,6,8,10,16],whole:[1,20],wide:[5,16],word:4,work:[5,6,8,10,16,20],world:5,wors:5,would:[1,4,6,10,16],write:[],x_i:6,y_i:6,yet:[],you:[0,1,2,3,4,5,6,7,10,12,16,20],your:[6,8,10],yourselv:16,zeeman:12,zero:[4,16,20]},titles:["&lt;no title&gt;","&lt;no title&gt;","&lt;no title&gt;","Segment base class desription","Compenstating for DC offset\u2019s","IQ modulation","Virtual Gates","Channels delays","Welcome to pulse lib\u2019s documentation","&lt;no title&gt;","Structure of the library","Tutorial : Making pulses for Microwave control.","Controlling a ST qubit","Elzerman readout","Advanced Tutorial : Programming a process tomography experiment to characterize a two qubit gate.","Advanced Tutorial : Designing pulses for a Randomised Benchmarking experiment.","Initializing the library","Tutorial : Looping variables.","Concepts : Reset time and slicing of waveforms.","Tutotial : Making from pulses a sequence","Making simple pulses for DC control of qubits."],titleterms:{"class":3,advanc:[14,15],base:3,basic:20,benchmark:15,boundari:16,channel:[7,16],character:14,compens:16,compenst:4,concept:18,construct:20,contain:[10,20],control:[11,12,20],deal:6,defin:[6,16],delai:[7,16],design:15,desript:3,detail:4,document:8,doe:6,elzerman:13,exactli:[],exampl:16,experi:[14,15],from:19,gate:[6,14,16],here:[],how:6,implement:4,indic:8,initi:16,introduct:[],lib:[8,16],librari:[10,16],loop:17,make:[11,19,20],matrix:6,microwav:11,modul:5,object:16,offset:[4,16],oper:20,overview:[],principl:5,process:14,program:14,puls:[8,11,15,16,19,20],qubit:[12,14,16,20],randomis:15,readout:13,real:16,reset:18,segment:[3,10,20],sequenc:[10,19],setup:16,simpl:20,slice:18,softwar:6,step:16,structur:10,tabl:8,test:[],time:18,tomographi:14,tutori:[11,14,15,17],tutoti:19,two:[14,16],variabl:17,virtual:[6,16],voltag:16,waveform:18,welcom:8,work:[]}})
\ No newline at end of file
diff --git a/docs/_build/html/tutorials/init_lib.html b/docs/_build/html/tutorials/init_lib.html
index d7b18ca75ee86f0b1cb1d1f079a8859289ceeec5..0b31325fdb2a5b6c9b845c0289abf43f71a1893d 100644
--- a/docs/_build/html/tutorials/init_lib.html
+++ b/docs/_build/html/tutorials/init_lib.html
@@ -160,8 +160,8 @@
 <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>Virtual gates and <a class="reference internal" href="../basic_things_to_know/virtual_gates.html#virt-gates"><span class="std std-ref">virtual gate matrix</span></a> if needed.</li>
+<li>Virtual IQ channels, if you are doing <a class="reference internal" href="../basic_things_to_know/IQ_mod.html#iq-mod-basics"><span class="std std-ref">IQ modulation</span></a></li>
 <li><a class="reference internal" href="../channel_delays.html#chan-delay"><span class="std std-ref">Channels delay’s</span></a> (e.g. if not all you coaxes have the same length)</li>
 <li>Which channel need a <a class="reference internal" href="../basic_things_to_know/DC_offset_s.html#dc-offset-comp"><span class="std std-ref">DC offset compenstation</span></a> and what the what the allowed values are.</li>
 </ul>
diff --git a/docs/_build/html/tutorials/simple_pulse.html b/docs/_build/html/tutorials/simple_pulse.html
index 54d0bc3423016a3b480d91a1c0194883e7d6fe03..5acaa5f23d4b7691cc080a42f2da9b5ba2397682 100644
--- a/docs/_build/html/tutorials/simple_pulse.html
+++ b/docs/_build/html/tutorials/simple_pulse.html
@@ -83,7 +83,6 @@
 <li><a class="reference internal" href="#making-a-segment-container">Making a segment container</a></li>
 <li><a class="reference internal" href="#segment-operations">Segment operations</a></li>
 <li><a class="reference internal" href="#segment-container-operations">Segment container operations</a></li>
-<li><a class="reference internal" href="#how-do-virtual-gates-exactly-work-here">How do virtual gates exactly work here?</a></li>
 </ul>
 </li>
 </ul>
@@ -174,18 +173,18 @@ But before checking the examples, it is best to get a grasp of the theory below.
 </pre></div>
 </div>
 <p>Where <code class="docutils literal notranslate"><span class="pre">my_new_pulse_container</span></code> is of the type <code class="docutils literal notranslate"><span class="pre">segment_container</span></code>.
-From this object we can now access all the channels. For example, if we want to make a block pulse on the plunger gate of dot 1, we can call,</p>
+This is an object that contains the pulses for all channels. Now we can access each channnel and perform operations. For example, if you want to make a block pulse on the plunger gate of dot 1, we can call,</p>
 <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">start</span> <span class="o">=</span> <span class="mi">10</span> <span class="c1"># ns</span>
 <span class="n">stop</span> <span class="o">=</span> <span class="mi">50</span> <span class="c1"># ns</span>
 <span class="n">amp</span> <span class="o">=</span> <span class="mi">100</span> <span class="c1"># mV</span>
 <span class="n">my_new_pulse_container</span><span class="o">.</span><span class="n">P1</span><span class="o">.</span><span class="n">add_block</span><span class="p">(</span><span class="n">start</span><span class="p">,</span> <span class="n">stop</span><span class="p">,</span> <span class="n">amp</span><span class="p">)</span>
 </pre></div>
 </div>
-<p>So if we want to apply operations on gates, we can access them like:</p>
+<p>The syntax for this last line of code goes as follows:</p>
 <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="n">segment_container_obj</span><span class="o">.</span><span class="n">my_gate_name</span><span class="o">.</span><span class="n">operation_you_want_to_do</span>
 </pre></div>
 </div>
-<p>In this case, we have quite a few gates available (defined in the <a class="reference internal" href="init_lib.html#init-lib"><span class="std std-ref">init of pulse_lib</span></a>). We can check them,</p>
+<p>In this case, there are quite a few gates available (they were defined in the <a class="reference internal" href="init_lib.html#init-lib"><span class="std std-ref">init of pulse_lib</span></a>). An other way of checking, is just asking the segment_container object,</p>
 <div class="highlight-python notranslate"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">my_new_pulse_container</span><span class="o">.</span><span class="n">channels</span><span class="p">)</span>
 
 <span class="go">[ &#39;B0&#39;, &#39;P1&#39;, &#39;B1&#39;, &#39;P2&#39;, &#39;B2&#39;,</span>
@@ -211,8 +210,8 @@ The example below shows two waveforms getting counted up (just an extension of t
 <li>adding block shaped pulses</li>
 <li>adding ramp’s</li>
 <li>adding an arbitrary row of times and voltages that define a pulse shape.</li>
-<li>add sinus shaped data (for modulation options, use a microwave object)</li>
-<li>counting</li>
+<li>add sinus shaped data (for modulation options, use an IQ segment)</li>
+<li>Repeating segments</li>
 <li>feature possibility add numpy data.</li>
 </ul>
 </div></blockquote>
@@ -230,7 +229,7 @@ The example below shows two waveforms getting counted up (just an extension of t
 </div>
 <div class="section" id="segment-container-operations">
 <h3>Segment container operations<a class="headerlink" href="#segment-container-operations" title="Permalink to this headline">¶</a></h3>
-<p>As mentioned before, this are the containers that contain all the segments and allow you to do also some operation on all the segments at the same time.</p>
+<p>As mentioned before, this are the containers that contain all the segments of all the channnels. There are also some commands that can be executed on the whole container.</p>
 <p>Operations include:</p>
 <blockquote>
 <div><ul class="simple">
@@ -242,10 +241,6 @@ The example below shows two waveforms getting counted up (just an extension of t
 </div></blockquote>
 <p>More on operation can be found in the segment container tutorial.</p>
 </div>
-<div class="section" id="how-do-virtual-gates-exactly-work-here">
-<h3>How do virtual gates exactly work here?<a class="headerlink" href="#how-do-virtual-gates-exactly-work-here" title="Permalink to this headline">¶</a></h3>
-<p>As you</p>
-</div>
 </div>
 </div>
 
diff --git a/docs/basic_things_to_know/IQ_mod.rst b/docs/basic_things_to_know/IQ_mod.rst
new file mode 100644
index 0000000000000000000000000000000000000000..b0f93f3b6659dc1558be4db7afae41d2d47de70f
--- /dev/null
+++ b/docs/basic_things_to_know/IQ_mod.rst
@@ -0,0 +1,52 @@
+.. _IQ_mod_basics:
+
+IQ modulation
+=============
+
+IQ modulation is a technique used in telecomunications to easily provide a multitude of signals with a controlled phase and frequency.
+This technique is widely used for qubits as it is fully phase coherent.
+
+An example of a signal you want to generate might be:
+
+<< imgae of 2 sinuesses at different times >>
+
+Principle
+^^^^^^^^^
+
+The principle of IQ modulation relies on mixing the I (in-phase) and the Q (quadrature) signal with a carrier. The circuit of an IQ modulator is shown below:
+
+<< image IQ mixer >>
+
+So, if we quickly work out the signal that this circuit generates, we get:
+
+	:math:`I = A(t)*cos(\omega t + \phi)`
+
+	:math:`Q = A(t)*cos(\omega t + \frac{\pi}{2} + \phi) = A*sin(\omega t + \phi)`
+
+	:math:`I \otimes MW_a = A(t)*cos(\omega t + \phi) * cos(\omega_c t)= \frac{A(t)}{2}\left(cos((\omega - \omega_c)t + \phi) + cos((\omega + \omega_c)t + \phi)\right)`
+
+	:math:`Q \otimes MW_b = A(t)*sin(\omega t + \phi) * sin(\omega_c t)= \frac{A(t)}{2}(cos((\omega - \omega_c)t + \phi) - cos((\omega + \omega_c)t + \phi))`
+
+Resulting in:
+
+	:math:`I \otimes MW_a + Q \otimes MW_b = A(t) cos((\omega - \omega_c)t + \phi)`
+
+As seen in the outcome, we can easily generate mircowaves of any frequency with any amplide profile.  This type of modulation is heavily used when performing single qubit gates. *Tip : always make sure to do not modulate on a frequency of* :math:`\omega = 0` *. This will result in a lot of extra* :math:`\frac{1}{f}` *noise, hence worse qubit performace*
+
+Note that next to going down in frequenncy, it is also possible to go up. In priciple yous just have to invert :math:`\omega \rightarrow -\omega`:
+
+	:math:`I = A(t)*cos(\omega t + \phi)`
+
+	:math:`Q = A(t)*cos(\omega t - \frac{\pi}{2} + \phi) = -A(t)*sin(\omega t + \phi)`
+
+Which, when mixing with the carrier results in:
+
+	:math:`I \otimes MW_a + Q \otimes MW_b = A(t) cos((\omega + \omega_c)t + \phi)`
+
+Important note, don't forget that there is noting holding you back from doing:
+
+	:math:`I = \sum_i A_i(t)*cos(\omega_i t + \phi_i)`
+
+	:math:`Q = \sum_i A_i(t)*sin(\omega_i t + \phi_i)`
+
+In this way you can easily generate multiple microwave frequencies at the same know. In the telecom world this is called frequency multiplexing.
\ No newline at end of file
diff --git a/docs/basic_things_to_know/virtual_gates.rst b/docs/basic_things_to_know/virtual_gates.rst
new file mode 100644
index 0000000000000000000000000000000000000000..0def40dd44606cbdd3842fc0551c1191bcba7e91
--- /dev/null
+++ b/docs/basic_things_to_know/virtual_gates.rst
@@ -0,0 +1,42 @@
+.. _virt_gates:
+
+Virtual Gates
+=============
+
+When working with spin qubits, gates control the interaction between the electrons. 
+Often there is cross talk between the gates, e.g. when you change the chemical potential of the first dot with the P1 gate, you would see that the chemical potential of the dots near to the first dot, would also be effected.
+These effect, are classical in nature (-> just capacitance) and can be corrected easily when the capacitaces are known.
+
+
+Defining a virtual gate matrix
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+A virtual gate matrix is a matrix that relates the virtual gate voltages to the real voltages.
+	
+	:math:`\begin{pmatrix} P1 \\ P2 \\ P3 \end{pmatrix} = M \begin{pmatrix} vP1 \\ vP2 \\ vP3 \end{pmatrix}`
+
+When there would me no cross effects, this matrix would look like:
+	
+	:math:`M = \begin{pmatrix} 1  & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix}`
+
+Which gives a one to one map of the virtual gate voltages to the real voltages. In reality, this will not be the case. First you need to measure the cross capacitances between all the dots. This can for example quite easily by extracted <reference> from charge stablility diagram, but there are also many other methods <references>.
+
+Using the cross capacitances, you can generate the following matrix:
+
+	:math:`M^{-1} = \begin{pmatrix} C_{11}  & C_{12} & C_{13} \\ C_{21} & C_{22} & C_{23} \\ C_{31} & C_{32} & C_{33} \end{pmatrix}`
+
+Then when you invert is to :math:`m`, you have your virtual gate matrix.
+
+*tip : When contructing the* :math:`M^{-1}` *matrix, it is recommended to normalize each row of this matrix. Otherwise the ratio of real voltage to virtual gate voltage will always change drasically when adding a gate to the matrix. Also the value of the virtual gate will be kind of similar to the real voltage (easier to keep intution with the voltages).*
+
+How does the software deal with virtual gates
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+As seen in the example :ref:`init file<example_init_lib>` you can define both real and virtual channels.
+
+In the example case, we have the channel B0, B1, B2, P1, P2, and their virtual versions, perluded by the v character (note you can call them anyway you like).
+When assinging pulses to these channels, you can add to the real ones and virtual ones at the same time. When rendering the following will be done, e.g. for B0:
+
+	:math:`B_{0,new}(t) = B_0(t) + \sum_i x_i \: vB_i(t) + \sum_i y_i \: vP_i(t)`
+
+Where :math:`x_i` and :math:`y_i` represent parts out of the virtual gate matrix (-> the first row).
\ No newline at end of file
diff --git a/docs/tutorials/init_lib.rst b/docs/tutorials/init_lib.rst
index 5c3af3b4380acf315a1a0e68fff9a36b150ba120..e52366a87bda0188fe3dc4057f779abd82bb45f9 100644
--- a/docs/tutorials/init_lib.rst
+++ b/docs/tutorials/init_lib.rst
@@ -7,14 +7,15 @@ Before making a pulse, the pulse library needs to know some stuff from you. The
 
    - 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 >
+   - Virtual gates and :ref:`virtual gate matrix<virt_gates>` if needed.
+   - Virtual IQ channels, if you are doing :ref:`IQ modulation<IQ_mod_basics>`
    - :ref:`Channels delay's<chan_delay>` (e.g. if not all you coaxes have the same length)
    - Which channel need a :ref:`DC offset compenstation<dc_offset_comp>` and what the what the allowed values are.
 
 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.
 
+.. _example_init_lib:
 Example : initialization for a two-qubit setup
 ----------------------------------------------
 
diff --git a/docs/tutorials/simple_pulse.rst b/docs/tutorials/simple_pulse.rst
index c98fd74f354c8cc40ca6d397bf48ebb2f7472eda..a2a0fd1ddd2031c7d3512e261eb6f748fad5a891 100644
--- a/docs/tutorials/simple_pulse.rst
+++ b/docs/tutorials/simple_pulse.rst
@@ -30,7 +30,7 @@ Before we can make any pulse, we need to ask the ``pulselib`` object for a segme
 	my_new_pulse_container  = pulse.mk_segment()
 
 Where ``my_new_pulse_container`` is of the type ``segment_container``.
-From this object we can now access all the channels. For example, if we want to make a block pulse on the plunger gate of dot 1, we can call,
+This is an object that contains the pulses for all channels. Now we can access each channnel and perform operations. For example, if you want to make a block pulse on the plunger gate of dot 1, we can call,
 
 .. code-block:: python
 
@@ -39,13 +39,13 @@ From this object we can now access all the channels. For example, if we want to
 	amp = 100 # mV
 	my_new_pulse_container.P1.add_block(start, stop, amp)
 
-So if we want to apply operations on gates, we can access them like:
+The syntax for this last line of code goes as follows:
 
 .. code-block:: python
 
 	segment_container_obj.my_gate_name.operation_you_want_to_do
 
-In this case, we have quite a few gates available (defined in the :ref:`init of pulse_lib<init_lib>`). We can check them,
+In this case, there are quite a few gates available (they were defined in the :ref:`init of pulse_lib<init_lib>`). An other way of checking, is just asking the segment_container object,
 
 .. code-block:: python
 
@@ -77,8 +77,8 @@ Default operations are (can be extended if needed):
 	- adding block shaped pulses
 	- adding ramp's
 	- adding an arbitrary row of times and voltages that define a pulse shape.
-	- add sinus shaped data (for modulation options, use a microwave object)
-	- counting 
+	- add sinus shaped data (for modulation options, use an IQ segment)
+	- Repeating segments 
 	- feature possibility add numpy data.
 
 Important operators are:
@@ -95,7 +95,7 @@ To get intuition what each of this operators does, it is best to try to execute
 Segment container operations
 """"""""""""""""""""""""""""
 
-As mentioned before, this are the containers that contain all the segments and allow you to do also some operation on all the segments at the same time.
+As mentioned before, this are the containers that contain all the segments of all the channnels. There are also some commands that can be executed on the whole container.
 
 Operations include:
 
@@ -105,9 +105,3 @@ Operations include:
 	- reset time : define total_time in all segments as the new time zero.
 
 More on operation can be found in the segment container tutorial.
-
-
-How do virtual gates exactly work here?
-"""""""""""""""""""""""""""""""""""""""
-
-As you
\ No newline at end of file
diff --git a/examples/__pycache__/example_init.cpython-37.pyc b/examples/__pycache__/example_init.cpython-37.pyc
index 4432402296477aee2f3bcd3b6fcf8d82774e1c18..6cbad69281a926d4594dac603034ddca9997f909 100644
Binary files a/examples/__pycache__/example_init.cpython-37.pyc and b/examples/__pycache__/example_init.cpython-37.pyc differ
diff --git a/examples/example_DC_pulses.py b/examples/example_DC_pulses.py
index 74a7f223537efd4dde5b4b43c265245adc3601fa..78296776db14f81bea5eb761093a9665b6539bcc 100644
--- a/examples/example_DC_pulses.py
+++ b/examples/example_DC_pulses.py
@@ -1,3 +1,10 @@
 from example_init import return_pulse_lib
 
-pulse = return_pulse_lib()
\ No newline at end of file
+pulse = return_pulse_lib()
+my_new_pulse_container  = pulse.mk_segment()
+print(my_new_pulse_container.channels)
+
+start = 10 # ns
+stop = 50 # ns
+amp = 100 # mV
+my_new_pulse_container.P1.add_block(start, stop, amp)
\ No newline at end of file
diff --git a/examples/example_init.py b/examples/example_init.py
index 69dbb36b776b07784b603cdbddbd3583ba4a300f..f87a27b47d2502e84f040882499446a956c76592 100644
--- a/examples/example_init.py
+++ b/examples/example_init.py
@@ -49,8 +49,15 @@ def return_pulse_lib():
 	        'MW_marker': 5
 	})
 
+	# add compensation limits
+	pulse.add_channel_compenstation_limits({
+		'B0': (-500,500),'B1': (-500,500),'B2': (-500,500),
+		'P1': (-500,500),'P2': (-500,500),
+		})
 	# finish initialisation (! important if using keysight uploader)
-	return pulse.finish_init()
+	pulse.finish_init()
+
+	return pulse
 
 if __name__ == '__main__':
 	pulse = return_pulse_lib()
\ No newline at end of file
diff --git a/pulse_lib/__pycache__/keysight_fx.cpython-37.pyc b/pulse_lib/__pycache__/keysight_fx.cpython-37.pyc
index 2cd1d532d62afc70f18b3c3d6d00dcfce29e816c..8a9230eb702012ea1b958d130ded995e3227f2b2 100644
Binary files a/pulse_lib/__pycache__/keysight_fx.cpython-37.pyc and b/pulse_lib/__pycache__/keysight_fx.cpython-37.pyc differ
diff --git a/pulse_lib/__pycache__/sequencer.cpython-37.pyc b/pulse_lib/__pycache__/sequencer.cpython-37.pyc
index 6e3ab7dd720878f8d7bd38739d208ebe87f932ad..8a6fdb5e0dc744ed7ec94167a1f55222722e1357 100644
Binary files a/pulse_lib/__pycache__/sequencer.cpython-37.pyc and b/pulse_lib/__pycache__/sequencer.cpython-37.pyc differ
diff --git a/pulse_lib/keysight/__pycache__/__init__.cpython-37.pyc b/pulse_lib/keysight/__pycache__/__init__.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..3879b6381d0e100f89e2c79778c059a40b9d4ea3
Binary files /dev/null and b/pulse_lib/keysight/__pycache__/__init__.cpython-37.pyc differ
diff --git a/pulse_lib/keysight/uploader_core/__pycache__/__init__.cpython-37.pyc b/pulse_lib/keysight/uploader_core/__pycache__/__init__.cpython-37.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..0f7b82e276b38cb5fb13de2443106b5bc9bacad6
Binary files /dev/null and b/pulse_lib/keysight/uploader_core/__pycache__/__init__.cpython-37.pyc differ
diff --git a/pulse_lib/keysight/uploader_core/uploader.cpython-37m-x86_64-linux-gnu.so b/pulse_lib/keysight/uploader_core/uploader.cpython-37m-x86_64-linux-gnu.so
index 4a3e6230f66f137934c4cd1ab0cb0db9f652b782..4d67a342e47e07a07c0a4aec34b692a9a4775b01 100755
Binary files a/pulse_lib/keysight/uploader_core/uploader.cpython-37m-x86_64-linux-gnu.so and b/pulse_lib/keysight/uploader_core/uploader.cpython-37m-x86_64-linux-gnu.so differ
diff --git a/pulse_lib/segments/__pycache__/data_handling_functions.cpython-37.pyc b/pulse_lib/segments/__pycache__/data_handling_functions.cpython-37.pyc
index 0d0f5df9496760114a22a22495f857b3dac9306f..9f1d8505443cf89949c58db75bfe65fbd01e9b71 100644
Binary files a/pulse_lib/segments/__pycache__/data_handling_functions.cpython-37.pyc and b/pulse_lib/segments/__pycache__/data_handling_functions.cpython-37.pyc differ
diff --git a/pulse_lib/segments/__pycache__/looping.cpython-37.pyc b/pulse_lib/segments/__pycache__/looping.cpython-37.pyc
index 539e789f88b5b0255f326948417aa096133161be..f4b273ef74dedc9fb6ab345d52ac3788419b5c8a 100644
Binary files a/pulse_lib/segments/__pycache__/looping.cpython-37.pyc and b/pulse_lib/segments/__pycache__/looping.cpython-37.pyc differ
diff --git a/pulse_lib/segments/__pycache__/segments_IQ.cpython-37.pyc b/pulse_lib/segments/__pycache__/segments_IQ.cpython-37.pyc
index 617d548b5f19b3cbcaeff2c1e1049913270b384f..81a55e7dcc85de7af9ff1c7680dda550613c3814 100644
Binary files a/pulse_lib/segments/__pycache__/segments_IQ.cpython-37.pyc and b/pulse_lib/segments/__pycache__/segments_IQ.cpython-37.pyc differ
diff --git a/pulse_lib/segments/__pycache__/segments_base.cpython-37.pyc b/pulse_lib/segments/__pycache__/segments_base.cpython-37.pyc
index e890134f2a8b865c1d9958a11b21494a00377a34..43d7a53ace4fb98eecd6c868a2b207eb13ad037f 100644
Binary files a/pulse_lib/segments/__pycache__/segments_base.cpython-37.pyc and b/pulse_lib/segments/__pycache__/segments_base.cpython-37.pyc differ
diff --git a/pulse_lib/segments/segments_IQ.py b/pulse_lib/segments/segments_IQ.py
index a6df470e4cb779375ab0942df2325f07398f3a3c..5896811de56a42b8d959d803048abc534b1720b0 100644
--- a/pulse_lib/segments/segments_IQ.py
+++ b/pulse_lib/segments/segments_IQ.py
@@ -45,7 +45,6 @@ class segment_single_IQ(segment_single):
 		self._last_edit = datetime.datetime.now()
 
 		self.ndim = 0
-		self.shape = []
 		self.units = []
 		self.names = []