ACCESSO REMOTO AL SERVER SIBILLA Attraverso Internet è possibile accedere al server “sibilla.cribi.unipd.it”. Potrete così effettuare delle prove di SQL, HTML e Perl direttamente da casa prima dell’esame o anche completare le esercitazioni Tramite una connessione criptata (SSH) è possibile avere sul proprio computer (sia in ambiente UNIX, sia in ambiente WINDOWS) un terminale per lavorare su sibilla.cribi.unipd.it anche da casa. Sul terminale è sufficiente digitare la propria login e password BIOINFO3 - Lezione 32 1 ACCESSO REMOTO CON SSH Da LINUX è sufficiente usare il comando ssh: Per windows potete utilizzare questi due programmi: WinSCP: permette di copiare files dal client al server e viceversa Putty: ssh Potete scaricarli al seguente indirizzo: http://www.jfitz.com/tips/ssh_for_windows.html BIOINFO3 - Lezione 32 2 PUTTY 3 2 1 Il più semplice è “putty”, molto piccolo (300k) e quindi rapido da scaricare, è già pronto per essere eseguito (putty.exe) da windows. 4 BIOINFO3 - Lezione 32 3 WinSCP BIOINFO3 - Lezione 32 4 BIOINFO3 - Lezione 32 5 SOTTOPROBLEMI Con questa lezione concludiamo la panoramica sul Perl. Abbiamo visto insieme gli strumenti necessari per scrivere dei programmi in grado di risolvere problemi bioinformatici. Oggi vedremo come Perl permetta l’esecuzione di subroutine e di altri programmi. Vi avevo già accennato che l’approccio utilizzato comunemente per scrivere un programma che deve risolvere un problema è quello di spezzare il problema in sottoproblemi più semplici e tentare di risolvere questi ultimi singolarmente (approccio top-down). sottoproblema1 sottoproblema2 sottoproblema3 problema BIOINFO3 - Lezione 32 problema 6 PROGRAMMI ESTERNI Può capitare (quasi sempre…) che un sottoproblema che ci interessa risolvere sia già stato risolto da altri con la scrittura di un programma. Ad esempio il problema della ricerca delle sequenze più simili ad una sequenza query presenti in un database di sequenze è già stato abbondantemente studiato e risolto e numerosi programmi sono a disposizione per questo scopo. Ove possibile si tenterà perciò sempre di utilizzare i programmi già esistenti e il nostro programma risolverà quindi tali sottoproblemi semplicemente chiedendo l’esecuzione di un programma “esterno” già bell’e pronto. sottoproblema1 sottoproblema2 programma esterno sottoproblema3 programma Problema della riusabilità del software: cercare di scrivere dei programmi che siano facilmente riutilizzabili da altre persone o anche per altri problemi BIOINFO3 - Lezione 32 7 SUBROUTINE Un’altra possibilità è quella di riuscire a risolvere più sottoproblemi con una stessa “porzione” di codice (con lo stesso pezzetto di programma). In questo caso non avrebbe senso riscrivere più volte le stesse istruzioni ed infatti queste vengono scritte una volta sola, definendo una SUBROUTINE, che potrà poi essere eseguita ogni qualvolta sia necessario nel programma sottoproblema1 sottoproblema2 sottoproblema3 subroutine programma BIOINFO3 - Lezione 32 8 SUBROUTINE La differenza tra chiamata di subroutine e chiamata di programmi esterni consiste nel fatto che le subroutine sono generalmente scritte nello stesso linguaggio e nello stesso file in cui è scritto il resto del programma. Sono, anche fisicamente, una parte vera e propria del programma. In realtà è possibile avere delle subroutine in altri file e addirittura in altri linguaggi (ad esempio in assembler per eseguire in modo molto veloce determinate operazioni “time-consuming”). Quando però il programma viene compilato allora il programma principale e le subroutine sono comunque raggruppate assieme e vanno a formare un unico file eseguibile. Al momento dell’esecuzione avremo quindi l’esecuzione di un unico programma. Può essere molto utile usare delle subroutine anche per evidenziare meglio i vari sottoproblemi dedicando ad esempio una subroutine per ciascuno di essi. In questo caso le subroutine saranno eseguite solamente una volta ciascuna, ma daranno immediatamente l’idea delle parti che compongono il programma. BIOINFO3 - Lezione 32 9 PROGRAMMI ESTERNI Nel caso di un programma esterno, invece, verrà eseguito sia il nostro programma, sia tutti quelli esterni, richiesti dal nostro. Ogni programma esterno sarà eseguito da un nuovo processo di sistema operativo, diverso da quello che sta eseguendo il nostro programma. A seconda delle modalità di attivazione potremo avere che mentre il programma esterno è in esecuzione, il nostro programma venga momentaneamente interrotto, oppure che essi siano contemporaneamente in esecuzione (“in parallelo”). Anche le modalità di acquisizione dei risultati prodotti dal programma esterno possono essere variabili. I risultati potrebbero essere restituiti al programma chiamante direttamente in una stringa (e in tal caso il programma chiamante dovrà sicuramente essere interrotto e ripartirà solo quando il programma esterno è stato interamente eseguito). Oppure i risultati potrebbero essere salvati in un file, che poi il programma si preoccuperà di utilizzare BIOINFO3 - Lezione 32 10 RICAPITOLANDO… Da un programma possiamo chiamare sia subroutine sia programmi esterni Chiamata di subroutine Chiamata di programma esterno Chiamata di subroutine subroutine Programma esterno Programma BIOINFO3 - Lezione 32 11