From a432cab112b5d1a62e73f036e8a22f1bcc757962 Mon Sep 17 00:00:00 2001 From: Stephen DiAdamo Date: Wed, 24 Jun 2020 15:12:50 +0100 Subject: [PATCH] Update docs --- docs/_build/.doctrees/components/host.doctree | Bin 267753 -> 268821 bytes docs/_build/.doctrees/environment.pickle | Bin 68091 -> 68168 bytes docs/_build/components/host.html | 24 ++++++++++-------- docs/_build/searchindex.js | 2 +- qunetsim/components/host.py | 15 ++++++----- 5 files changed, 23 insertions(+), 18 deletions(-) diff --git a/docs/_build/.doctrees/components/host.doctree b/docs/_build/.doctrees/components/host.doctree index 69795dd79cd5743b595066ea466de22d440044e3..6dc890b67364ec59b53f35b6dcdff145d34cc9f6 100644 GIT binary patch delta 26601 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 delta 27167 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%0A7K829CC&t_{Rdh)2U-qn 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

Gets the received classical messages sorted with the sequence number.

Returns
-

Sorted array of classical messages.

+

Sorted list of classical messages.

Return type
-

Array

+

(list)

@@ -563,6 +563,9 @@

Host
Returns

The delay per tick for the queue processor.

+
Return type
+

(float)

+
@@ -570,6 +573,11 @@

Host
empty_classical(reset_seq_nums=False)

Empty the classical message buffers.

+
+
Parameters
+

reset_seq_nums (bool) – if all sequence number should also be reset.

+
+
@@ -952,10 +960,10 @@

Host¶ :type receiver_id: str

Returns
-

a two element array of the status of the removals.

+

a two element list of the status of the removals.

Return type
-

list

+

(list)

@@ -1091,14 +1099,10 @@

Host
Returns
-

-
Qubit which belongs to the host and is part of the

GHZ state and ID which all Qubits will have.

-
-
-

+

Qubit ID of the shared GHZ and ACK status

Return type
-

Q_id, Qubit

+

(str, bool)

