internlm/SWE-Fixer-Train-110K huggingface dataset:
Repository: Qiskit/qiskit

Issue:
QuantumCircuit needs a .n_qubits method
<!-- ⚠️ If you do not respect this template, your issue will be closed -->
<!-- ⚠️ Make sure to browse the opened and closed issues to confirm this idea does not exist. -->

### What is the expected enhancement?
Since in general `width` is not the number of qubits, circuits should have a `.n_qubits()` method.




Discussion:

Resolving patch:
diff --git a/qiskit/circuit/quantumcircuit.py b/qiskit/circuit/quantumcircuit.py
--- a/qiskit/circuit/quantumcircuit.py
+++ b/qiskit/circuit/quantumcircuit.py
@@ -668,6 +668,16 @@ def width(self):
         """
         return sum(reg.size for reg in self.qregs + self.cregs)
 
+    @property
+    def n_qubits(self):
+        """
+        Return number of qubits.
+        """
+        qubits = 0
+        for reg in self.qregs:
+            qubits += reg.size
+        return qubits
+
     def count_ops(self):
         """Count each operation kind in the circuit.
 


Test patch:
diff --git a/test/python/circuit/test_circuit_properties.py b/test/python/circuit/test_circuit_properties.py
--- a/test/python/circuit/test_circuit_properties.py
+++ b/test/python/circuit/test_circuit_properties.py
@@ -526,6 +526,36 @@ def test_circuit_unitary_factors4(self):
         qc.measure(q[3], c[0])
         self.assertEqual(qc.num_unitary_factors(), 5)
 
+    def test_n_qubits_qubitless_circuit(self):
+        """Check output in absence of qubits
+        """
+        c_reg = ClassicalRegister(3)
+        circ = QuantumCircuit(c_reg)
+        self.assertEqual(circ.n_qubits, 0)
+
+    def test_n_qubits_qubitfull_circuit(self):
+        """Check output in presence of qubits
+        """
+        q_reg = QuantumRegister(4)
+        c_reg = ClassicalRegister(3)
+        circ = QuantumCircuit(q_reg, c_reg)
+        self.assertEqual(circ.n_qubits, 4)
+
+    def test_n_qubits_registerless_circuit(self):
+        """Check output for circuits with direct argument for qubits
+        """
+        circ = QuantumCircuit(5)
+        self.assertEqual(circ.n_qubits, 5)
+
+    def test_n_qubits_multiple_register_circuit(self):
+        """Check output for circuits with multiple quantum registers
+        """
+        q_reg1 = QuantumRegister(5)
+        q_reg2 = QuantumRegister(6)
+        q_reg3 = QuantumRegister(7)
+        circ = QuantumCircuit(q_reg1, q_reg2, q_reg3)
+        self.assertEqual(circ.n_qubits, 18)
+
 
 if __name__ == '__main__':
     unittest.main()
Repository: Qiskit/qiskit

Issue:
Measurement instruction create qobj with wrong memory slot number
<!-- ⚠️ If you do not respect this template, your issue will be closed -->
<!-- ⚠️ Make sure to browse the opened and closed issues -->

### Information

- **Qiskit Terra version**:
- **Python version**:
- **Operating system**:

### What is the current behavior?
All pulse jobs including measurement instruction fail.


### Steps to reproduce the problem



### What is the expected behavior?
`max_memory_slot` in qobj should be configured properly.


### Suggested solutions
https://github.com/Qiskit/qiskit-terra/blob/01bdfe88c15a93fa7548edc0db0e33b287cc8c98/qiskit/assembler/assemble_schedules.py#L73-L74

here the assembler estimates `max_memory_slot` smaller than the actual configuration because `slot.index` starts from zero and maximum index is smaller than number of `mem_slots`.

using `slot.index + 1` or `len(instruction.mem_slots)` will solve the problem.


Discussion:

Resolving patch:
diff --git a/qiskit/assembler/assemble_schedules.py b/qiskit/assembler/assemble_schedules.py
--- a/qiskit/assembler/assemble_schedules.py
+++ b/qiskit/assembler/assemble_schedules.py
@@ -89,7 +89,7 @@ def assemble_schedules(schedules, qobj_id, qobj_header, run_config):
         })
 
     # set number of memoryslots
