



"""simple docstring"""

import qiskit




def __lowercase			(							_a		,			_a    ):
    snake_case_ :     int				=	qiskit.Aer.get_backend('''aer_simulator'''    )

    # Create a Quantum Circuit acting on the q register
    snake_case_ :     List[str]				=	qiskit.QuantumCircuit(_a		,			_a    )

    # Map the quantum measurement to the classical bits
    circuit.measure([0]		,			[0]    )

    # Execute the circuit on the simulator
    snake_case_ :     Dict				=	qiskit.execute(_a		,			_a		,			shots=1_000    )

    # Return the histogram data of the results of the experiment.
    return job.result().get_counts(_a    )


if __name__ == "__main__":
     print(f'Total count for various states are: {single_qubit_measure(1, 1)}')










"""simple docstring"""

import numpy as np
import torch
from torch.utils.data import Dataset

from utils import logger




class        _UpperCAmelCase       (			lowerCAmelCase__):

 def __init__(     self		:       Optional[int]  ,     lowercase_		:       str  ,     lowercase_		:       int				):
     snake_case_ :     Dict				=	params

     snake_case_ :     Union[str, Any]				=	np.array(lowercase_				)
     snake_case_ :     str				=	np.array([len(lowercase_				) for t in data]				)

     self.check()
     self.remove_long_sequences()
     self.remove_empty_sequences()
     self.remove_unknown_sequences()
     self.check()
     self.print_statistics()

 def __getitem__(     self		:       Dict  ,     lowercase_		:       Union[str, Any]				):
     return (self.token_ids[index], self.lengths[index])

 def __len__(     self		:       List[Any]				):
     return len(self.lengths				)

 def 						_snake_case					(     self		:       Tuple				):
     assert len(self.token_ids				) == len(self.lengths				)
     assert all(self.lengths[i] == len(self.token_ids[i]				) for i in range(len(self.lengths				)				)				)

 def 						_snake_case					(     self		:       Tuple				):
     snake_case_ :     str				=	self.params.max_model_input_size
     snake_case_ :     Dict				=	self.lengths > max_len
     logger.info(f"Splitting {sum(lowercase_				)} too long sequences."				)

     def divide_chunks(lowercase_		:       Tuple  ,     lowercase_		:       Optional[Any]				):
         return [l[i : i + n] for i in range(0  ,     len(lowercase_				)  ,     lowercase_				)]

     snake_case_ :     Tuple				=	[]
     snake_case_ :     Any				=	[]
     if self.params.mlm:
         snake_case_,	snake_case_ :     Union[str, Any]				=	self.params.special_tok_ids['''cls_token'''], self.params.special_tok_ids['''sep_token''']
     else:
         snake_case_,	snake_case_ :     Dict				=	self.params.special_tok_ids['''bos_token'''], self.params.special_tok_ids['''eos_token''']

     for seq_, len_ in zip(self.token_ids  ,     self.lengths				):
         assert (seq_[0] == cls_id) and (seq_[-1] == sep_id), seq_
         if len_ <= max_len:
             new_tok_ids.append(seq_				)
             new_lengths.append(len_				)
         else:
             snake_case_ :     Any				=	[]
             for sub_s in divide_chunks(seq_  ,     max_len - 2				):
                 if sub_s[0] != cls_id:
                     snake_case_ :     Dict				=	np.insert(lowercase_  ,     0  ,     lowercase_				)
                 if sub_s[-1] != sep_id:
                     snake_case_ :     Tuple				=	np.insert(lowercase_  ,     len(lowercase_				)  ,     lowercase_				)
                 assert len(lowercase_				) <= max_len
                 assert (sub_s[0] == cls_id) and (sub_s[-1] == sep_id), sub_s
                 sub_seqs.append(lowercase_				)

             new_tok_ids.extend(lowercase_				)
             new_lengths.extend([len(lowercase_				) for l in sub_seqs]				)

     snake_case_ :     List[str]				=	np.array(lowercase_				)
     snake_case_ :     Optional[Any]				=	np.array(lowercase_				)

 def 						_snake_case					(     self		:       Optional[int]				):
     snake_case_ :     List[Any]				=	len(self				)
     snake_case_ :     List[str]				=	self.lengths > 11
     snake_case_ :     Dict				=	self.token_ids[indices]
     snake_case_ :     Dict				=	self.lengths[indices]
     snake_case_ :     str				=	len(self				)
     logger.info(f"Remove {init_size - new_size} too short (<=11 tokens) sequences."				)

 def 						_snake_case					(     self		:       Tuple				):
     if "unk_token" not in self.params.special_tok_ids:
         return
     else:
         snake_case_ :     str				=	self.params.special_tok_ids['''unk_token''']
     snake_case_ :     str				=	len(self				)
     snake_case_ :     int				=	np.array([np.count_nonzero(a == unk_token_id				) for a in self.token_ids]				)
     snake_case_ :     str				=	(unk_occs / self.lengths) < 0.5
     snake_case_ :     Optional[Any]				=	self.token_ids[indices]
     snake_case_ :     Optional[int]				=	self.lengths[indices]
     snake_case_ :     Dict				=	len(self				)
     logger.info(f"Remove {init_size - new_size} sequences with a high level of unknown tokens (50%)."				)

 def 						_snake_case					(     self		:       Dict				):
     if not self.params.is_master:
         return
     logger.info(f"{len(self				)} sequences"				)
     # data_len = sum(self.lengths)
     # nb_unique_tokens = len(Counter(list(chain(*self.token_ids))))
     # logger.info(f'{data_len} tokens ({nb_unique_tokens} unique)')

     # unk_idx = self.params.special_tok_ids['unk_token']
     # nb_unknown = sum([(t==unk_idx).sum() for t in self.token_ids])
     # logger.info(f'{nb_unknown} unknown tokens (covering {100*nb_unknown/data_len:.2f}% of the data)')






 def 						_snake_case					(     self		:       List[str]  ,     lowercase_		:       Dict				):
     snake_case_ :     Optional[int]				=	[t[0] for t in batch]
     snake_case_ :     str				=	[t[1] for t in batch]
     assert len(lowercase_				) == len(lowercase_				)

     # Max for paddings
     snake_case_ :     str				=	max(lowercase_				)

     # Pad token ids
     if self.params.mlm:
         snake_case_ :     Tuple				=	self.params.special_tok_ids['''pad_token''']
     else:
         snake_case_ :     Dict				=	self.params.special_tok_ids['''unk_token''']
     snake_case_ :     Any				=	[list(t.astype(lowercase_				)				) + [pad_idx] * (max_seq_len_ - len(lowercase_				)) for t in token_ids]
     assert len(tk_				) == len(lowercase_				)
     assert all(len(lowercase_				) == max_seq_len_ for t in tk_				)

     snake_case_ :     str				=	torch.tensor(tk_				)  # (bs, max_seq_len_)
     snake_case_ :     Optional[int]				=	torch.tensor(lowercase_				)  # (bs)
     return tk_t, lg_t





