La famosa app che ti traccia il virus. Col grafene. Quantistico. Della AI.

Si fa , fin dall’inizio della pandemia di cattiva sanita’ , un uso perlomeno peloso della questione del tracciamento delle persone come metodo preventivo dell’epidemia. E su questo hanno parlato tutti, ma proprio tutti, tranne i tecnologi coinvolti. Che i tecnologi vengano zittiti e’ normale in un mondo postfascista ove si crede ancora alle fandonie di Gentile e Croce, ma siccome mettermi a tacere non e’ semplice, adesso dico la mia.

Bene. Supponiamo di farlo. Domani mi chiamano e mi dicono “fai la app che traccia gli utenti 24/7, in modo che quando succede che uno si ammala noi andiamo a mettere in quarantena preventiva gli altri”. Aha. A dirlo, sembra semplice. Andiamo a fare breakdown di questa “specifica”.

Allora, parliamo di capacita’, senno’ sembra che lavoriamo per INPS. Quante di queste app vogliamo avere? I Koreani del sud, quelli buoni dicono di averlo fatto a tappeto, perche’ loro non si fanno il problema della privacy e sono buoni cittadini che si lasciano spiare.

Ok. Ma non tutti hanno il cellulare. O meglio: l’Italia e’ stata il paese dei record, che per primo ha raggiunto un numero di SIM superiore al numero di abitanti. Ma voglio aiutare chi sostiene che sia fattibile, e cosi’ togliamo gli anziani, togliamo i rincoglioniti come Serra che si vantano di non avere un cellulare, e diciamo pure che siano 30 milioni. Meta’ della popolazione. (Andare sotto ha poco senso: se A contagia B, o siamo a conoscenza di A, o di B, o non sappiamo nulla di nulla).

Bene.

Si tratta di raccogliere un logpoint con la posizione del cellulare. Ogni quanto dobbiamo prendere la posizione? Beh, se pensiamo che mandiamo la gente a lavorare e la gente prende la metro a Milano, facciamo pure un minuto. (ovviamente abbiamo un GPS perfetto che funziona anche indoor). Altrimenti uno sale la scala mobile , e io perdo tutti quelli vicini a lui.

Allora, se spediamo il logpoint immediatamente, sono 30 milioni di logpoint al minuto, che fa 500.000 transazioni per secondo. Il nostro API gateway di backend dovrebbe essere dimensionato un bel pochino meglio del server di INPS. Ma diciamo che i dati li inviamo OGNI ORA: li accumuliamo sul cellulare e li inviamo ogni ora. Aha. Siamo a 8334 TPS. Piu’ sostenibile. Ma la quantita’ di logpoint e l’ I/O cambiano di poco. Storage.

Per quanto dobbiamo tenere i dati, cioe’ per quanto dobbiamo sorvegliare una persona? Abbiamo detto, se non sbaglio, 12 giorni di “asintomaticita’ intettiva”. Cominciamo ad avere molti logpoint, 518.400.000.000. Non e’ impossibile, perche’ noi siamo amanti di Teradata, Cloudera&co. Se usiamo le istruzioni dell’ ars toscano sono 14, ma la quantita’ di dati cambia poco

Di comprare l’hardware e di montare una cosa da zero ce lo sognamo, perche’ per avere l’hardware , montarlo, avere energia, UPS, rete, raffreddamento e tutto occorrono settimane, se non mesi. Abbandonata l’opzione green field allora dobbiamo passare ad usare qualcosa di esistente.

Quindi, dobbiamo chiederci a chi vendiamo i dati. Diciamo pure che una telco locale abbia tutto l’hardware che serve e lo affittiamo a loro. Bene. Altrimenti dovremo rivolgerci ad un tenant di Azure, Amazon, Google, etc.

Benissimo. Adesso che sappiamo dove metterlo , dobbiamo scrivere la logica di questa cosa. Allora, il nostro job dovrebbe:

  • Per una persona che si e’ ammalata (IMSI,MSISDN,whatever).
  • Andare indietro e cercare tutti quelli con cui e’ stato in contatto.

Prima domanda: che cos’e’ il “contatto”.

Usiamo sempre la definizione di ARS toscana.