-    qobj_config['memory_slots'] = max_memory_slot
+    qobj_config['memory_slots'] = max_memory_slot + 1
 
     # setup pulse_library
     qobj_config['pulse_library'] = [PulseLibraryItem(name=pulse.name, samples=pulse.samples)


Test patch:
diff --git a/test/python/compiler/test_assembler.py b/test/python/compiler/test_assembler.py
--- a/test/python/compiler/test_assembler.py
+++ b/test/python/compiler/test_assembler.py
@@ -403,7 +403,17 @@ def test_assemble_memory_slots(self):
         """Test assembling a schedule and inferring number of memoryslots."""
         acquire = pulse.Acquire(5)
         n_memoryslots = 10
-        schedule = acquire(self.device.acquires[0], mem_slots=pulse.MemorySlot(n_memoryslots))
+
+        # single acquisition
+        schedule = acquire(self.device.acquires[0], mem_slots=pulse.MemorySlot(n_memoryslots-1))
+
+        qobj = assemble(schedule, meas_map=[[0], [1]])
+        self.assertEqual(qobj.config.memory_slots, n_memoryslots)
+
+        # multiple acquisition
+        schedule = acquire(self.device.acquires[0], mem_slots=pulse.MemorySlot(n_memoryslots-1))
+        schedule = schedule.insert(10, acquire(self.device.acquires[0],
+                                               mem_slots=pulse.MemorySlot(n_memoryslots-1)))
 
         qobj = assemble(schedule, meas_map=[[0], [1]])
         self.assertEqual(qobj.config.memory_slots, n_memoryslots)
Repository: Qiskit/qiskit

Issue:
ConsolidateBlocks pass drops classical conditionals
From https://travis-ci.com/Qiskit/qiskit-terra/jobs/213175981#L4994 :
```
>>> import qiskit as qk
>>> qc = qk.QuantumCircuit(1,1)
>>> qc.h(0).c_if(qc.cregs[0], 1)
>>> qc.measure(0, 0)
>>> print(qc)
         ┌───┐ ┌─┐
q_0: |0>─┤ H ├─┤M├
         └─┬─┘ └╥┘
        ┌──┴──┐ ║
 c_0: 0 ╡ = 1 ╞═╩═
        └─────┘
>>> print(qk.transpile(qc, optimization_level=3))
        ┌───┐┌─┐
q_0: |0>┤ H ├┤M├
        └───┘└╥┘
 c_0: 0 ══════╩═
>>> print(qk.transpile(qc, optimization_level=2))
         ┌───┐ ┌─┐
q_0: |0>─┤ H ├─┤M├
         └─┬─┘ └╥┘
        ┌──┴──┐ ║
 c_0: 0 ╡ = 1 ╞═╩═
        └─────┘
```


Discussion:
@maddy-tod can you please take this one too, after https://github.com/Qiskit/qiskit-terra/pull/2764?

Resolving patch:
diff --git a/qiskit/transpiler/passes/consolidate_blocks.py b/qiskit/transpiler/passes/consolidate_blocks.py
--- a/qiskit/transpiler/passes/consolidate_blocks.py
+++ b/qiskit/transpiler/passes/consolidate_blocks.py
@@ -99,7 +99,8 @@ def run(self, dag):
 
             if len(block) == 1 and block[0].name != 'cx':
                 # an intermediate node that was added into the overall list
-                new_dag.apply_operation_back(block[0].op, block[0].qargs, block[0].cargs)
+                new_dag.apply_operation_back(block[0].op, block[0].qargs,
+                                             block[0].cargs, block[0].condition)
             else:
                 # find the qubits involved in this block
                 block_qargs = set()
@@ -124,7 +125,7 @@ def run(self, dag):
                         unitary, sorted(block_qargs, key=lambda x: block_index_map[x]))
                 else:
                     for nd in block:
-                        new_dag.apply_operation_back(nd.op, nd.qargs, nd.cargs)
+                        new_dag.apply_operation_back(nd.op, nd.qargs, nd.cargs, nd.condition)
 
         return new_dag
 


Test patch:
diff --git a/test/python/transpiler/test_consolidate_blocks.py b/test/python/transpiler/test_consolidate_blocks.py
--- a/test/python/transpiler/test_consolidate_blocks.py
+++ b/test/python/transpiler/test_consolidate_blocks.py
@@ -248,6 +248,21 @@ def test_node_middle_of_blocks(self):
 
         self.assertEqual(qc, qc1)
 