diff --git a/docs/_build/searchindex.js b/docs/_build/searchindex.js index 5b81bf75..ed19e504 100644 --- a/docs/_build/searchindex.js +++ b/docs/_build/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["backends","components","components/host","components/network","components/protocols","design","examples","examples/QKD","examples/anonymous_transfer","examples/chsh","examples/entanglement_routing","examples/packet_sniffing","examples/quantum_coin_flipping","examples/quantum_money","examples/send_data","examples/send_epr","index","install","install/linux_mac","install/windows","intro","objects","objects/classical_storage","objects/message","objects/packet","objects/quantum_storage","objects/qubit","objects/routing_packet","quick_start"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["backends.rst","components.rst","components/host.rst","components/network.rst","components/protocols.rst","design.rst","examples.rst","examples/QKD.rst","examples/anonymous_transfer.rst","examples/chsh.rst","examples/entanglement_routing.rst","examples/packet_sniffing.rst","examples/quantum_coin_flipping.rst","examples/quantum_money.rst","examples/send_data.rst","examples/send_epr.rst","index.rst","install.rst","install/linux_mac.rst","install/windows.rst","intro.rst","objects.rst","objects/classical_storage.rst","objects/message.rst","objects/packet.rst","objects/quantum_storage.rst","objects/qubit.rst","objects/routing_packet.rst","quick_start.rst"],objects:{"qunetsim.components":{host:[2,0,0,"-"],network:[3,0,0,"-"],protocols:[4,0,0,"-"]},"qunetsim.components.host":{Host:[2,1,1,""]},"qunetsim.components.host.Host":{add_c_connection:[2,2,1,""],add_c_connections:[2,2,1,""],add_checksum:[2,2,1,""],add_connection:[2,2,1,""],add_connections:[2,2,1,""],add_data_qubit:[2,2,1,""],add_epr:[2,2,1,""],add_ghz_qubit:[2,2,1,""],add_q_connection:[2,2,1,""],add_q_connections:[2,2,1,""],await_ack:[2,2,1,""],await_remaining_acks:[2,2,1,""],change_epr_qubit_id:[2,2,1,""],classical:[2,2,1,""],classical_connections:[2,2,1,""],delay:[2,2,1,""],empty_classical:[2,2,1,""],get_classical:[2,2,1,""],get_connections:[2,2,1,""],get_data_qubit:[2,2,1,""],get_data_qubits:[2,2,1,""],get_epr:[2,2,1,""],get_epr_pairs:[2,2,1,""],get_ghz:[2,2,1,""],get_next_classical:[2,2,1,""],get_next_classical_message:[2,2,1,""],get_next_sequence_number:[2,2,1,""],get_sequence_number:[2,2,1,""],get_sequence_number_receiver:[2,2,1,""],host_id:[2,2,1,""],is_idle:[2,2,1,""],max_ack_wait:[2,2,1,""],q_relay_sniffing:[2,2,1,""],q_relay_sniffing_fn:[2,2,1,""],quantum_connections:[2,2,1,""],quantum_relay_sniffing_function:[2,2,1,""],rec_packet:[2,2,1,""],relay_sniffing_function:[2,2,1,""],remove_c_connection:[2,2,1,""],remove_connection:[2,2,1,""],remove_q_connection:[2,2,1,""],reset_sequence_numbers:[2,2,1,""],run_protocol:[2,2,1,""],send_ack:[2,2,1,""],send_broadcast:[2,2,1,""],send_classical:[2,2,1,""],send_epr:[2,2,1,""],send_ghz:[2,2,1,""],send_key:[2,2,1,""],send_qubit:[2,2,1,""],send_superdense:[2,2,1,""],send_teleport:[2,2,1,""],set_data_qubit_memory_limit:[2,2,1,""],set_epr_memory_limit:[2,2,1,""],shares_epr:[2,2,1,""],sniff_full_packet:[2,2,1,""],start:[2,2,1,""],stop:[2,2,1,""],storage_epr_limit:[2,2,1,""],storage_limit:[2,2,1,""]},"qunetsim.components.network":{Network:[3,1,1,""]},"qunetsim.components.network.Network":{add_host:[3,2,1,""],add_hosts:[3,2,1,""],classical_routing_algo:[3,2,1,""],delay:[3,2,1,""],draw_classical_network:[3,2,1,""],draw_quantum_network:[3,2,1,""],get_ARP:[3,2,1,""],get_classical_route:[3,2,1,""],get_host:[3,2,1,""],get_host_name:[3,2,1,""],get_quantum_route:[3,2,1,""],packet_drop_rate:[3,2,1,""],quantum_routing_algo:[3,2,1,""],remove_host:[3,2,1,""],send:[3,2,1,""],shares_epr:[3,2,1,""],start:[3,2,1,""],stop:[3,2,1,""],update_host:[3,2,1,""],use_hop_by_hop:[3,2,1,""],x_error_rate:[3,2,1,""],z_error_rate:[3,2,1,""]},"qunetsim.components.protocols":{encode:[4,3,1,""],process:[4,3,1,""]},"qunetsim.objects":{classical_storage:[22,0,0,"-"],message:[23,0,0,"-"],packet:[24,0,0,"-"],quantum_storage:[25,0,0,"-"],qubit:[26,0,0,"-"],routing_packet:[27,0,0,"-"]},"qunetsim.objects.classical_storage":{ClassicalStorage:[22,1,1,""]},"qunetsim.objects.classical_storage.ClassicalStorage":{add_msg_to_storage:[22,2,1,""],empty:[22,2,1,""],get_all:[22,2,1,""],get_all_from_sender:[22,2,1,""],get_next_from_sender:[22,2,1,""],remove_all_ack:[22,2,1,""]},"qunetsim.objects.message":{Message:[23,1,1,""]},"qunetsim.objects.message.Message":{content:[23,2,1,""],sender:[23,2,1,""],seq_num:[23,2,1,""]},"qunetsim.objects.packet":{Packet:[24,1,1,""]},"qunetsim.objects.packet.Packet":{await_ack:[24,2,1,""],payload:[24,2,1,""],payload_type:[24,2,1,""],protocol:[24,2,1,""],receiver:[24,2,1,""],sender:[24,2,1,""],seq_num:[24,2,1,""]},"qunetsim.objects.quantum_storage":{QuantumStorage:[25,1,1,""]},"qunetsim.objects.quantum_storage.QuantumStorage":{add_qubit_from_host:[25,2,1,""],change_qubit_id:[25,2,1,""],check_qubit_from_host_exists:[25,2,1,""],get_all_qubits_from_host:[25,2,1,""],get_qubit_from_host:[25,2,1,""],release_storage:[25,2,1,""],reset_storage:[25,2,1,""],set_storage_limit_with_host:[25,2,1,""]},"qunetsim.objects.qubit":{InputError:[26,4,1,""],Qubit:[26,1,1,""]},"qunetsim.objects.qubit.Qubit":{H:[26,2,1,""],I:[26,2,1,""],K:[26,2,1,""],T:[26,2,1,""],X:[26,2,1,""],Y:[26,2,1,""],Z:[26,2,1,""],blocked:[26,2,1,""],cnot:[26,2,1,""],cphase:[26,2,1,""],custom_controlled_gate:[26,2,1,""],custom_gate:[26,2,1,""],custom_two_qubit_gate:[26,2,1,""],host:[26,2,1,""],id:[26,2,1,""],measure:[26,2,1,""],qubit:[26,2,1,""],release:[26,2,1,""],rx:[26,2,1,""],ry:[26,2,1,""],rz:[26,2,1,""],send_to:[26,2,1,""]},"qunetsim.objects.routing_packet":{RoutingPacket:[27,1,1,""]},"qunetsim.objects.routing_packet.RoutingPacket":{decrease_ttl:[27,2,1,""],payload:[27,2,1,""],payload_type:[27,2,1,""],protocol:[27,2,1,""],receiver:[27,2,1,""],route:[27,2,1,""],sender:[27,2,1,""],ttl:[27,2,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","function","Python function"],"4":["py","exception","Python exception"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:function","4":"py:exception"},terms:{"2x2":26,"\u03b8":12,"\u03c8_0":12,"\u03c8_1":12,"\u03c8_a_j":12,"\u03c8_b_j_bar":12,"\u03c8_d":12,"\u03c8_d_bar":12,"\u03c8_e_ij":12,"\u03c8_e_ij_bar":12,"boolean":[2,3,14],"case":[2,9,17,18,19,25],"char":7,"class":[0,2,3,22,23,24,25,26,27],"default":[0,2,3,22,25,28],"export":[17,18],"final":[7,8,12,28],"float":[2,3,26],"function":[0,2,3,4,7,8,10,13,20,25,28],"import":[0,3,7,8,9,10,11,12,13,14,15,28],"int":[2,4,7,8,9,12,22,23,24,25,26,27],"long":[2,9],"new":[2,12,17,19,20,25,28],"return":[0,2,3,4,7,8,10,12,13,14,20,22,23,24,25,26,27],"true":[2,3,7,8,9,10,11,12,13,14,15,25,28],"try":10,"while":[7,8,10,13],AES:7,Eve:[0,7,11,13,14],For:[2,8,9,11,12,17,18,20,28],IDs:[0,2,7,8,27],Not:21,One:[2,8,20,28],The:[0,1,2,3,4,7,8,9,10,11,12,13,14,15,17,18,19,20,21,22,23,24,25,26,27,28],Then:9,There:0,These:[13,25],WILL:2,With:[0,3,8,9,14],__main__:[7,8,9,11,12,13,14,15,28],__name__:[7,8,9,11,12,13,14,15,28],_host:0,a_j:12,a_tild:12,abil:[3,21],abl:7,about:[12,20],abov:[17,18,19],abs:12,accept:12,access:[0,1,9,14,20,21],accomplish:[2,8],accord:[4,8],accur:20,achiev:[13,20],ack:[2,4,7,8,14,15,22,24],ack_arriv:[14,15],acknowledg:[14,20,23,28],acknowleg:2,act:[2,8,13],action:7,activ:[17,18,19],add:[0,2,3,7,8,10,11,14,17,19,21,22,25,26],add_c_connect:[2,8,9,15],add_checksum:2,add_connect:[0,2,7,8,9,10,11,12,13,14,15,28],add_data_qubit:2,add_edg:10,add_epr:[2,8],add_ghz_qubit:2,add_host:[0,3,7,8,9,10,11,12,13,14,15,28],add_msg_to_storag:22,add_q_connect:[2,15],add_qubit_from_host:25,added:[2,3,14,15,20,28],adding:15,addit:26,address:23,advanc:[8,17,19],after:[10,12,13,14,17,18,19,25,27,28],again:[7,17,18,19],agre:[8,12],ahead:1,aim:13,algorithm:[3,7,10,20],alic:[0,7,9,11,14,28],alice_class:9,alice_func:7,alice_host:9,alice_id:9,alice_messag:11,alice_qkd:7,alice_quantum:9,alice_respons:9,alice_send_messag:7,all:[0,2,3,7,8,9,11,12,14,15,20,21,22,25,28],alloc:12,allow:[10,20],along:[8,13,24,28],alreadi:[2,17,19,20],also:[0,1,2,7,11,12,13,20,21,23],altern:[17,18,19],although:20,alwai:[0,8,11,12,15],amongst:[8,9],amount:[2,3,10,20,25],amount_to_transmit:11,amount_transmit:11,analog:[2,24,27],angl:26,ani:[0,2,8,9,10,12,14,28],anonym:[6,16],anoth:[0,2,9,20,26,28],answer:7,anymor:25,anyth:8,appear:[8,23],append:[7,13],appli:[2,3,7,8,11,13,14,26,28],applic:[1,2,15,20],approach:9,arbitrari:[20,28],architectur:20,area:[17,19],arg:[9,10,13,15],argument:[0,2,12],around:20,arp:3,arrai:2,arriv:[2,8,14,15,20,22,25],arxiv:12,assign:13,associ:13,assum:[14,28],assumpt:20,asynchron:20,attack:[6,16],attempt:[8,13],avail:[2,8],avoid:20,awai:14,await:[2,4,8,9,13,14],await_ack:[2,4,7,8,9,10,11,12,13,14,15,24,28],await_remaining_ack:2,axi:9,b_j:12,back:[9,12,15],backend:[2,3,5,9,12,13,16,21,26],bad:7,bank:13,bank_basi:13,bank_bit:13,banker:13,banker_protocol:13,banknot:13,bar:12,base:[6,7,10,12,13,16,20],basi:[7,8,9,12],basic:0,becaus:[7,9,12,14],becom:0,bee:7,been:[0,2,8,12,25],befor:[2,9,14],begin:[3,12,28],behav:[2,8],behaviour:8,being:[7,11,13,14,20,28],belong:[0,2,26],below:[0,7,8,9,10,11,12,13,14,15,17,20,21,24,28],best:10,better:[21,25,26],between:[3,8,11,20],bin:[17,18],binari:2,bit:[2,7,8,9,12],bit_no:13,block:[2,8,9,13,14,20,22,25,26,28],blown:20,bob:[0,7,9,11,14],bob_class:9,bob_host:9,bob_id:9,bob_quantum:9,bob_respons:9,bob_sniffing_class:11,bob_sniffing_quantum:11,bool:[2,3,4,24,25,26],both:[9,12,20,25,28],bottom:[17,19],box:0,briefli:12,broadcast:[2,8],buffer:[0,2],build:[3,10,15],built:[8,20,28],c_ij:12,call:[0,2,8,9,14,17,25,28],came:15,can:[0,1,2,3,7,8,9,11,12,13,14,17,18,19,20,21,25,26,28],cannot:9,categor:21,caus:13,certain:1,chang:[0,2,3,7,8,9,11,12,17,18,19,25],change_epr_qubit_id:2,change_qubit_id:25,channel:[2,6,16],cheat:[12,13],cheat_alert:13,cheater:12,check:[2,7,12,13,25],check_qubit_from_host_exist:25,checksum:2,choic:[8,9,10],choos:[7,8,20],chose:[0,12],chosen:12,chr:7,chsh:[6,16],clasic:2,classic:[2,3,5,7,8,9,11,13,14,15,20,21,23,24,27,28],classical_connect:2,classical_routing_algo:3,classical_storag:22,classicalstorag:22,clear:2,click:[17,19],clone:[17,18,19],cnot:26,code:[0,2,11,14,15,20,28],coin:[6,16],collect:8,colour:20,com:[17,18,19],come:[1,17,20],comma:28,command:[17,18,28],common:[17,18,19,20],commonli:[2,3],commun:[7,9,14,20],compar:7,compil:[17,18,19],complet:[8,28],complic:20,compon:[2,3,4,5,7,8,9,10,11,12,13,14,15,16,21,22,24,25,28],comput:[0,8,10],concaten:[7,12],concatent:7,configur:[2,3,10,14,28],connect:[2,3,7,9,10,14,15,20,28],consid:[10,20],consist:12,consol:28,constant:24,constantli:10,contain:[11,23],content:[8,9,11,12,13,16,23,28],continu:[7,14],control:[3,8,13,26],cooper:9,copi:12,core:20,correct:[8,13,17,18,19,20,28],correspond:2,could:20,cphase:26,cppsimul:[17,18,19],cqcbackend:12,creat:[0,2,7,13,14,20,21,23,24],create_epr:0,create_qubit:0,creation:8,creativ:28,crypto:7,current:[0,20,21],custom:[10,13,20,26],custom_controlled_g:26,custom_g:26,custom_two_qubit_g:26,customer_protocol:13,d_ij:12,daemonthread:2,data:[2,4,6,13,16,25,27],databas:13,dean:14,decid:7,decod:[1,4,7,12],decoher:21,decreas:27,decrease_ttl:27,decrypt:7,decrypted_msg_from_alic:7,def:[0,7,8,9,10,11,12,13,14,15,28],defin:[0,3,7,11,15,26,28],del:13,delai:[2,3,7,11,12,13,14],delet:[2,22],delt:22,demonstr:[8,20],depend:[2,3,4,9,12,25,26],depict:3,describ:0,descript:12,design:[16,20,21,28],dest:3,destin:[3,20],destruct:[0,13],detail:[12,20,21],determin:[12,26],develop:[0,2,8,9,20,21,25,28],devis:9,di_graph:10,dict:[2,3],dictionari:[0,2],did:[13,14,15],didn:14,differ:[0,3,7,13,20,26,27],digraph:10,direct:[10,13,14,15],direction:[14,15],directli:[1,8,14,21,24],directori:[17,18,19],disabl:[7,9,11,13,15,28],distant:1,distantli:20,distribut:[2,6,8,9,13,16,20],distributor:8,disturb:[7,13],document:[17,18,19],doe:[2,8,9,12,13,21,25],doesn:[2,8,13],done:[8,9,10,15],dont:[17,18,19],dose:0,download:[17,18,19],draw:3,draw_classical_network:3,draw_quantum_network:3,driven:20,drop:3,dtype:12,dure:[9,12],e_ij:12,each:[1,3,7,9,10,14,17,25],earlier:12,easier:8,easili:8,eavesdrop:[2,6,16],eavesdropp:[2,11,13],edg:10,edit:[17,18,19],educ:20,either:[2,7,9,14,20],element:[2,28],elimin:[26,27],els:[2,7,9,10,12,13,14,15],empti:[2,22],empty_class:[2,8],encod:[1,2,4,24],encrypt:7,encrypted_msg_from_alic:7,encrypted_msg_to_ev:7,encrypted_text:7,end:[7,8,12,14,15],ensur:[14,28],entangl:[0,1,2,6,9,16,20],entanglement_network:10,enter:28,entir:[2,8],environ:[17,18,19],epr:[2,3,6,8,9,16,20,25],epr_id:[8,15],eqsn:[0,9],eqsnbackend:[0,12],equat:9,error:[3,10,26],esqn:9,establish:[2,8,15,28],etc:24,eve:[7,11],eve_func:7,eve_kei:7,eve_qkd:7,eve_receive_messag:7,even:20,event:20,everi:[12,13],exact:[9,25],exactli:10,exampl:[0,2,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,25,26,28],exceed:14,except:[9,10,26],excit:[11,14],exist:[2,17,19,20,22,25],exit:11,expect:0,expir:15,explan:26,explanatori:0,explicitli:0,express:26,extra:23,f_ij:12,fail:8,fals:[2,3,4,7,8,10,13,24,25,26],familiar:7,featur:[1,2,20],fetch:8,field:[0,8],figur:15,file:[0,17,18,19,28],first:[2,7,8,11,12,13,14,15,28],flag:[8,14],flexibl:20,flip:[6,16],flow:[14,15],follow:[0,1,8,9,10,11,17,28],forev:[2,22,25],form:[4,15],format:9,found:[12,20],frac:12,framework:20,free:2,from:[0,2,3,7,8,9,10,11,12,13,14,15,20,22,25,26,27,28],from_host_id:[0,25],from_send:22,full:[7,8,9,10,11,12,13,14,15,20,28],fulli:28,further:[21,25],futur:20,gain:12,game:[6,16],gate:[0,3,8,14,26,28],gener:[1,2,3,7,8,9,10,12,15,17,18,19,20,21,24,28],generate_entangl:10,generate_epr_if_non:[2,8],get:[2,3,7,12,13,14,17,18,19,20,22,25,28],get_al:22,get_all_from_send:22,get_all_qubits_from_host:25,get_apr:3,get_arp:3,get_class:[2,9,11,13],get_classical_rout:3,get_connect:[2,10],get_data_qubit:[2,7,8,11,12,13,14,28],get_epr:[2,9,15],get_epr_pair:[2,10],get_from_dict:0,get_ghz:[2,8],get_host:[3,10],get_host_nam:3,get_inst:[0,7,8,9,10,11,12,13,14,15,28],get_next_class:[2,12],get_next_classical_messag:[2,7],get_next_from_send:22,get_next_sequence_numb:2,get_quantum_rout:3,get_qubit_from_host:25,get_sequence_numb:2,get_sequence_number_receiv:2,ghz:[2,6,16],git:[17,18,19],github:[17,18,19],give:[0,12,17,20,26,28],given:[3,8,12,22,25],global:[8,17,18,19],goal:8,goe:27,got:[12,15],graph:[3,10,20],greater:[17,18,19],grid:15,group:8,guid:16,hadamard:[8,26,28],half:[2,8,9],halv:2,handl:20,happen:20,has:[0,1,2,3,7,8,9,10,12,13,14,25],have:[0,2,3,7,8,9,10,12,14,15,17,18,19,21,26,27,28],haven:12,header:4,held:2,help:20,helper:7,her:[7,11,12,14],here:[1,7,8,9,11,12,14,15,17,18,19,28],hide:8,high:[8,20],him:[11,12],his:[7,9,12,13],holder:8,hop:[3,14,20,27],hope:21,hopefulli:0,host:[0,1,3,5,7,8,9,10,11,12,13,14,15,20,21,22,23,25,26,27,28],host_:8,host_a:[8,9,12,15,28],host_alic:[0,7,11,14],host_b:[8,9,12,15,28],host_bank:13,host_bob:[0,7,11,14],host_c:[8,9,15,28],host_connect:10,host_custom:13,host_d:[8,28],host_dean:14,host_ev:[0,7,11,13,14],host_id:[0,2,3,7,8,9,10,12,13,15,25,28],host_id_list:2,how:[0,2,7,8,9,10,11,13,15,17,18,19,20,21,28],howev:[0,7,12],http:12,ident:26,idl:[2,10],ids:2,imag:20,implement:[0,7,8,12,13,25,27],imposs:12,includ:[8,17,18,19,28],index:12,inform:[0,1,2,3,12,13,14,15,20,26],initi:[0,7,9,11,13,20,28],input:26,inputerror:26,inspir:20,instal:[16,18,19,28],instanc:[0,8],instead:[0,9],instruct:[15,17,18,19,28],instructor:20,integr:21,intend:[4,20],interact:[1,24],interfac:0,internet:[0,24,27],interv:3,introduct:16,invalid:13,invers:10,involv:8,is_idl:[2,10],isinst:11,issu:[17,18,19],item:28,iter:[7,20,21,25],its:[3,8,12,20],itself:[2,8],join:[7,11,12,13],joint:8,just:[0,2,3,8,17,18,19,28],keep:[2,8],kei:[1,2,6,16,20,21],key_arrai:7,key_array_to_key_str:7,key_siz:[2,7],key_string_binari:7,know:[2,7,8,11,12,13,20,26],knowledg:0,label:8,larg:10,last:[2,12],later:13,layer:[1,20,24,27],learn:20,leav:28,left:12,len:[8,10,13],length:2,let:[7,10,11],level:[8,17,18,19,20],librari:20,like:[2,8,20],limit:[2,25],line:[14,20],linear:14,link:[8,10,15],linux:16,list:[2,3,8,10,13,20,21,22,24,25,27,28],listen:[7,28],live:27,local:2,locat:[17,18,19],lock:0,log:[9,20],logger:[7,9,10,11,13,15,28],logic:14,look:0,loser:9,lost:[9,14],mac:[16,18],made:21,mai:[17,18,19,20],main:[7,8,9,10,11,12,13,14,15,27,28],mainli:[20,26],maintain:3,make:[0,7,12,17,18,19,20,28],man:[6,16],manag:26,mani:[2,8,28],manipul:[2,8,11,12,21],map:0,mask:8,match:[7,12,13],math:9,mathemat:8,matplotlib:3,matrix:26,matter:9,max:25,max_ack_wait:[2,14],maximum:[2,14,22,25],maxumum:25,mean:[14,20],measur:[7,8,9,11,12,13,14,15,26,28],measured_valu:26,measurement_bas:7,meaur:12,memori:[2,20,25],messag:[2,4,5,7,8,9,10,11,13,20,21,22,26],method:[0,2,3,8,9,15,20,28],middl:[6,16],might:0,mind:14,mismatch:13,mistak:8,mode:25,model:21,modifi:11,modular:0,moment:[9,20],monei:[6,16],money_qubit:13,more:[0,9,20,28],most:[0,2,3,17,18,19],mostli:1,move:20,msg:[7,11,12],msg_buff:7,msg_to_ev:7,multi:20,multipl:0,must:[3,10],name:[3,9,17,18,19,28],ndarrai:[12,26],neccessari:3,necessari:[0,1,2,7],need:[0,1,7,8,9,12,14,15,17,19,24,26,28],network:[0,2,5,7,8,9,10,11,12,13,14,15,20,27,28],networkx:[10,20],never:[1,21],new_host:0,new_id:[2,25],new_limit:25,newli:10,next:[2,7,8,9,11,14,22,25,28],no_ack:2,no_of_seri:13,node:[0,2,3,7,8,10,11,12,13,14,15,20,28],node_1:10,node_2:10,nois:2,non:13,non_destruct:26,none:[2,3,4,7,8,13,14,15,22,25,26],normal:28,note:[10,13,14,15,28],noth:10,notic:8,now:[0,7,11,12,14,15],num_epr_pair:10,number:[0,2,3,4,9,12,13,20,23,24,27,28],numpi:[0,7,12,26],object:[0,1,2,3,5,7,8,9,10,11,12,13,14,15,16,22,23,24,25,26,27,28],occur:26,offer:20,often:9,old:[2,25],old_id:[2,25],onc:[0,2,3,7,8,20],one:[0,2,3,7,8,9,12,14,15,17,18,20,25,28],onli:[1,8,9,12,13,14,15,17,18,19,22,25,28],onward:20,open:[17,19,28],oper:[8,9,11,12,17,26],oplu:12,oplus_j:12,optic:9,option:[2,17,18,19,22,25],ord:7,order:[2,3,8,10,20],org:12,other:[0,2,7,8,9,12,14,15,24,25],other_qubit:26,otherwis:[2,3,7,8,17,19,25],our:[1,7,11,12,26,27],out:[0,13,20],outcom:[8,12,26],outperform:9,output:11,over:[0,7,20],overview:[16,20,21,28],own:[3,5,7,8,12,14,16,20,26],own_randomn:12,owner:[0,25],packag:[0,17,18,19],packet:[1,2,3,4,5,11,14,20,21,28],packet_drop_r:3,pair:[0,2,3,6,8,9,16,25],parallel:14,param:[2,3,4],paramet:[2,3,4,8,10,15,22,25,26,28],pariti:8,part:[0,1,2,8,13,14,17,19],parti:[7,8,9,13,14,28],particip:8,particular:2,partner:[2,12],partner_id:12,partner_q1:12,partner_q2:12,partner_qubit:12,pass:0,path:[3,10,17,18,19],path_to_qunetsim:[17,19],pauli:26,payload:[2,4,20,24,27],payload_typ:[4,24,27],per:2,perform:[1,8,9,11,17,18,19,26],phi:26,php:12,physic:[20,21,26],piec:[8,21],pip:[16,18,19],place:14,plai:[3,9,13],plan:[21,25],player:9,plot:3,point:[9,12],polar:13,popular:0,possess:13,possibl:[0,20],potenti:20,pre:7,prepar:[0,11,12,13],preparation_and_distribut:13,present:20,principl:28,print:[7,8,9,10,11,12,13,14,15,28],prior:12,privat:1,probabl:[3,9],problem:7,procedur:[1,12,20],proceed:2,process:[2,4,10,20],processor:2,program:[1,11],programm:14,progress:20,project:[17,18,19],projectq:[0,9,17,18,19],projectqbackend:[12,13],prompt:28,properli:[15,17,18,19],properti:[2,3,17,19,23,24,26,27],protocol:[1,2,5,7,8,9,10,11,12,13,14,15,20,21,24,27,28],protocol_1:[15,28],protocol_2:[15,28],protocol_param:2,provid:[0,8,20],psi:12,psi_0:12,psi_1:12,psi_:12,psi_a:12,psi_b_bar:12,purpos:25,put:[1,2,3,14,20],pwd:[17,18],python3:[17,18,19],python:[17,18,19,20,28],pythonpath:[17,18,19,28],q_bit:7,q_id:[2,8,14,15,25,26],q_rec:14,q_relay_snif:[2,13],q_relay_sniffing_fn:[2,13],qkd:[2,7],quant:12,quantum:[0,2,3,5,6,8,9,10,14,15,20,21,24,27,28],quantum_coin_flip:12,quantum_connect:2,quantum_relay_snif:11,quantum_relay_sniffing_funct:2,quantum_routing_algo:[3,10],quantum_storag:25,quantumli:9,quantumstorag:25,qubit:[0,2,3,5,6,7,8,9,11,12,13,16,20,21,25,27,28],qubit_id:2,qubit_no:13,qubits_per_monei:13,queue:[2,3],quick:16,quit:21,qunetsim:[0,1,2,3,4,7,8,9,10,11,12,13,14,15,17,18,19,21,22,23,24,25,26,27,28],rad:26,rais:[12,26],ran:28,randint:[7,12,13],random:[2,7,8,9,10,12,13,25],random_bas:13,random_bit:[12,13],random_bits_a:12,random_bits_b:12,random_bits_d:12,randomli:[7,8],randomnes_from_partn:12,rang:[8,9,10,11,12,13,14,15,28],rangl:12,rate:3,rather:8,ratio:9,read:[0,7],real:[0,7,20],realist:20,realiz:13,realli:7,rec_packet:2,recalcul:3,receiv:[2,3,4,7,8,9,10,11,12,13,15,24,25,27,28],receive_epr:0,receive_from_id:2,receive_monei:13,received_count:7,receiver_id:[2,26],receiver_list:2,recommend:[0,17],record:[9,13],recov:20,ref:9,refere:9,referee_id:9,referee_messag:9,regard:[2,20],rel:20,relai:[1,2,13,20,27],relay_snif:11,relay_sniffing_funct:2,releas:[13,25,26],release_qubit:2,release_storag:25,remain:[2,8,28],remaind:8,remov:[2,3,9,13,17,18,19,22,25,27],remove_all_ack:22,remove_c_connect:2,remove_connect:[2,9],remove_host:3,remove_q_connect:2,repeat:7,replac:[17,19,21],repositori:[17,18,19],repres:[1,2,3,13,14,15,20,21],represent:10,reproduc:13,request:24,requir:[17,18,19,20,28],res:[9,12],reset:[2,25],reset_seq_num:2,reset_sequence_numb:2,reset_storag:25,resolv:[17,18,19],resourc:9,respect:9,respons:[0,1,9],result:[7,12,13,14,28],right:[0,7,12],rise:0,robust:20,role:[1,3],rot_angl:12,rotat:[9,26],roughli:9,rout:[1,2,3,5,6,11,15,16,20,21],router:2,routing_algorithm:10,routing_packet:27,routingpacket:27,run:[1,2,7,8,9,10,13,14,15,17,18,19,28],run_protocol:[2,7,8,9,10,11,12,13,15,28],rwlock:0,safe:[0,14,15],safedict:0,sai:14,same:[7,8,9,14,17,18,19,20,28],saw:11,script:[17,18,19,28],second:[0,2,8,10,12,15,26,28],secret:[2,7,8,20],secret_kei:7,secret_key_str:7,section:[0,2,20,21,28],secur:7,see:[0,2,7,8,9,10,11,12,13,14,15,17,18,19,20,21,28],seem:0,select:8,self:0,send:[2,3,4,6,7,8,9,10,11,12,13,16,20,23,26,28],send_ack:2,send_broadcast:[2,8],send_class:[2,7,9,11,12,13],send_epr:[2,9,10,15],send_ghz:[2,8],send_kei:2,send_qubit:[2,7,11,12,13,14,28],send_qubit_to:0,send_superdens:[2,10],send_teleport:[2,8],send_to:26,sender:[2,3,4,7,8,10,11,13,15,22,23,24,27,28],sender_id:[2,22],sending_qubit:8,sens:20,sent:[0,2,3,7,11,13,14],seq_num:[2,9,11,13,23,24],seq_numb:2,sequenc:[2,4,20,23,24],sequence_nr:[2,7],sequence_num:4,sequence_numb:[2,24],serial:13,serial_to_be_check:13,serial_to_be_us:13,set:[0,1,2,3,7,8,9,11,13,14,15,17,18,19,22,25,28],set_data_qubit_memory_limit:2,set_delai:10,set_epr_memory_limit:2,set_new_host:0,set_quantum_relay_sniffing_funct:11,set_relay_sniffing_funct:11,set_storage_limit_with_host:25,shape:12,share:[2,3,7,8,9,10,12],shares_epr:[2,3],she:[7,9,13,14],shortest:[3,10],shortest_path:10,should:[0,2,3,4,7,8,11,12,15,16,17,18,22,25,26,27,28],shouldn:8,show:[9,15],shown:[0,13],side:[2,14],similar:[9,14,27],simpl:[15,20,28],simpli:[0,8,9,11,17,20],simplic:8,simplifi:8,simul:[0,3,8,9,14,17,18,19,20,21,25],simulaqron:[0,9],sinc:[8,17,18,19],sing:12,singl:[0,12,28],singleton:3,sit:[11,14],size:[2,7],size_per_qubit:2,sleep:[8,10],small:[7,17,18,19],snif:2,sniff:2,sniff_full_packet:2,sniffer:11,sniffing_quantum:13,snippet:0,softwar:0,solv:7,some:[0,10,13,20,23,27,28],someth:14,sometim:[3,20],sort:[2,12],sourc:[3,10,17,18],specif:[0,2,9,20,25,28],specifi:[2,15],split:7,squar:15,stack:12,stai:26,standard:[17,18,19],start:[0,2,3,7,8,9,10,11,12,13,14,15,16,17,18,19],state:[2,8,11,12,13,14,20,26,28],statist:9,statu:2,steal:13,step:[10,12,17,18,19,20,28],still:[7,20,22],stop:[0,2,3,8,10,11,12,13,14],stop_host:[3,10,14],storag:[2,5,21,23],storage_epr_limit:2,storage_limit:2,storage_limit_individually_per_host:25,store:[0,2,8,12,20,21,22,25],str:[2,3,4,7,8,9,10,12,13,14,15,23,24,25,27],strategi:9,string:[2,7,22,23,25,26],structur:[0,17,18,19,20,21,23],student:20,stuff:0,style:[3,14],success:2,suggest:12,summar:12,superdens:[2,10,20],support:9,sure:[17,18,19],swap:20,synchron:8,syntax:8,system:[9,17,19,26],tabl:3,take:[3,8,27,28],talk:[7,13],tamper:12,target:[10,26],task:[0,8,20],team:0,teh:13,teleport:[2,20],tell:[8,12,14],templat:[17,18,19,28],ten:8,termin:[17,18,28],test:[7,10,20,28],text:7,than:[0,8,9,22,28],thei:[2,7,8,9,12,24,25,26,27],them:[2,7,9,11],themself:8,themselv:9,therefor:[0,8,12,13,20,23],theta:12,thi:[0,2,7,8,9,10,11,12,13,14,15,17,18,19,20,22,25,27,28],thing:20,those:[9,20],thread:[0,2,7,20,25],three:[0,7,8,9,10,13],throttl:3,through:[2,11,13,15,20],tick:2,till:[0,2,22,25],time:[1,2,8,9,10,14,15,20,22,25,27],titl:12,to_host_id:0,toi:20,too:[2,7],tool:[0,20],topolog:7,tqsd:[0,17,18,19],trace:20,traffic:[14,15],transfer:13,transit:2,translat:8,transmiss:[3,7,13],transmit:[0,14,20],transport:[1,20,24,27],transport_packet:2,travel:27,treat:20,trigger:[20,24],trivial:7,ttl:27,tupl:[2,28],two:[0,1,2,3,7,8,9,12,14,20,25,28],txt:[17,18,19],type:[0,2,3,4,8,10,15,17,22,23,24,25,26,27,28],typic:20,unblock:2,underli:[21,26],undo:11,unforg:13,uni:[14,15],uniqu:26,unitari:26,unknown:20,unread:22,unrealist:20,until:[2,7,14,20],unus:13,unused_seri:13,updat:3,update_host:[3,9],upgrad:[17,18,19],upon:8,usabl:25,use:[2,7,9,12,13,14,15,16,17,18,19,21,28],use_hop_by_hop:[3,10],used:[0,1,2,3,7,8,21,22,25],user:[1,2,17,18,20,24],uses:[3,9,20],using:[0,7,8,9,10,13,14,15,17],valid:[12,13],valu:[2,3,14,17,19],valueerror:12,variabl:[0,12,17,19,28],variou:21,venv:[17,18,19],verifi:[12,13],verify_monei:13,veriqloud:12,version:[1,17,18,19],vertic:10,via:[2,3,11,16,20],virtual:[17,18,19],wai:[7,13,14,20],wait:[2,7,8,9,11,12,13,14,15,22,25,28],wait_tim:[7,13],want:[7,11,12,13,20,28],warn:7,weight:10,weird:0,well:8,were:28,what:[4,7,8,9,13,14,16],when:[1,3,8,9,10,15,20,23,27],where:[8,9,12,14,15,17,18,19,21],whether:[2,3],which:[0,2,3,4,7,8,11,12,17,18,19,20,25,26,27],who:[2,11,13,14,16,22,25,26],whole:[2,8],whom:[2,25],whose:3,wiesner:13,wiki:12,win:9,window:16,winner:9,without:[7,14,17,18,19],won:9,word:21,work:[0,7,10,20,28],would:[0,8,28],wrapper:26,write:[1,5,14,15,16,20,28],x_error_r:3,xor:[8,9,12],yet:[7,22,25],you:[0,7,17,18,19,28],your:[5,16,17,18,19,28],z_error_r:3,zero:12,zip:7},titles:["Backends","Network Components","Host","Network","Protocols","Design Overview","Examples","Quantum Key Distribution","GHZ Based Anonymous Entanglement","CHSH Game","Routing with Entanglement","Eavesdropping on channels","Quantum Coin Flipping","Quantum Money with a Man-in-the-Middle Attack","Send Data Qubits","Send EPR Pairs","QuNetSim: A quantum network simulation framework","Install","<no title>","<no title>","Introduction","Network Objects","Classical Storage","Message","Packet","Quantum Storage","Qubit","Routing Packet","Quick Start Guide"],titleterms:{anonym:8,attack:13,backend:0,base:8,channel:11,chsh:9,classic:22,coin:12,compon:1,data:14,design:5,distribut:7,eavesdrop:11,entangl:[8,10],epr:15,exampl:6,flip:12,framework:16,game:9,ghz:8,guid:28,host:2,instal:17,introduct:20,kei:7,linux:17,mac:17,man:13,messag:23,middl:13,monei:13,network:[1,3,16,21],object:21,overview:5,own:0,packet:[24,27],pair:15,pip:17,protocol:4,quantum:[7,12,13,16,25],qubit:[14,26],quick:28,qunetsim:[16,20],rout:[10,27],send:[14,15],should:20,simul:16,start:28,storag:[22,25],use:20,via:17,what:20,who:20,window:17,write:0,your:0}}) \ No newline at end of file +Search.setIndex({docnames:["backends","components","components/host","components/network","components/protocols","design","examples","examples/QKD","examples/anonymous_transfer","examples/chsh","examples/entanglement_routing","examples/packet_sniffing","examples/quantum_coin_flipping","examples/quantum_money","examples/send_data","examples/send_epr","index","install","install/linux_mac","install/windows","intro","objects","objects/classical_storage","objects/message","objects/packet","objects/quantum_storage","objects/qubit","objects/routing_packet","quick_start"],envversion:{"sphinx.domains.c":2,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":3,"sphinx.domains.index":1,"sphinx.domains.javascript":2,"sphinx.domains.math":2,"sphinx.domains.python":2,"sphinx.domains.rst":2,"sphinx.domains.std":1,sphinx:56},filenames:["backends.rst","components.rst","components/host.rst","components/network.rst","components/protocols.rst","design.rst","examples.rst","examples/QKD.rst","examples/anonymous_transfer.rst","examples/chsh.rst","examples/entanglement_routing.rst","examples/packet_sniffing.rst","examples/quantum_coin_flipping.rst","examples/quantum_money.rst","examples/send_data.rst","examples/send_epr.rst","index.rst","install.rst","install/linux_mac.rst","install/windows.rst","intro.rst","objects.rst","objects/classical_storage.rst","objects/message.rst","objects/packet.rst","objects/quantum_storage.rst","objects/qubit.rst","objects/routing_packet.rst","quick_start.rst"],objects:{"qunetsim.components":{host:[2,0,0,"-"],network:[3,0,0,"-"],protocols:[4,0,0,"-"]},"qunetsim.components.host":{Host:[2,1,1,""]},"qunetsim.components.host.Host":{add_c_connection:[2,2,1,""],add_c_connections:[2,2,1,""],add_checksum:[2,2,1,""],add_connection:[2,2,1,""],add_connections:[2,2,1,""],add_data_qubit:[2,2,1,""],add_epr:[2,2,1,""],add_ghz_qubit:[2,2,1,""],add_q_connection:[2,2,1,""],add_q_connections:[2,2,1,""],await_ack:[2,2,1,""],await_remaining_acks:[2,2,1,""],change_epr_qubit_id:[2,2,1,""],classical:[2,2,1,""],classical_connections:[2,2,1,""],delay:[2,2,1,""],empty_classical:[2,2,1,""],get_classical:[2,2,1,""],get_connections:[2,2,1,""],get_data_qubit:[2,2,1,""],get_data_qubits:[2,2,1,""],get_epr:[2,2,1,""],get_epr_pairs:[2,2,1,""],get_ghz:[2,2,1,""],get_next_classical:[2,2,1,""],get_next_classical_message:[2,2,1,""],get_next_sequence_number:[2,2,1,""],get_sequence_number:[2,2,1,""],get_sequence_number_receiver:[2,2,1,""],host_id:[2,2,1,""],is_idle:[2,2,1,""],max_ack_wait:[2,2,1,""],q_relay_sniffing:[2,2,1,""],q_relay_sniffing_fn:[2,2,1,""],quantum_connections:[2,2,1,""],quantum_relay_sniffing_function:[2,2,1,""],rec_packet:[2,2,1,""],relay_sniffing_function:[2,2,1,""],remove_c_connection:[2,2,1,""],remove_connection:[2,2,1,""],remove_q_connection:[2,2,1,""],reset_sequence_numbers:[2,2,1,""],run_protocol:[2,2,1,""],send_ack:[2,2,1,""],send_broadcast:[2,2,1,""],send_classical:[2,2,1,""],send_epr:[2,2,1,""],send_ghz:[2,2,1,""],send_key:[2,2,1,""],send_qubit:[2,2,1,""],send_superdense:[2,2,1,""],send_teleport:[2,2,1,""],set_data_qubit_memory_limit:[2,2,1,""],set_epr_memory_limit:[2,2,1,""],shares_epr:[2,2,1,""],sniff_full_packet:[2,2,1,""],start:[2,2,1,""],stop:[2,2,1,""],storage_epr_limit:[2,2,1,""],storage_limit:[2,2,1,""]},"qunetsim.components.network":{Network:[3,1,1,""]},"qunetsim.components.network.Network":{add_host:[3,2,1,""],add_hosts:[3,2,1,""],classical_routing_algo:[3,2,1,""],delay:[3,2,1,""],draw_classical_network:[3,2,1,""],draw_quantum_network:[3,2,1,""],get_ARP:[3,2,1,""],get_classical_route:[3,2,1,""],get_host:[3,2,1,""],get_host_name:[3,2,1,""],get_quantum_route:[3,2,1,""],packet_drop_rate:[3,2,1,""],quantum_routing_algo:[3,2,1,""],remove_host:[3,2,1,""],send:[3,2,1,""],shares_epr:[3,2,1,""],start:[3,2,1,""],stop:[3,2,1,""],update_host:[3,2,1,""],use_hop_by_hop:[3,2,1,""],x_error_rate:[3,2,1,""],z_error_rate:[3,2,1,""]},"qunetsim.components.protocols":{encode:[4,3,1,""],process:[4,3,1,""]},"qunetsim.objects":{classical_storage:[22,0,0,"-"],message:[23,0,0,"-"],packet:[24,0,0,"-"],quantum_storage:[25,0,0,"-"],qubit:[26,0,0,"-"],routing_packet:[27,0,0,"-"]},"qunetsim.objects.classical_storage":{ClassicalStorage:[22,1,1,""]},"qunetsim.objects.classical_storage.ClassicalStorage":{add_msg_to_storage:[22,2,1,""],empty:[22,2,1,""],get_all:[22,2,1,""],get_all_from_sender:[22,2,1,""],get_next_from_sender:[22,2,1,""],remove_all_ack:[22,2,1,""]},"qunetsim.objects.message":{Message:[23,1,1,""]},"qunetsim.objects.message.Message":{content:[23,2,1,""],sender:[23,2,1,""],seq_num:[23,2,1,""]},"qunetsim.objects.packet":{Packet:[24,1,1,""]},"qunetsim.objects.packet.Packet":{await_ack:[24,2,1,""],payload:[24,2,1,""],payload_type:[24,2,1,""],protocol:[24,2,1,""],receiver:[24,2,1,""],sender:[24,2,1,""],seq_num:[24,2,1,""]},"qunetsim.objects.quantum_storage":{QuantumStorage:[25,1,1,""]},"qunetsim.objects.quantum_storage.QuantumStorage":{add_qubit_from_host:[25,2,1,""],change_qubit_id:[25,2,1,""],check_qubit_from_host_exists:[25,2,1,""],get_all_qubits_from_host:[25,2,1,""],get_qubit_from_host:[25,2,1,""],release_storage:[25,2,1,""],reset_storage:[25,2,1,""],set_storage_limit_with_host:[25,2,1,""]},"qunetsim.objects.qubit":{InputError:[26,4,1,""],Qubit:[26,1,1,""]},"qunetsim.objects.qubit.Qubit":{H:[26,2,1,""],I:[26,2,1,""],K:[26,2,1,""],T:[26,2,1,""],X:[26,2,1,""],Y:[26,2,1,""],Z:[26,2,1,""],blocked:[26,2,1,""],cnot:[26,2,1,""],cphase:[26,2,1,""],custom_controlled_gate:[26,2,1,""],custom_gate:[26,2,1,""],custom_two_qubit_gate:[26,2,1,""],host:[26,2,1,""],id:[26,2,1,""],measure:[26,2,1,""],qubit:[26,2,1,""],release:[26,2,1,""],rx:[26,2,1,""],ry:[26,2,1,""],rz:[26,2,1,""],send_to:[26,2,1,""]},"qunetsim.objects.routing_packet":{RoutingPacket:[27,1,1,""]},"qunetsim.objects.routing_packet.RoutingPacket":{decrease_ttl:[27,2,1,""],payload:[27,2,1,""],payload_type:[27,2,1,""],protocol:[27,2,1,""],receiver:[27,2,1,""],route:[27,2,1,""],sender:[27,2,1,""],ttl:[27,2,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","class","Python class"],"2":["py","method","Python method"],"3":["py","function","Python function"],"4":["py","exception","Python exception"]},objtypes:{"0":"py:module","1":"py:class","2":"py:method","3":"py:function","4":"py:exception"},terms:{"2x2":26,"\u03b8":12,"\u03c8_0":12,"\u03c8_1":12,"\u03c8_a_j":12,"\u03c8_b_j_bar":12,"\u03c8_d":12,"\u03c8_d_bar":12,"\u03c8_e_ij":12,"\u03c8_e_ij_bar":12,"boolean":[2,3,14],"case":[2,9,17,18,19,25],"char":7,"class":[0,2,3,22,23,24,25,26,27],"default":[0,2,3,22,25,28],"export":[17,18],"final":[7,8,12,28],"float":[2,3,26],"function":[0,2,3,4,7,8,10,13,20,25,28],"import":[0,3,7,8,9,10,11,12,13,14,15,28],"int":[2,4,7,8,9,12,22,23,24,25,26,27],"long":[2,9],"new":[2,12,17,19,20,25,28],"return":[0,2,3,4,7,8,10,12,13,14,20,22,23,24,25,26,27],"true":[2,3,7,8,9,10,11,12,13,14,15,25,28],"try":10,"while":[7,8,10,13],AES:7,Eve:[0,7,11,13,14],For:[2,8,9,11,12,17,18,20,28],IDs:[0,2,7,8,27],Not:21,One:[2,8,20,28],The:[0,1,2,3,4,7,8,9,10,11,12,13,14,15,17,18,19,20,21,22,23,24,25,26,27,28],Then:9,There:0,These:[13,25],WILL:2,With:[0,3,8,9,14],__main__:[7,8,9,11,12,13,14,15,28],__name__:[7,8,9,11,12,13,14,15,28],_host:0,a_j:12,a_tild:12,abil:[3,21],abl:7,about:[12,20],abov:[17,18,19],abs:12,accept:12,access:[0,1,9,14,20,21],accomplish:[2,8],accord:[4,8],accur:20,achiev:[13,20],ack:[2,4,7,8,14,15,22,24],ack_arriv:[14,15],acknowledg:[14,20,23,28],acknowleg:2,act:[2,8,13],action:7,activ:[17,18,19],add:[0,2,3,7,8,10,11,14,17,19,21,22,25,26],add_c_connect:[2,8,9,15],add_checksum:2,add_connect:[0,2,7,8,9,10,11,12,13,14,15,28],add_data_qubit:2,add_edg:10,add_epr:[2,8],add_ghz_qubit:2,add_host:[0,3,7,8,9,10,11,12,13,14,15,28],add_msg_to_storag:22,add_q_connect:[2,15],add_qubit_from_host:25,added:[2,3,14,15,20,28],adding:15,addit:26,address:23,advanc:[8,17,19],after:[10,12,13,14,17,18,19,25,27,28],again:[7,17,18,19],agre:[8,12],ahead:1,aim:13,algorithm:[3,7,10,20],alic:[0,7,9,11,14,28],alice_class:9,alice_func:7,alice_host:9,alice_id:9,alice_messag:11,alice_qkd:7,alice_quantum:9,alice_respons:9,alice_send_messag:7,all:[0,2,3,7,8,9,11,12,14,15,20,21,22,25,28],alloc:12,allow:[10,20],along:[8,13,24,28],alreadi:[2,17,19,20],also:[0,1,2,7,11,12,13,20,21,23],altern:[17,18,19],although:20,alwai:[0,8,11,12,15],amongst:[8,9],amount:[2,3,10,20,25],amount_to_transmit:11,amount_transmit:11,analog:[2,24,27],angl:26,ani:[0,2,8,9,10,12,14,28],anonym:[6,16],anoth:[0,2,9,20,26,28],answer:7,anymor:25,anyth:8,appear:[8,23],append:[7,13],appli:[2,3,7,8,11,13,14,26,28],applic:[1,2,15,20],approach:9,arbitrari:[20,28],architectur:20,area:[17,19],arg:[9,10,13,15],argument:[0,2,12],around:20,arp:3,arrai:[],arriv:[2,8,14,15,20,22,25],arxiv:12,assign:13,associ:13,assum:[14,28],assumpt:20,asynchron:20,attack:[6,16],attempt:[8,13],avail:[2,8],avoid:20,awai:14,await:[2,4,8,9,13,14],await_ack:[2,4,7,8,9,10,11,12,13,14,15,24,28],await_remaining_ack:2,axi:9,b_j:12,back:[9,12,15],backend:[2,3,5,9,12,13,16,21,26],bad:7,bank:13,bank_basi:13,bank_bit:13,banker:13,banker_protocol:13,banknot:13,bar:12,base:[6,7,10,12,13,16,20],basi:[7,8,9,12],basic:0,becaus:[7,9,12,14],becom:0,bee:7,been:[0,2,8,12,25],befor:[2,9,14],begin:[3,12,28],behav:[2,8],behaviour:8,being:[7,11,13,14,20,28],belong:[0,26],below:[0,7,8,9,10,11,12,13,14,15,17,20,21,24,28],best:10,better:[21,25,26],between:[3,8,11,20],bin:[17,18],binari:2,bit:[2,7,8,9,12],bit_no:13,block:[2,8,9,13,14,20,22,25,26,28],blown:20,bob:[0,7,9,11,14],bob_class:9,bob_host:9,bob_id:9,bob_quantum:9,bob_respons:9,bob_sniffing_class:11,bob_sniffing_quantum:11,bool:[2,3,4,24,25,26],both:[9,12,20,25,28],bottom:[17,19],box:0,briefli:12,broadcast:[2,8],buffer:[0,2],build:[3,10,15],built:[8,20,28],c_ij:12,call:[0,2,8,9,14,17,25,28],came:15,can:[0,1,2,3,7,8,9,11,12,13,14,17,18,19,20,21,25,26,28],cannot:9,categor:21,caus:13,certain:1,chang:[0,2,3,7,8,9,11,12,17,18,19,25],change_epr_qubit_id:2,change_qubit_id:25,channel:[2,6,16],cheat:[12,13],cheat_alert:13,cheater:12,check:[2,7,12,13,25],check_qubit_from_host_exist:25,checksum:2,choic:[8,9,10],choos:[7,8,20],chose:[0,12],chosen:12,chr:7,chsh:[6,16],clasic:2,classic:[2,3,5,7,8,9,11,13,14,15,20,21,23,24,27,28],classical_connect:2,classical_routing_algo:3,classical_storag:22,classicalstorag:22,clear:2,click:[17,19],clone:[17,18,19],cnot:26,code:[0,2,11,14,15,20,28],coin:[6,16],collect:8,colour:20,com:[17,18,19],come:[1,17,20],comma:28,command:[17,18,28],common:[17,18,19,20],commonli:[2,3],commun:[7,9,14,20],compar:7,compil:[17,18,19],complet:[8,28],complic:20,compon:[2,3,4,5,7,8,9,10,11,12,13,14,15,16,21,22,24,25,28],comput:[0,8,10],concaten:[7,12],concatent:7,configur:[2,3,10,14,28],connect:[2,3,7,9,10,14,15,20,28],consid:[10,20],consist:12,consol:28,constant:24,constantli:10,contain:[11,23],content:[8,9,11,12,13,16,23,28],continu:[7,14],control:[3,8,13,26],cooper:9,copi:12,core:20,correct:[8,13,17,18,19,20,28],correspond:2,could:20,cphase:26,cppsimul:[17,18,19],cqcbackend:12,creat:[0,2,7,13,14,20,21,23,24],create_epr:0,create_qubit:0,creation:8,creativ:28,crypto:7,current:[0,20,21],custom:[10,13,20,26],custom_controlled_g:26,custom_g:26,custom_two_qubit_g:26,customer_protocol:13,d_ij:12,daemonthread:2,data:[2,4,6,13,16,25,27],databas:13,dean:14,decid:7,decod:[1,4,7,12],decoher:21,decreas:27,decrease_ttl:27,decrypt:7,decrypted_msg_from_alic:7,def:[0,7,8,9,10,11,12,13,14,15,28],defin:[0,3,7,11,15,26,28],del:13,delai:[2,3,7,11,12,13,14],delet:[2,22],delt:22,demonstr:[8,20],depend:[2,3,4,9,12,25,26],depict:3,describ:0,descript:12,design:[16,20,21,28],dest:3,destin:[3,20],destruct:[0,13],detail:[12,20,21],determin:[12,26],develop:[0,2,8,9,20,21,25,28],devis:9,di_graph:10,dict:[2,3],dictionari:[0,2],did:[13,14,15],didn:14,differ:[0,3,7,13,20,26,27],digraph:10,direct:[10,13,14,15],direction:[14,15],directli:[1,8,14,21,24],directori:[17,18,19],disabl:[7,9,11,13,15,28],distant:1,distantli:20,distribut:[2,6,8,9,13,16,20],distributor:8,disturb:[7,13],document:[17,18,19],doe:[2,8,9,12,13,21,25],doesn:[2,8,13],done:[8,9,10,15],dont:[17,18,19],dose:0,download:[17,18,19],draw:3,draw_classical_network:3,draw_quantum_network:3,driven:20,drop:3,dtype:12,dure:[9,12],e_ij:12,each:[1,3,7,9,10,14,17,25],earlier:12,easier:8,easili:8,eavesdrop:[2,6,16],eavesdropp:[2,11,13],edg:10,edit:[17,18,19],educ:20,either:[2,7,9,14,20],element:[2,28],elimin:[26,27],els:[2,7,9,10,12,13,14,15],empti:[2,22],empty_class:[2,8],encod:[1,2,4,24],encrypt:7,encrypted_msg_from_alic:7,encrypted_msg_to_ev:7,encrypted_text:7,end:[7,8,12,14,15],ensur:[14,28],entangl:[0,1,2,6,9,16,20],entanglement_network:10,enter:28,entir:[2,8],environ:[17,18,19],epr:[2,3,6,8,9,16,20,25],epr_id:[8,15],eqsn:[0,9],eqsnbackend:[0,12],equat:9,error:[3,10,26],esqn:9,establish:[2,8,15,28],etc:24,eve:[7,11],eve_func:7,eve_kei:7,eve_qkd:7,eve_receive_messag:7,even:20,event:20,everi:[12,13],exact:[9,25],exactli:10,exampl:[0,2,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,25,26,28],exceed:14,except:[9,10,26],excit:[11,14],exist:[2,17,19,20,22,25],exit:11,expect:0,expir:15,explan:26,explanatori:0,explicitli:0,express:26,extra:23,f_ij:12,fail:8,fals:[2,3,4,7,8,10,13,24,25,26],familiar:7,featur:[1,2,20],fetch:8,field:[0,8],figur:15,file:[0,17,18,19,28],first:[2,7,8,11,12,13,14,15,28],flag:[8,14],flexibl:20,flip:[6,16],flow:[14,15],follow:[0,1,8,9,10,11,17,28],forev:[2,22,25],form:[4,15],format:9,found:[12,20],frac:12,framework:20,free:2,from:[0,2,3,7,8,9,10,11,12,13,14,15,20,22,25,26,27,28],from_host_id:[0,25],from_send:22,full:[7,8,9,10,11,12,13,14,15,20,28],fulli:28,further:[21,25],futur:20,gain:12,game:[6,16],gate:[0,3,8,14,26,28],gener:[1,2,3,7,8,9,10,12,15,17,18,19,20,21,24,28],generate_entangl:10,generate_epr_if_non:[2,8],get:[2,3,7,12,13,14,17,18,19,20,22,25,28],get_al:22,get_all_from_send:22,get_all_qubits_from_host:25,get_apr:3,get_arp:3,get_class:[2,9,11,13],get_classical_rout:3,get_connect:[2,10],get_data_qubit:[2,7,8,11,12,13,14,28],get_epr:[2,9,15],get_epr_pair:[2,10],get_from_dict:0,get_ghz:[2,8],get_host:[3,10],get_host_nam:3,get_inst:[0,7,8,9,10,11,12,13,14,15,28],get_next_class:[2,12],get_next_classical_messag:[2,7],get_next_from_send:22,get_next_sequence_numb:2,get_quantum_rout:3,get_qubit_from_host:25,get_sequence_numb:2,get_sequence_number_receiv:2,ghz:[2,6,16],git:[17,18,19],github:[17,18,19],give:[0,12,17,20,26,28],given:[3,8,12,22,25],global:[8,17,18,19],goal:8,goe:27,got:[12,15],graph:[3,10,20],greater:[17,18,19],grid:15,group:8,guid:16,hadamard:[8,26,28],half:[2,8,9],halv:2,handl:20,happen:20,has:[0,1,2,3,7,8,9,10,12,13,14,25],have:[0,2,3,7,8,9,10,12,14,15,17,18,19,21,26,27,28],haven:12,header:4,held:2,help:20,helper:7,her:[7,11,12,14],here:[1,7,8,9,11,12,14,15,17,18,19,28],hide:8,high:[8,20],him:[11,12],his:[7,9,12,13],holder:8,hop:[3,14,20,27],hope:21,hopefulli:0,host:[0,1,3,5,7,8,9,10,11,12,13,14,15,20,21,22,23,25,26,27,28],host_:8,host_a:[8,9,12,15,28],host_alic:[0,7,11,14],host_b:[8,9,12,15,28],host_bank:13,host_bob:[0,7,11,14],host_c:[8,9,15,28],host_connect:10,host_custom:13,host_d:[8,28],host_dean:14,host_ev:[0,7,11,13,14],host_id:[0,2,3,7,8,9,10,12,13,15,25,28],host_id_list:2,how:[0,2,7,8,9,10,11,13,15,17,18,19,20,21,28],howev:[0,7,12],http:12,ident:26,idl:[2,10],ids:2,imag:20,implement:[0,7,8,12,13,25,27],imposs:12,includ:[8,17,18,19,28],index:12,inform:[0,1,2,3,12,13,14,15,20,26],initi:[0,7,9,11,13,20,28],input:26,inputerror:26,inspir:20,instal:[16,18,19,28],instanc:[0,8],instead:[0,9],instruct:[15,17,18,19,28],instructor:20,integr:21,intend:[4,20],interact:[1,24],interfac:0,internet:[0,24,27],interv:3,introduct:16,invalid:13,invers:10,involv:8,is_idl:[2,10],isinst:11,issu:[17,18,19],item:28,iter:[7,20,21,25],its:[3,8,12,20],itself:[2,8],join:[7,11,12,13],joint:8,just:[0,2,3,8,17,18,19,28],keep:[2,8],kei:[1,2,6,16,20,21],key_arrai:7,key_array_to_key_str:7,key_siz:[2,7],key_string_binari:7,know:[2,7,8,11,12,13,20,26],knowledg:0,label:8,larg:10,last:[2,12],later:13,layer:[1,20,24,27],learn:20,leav:28,left:12,len:[8,10,13],length:2,let:[7,10,11],level:[8,17,18,19,20],librari:20,like:[2,8,20],limit:[2,25],line:[14,20],linear:14,link:[8,10,15],linux:16,list:[2,3,8,10,13,20,21,22,24,25,27,28],listen:[7,28],live:27,local:2,locat:[17,18,19],lock:0,log:[9,20],logger:[7,9,10,11,13,15,28],logic:14,look:0,loser:9,lost:[9,14],mac:[16,18],made:21,mai:[17,18,19,20],main:[7,8,9,10,11,12,13,14,15,27,28],mainli:[20,26],maintain:3,make:[0,7,12,17,18,19,20,28],man:[6,16],manag:26,mani:[2,8,28],manipul:[2,8,11,12,21],map:0,mask:8,match:[7,12,13],math:9,mathemat:8,matplotlib:3,matrix:26,matter:9,max:25,max_ack_wait:[2,14],maximum:[2,14,22,25],maxumum:25,mean:[14,20],measur:[7,8,9,11,12,13,14,15,26,28],measured_valu:26,measurement_bas:7,meaur:12,memori:[2,20,25],messag:[2,4,5,7,8,9,10,11,13,20,21,22,26],method:[0,2,3,8,9,15,20,28],middl:[6,16],might:0,mind:14,mismatch:13,mistak:8,mode:25,model:21,modifi:11,modular:0,moment:[9,20],monei:[6,16],money_qubit:13,more:[0,9,20,28],most:[0,2,3,17,18,19],mostli:1,move:20,msg:[7,11,12],msg_buff:7,msg_to_ev:7,multi:20,multipl:0,must:[3,10],name:[3,9,17,18,19,28],ndarrai:[12,26],neccessari:3,necessari:[0,1,2,7],need:[0,1,7,8,9,12,14,15,17,19,24,26,28],network:[0,2,5,7,8,9,10,11,12,13,14,15,20,27,28],networkx:[10,20],never:[1,21],new_host:0,new_id:[2,25],new_limit:25,newli:10,next:[2,7,8,9,11,14,22,25,28],no_ack:2,no_of_seri:13,node:[0,2,3,7,8,10,11,12,13,14,15,20,28],node_1:10,node_2:10,nois:2,non:13,non_destruct:26,none:[2,3,4,7,8,13,14,15,22,25,26],normal:28,note:[10,13,14,15,28],noth:10,notic:8,now:[0,7,11,12,14,15],num_epr_pair:10,number:[0,2,3,4,9,12,13,20,23,24,27,28],numpi:[0,7,12,26],object:[0,1,2,3,5,7,8,9,10,11,12,13,14,15,16,22,23,24,25,26,27,28],occur:26,offer:20,often:9,old:[2,25],old_id:[2,25],onc:[0,2,3,7,8,20],one:[0,2,3,7,8,9,12,14,15,17,18,20,25,28],onli:[1,8,9,12,13,14,15,17,18,19,22,25,28],onward:20,open:[17,19,28],oper:[8,9,11,12,17,26],oplu:12,oplus_j:12,optic:9,option:[2,17,18,19,22,25],ord:7,order:[2,3,8,10,20],org:12,other:[0,2,7,8,9,12,14,15,24,25],other_qubit:26,otherwis:[2,3,7,8,17,19,25],our:[1,7,11,12,26,27],out:[0,13,20],outcom:[8,12,26],outperform:9,output:11,over:[0,7,20],overview:[16,20,21,28],own:[3,5,7,8,12,14,16,20,26],own_randomn:12,owner:[0,25],packag:[0,17,18,19],packet:[1,2,3,4,5,11,14,20,21,28],packet_drop_r:3,pair:[0,2,3,6,8,9,16,25],parallel:14,param:[2,3,4],paramet:[2,3,4,8,10,15,22,25,26,28],pariti:8,part:[0,1,2,8,13,14,17,19],parti:[7,8,9,13,14,28],particip:8,particular:2,partner:[2,12],partner_id:12,partner_q1:12,partner_q2:12,partner_qubit:12,pass:0,path:[3,10,17,18,19],path_to_qunetsim:[17,19],pauli:26,payload:[2,4,20,24,27],payload_typ:[4,24,27],per:2,perform:[1,8,9,11,17,18,19,26],phi:26,php:12,physic:[20,21,26],piec:[8,21],pip:[16,18,19],place:14,plai:[3,9,13],plan:[21,25],player:9,plot:3,point:[9,12],polar:13,popular:0,possess:13,possibl:[0,20],potenti:20,pre:7,prepar:[0,11,12,13],preparation_and_distribut:13,present:20,principl:28,print:[7,8,9,10,11,12,13,14,15,28],prior:12,privat:1,probabl:[3,9],problem:7,procedur:[1,12,20],proceed:2,process:[2,4,10,20],processor:2,program:[1,11],programm:14,progress:20,project:[17,18,19],projectq:[0,9,17,18,19],projectqbackend:[12,13],prompt:28,properli:[15,17,18,19],properti:[2,3,17,19,23,24,26,27],protocol:[1,2,5,7,8,9,10,11,12,13,14,15,20,21,24,27,28],protocol_1:[15,28],protocol_2:[15,28],protocol_param:2,provid:[0,8,20],psi:12,psi_0:12,psi_1:12,psi_:12,psi_a:12,psi_b_bar:12,purpos:25,put:[1,2,3,14,20],pwd:[17,18],python3:[17,18,19],python:[17,18,19,20,28],pythonpath:[17,18,19,28],q_bit:7,q_id:[2,8,14,15,25,26],q_rec:14,q_relay_snif:[2,13],q_relay_sniffing_fn:[2,13],qkd:[2,7],quant:12,quantum:[0,2,3,5,6,8,9,10,14,15,20,21,24,27,28],quantum_coin_flip:12,quantum_connect:2,quantum_relay_snif:11,quantum_relay_sniffing_funct:2,quantum_routing_algo:[3,10],quantum_storag:25,quantumli:9,quantumstorag:25,qubit:[0,2,3,5,6,7,8,9,11,12,13,16,20,21,25,27,28],qubit_id:2,qubit_no:13,qubits_per_monei:13,queue:[2,3],quick:16,quit:21,qunetsim:[0,1,2,3,4,7,8,9,10,11,12,13,14,15,17,18,19,21,22,23,24,25,26,27,28],rad:26,rais:[12,26],ran:28,randint:[7,12,13],random:[2,7,8,9,10,12,13,25],random_bas:13,random_bit:[12,13],random_bits_a:12,random_bits_b:12,random_bits_d:12,randomli:[7,8],randomnes_from_partn:12,rang:[8,9,10,11,12,13,14,15,28],rangl:12,rate:3,rather:8,ratio:9,read:[0,7],real:[0,7,20],realist:20,realiz:13,realli:7,rec_packet:2,recalcul:3,receiv:[2,3,4,7,8,9,10,11,12,13,15,24,25,27,28],receive_epr:0,receive_from_id:2,receive_monei:13,received_count:7,receiver_id:[2,26],receiver_list:2,recommend:[0,17],record:[9,13],recov:20,ref:9,refere:9,referee_id:9,referee_messag:9,regard:[2,20],rel:20,relai:[1,2,13,20,27],relay_snif:11,relay_sniffing_funct:2,releas:[13,25,26],release_qubit:2,release_storag:25,remain:[2,8,28],remaind:8,remov:[2,3,9,13,17,18,19,22,25,27],remove_all_ack:22,remove_c_connect:2,remove_connect:[2,9],remove_host:3,remove_q_connect:2,repeat:7,replac:[17,19,21],repositori:[17,18,19],repres:[1,2,3,13,14,15,20,21],represent:10,reproduc:13,request:24,requir:[17,18,19,20,28],res:[9,12],reset:[2,25],reset_seq_num:2,reset_sequence_numb:2,reset_storag:25,resolv:[17,18,19],resourc:9,respect:9,respons:[0,1,9],result:[7,12,13,14,28],right:[0,7,12],rise:0,robust:20,role:[1,3],rot_angl:12,rotat:[9,26],roughli:9,rout:[1,2,3,5,6,11,15,16,20,21],router:2,routing_algorithm:10,routing_packet:27,routingpacket:27,run:[1,2,7,8,9,10,13,14,15,17,18,19,28],run_protocol:[2,7,8,9,10,11,12,13,15,28],rwlock:0,safe:[0,14,15],safedict:0,sai:14,same:[7,8,9,14,17,18,19,20,28],saw:11,script:[17,18,19,28],second:[0,2,8,10,12,15,26,28],secret:[2,7,8,20],secret_kei:7,secret_key_str:7,section:[0,2,20,21,28],secur:7,see:[0,2,7,8,9,10,11,12,13,14,15,17,18,19,20,21,28],seem:0,select:8,self:0,send:[2,3,4,6,7,8,9,10,11,12,13,16,20,23,26,28],send_ack:2,send_broadcast:[2,8],send_class:[2,7,9,11,12,13],send_epr:[2,9,10,15],send_ghz:[2,8],send_kei:2,send_qubit:[2,7,11,12,13,14,28],send_qubit_to:0,send_superdens:[2,10],send_teleport:[2,8],send_to:26,sender:[2,3,4,7,8,10,11,13,15,22,23,24,27,28],sender_id:[2,22],sending_qubit:8,sens:20,sent:[0,2,3,7,11,13,14],seq_num:[2,9,11,13,23,24],seq_numb:2,sequenc:[2,4,20,23,24],sequence_nr:[2,7],sequence_num:4,sequence_numb:[2,24],serial:13,serial_to_be_check:13,serial_to_be_us:13,set:[0,1,2,3,7,8,9,11,13,14,15,17,18,19,22,25,28],set_data_qubit_memory_limit:2,set_delai:10,set_epr_memory_limit:2,set_new_host:0,set_quantum_relay_sniffing_funct:11,set_relay_sniffing_funct:11,set_storage_limit_with_host:25,shape:12,share:[2,3,7,8,9,10,12],shares_epr:[2,3],she:[7,9,13,14],shortest:[3,10],shortest_path:10,should:[0,2,3,4,7,8,11,12,15,16,17,18,22,25,26,27,28],shouldn:8,show:[9,15],shown:[0,13],side:[2,14],similar:[9,14,27],simpl:[15,20,28],simpli:[0,8,9,11,17,20],simplic:8,simplifi:8,simul:[0,3,8,9,14,17,18,19,20,21,25],simulaqron:[0,9],sinc:[8,17,18,19],sing:12,singl:[0,12,28],singleton:3,sit:[11,14],size:[2,7],size_per_qubit:2,sleep:[8,10],small:[7,17,18,19],snif:2,sniff:2,sniff_full_packet:2,sniffer:11,sniffing_quantum:13,snippet:0,softwar:0,solv:7,some:[0,10,13,20,23,27,28],someth:14,sometim:[3,20],sort:[2,12],sourc:[3,10,17,18],specif:[0,2,9,20,25,28],specifi:[2,15],split:7,squar:15,stack:12,stai:26,standard:[17,18,19],start:[0,2,3,7,8,9,10,11,12,13,14,15,16,17,18,19],state:[2,8,11,12,13,14,20,26,28],statist:9,statu:2,steal:13,step:[10,12,17,18,19,20,28],still:[7,20,22],stop:[0,2,3,8,10,11,12,13,14],stop_host:[3,10,14],storag:[2,5,21,23],storage_epr_limit:2,storage_limit:2,storage_limit_individually_per_host:25,store:[0,2,8,12,20,21,22,25],str:[2,3,4,7,8,9,10,12,13,14,15,23,24,25,27],strategi:9,string:[2,7,22,23,25,26],structur:[0,17,18,19,20,21,23],student:20,stuff:0,style:[3,14],success:2,suggest:12,summar:12,superdens:[2,10,20],support:9,sure:[17,18,19],swap:20,synchron:8,syntax:8,system:[9,17,19,26],tabl:3,take:[3,8,27,28],talk:[7,13],tamper:12,target:[10,26],task:[0,8,20],team:0,teh:13,teleport:[2,20],tell:[8,12,14],templat:[17,18,19,28],ten:8,termin:[17,18,28],test:[7,10,20,28],text:7,than:[0,8,9,22,28],thei:[2,7,8,9,12,24,25,26,27],them:[2,7,9,11],themself:8,themselv:9,therefor:[0,8,12,13,20,23],theta:12,thi:[0,2,7,8,9,10,11,12,13,14,15,17,18,19,20,22,25,27,28],thing:20,those:[9,20],thread:[0,2,7,20,25],three:[0,7,8,9,10,13],throttl:3,through:[2,11,13,15,20],tick:2,till:[0,2,22,25],time:[1,2,8,9,10,14,15,20,22,25,27],titl:12,to_host_id:0,toi:20,too:[2,7],tool:[0,20],topolog:7,tqsd:[0,17,18,19],trace:20,traffic:[14,15],transfer:13,transit:2,translat:8,transmiss:[3,7,13],transmit:[0,14,20],transport:[1,20,24,27],transport_packet:2,travel:27,treat:20,trigger:[20,24],trivial:7,ttl:27,tupl:[2,28],two:[0,1,2,3,7,8,9,12,14,20,25,28],txt:[17,18,19],type:[0,2,3,4,8,10,15,17,22,23,24,25,26,27,28],typic:20,unblock:2,underli:[21,26],undo:11,unforg:13,uni:[14,15],uniqu:26,unitari:26,unknown:20,unread:22,unrealist:20,until:[2,7,14,20],unus:13,unused_seri:13,updat:3,update_host:[3,9],upgrad:[17,18,19],upon:8,usabl:25,use:[2,7,9,12,13,14,15,16,17,18,19,21,28],use_hop_by_hop:[3,10],used:[0,1,2,3,7,8,21,22,25],user:[1,2,17,18,20,24],uses:[3,9,20],using:[0,7,8,9,10,13,14,15,17],valid:[12,13],valu:[2,3,14,17,19],valueerror:12,variabl:[0,12,17,19,28],variou:21,venv:[17,18,19],verifi:[12,13],verify_monei:13,veriqloud:12,version:[1,17,18,19],vertic:10,via:[2,3,11,16,20],virtual:[17,18,19],wai:[7,13,14,20],wait:[2,7,8,9,11,12,13,14,15,22,25,28],wait_tim:[7,13],want:[7,11,12,13,20,28],warn:7,weight:10,weird:0,well:8,were:28,what:[4,7,8,9,13,14,16],when:[1,3,8,9,10,15,20,23,27],where:[8,9,12,14,15,17,18,19,21],whether:[2,3],which:[0,2,3,4,7,8,11,12,17,18,19,20,25,26,27],who:[2,11,13,14,16,22,25,26],whole:[2,8],whom:[2,25],whose:3,wiesner:13,wiki:12,win:9,window:16,winner:9,without:[7,14,17,18,19],won:9,word:21,work:[0,7,10,20,28],would:[0,8,28],wrapper:26,write:[1,5,14,15,16,20,28],x_error_r:3,xor:[8,9,12],yet:[7,22,25],you:[0,7,17,18,19,28],your:[5,16,17,18,19,28],z_error_r:3,zero:12,zip:7},titles:["Backends","Network Components","Host","Network","Protocols","Design Overview","Examples","Quantum Key Distribution","GHZ Based Anonymous Entanglement","CHSH Game","Routing with Entanglement","Eavesdropping on channels","Quantum Coin Flipping","Quantum Money with a Man-in-the-Middle Attack","Send Data Qubits","Send EPR Pairs","QuNetSim: A quantum network simulation framework","Install","<no title>","<no title>","Introduction","Network Objects","Classical Storage","Message","Packet","Quantum Storage","Qubit","Routing Packet","Quick Start Guide"],titleterms:{anonym:8,attack:13,backend:0,base:8,channel:11,chsh:9,classic:22,coin:12,compon:1,data:14,design:5,distribut:7,eavesdrop:11,entangl:[8,10],epr:15,exampl:6,flip:12,framework:16,game:9,ghz:8,guid:28,host:2,instal:17,introduct:20,kei:7,linux:17,mac:17,man:13,messag:23,middl:13,monei:13,network:[1,3,16,21],object:21,overview:5,own:0,packet:[24,27],pair:15,pip:17,protocol:4,quantum:[7,12,13,16,25],qubit:[14,26],quick:28,qunetsim:[16,20],rout:[10,27],send:[14,15],should:20,simul:16,start:28,storag:[22,25],use:20,via:17,what:20,who:20,window:17,write:0,your:0}}) \ No newline at end of file diff --git a/qunetsim/components/host.py b/qunetsim/components/host.py index d7331138..36d9a366 100644 --- a/qunetsim/components/host.py +++ b/qunetsim/components/host.py @@ -88,13 +88,16 @@ def classical(self): Gets the received classical messages sorted with the sequence number. Returns: - Array: Sorted array of classical messages. + (list): Sorted list of classical messages. """ return sorted(self._classical_messages.get_all(), key=lambda x: x.seq_num, reverse=True) def empty_classical(self, reset_seq_nums=False): """ Empty the classical message buffers. + + Args: + reset_seq_nums (bool): if all sequence number should also be reset. """ if reset_seq_nums: self.reset_sequence_numbers() @@ -120,7 +123,7 @@ def delay(self): Get the delay of the queue processor. Returns: - The delay per tick for the queue processor. + (float): The delay per tick for the queue processor. """ return self._delay @@ -131,7 +134,6 @@ def delay(self, delay): Args: delay (float): The delay per tick for the queue processor. - """ if not (isinstance(delay, int) or isinstance(delay, float)): raise Exception('delay should be a number') @@ -636,7 +638,7 @@ def remove_connection(self, receiver_id): receiver_id (str): The ID of the connection to remove Returns: - list: a two element array of the status of the removals. + (list): a two element list of the status of the removals. """ c = self.remove_c_connection(receiver_id) q = self.remove_q_connection(receiver_id) @@ -882,8 +884,7 @@ def send_ghz(self, receiver_list, q_id=None, await_ack=False, no_ack=False, dist distribute (bool): If the sender should keep part of the GHZ state, or just distribute one Returns: - Q_id, Qubit: Qubit which belongs to the host and is part of the - GHZ state and ID which all Qubits will have. + (str, bool): Qubit ID of the shared GHZ and ACK status """ own_qubit = Qubit(self, q_id=q_id) q_id = own_qubit.id @@ -928,7 +929,6 @@ def send_ghz(self, receiver_list, q_id=None, await_ack=False, no_ack=False, dist if self.await_ack(seq_num, receiver_id) is False: ret = False return q_id, ret - return q_id def get_ghz(self, host_id, q_id=None, wait=0): @@ -959,6 +959,7 @@ def send_teleport(self, receiver_id, q, await_ack=False, no_ack=False, payload=N no_ack (bool): If this message should not use any ACK and sequencing. payload: generate_epr_if_none: Generate an EPR pair with receiver if one doesn't exist + Returns: (bool) If await_ack=True, return the status of the ACK """