Se prendiamo tutti quelli che sono passati a meno di due metri per 15 minuti (supponiamo che il GPS prenda anche in metro , indoor al lavoro, e praticamente ovunque. E che abbia la precisione di un metro. Ammazza che satellite) , se questo e’ entrato nella metropolitana per 12 giorni di fila (diciamo 10 perche’ c’e’ un weekend di mezzo), siamo fottuti. E se troviamo uno che e’ andato a lavorare, la sua azienda va fermata? E’ da considerarsi “contatto”: secondo la definizione, e’ stato in un ambiente chiuso con lui, dice ARS toscana.La cosa comincia ad essere complicatina, eh?

O meglio, no: se siamo all’inizio dell’infezione, e abbiamo una decina di casi, si fa in fretta. Se siamo in Italia e ne abbiamo gia’ piu’ di centomila, e li mandiamo a lavorare, la pubblica amministrazione avrebbe avuto milioni e milioni di persone da mettere in quarantena preventiva.

Avrebbe dovuto ricevere una lista di 2 o 3 milioni di persone e poi raggiungerle tutte e dir loro di mettersi in quarantena. In alternativa, dovrebbero fare il tampone. Aha. Peccato che 2 o 3 milioni di tamponi non ci siano: quarantena e basta.

Quindi ok, aggiungiamo alla nostra APP un allarme , che ti dice “sei stato selezionato tra i sospetti di infezione, perche’ hai incrociato uno che aveva l’infezione. Mettiti a casa e non azzardarti ad uscire”. E siccome non ci sono i tamponi a sufficienza, deve stare a casa e sperare.

Quindi stiamo scrivendo una app che, in caso un tizio X sia malato, chiude l’azienda per cui ha lavorato, allerta tutti quelli che vivono con lui e tutti quelli che hanno viaggiato con lui.

Non sono un sociologo o uno psicologo, quindi non voglio sapere cosa farebbero questi milioni di persone che ricevono questo avviso. Quindi focalizziamoci su questo algoritmo:

  • Per ogni infetto (IMSI, MSISDN , whatever)
  • Cerca tutti quelli che sono stati in contatto con lui, negli scorsi 12 giorni, a meno di due metri e per piu’ di 15 minuti, OPPURE quelli che sono stati in ambiente chiuso con lui per tempo piu’ lunghi anche se a piu’ di due metri).

Adesso pero’ abbiamo un problemino: 12, 14 giorni di tempo. Un tizio ne ha contagiato un altro, che dopo un paio di giorni diventa infettivo. Quindi, se sono passati 4 giorni, dobbiamo avere un altro step: non solo tutti quelli che hanno incontrato Tizio, ma tutti quelli che hanno incontrato quelli che hanno incontrato tizio.

Se siamo all’inizio della pandemia, e abbiamo decine di casi, con qualche migliaio di quarantene volontarie siamo a posto. Se siamo gia’ al punto da averne centomila, cosi’ facendo otteniamo un andamento mediamente esponenziale. Il che non deve stupirci, perche’ non abbiamo pensato una cosa molto semplice: STIAMO SCRIVENDO UNA SIMULAZIONE DELLA PANDEMIA. E se il contagio procede in maniera esponenziale, l’algoritmo tira fuori un numero esponenzialmente crescente di nomi.

Bene. Allora diamo le specifiche ai nostri esperti di spark, e abbiamo una cosa di questo tipo.

  • Per ogni infetto (IMSI, MSISDN , whatever)
  • Cerca tutti quelli che sono stati in contatto con lui, negli scorsi 12 giorni, a meno di due metri e per piu’ di 15 minuti, OPPURE quelli che sono stati in ambiente chiuso con lui per tempo piu’ lunghi anche se a piu’ di due metri).
  • Per ogni sospetto, calcola quanto tempo fa e’ avvenuto il contatto , dividilo per due giorni ottenendo un fattore di ricorsione n.
  • Itera l’algoritmo n volte per ogni sospetto di livello n.

Ora, come cresce questa roba? Qual’e’ la complessita’ computazionale? Beh, dipendera’ dal numero medio di persone incontrate e dal tempo medio che e’ passato , e blablabla. Ma perche’ lo stiamo calcolando: la formula l’abbiamo gia’, ed e’ la solita esponenziale con un R0 di 2.5. Stiamo scrivendo una simulazione dell’epidemia, giusto? Quindi sappiamo gia’ come crescera’ questo numero. Non abbiamo bisogno di prove dove basta pensare.

Quindi, i numeri della nostra simulazione crescono COME i numeri dell’epidemia. Allora, se siamo come in Korea e siamo all’inizio, non c’e’ problema, fermiamo l’epidemia quando siamo a poche centinaia, forse migliaia di casi.

Ma se siamo gia’ nella situazione attuale, con centinaia di migliaia di persone infette, anche affidando alla APP il compito di allertare le persone infette di rimanere in casa in quarantena (e quindi NON uscire piu’ nemmeno per fare la spesa o andare a lavorare) , in modo da non ingolfare la pubblica amministrazione, nel corso di 12, 14 giorni andremmo ad allertare milioni di persone.

E non sono persone qualsiasi: sarebbe principalmente chi va al lavoro, e chi usa mezzi pubblici facendo un viaggio piu’ lungo di 15 minuti. Quindi in pratica colpiremmo i mezzi di trasporto urbani, le abitazioni di famiglie molto numerose e i luoghi di lavoro.

Ed ecco che il nostro algoritmo diventa inutilmente complesso, oneroso, e fa un uso spropositato di dati personali.

Perche’ dico inutilmente oneroso? Perche’ con cosi’ tanti infetti, per fare la stessa cosa sarebbe possibile calcolare , senza trattenere i dati degli utenti, i luoghi ove avvengono i contagi, e chiudere tutti i posti dello stesso tipo.

Ma noi volevamo mitigare il danno, giusto? Certo. Ed e’ possibile, per pochi malati, farlo. Ma quando hai centomila malati in giro, tracciare per grandi numeri non ha senso: conviene di piu’ trovare i posti ove avvengono questi contatti, e chiuderli preventivamente.

Soltanto nel caso in cui si parta da pochissimi casi ha senso una app del genere.

E anche in questo caso, adesso c’e’ un piccolo problema. Perche’ se i casi sono poche decine, abbiamo una prevalenza bassa. E per fermare una prevalenza bassa, 30 milioni di cellulari NON bastano. Basta usare la formula di stima a campione per capire che se vogliamo intercettare 10,100 casi su 60 milioni, il “campione” della nostra stima diventa catastroficamente alto, e in pratica dobbiamo tracciare TUTTI, per TUTTO il tempo.

Ricapitoliamo: perche’ la strategia funzioni e noi riusciamo a tenere la vita cosi’ com’e’, fermando SOLO i malati, occorre che:

  • Si arrivi all’ INIZIO della pandemia.
  • Si traccino TUTTI i cittadini, non solo meta’ o la maggior parte.
  • Le persone si isolino anche a casa (ma se sono poche le portiamo in ospedale, ha senso).

Quindi funziona nel caso della Korea del Sud. Che probabilmente aveva gia’ costruito il sistema da PRIMA che il contagio iniziasse: per programmare cose , creare API gateway, eccetera, serve , avendo dei programmatori eroici e l’infrastruttura scalabile e lo storage fatti, un paio di settimane, forse tre. I coreani probabilmente si sono messi al lavoro appena i cinesi hanno denunciato il problema.

Se per caso si arriva OGGI in Europa, non si puo’ fare quanto sopra, perche’ arriviamo tardi, e allora esiste un algoritmo di gran lunga piu’ efficace, cioe’ un metodo “particellare” simile a quello in uso per il calcolo di fluidi.

  • Si usa un numero piu’ basso di cellulari.
  • Si osserva in quali luoghi i malati hanno avuto i contatti sospetti.
  • Si chiudono i luoghi in questione, e tutti i luoghi dello stesso tipo. (o li si disciplina come si fa coi supermarket)

Questo metodo e’ computazionalmente piu’ semplice, richiede meno persone tracciate, NON richiede dati personali (stiamo identificando luoghi) e specialmente segnala molto bene personale infetto negli ospedali, case di riposo infette, ed altri focolai.

La morale della storia e’ molto semplice: quando si arriva tardi con centomila e piu’ infetti il metodo del tracciamento delle persone e’ piu’ complesso del metodo dell’identificazione dei luoghi piu’ pericolosi.

Lo svantaggio e’ che fa emergere i problemi REALI: ospedali con infermieri , case di riposo usate come deposito, mezzi di trasporto urbano (usati per andare al lavoro), e tante ma tante aziende.

Esattamente quello che NON si vuole sapere. Sarebbe utile saperlo, ma si preferisce usare un approccio che ormai e’ troppo tardi per usare efficacemente.

Non sono un fanatico delle teorie del complotto, ma proporre ORA il tracciamento e’ solo, secondo me, un tentativo di cambiare l’attitudine delle persone verso il tracciamento. “Essere tracciati oggi e’ un bene”, ci dicono.