+    def test_classical_conditions_maintained(self):
+        """Test that consolidate blocks doesn't drop the classical conditions
+        This issue was raised in #2752
+        """
+        qc = QuantumCircuit(1, 1)
+        qc.h(0).c_if(qc.cregs[0], 1)
+        qc.measure(0, 0)
+
+        pass_manager = PassManager()
+        pass_manager.append(Collect2qBlocks())
+        pass_manager.append(ConsolidateBlocks())
+        qc1 = transpile(qc, pass_manager=pass_manager)
+
+        self.assertEqual(qc, qc1)
+
 
 if __name__ == '__main__':
     unittest.main()
Repository: Qiskit/qiskit

Issue:
Depreciation warning in state_visualization.py
<!-- ⚠️ If you do not respect this template, your issue will be closed -->
<!-- ⚠️ Make sure to browse the opened and closed issues to confirm this idea does not exist. -->

### What is the expected enhancement?

/Users/paul/miniconda3/lib/python3.7/site-packages/qiskit_terra-0.9.0-py3.7-macosx-10.7-x86_64.egg/qiskit/visualization/state_visualization.py:731: MatplotlibDeprecationWarning: 
The mod function was deprecated in Matplotlib 3.1 and will be removed in 3.3. Use np.linalg.norm instead.
  for n in normals])





Discussion:

Resolving patch:
diff --git a/qiskit/visualization/state_visualization.py b/qiskit/visualization/state_visualization.py
--- a/qiskit/visualization/state_visualization.py
+++ b/qiskit/visualization/state_visualization.py
@@ -726,9 +726,11 @@ def _shade_colors(color, normals, lightsource=None):
         # chosen for backwards-compatibility
         lightsource = LightSource(azdeg=225, altdeg=19.4712)
 
-    shade = np.array([np.dot(n / proj3d.mod(n), lightsource.direction)
-                      if proj3d.mod(n) else np.nan
-                      for n in normals])
+    def mod(v):
+        return np.sqrt(v[0] ** 2 + v[1] ** 2 + v[2] ** 2)
+
+    shade = np.array([np.dot(n / mod(n), lightsource.direction)
+                      if mod(n) else np.nan for n in normals])
     mask = ~np.isnan(shade)
 
     if mask.any():


Test patch:
Repository: Qiskit/qiskit

Issue:
MPL drawer gates overlap if plot_barriers=False
<!-- ⚠️ If you do not respect this template, your issue will be closed -->
<!-- ⚠️ Make sure to browse the opened and closed issues -->

### Information

- **Qiskit Terra version**: master
- **Python version**:
- **Operating system**:

### What is the current behavior?
There is a `cswap` gate under the column of Hadamards

<img width="553" alt="Screen Shot 2019-08-08 at 9 20 49 PM" src="https://user-images.githubusercontent.com/1249193/62747443-6f45a380-ba22-11e9-996f-34f4acf186df.png">



### Steps to reproduce the problem



### What is the expected behavior?



### Suggested solutions





Discussion:

Resolving patch:
diff --git a/qiskit/visualization/matplotlib.py b/qiskit/visualization/matplotlib.py
--- a/qiskit/visualization/matplotlib.py
+++ b/qiskit/visualization/matplotlib.py
@@ -764,9 +764,6 @@ def _draw_ops(self, verbose=False):
                         _barriers['coord'].append(q_xy[index])
                     if self.plot_barriers:
                         self._barrier(_barriers, this_anc)
