Metodi disponibili per lo scripting
Synthetic Data Generator ha a disposizione una serie di metodi diversi per lo scripting.
È possibile utilizzare questi metodi per creare e modificare i nodi, collegare i nodi, modificare i flussi e ottenere informazioni sui nodi.
- Creazione di nodi
- Collegare e scollegare i nodi
- Impostazione delle proprietà
- Importazione, sostituzione ed eliminazione dei nodi
- Individuazione dei nodi
- Ottenere informazioni sui nodi
Metodi per la creazione di nodi
L'aggiunta di nodi ai flussi esistenti comporta in genere le seguenti operazioni:
- Creare i nuovi nodi.
- Collegare i nodi ai nodi esistenti nel flusso.
I metodi disponibili offrono una serie di modi per creare nodi tramite scripting.
| Metodo | Tipo di ritorno | Descrizione |
|---|---|---|
s.create(nodeType, name) |
Nodo | Crea un nodo del tipo specificato e lo aggiunge al flusso specificato. |
s.createAt(nodeType, name, x, y) |
Nodo | Crea un nodo del tipo specificato e lo aggiunge al flusso specificato nella posizione specificata. Se x è negativo o y è negativo, la posizione non è impostata. |
s.createModelApplier(modelOutput, name) |
Nodo | Crea un nodo di applicazione del modello derivato dall'oggetto di output del modello fornito. |
esempio di script
È possibile utilizzare il seguente script per creare un nodo mimc in un flusso:
stream = sdg.script.stream()
# Create a new Type node
node = stream.create("mimic", "Mimic1")
Collegare e scollegare i nodi
Dopo aver aggiunto un nuovo nodo a un flusso, è necessario collegarlo a una sequenza di nodi prima di poterlo utilizzare. Sono disponibili diversi metodi per collegare e scollegare i nodi.
| Metodo | Tipo di ritorno | Descrizione |
|---|---|---|
s.link(source, target) |
Non applicabile | Crea un nuovo collegamento tra il nodo di origine e quello di destinazione. |
s.link(source, targets) |
Non applicabile | Crea nuovi collegamenti tra il nodo di origine e ciascun nodo di destinazione nell'elenco fornito. |
s.linkBetween(inserted, source, target) |
Non applicabile | Collega un nodo tra due altre istanze di nodo (il nodo di origine e quello di destinazione) e imposta la posizione del nodo inserito tra di essi. In primo luogo viene rimosso qualsiasi collegamento diretto tra il nodo di origine e quello di destinazione. |
s.linkPath(path) |
Non applicabile | Crea un nuovo percorso tra le istanze dei nodi. Il primo nodo è collegato al secondo, il secondo al terzo e così via. |
s.unlink(source, target) |
Non applicabile | Elimina qualsiasi collegamento diretto tra i nodi di origine e quelli di destinazione. |
s.unlink(source, targets) |
Non applicabile | Rimuove tutti i collegamenti diretti tra il nodo di origine e ciascun oggetto nell'elenco dei destinatari. |
s.unlinkPath(path) |
Non applicabile | Rimuove qualsiasi percorso esistente tra le istanze dei nodi. |
s.disconnect(node) |
Non applicabile | Rimuove i collegamenti tra il nodo fornito e qualsiasi altro nodo del flusso specificato. |
s.isValidLink(source, target) |
booleano | Restituisce un valore che True indica se è possibile creare un collegamento tra i nodi di origine e di destinazione specificati. Questo metodo verifica che entrambi gli oggetti appartengano al flusso specificato, che il nodo di origine possa fornire un collegamento e quello di destinazione possa riceverlo e che la creazione di tale collegamento non provochi una circolarità nel flusso. |
esempio di script
Il codice di esempio riportato di seguito svolge queste cinque operazioni:
- Crea un nodo Import, un nodo Anonymize e un nodo Mimic.
- Collega i nodi tra loro.
- Esegue il nodo Mimic.
stream = sdg.script.stream()
sourcenode = stream.findByID("idGXVBG5FBZH")
anonymizenode = stream.createAt("anonymize", "Anonymize", 192, 64)
mimicnode = stream.createAt("mimic", "Mimic", 288, 64)
stream.link(sourcenode, anonymizenode)
stream.link(anonymizenode, mimicnode)
anonymizenode.setKeyedPropertyValue("include", "Drug", False)
results = []
mimicnode.run(results)
Metodi per impostare le proprietà
Nodi, flussi, modelli e output hanno tutti proprietà a cui si può accedere e, nella maggior parte dei casi, impostare. Le proprietà vengono solitamente utilizzate per modificare il comportamento o l'aspetto dell'oggetto. I metodi disponibili per accedere alle proprietà degli oggetti e impostarle sono riassunti nella tabella seguente.
| Metodo | Tipo di ritorno | Descrizione |
|---|---|---|
p.getPropertyValue(propertyName) |
Oggetto | Restituisce il valore della proprietà specificata oppure None se tale proprietà non esiste. |
p.setPropertyValue(propertyName, value) |
Non applicabile | Imposta il valore della proprietà specificata. |
p.setPropertyValues(properties) |
Non applicabile | Imposta i valori delle proprietà indicate. Ogni voce della mappa delle proprietà è costituita da una chiave che rappresenta il nome della proprietà e dal valore che deve essere assegnato a tale proprietà. |
p.getKeyedPropertyValue(propertyName, keyName) |
Oggetto | Restituisce il valore della proprietà specificata e della chiave associata oppure None se tale proprietà o chiave non esiste. |
p.setKeyedPropertyValue(propertyName, keyName, value) |
Non applicabile | Imposta il valore della proprietà specificata e della chiave. |
esempio di script
Il seguente script imposta il valore di un nodo Mimic per un flusso:
stream = sdg.script.stream()
node = stream.findByType("mimc", None)
node.setPropertyValue("name_extension", "new_mimic")
Metodi di localizzazione dei nodi
È possibile utilizzare la localizzazione di un nodo esistente. Questi metodi sono riassunti nella tabella seguente.
| Metodo | Tipo di ritorno | Descrizione |
|---|---|---|
s.findAll(type, label) |
Raccolta | Restituisce un elenco di tutti i nodi con il tipo e l'etichetta specificati. È possibile specificare sia il tipo che None l'etichetta; in tal caso, viene utilizzato l'altro parametro. |
s.findAll(filter, recursive) |
Raccolta | Restituisce un insieme di tutti i nodi che soddisfano il filtro specificato. Se il flag ricorsivo è True. |
s.findByID(id) |
Nodo | Restituisce il nodo con l'ID specificato oppure None se tale nodo non esiste. La ricerca è limitata al flusso di corrente. |
s.findByType(type, label) |
Nodo | Restituisce il nodo con il tipo, l'etichetta o entrambi specificati. È possibile specificare sia il tipo Noneche il nome; in tal caso, viene utilizzato l'altro parametro. Se più nodi corrispondono, ne viene scelto uno a caso e restituito. Se nessun nodo corrisponde, il valore restituito è None. |
s.findDownstream(fromNodes) |
Raccolta | Esegue una ricerca nell'elenco di nodi fornito e restituisce l'insieme dei nodi a valle dei nodi specificati. L'elenco restituito include i nodi forniti inizialmente. |
s.findUpstream(fromNodes) |
Raccolta | Esegue una ricerca nell'elenco di nodi fornito e restituisce l'insieme dei nodi a monte dei nodi specificati. L'elenco restituito include i nodi forniti inizialmente. |
s.findProcessorForID(id, recursive) |
Nodo | Restituisce il nodo con l'ID specificato oppure None se tale nodo non esiste. Se il flag ricorsivo è true, vengono cercati anche tutti i nodi composti all'interno di questo diagramma. |
Esempi di scripting
Ad esempio, se un flusso contiene un singolo nodo Evaluate a cui lo script deve accedere, il nodo Evaluate può essere trovato utilizzando il seguente script:
stream = sdg.script.stream()
node = stream.findByType("evaluate", None)
...
In alternativa, si può usare l'ID di un nodo. Ad esempio:
stream = sdg.script.stream()
node = stream.findByID("id49CVL4GHVV8") # the Evaluate node ID
node.setPropertyValue("mode", "Multiple")
node.setPropertyValue("name_extension", "evaluate")
Per aggiungere l'ID di qualsiasi nodo di un flusso a uno script, fare clic sull'icona Scripting nella barra degli strumenti, quindi selezionare il nodo desiderato nel flusso e fare clic su Inserisci ID nodo selezionato.
Metodi per importare, sostituire ed eliminare i nodi
A volte è necessario sostituire ed eliminare nodi da un flusso. È possibile utilizzare i seguenti metodi per importare, sostituire ed eliminare i nodi.
| Metodo | Tipo di ritorno | Descrizione |
|---|---|---|
s.replace(originalNode, replacementNode, discardOriginal) |
Non applicabile | Sostituisce il nodo specificato dal flusso specificato. Sia il nodo originale che quello sostitutivo devono essere di proprietà del flusso specificato. |
s.insert(source, nodes, newIDs) |
Elenco | Inserisce copie dei nodi presenti nell'elenco fornito. Si presume che tutti i nodi dell'elenco fornito siano contenuti nel flusso specificato. Il newIDs flag indica se devono essere generati nuovi ID per ogni nodo oppure se l'ID esistente deve essere copiato e utilizzato. Il metodo restituisce l'elenco dei nuovi nodi inseriti, il cui ordine non è definito. |
s.delete(node) |
Non applicabile | Elimina il nodo specificato dal flusso specificato. Il nodo deve essere di proprietà del flusso specificato. |
s.deleteAll(nodes) |
Non applicabile | Elimina tutti i nodi specificati dal flusso specificato. Tutti i nodi della collezione devono appartenere al flusso specificato. |
s.clear() |
Non applicabile | Elimina tutti i nodi del flusso specificato. |
Ottenere informazioni sui nodi
È possibile trovare informazioni sui nodi in diversi modi. È possibile utilizzare i seguenti metodi per ottenere l'ID, il nome e l'etichetta di un nodo.
| Metodo | Tipo di ritorno | Descrizione |
|---|---|---|
n.getLabel() |
stringa | Restituisce l'etichetta di visualizzazione del nodo specificato. L'etichetta corrisponde al valore della proprietà custom_name solo se tale proprietà è una stringa non vuota e la use_custom_name proprietà non è impostata; in caso contrario, l'etichetta corrisponde al valore di getName(). |
n.setLabel(label) |
Non applicabile | Imposta l'etichetta di visualizzazione del nodo specificato. Se la nuova etichetta è una stringa non vuota, viene assegnata alla proprietà custom_name, mentre False viene assegnata alla proprietà, in use_custom_name modo che l'etichetta specificata abbia la precedenza; in caso contrario, alla proprietà viene assegnata custom_name una stringa vuota, mentre True viene assegnata alla proprietà use_custom_name. |
n.getName() |
stringa | Restituisce il nome del nodo specificato. |
n.getID() |
stringa | Restituisce l'ID del nodo specificato. Ogni volta che viene creato un nuovo nodo, viene generato un nuovo ID. L'ID viene conservato con il nodo quando viene salvato come parte di un flusso, in modo che quando il flusso viene aperto, gli ID dei nodi vengano conservati. Tuttavia, se un nodo salvato viene inserito in un flusso, il nodo inserito viene considerato un nuovo oggetto e gli viene assegnato un nuovo ID. |
I metodi che è possibile utilizzare per ottenere ulteriori informazioni su un nodo sono riassunti nella tabella seguente.
| Metodo | Tipo di ritorno | Descrizione |
|---|---|---|
n.getTypeName() |
stringa | Restituisce il nome di scripting di questo nodo. Questo è lo stesso nome che potrebbe essere utilizzato per creare una nuova istanza di questo nodo. |
n.isInitial() |
Booleano | Restituisce True se si tratta di un nodo iniziale (che si verifica all'inizio di un flusso). |
n.isInline() |
Booleano | Restituisce True se si tratta di un nodo in linea (che si trova a metà del flusso). |
n.isTerminal() |
Booleano | Restituisce True se si tratta di un nodo terminale (che si trova alla fine di un flusso). |
n.getXPosition() |
int | Restituisce l'offset della posizione x del nodo nel flusso. |
n.getYPosition() |
int | Restituisce l'offset della posizione y del nodo nel flusso. |
n.setXYPosition(x, y) |
Non applicabile | Imposta la posizione del nodo nel flusso. |
n.setPositionBetween(source, target) |
Non applicabile | Imposta la posizione del nodo nel flusso in modo che sia posizionato tra i nodi forniti. |
n.isCacheEnabled() |
Booleano | Restituisce True se la cache è abilitata; restituisce False in caso contrario. |
n.setCacheEnabled(val) |
Non applicabile | Attiva o disattiva la cache per questo oggetto. Se la cache è piena e la memorizzazione nella cache viene disattivata, la cache viene svuotata. |
n.isCacheFull() |
Booleano | Restituisce True se la cache è piena; restituisce False in caso contrario. |
n.flushCache() |
Non applicabile | Svuota la cache di questo nodo. Non ha alcun effetto se la cache non è abilitata o non è piena. |