-                    else:
-                        # this stop there being blank lines plotted in place of barriers
-                        this_anc -= 1
                 elif op.name == 'initialize':
                     vec = '[%s]' % param
                     self._custom_multiqubit_gate(q_xy, wide=_iswide,
@@ -912,7 +909,14 @@ def _draw_ops(self, verbose=False):
                     logger.critical('Invalid gate %s', op)
                     raise exceptions.VisualizationError('invalid gate {}'.format(op))
 
-            prev_anc = this_anc + layer_width - 1
+            # adjust the column if there have been barriers encountered, but not plotted
+            barrier_offset = 0
+            if not self.plot_barriers:
+                # only adjust if everything in the layer wasn't plotted
+                barrier_offset = -1 if all([op.name in
+                                            ['barrier', 'snapshot', 'load', 'save', 'noise']
+                                            for op in layer]) else 0
+            prev_anc = this_anc + layer_width + barrier_offset - 1
         #
         # adjust window size and draw horizontal lines
         #


Test patch:
Repository: Qiskit/qiskit

Issue:
logger does not reload
```
import logging; import sys
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)

transpile(circuit, coupling_map=coupling_map, optimization_level=0)
```


Discussion:

Resolving patch:
diff --git a/qiskit/compiler/transpile.py b/qiskit/compiler/transpile.py
--- a/qiskit/compiler/transpile.py
+++ b/qiskit/compiler/transpile.py
@@ -14,7 +14,6 @@
 
 """Circuit transpile function"""
 
-import logging
 import warnings
 
 from qiskit.transpiler import Layout, CouplingMap
@@ -32,8 +31,7 @@ def transpile(circuits,
               basis_gates=None, coupling_map=None, backend_properties=None,
               initial_layout=None, seed_transpiler=None,
               optimization_level=None,
-              pass_manager=None, callback=None, output_name=None,
-              log_level=logging.INFO):
+              pass_manager=None, callback=None, output_name=None):
     """Transpile one or more circuits, according to some desired transpilation targets.
 
     All arguments may be given as either singleton or list. In case of list,
@@ -165,19 +163,12 @@ def callback_func(**kwargs):
             A list with strings to identify the output circuits. The length of
             `list[str]` should be exactly the length of `circuits` parameter.
 
-        log_level (int): The python logging level to use for the transpiler
-            passes. You should use the logging level attributes from the stdlib
-            module, for example something like: 'logging.DEBUG'.
-
     Returns:
         QuantumCircuit or list[QuantumCircuit]: transpiled circuit(s).
 
     Raises:
         TranspilerError: in case of bad inputs to transpiler or errors in passes
     """
-    logger = logging.getLogger(name='qiskit.transpiler.passmanager')
-    logger.setLevel(log_level)
-
     # transpiling schedules is not supported yet.
     if isinstance(circuits, Schedule) or \
             (isinstance(circuits, list) and all(isinstance(c, Schedule) for c in circuits)):


Test patch:
Repository: Qiskit/qiskit

Issue:
MPL circuit drawer shifts creg if n_qubits=n_clbits=1
<!-- ⚠️ If you do not respect this template, your issue will be closed -->
<!-- ⚠️ Make sure to browse the opened and closed issues -->

### Information

- **Qiskit Terra version**: 0.9
- **Python version**:
- **Operating system**:

### What is the current behavior?
<img width="158" alt="Screen Shot 2019-08-24 at 6 53 44 AM" src="https://user-images.githubusercontent.com/1249193/63636348-26a20300-c63c-11e9-959c-0bb5758b97ff.png">



### Steps to reproduce the problem



### What is the expected behavior?



### Suggested solutions





Discussion:

Resolving patch:
diff --git a/qiskit/visualization/matplotlib.py b/qiskit/visualization/matplotlib.py
--- a/qiskit/visualization/matplotlib.py
+++ b/qiskit/visualization/matplotlib.py
@@ -592,12 +592,12 @@ def _draw_regs_sub(self, n_fold, feedline_l=False, feedline_r=False):
                              color=self._style.tc,
                              clip_on=True,
                              zorder=PORDER_TEXT)
-            self.ax.text(-0.5, y, this_creg['label'], ha='right', va='center',
+            self.ax.text(self.x_offset, y, this_creg['label'], ha='right', va='center',
                          fontsize=1.5*self._style.fs,
                          color=self._style.tc,
                          clip_on=True,
                          zorder=PORDER_TEXT)
-            self._line([0, y], [self._cond['xmax'], y], lc=self._style.cc,
+            self._line([self.x_offset + 0.5, y], [self._cond['xmax'], y], lc=self._style.cc,
                        ls=self._style.cline, zorder=PORDER_REGLINE)
 
         # lf line


Test patch:
Repository: Qiskit/qiskit

Issue:
making  plot_hinton look nicer 
<!-- ⚠️ If you do not respect this template, your issue will be closed -->
<!-- ⚠️ Make sure to browse the opened and closed issues to confirm this idea does not exist. -->

### What is the expected enhancement?

- [ ] add axes to the image part
- [ ] replace rho with the latex rho. 
- [ ] Use standard format for real and imag parts of rho
- [ ] add a color bar for the height of element. 

<img width="606" alt="image" src="https://user-images.githubusercontent.com/15731369/57204407-a6b93580-6f85-11e9-9195-59b589bcfbd5.png">




Discussion:

Resolving patch:
diff --git a/qiskit/visualization/state_visualization.py b/qiskit/visualization/state_visualization.py
--- a/qiskit/visualization/state_visualization.py
+++ b/qiskit/visualization/state_visualization.py
@@ -104,7 +104,7 @@ def plot_state_hinton(rho, title='', figsize=None):
     ax1.set_xticklabels(column_names, fontsize=14, rotation=90)
     ax1.autoscale_view()
     ax1.invert_yaxis()
-    ax1.set_title('Real[rho]', fontsize=14)
+    ax1.set_title('Re[$\\rho$]', fontsize=14)
     # Imaginary
     ax2.patch.set_facecolor('gray')
     ax2.set_aspect('equal', 'box')
@@ -117,14 +117,15 @@ def plot_state_hinton(rho, title='', figsize=None):
         rect = plt.Rectangle([x - size / 2, y - size / 2], size, size,
                              facecolor=color, edgecolor=color)
         ax2.add_patch(rect)
-    if np.any(dataimag != 0):
-        ax2.set_xticks(np.arange(0, lx+0.5, 1))
-        ax2.set_yticks(np.arange(0, ly+0.5, 1))
-        ax2.set_yticklabels(row_names, fontsize=14)
-        ax2.set_xticklabels(column_names, fontsize=14, rotation=90)
+
+    ax2.set_xticks(np.arange(0, lx+0.5, 1))
+    ax2.set_yticks(np.arange(0, ly+0.5, 1))
+    ax2.set_yticklabels(row_names, fontsize=14)
+    ax2.set_xticklabels(column_names, fontsize=14, rotation=90)
+
     ax2.autoscale_view()
     ax2.invert_yaxis()
-    ax2.set_title('Imag[rho]', fontsize=14)
+    ax2.set_title('Im[$\\rho$]', fontsize=14)
     if title:
         fig.suptitle(title, fontsize=16)
     if get_backend() in ['module://ipykernel.pylab.backend_inline',


Test patch:
Repository: Qiskit/qiskit

Issue:
gatefacecolor key has no effect on circuit diagrams
### Information

- **Qiskit Terra version**: 0.9.0
- **Python version**: 3.7.4
- **Operating system**: Ubuntu 18.04.3

### What is the current behavior?

When plotting circuit diagrams, the `gatefacecolor` key has no effect. 

### Steps to reproduce the problem

```python
from qiskit import QuantumRegister, QuantumCircuit, ClassicalRegister

qr = QuantumRegister(3)
cr = ClassicalRegister(1)
qc1 = QuantumCircuit(qr)

qc1.x(qr[1])
qc1.h(range(3))
qc1.cx(qr[1], qr[2])
qc1.cx(qr[0], qr[1])

style = {'gatefacecolor': '#hhhhhh'}

qc1.draw(output='mpl', style=style).show()
```
Produces this image:

![image](https://user-images.githubusercontent.com/14994219/65039957-454d9e00-d94b-11e9-8945-b2efd43b3f70.png)

The same image is produced using any hex colour code or by removing the gatefacecolor key.

### What is the expected behavior?

The gate faces should be white in this example.

### Suggested solutions

A suggested solution was to use `style=False`, which overrides the default styling and produces a black and white diagram. However, this would not allow the use of other desired style keys such as `'usepiformat': 'true'`.



Discussion:
Working on it

There is a possible overwrite of colors in qiskit/visualization/matplotlib.py

Resolving patch:
diff --git a/qiskit/visualization/matplotlib.py b/qiskit/visualization/matplotlib.py
--- a/qiskit/visualization/matplotlib.py
+++ b/qiskit/visualization/matplotlib.py
@@ -186,7 +186,10 @@ def _custom_multiqubit_gate(self, xy, fc=None, wide=True, text=None,
             _fc = fc
         else:
             if self._style.name != 'bw':
-                _fc = self._style.dispcol['multi']
+                if self._style.gc != DefaultStyle().gc:
+                    _fc = self._style.gc
+                else:
+                    _fc = self._style.dispcol['multi']
                 _ec = self._style.dispcol['multi']
             else:
                 _fc = self._style.gc
@@ -239,6 +242,8 @@ def _gate(self, xy, fc=None, wide=False, text=None, subtext=None):
             wid = WID
         if fc:
             _fc = fc
+        elif self._style.gc != DefaultStyle().gc:
+            _fc = self._style.gc
         elif text and text in self._style.dispcol:
             _fc = self._style.dispcol[text]
         else:
@@ -383,6 +388,9 @@ def _conds(self, xy, istrue=False):
         self.ax.add_patch(box)
 
     def _ctrl_qubit(self, xy, fc=None, ec=None):
+        if self._style.gc != DefaultStyle().gc:
+            fc = self._style.gc
+            ec = self._style.gc
         if fc is None:
             fc = self._style.lc
         if ec is None:
@@ -395,6 +403,9 @@ def _ctrl_qubit(self, xy, fc=None, ec=None):
 
     def _tgt_qubit(self, xy, fc=None, ec=None, ac=None,
                    add_width=None):
+        if self._style.gc != DefaultStyle().gc:
+            fc = self._style.gc
+            ec = self._style.gc
         if fc is None:
             fc = self._style.dispcol['target']
         if ec is None:


Test patch:
Repository: Qiskit/qiskit

Issue:
QuantumCircuit mirror method failure
<!-- ⚠️ If you do not respect this template, your issue will be closed -->
<!-- ⚠️ Make sure to browse the opened and closed issues -->

### Information
 
- **Qiskit Terra version**: 0.10.0
- **Python version**: 3.6.8
- **Operating system**: MacOS, Ubuntu

### What is the current behavior?
The mirror method calls the append method in the circuit passing a tuple while the signature should is: 'append(self, instruction, qargs=None, cargs=None)' causing the append method to fail.
This causes Aqua unit test to fail.

### Steps to reproduce the problem



### What is the expected behavior?



### Suggested solutions
The problem is at line 191 of quantumcircuit.py. I believe it should be: reverse_circ.append(inst.mirror(), qargs, cargs)




Discussion:

Resolving patch:
diff --git a/qiskit/circuit/quantumcircuit.py b/qiskit/circuit/quantumcircuit.py
--- a/qiskit/circuit/quantumcircuit.py
+++ b/qiskit/circuit/quantumcircuit.py
@@ -188,7 +188,7 @@ def mirror(self):
         reverse_circ = self.copy(name=self.name + '_mirror')
         reverse_circ._data = []
         for inst, qargs, cargs in reversed(self.data):
-            reverse_circ.append((inst.mirror(), qargs, cargs))
+            reverse_circ.append(inst.mirror(), qargs, cargs)
         return reverse_circ
 
     def inverse(self):


Test patch:
diff --git a/test/python/circuit/test_circuit_operations.py b/test/python/circuit/test_circuit_operations.py
--- a/test/python/circuit/test_circuit_operations.py
+++ b/test/python/circuit/test_circuit_operations.py
@@ -158,6 +158,26 @@ def test_copy_circuit(self):
 
         self.assertEqual(qc, qc.copy())
 
+    def test_mirror(self):
+        """Test mirror method reverses but does not invert."""
+        qc = QuantumCircuit(2, 2)
+        qc.h(0)
+        qc.s(1)
+        qc.cx(0, 1)
+        qc.measure([0, 1], [0, 1])
+        qc.x(0)
+        qc.y(1)
+
+        expected = QuantumCircuit(2, 2)
+        expected.y(1)
+        expected.x(0)
+        expected.measure([0, 1], [0, 1])
+        expected.cx(0, 1)
+        expected.s(1)
+        expected.h(0)
+
+        self.assertEqual(qc.mirror(), expected)
+
 
 class TestCircuitBuilding(QiskitTestCase):
     """QuantumCircuit tests."""
Repository: Qiskit/qiskit

Issue:
Make it easier to import average_data
<!-- ⚠️ If you do not respect this template, your issue will be closed -->
<!-- ⚠️ Make sure to browse the opened and closed issues to confirm this idea does not exist. -->

### What is the expected enhancement?

Should be able to import `qiskit.quantum_info.analysis.average.average_data` directly from `qiskit.quantum_info`



Discussion:
Hi @nonhermitian! I'll work on this one

Resolving patch:
diff --git a/qiskit/quantum_info/analysis/__init__.py b/qiskit/quantum_info/analysis/__init__.py
--- a/qiskit/quantum_info/analysis/__init__.py
+++ b/qiskit/quantum_info/analysis/__init__.py
@@ -13,3 +13,4 @@
 # that they have been altered from the originals.
 
 """Module for functions for post processing results."""
+from .average import average_data


Test patch: