13 - ficheiros13 - ficheiros13 - ficheiros13 - ficheiros13...

34
ICE-B ICE-B ICE-B ICE-B ICE-B ICE-B ICE-B ICE-B ICE-B 13 - Ficheiros 13 - Ficheiros 13 - Ficheiros 13 - Ficheiros 13 - Ficheiros 13 - Ficheiros 13 - Ficheiros 13 - Ficheiros 13 - Ficheiros Ludwig Krippahl

Upload: others

Post on 05-Oct-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B

13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros

Ludwig Krippahl

Page 2: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

1

FicheirosFicheirosFicheirosFicheirosFicheirosFicheirosFicheirosFicheirosFicheiros

Resumo■ Organização de um disco.• Sistema de ficheiros.• Ficheiros de texto e binários.

■ Operações sobre ficheiros de texto.• Simulação de digestão enzimática de ADN

■ Primeiro teste

Page 3: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

2

FicheirosFicheirosFicheirosFicheirosFicheirosFicheirosFicheirosFicheirosFicheiros

Armazenamento não-volátilArmazenamento não-volátilArmazenamento não-volátilArmazenamento não-volátilArmazenamento não-volátilArmazenamento não-volátilArmazenamento não-volátilArmazenamento não-volátilArmazenamento não-volátil

Page 4: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

3

ArmazenamentoArmazenamentoArmazenamentoArmazenamentoArmazenamentoArmazenamentoArmazenamentoArmazenamentoArmazenamento

Armazenamento não-volátil■ A memória RAM é volátil• Rápida mas, sem alimentação, os dados perdem-se

■ No armazenamento não-volátil os dados persistem• Disco rígido, SSD, pendisk, cartão de memória, ...

Organização dos ficheiros■ No suporte, os ficheiros estão organizados em blocos de bytes■ O hardware gere o acesso a esses blocos■ O Sistema Operativo gere a organização desses blocos■ O OS identifica cada ficheiro por um identificador único:• /home/user/Documents/ICE-B-1718-2/Lectures/13-files.html

• C:\Documents\ICE-B-1718-2\Lectures\13-files.html

Page 5: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

4

ArmazenamentoArmazenamentoArmazenamentoArmazenamentoArmazenamentoArmazenamentoArmazenamentoArmazenamentoArmazenamento

Sistema de ficheiros■ O OS identifica cada ficheiro por um identificador único:• /home/user/Documents/ICE-B-1718-2/Lectures/13-files.html

• C:\Documents\ICE-B-1718-2\Lectures\13-files.html

■ O identificador do ficheiro é composto por:• Caminho (directoria) onde está o ficheiro• Nome do ficheiro

■ Não pode haver dois ficheiros com mesmo identificadorEm Python, o caminho pode ser com /■ O carácter \ é usado em strings para caracteres especiais

Page 6: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

5

ArmazenamentoArmazenamentoArmazenamentoArmazenamentoArmazenamentoArmazenamentoArmazenamentoArmazenamentoArmazenamento

Sistema de ficheiros■ O caminho para o ficheiro pode ser absoluto, a partir da raiz• /home/user/Documents/ICE-B-1718-2/Lectures/13-files.html

• C:\Documents\ICE-B-1718-2\Lectures\13-files.html

■ ou relativo:• Pasta sob a pasta corrente: data/file.txt• Pasta "acima" da pasta corrente: ../file.txt• Pasta "ao lado" da pasta corrente: ../folder/file.txt

Page 7: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

6

ArmazenamentoArmazenamentoArmazenamentoArmazenamentoArmazenamentoArmazenamentoArmazenamentoArmazenamentoArmazenamento

Exemplo: disco rígido (HDD)Um disco rígido tem várias superfíciesmagnetizáveisOs bits são materializados no campomagnético induzidoEm clusters de sectors (e.g. cluster de8 sectores de 512 bytes)

Page 8: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

7

ArmazenamentoArmazenamentoArmazenamentoArmazenamentoArmazenamentoArmazenamentoArmazenamentoArmazenamentoArmazenamento

■ O acesso ao disco é maislento do que à RAM

• ~10ms "Seek" para a cabeçachegar à track

• ~2ms acesso para disco rodar atéposição certa

• Transferência

■ Multiplicado por cada"cluster"

• Mais lento se o disco estiverfragmentado

Page 9: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

8

FicheiroFicheiroFicheiroFicheiroFicheiroFicheiroFicheiroFicheiroFicheiro

Um ficheiro é uma sequência de bytes■ Independentemente de como o hardware os armazena■ Cada byte é um valor de 0 a 255■ Independentemente do tipo de ficheiroTodos os ficheiros são sequências de bytes■ O que determina o "tipo" de ficheiro é apenas a forma de interpretar

esses números• Texto, som, imagem, vídeo, etc...

Page 10: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

9

FicheiroFicheiroFicheiroFicheiroFicheiroFicheiroFicheiroFicheiroFicheiro

■ Um ficheiro é uma sequência de bytes• Informação no ficheiro (hexadecimal, 00-ff), codificado com UTF-8

Slide:Ficheiros

h3:Resumo

Organização de um disco.

Sistema de ficheiros.

Ficheiros de texto e binários.

Operações sobre ficheiros de texto.

Simulação de digestão enzimática de ADN

00000000 53 6c 69 64 65 3a 46 69 63 68 65 69 72 6f 73 0a |Slide:Ficheiros.|

00000010 20 68 33 3a 52 65 73 75 6d 6f 0a 20 4f 72 67 61 | h3:Resumo. Orga|

00000020 6e 69 7a 61 c3 a7 c3 a3 6f 20 64 65 20 75 6d 20 |niza....o de um |

00000030 64 69 73 63 6f 2e 0a 20 20 53 69 73 74 65 6d 61 |disco.. Sistema|

00000040 20 64 65 20 66 69 63 68 65 69 72 6f 73 2e 0a 20 | de ficheiros.. |

00000050 20 46 69 63 68 65 69 72 6f 73 20 64 65 20 74 65 | Ficheiros de te|

00000060 78 74 6f 20 65 20 62 69 6e c3 a1 72 69 6f 73 2e |xto e bin..rios.|

00000070 0a 20 4f 70 65 72 61 c3 a7 c3 b5 65 73 20 73 6f |. Opera....es so|

00000080 62 72 65 20 66 69 63 68 65 69 72 6f 73 20 64 65 |bre ficheiros de|

00000090 20 74 65 78 74 6f 2e 0a 20 20 53 69 6d 75 6c 61 | texto.. Simula|

000000a0 c3 a7 c3 a3 6f 20 64 65 20 64 69 67 65 73 74 c3 |....o de digest.|

000000b0 a3 6f 20 65 6e 7a 69 6d c3 a1 74 69 63 61 20 64 |.o enzim..tica d|

000000c0 65 20 41 44 4e 0a |e ADN.|

Page 11: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

10

FicheiroFicheiroFicheiroFicheiroFicheiroFicheiroFicheiroFicheiroFicheiro

■ Um ficheiro é uma sequência de bytes• Informação no ficheiro (hexadecimal, 00-ff), codificação própria (.wav)

RIFF4�iWAVEfmt @ � � fact data�i �� �x��)��s� �) 2� �I �e������

0b �"� �*!$#���(�'�����0�)�A �� ' �� �8%� ˭" 2'���Y �A��

00000000 52 49 46 46 34 9a 69 00 57 41 56 45 66 6d 74 20 |RIFF4.i.WAVEfmt |

00000010 14 00 00 00 11 00 01 00 40 1f 00 00 bb 0f 00 00 |........@.......|

00000020 00 02 04 00 02 00 f9 03 66 61 63 74 04 00 00 00 |........fact....|

00000030 00 00 00 00 64 61 74 61 00 9a 69 00 08 00 00 00 |....data..i.....|

00000040 9f f7 04 ff 78 83 80 29 a2 ba 73 dc 10 ba 29 12 |....x..)..s...).|

00000050 11 32 cb 12 bc 49 04 aa 65 b1 8a c1 9b 8a 8a 04 |.2...I..e.......|

00000060 30 62 15 98 22 b8 0b f0 2a 21 24 23 89 f0 ad 28 |0b.."...*!$#...(|

00000070 c8 0a 27 88 88 b8 99 9c 30 85 29 00 e8 41 02 0a |..'.....0.)..A..|

00000080 02 f8 8a 08 10 27 10 99 d9 0b 81 38 25 a0 01 cb |.....'.....8%...|

00000090 ad 22 0a 32 27 aa ba 00 e9 59 14 88 41 93 9b 0a |.".2'....Y..A...|

Page 12: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

11

FicheirosFicheirosFicheirosFicheirosFicheirosFicheirosFicheirosFicheirosFicheiros

Acesso a ficheiros em PythonAcesso a ficheiros em PythonAcesso a ficheiros em PythonAcesso a ficheiros em PythonAcesso a ficheiros em PythonAcesso a ficheiros em PythonAcesso a ficheiros em PythonAcesso a ficheiros em PythonAcesso a ficheiros em Python

Page 13: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

12

Ficheiros de textoFicheiros de textoFicheiros de textoFicheiros de textoFicheiros de textoFicheiros de textoFicheiros de textoFicheiros de textoFicheiros de texto

Ler e escrever ficheiros de texto em Python■ A função open(file, mode='r') recebe o nome do ficheiro■ Devolve um objecto que permite o acesso ao ficheiro.• Omitindo mode, o acesso é para leitura• O objecto pode ser usado como iterador, linha a linha• Devemos usar close para libertar o ficheiro

■ Ficheiroenzymes.txt

in_file = open('enzymes.txt') for line in in_file: print(line) in_file.close()

EcoRI;GAATTC;G-AATTC EcoRII;CCWGG;-CCWGG BamHI;GGATCC;G-GATCC TaqI;TCGA;T-CGA Sau3AI;GATC;-GATC AluI;AGCT;AG-CT

EcoRI;GAATTC;G-AATTC

EcoRII;CCWGG;-CCWGG

BamHI;GGATCC;G-GATCC

TaqI;TCGA;T-CGA

Sau3AI;GATC;-GATC

AluI;AGCT;AG-CT

Page 14: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

13

Ficheiros de textoFicheiros de textoFicheiros de textoFicheiros de textoFicheiros de textoFicheiros de textoFicheiros de textoFicheiros de textoFicheiros de texto

Ler e escrever ficheiros de texto em Python■ Se o ficheiro cabe em memória é mais prático readlines• O interpretador liberta o ficheiro quando apaga o objecto da memória• Nota: as strings na lista mantém o terminador de linha

lines = open('enzymes.txt').readlines() print(lines)

['EcoRI;GAATTC;G-AATTC\n', 'EcoRII;CCWGG;-CCWGG\n', 'BamHI;GGATCC;G-GATCC\n', 'TaqI;TCGA;T-CGA\n', 'Sau3AI;GATC;-GATC\n', 'AluI;AGCT;AG-CT']

EcoRI;GAATTC;G-AATTC

EcoRII;CCWGG;-CCWGG

BamHI;GGATCC;G-GATCC

TaqI;TCGA;T-CGA

Sau3AI;GATC;-GATC

AluI;AGCT;AG-CT

Page 15: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

14

Ficheiros de textoFicheiros de textoFicheiros de textoFicheiros de textoFicheiros de textoFicheiros de textoFicheiros de textoFicheiros de textoFicheiros de texto

Ler e escrever ficheiros de texto em Python■ Para escrever um ficheiro de texto, abrir em modo 'w'■ Nota: é preciso incluir a indicação de mudança de linha• Os ficheiros são sequências de bytes.• O byte 10 (ou 13+10 em Windows) é que indica mudança de linha.• O interpretador converte \n no código adequado.

out_file = open('test.txt','w') out_file.write('some text') out_file.write('some more text\n') out_file.write('some more text \n with a new line') out_file.close()

some textsome more text

some more text

with a new line

Page 16: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

15

Ficheiros bináriosFicheiros bináriosFicheiros bináriosFicheiros bináriosFicheiros bináriosFicheiros bináriosFicheiros bináriosFicheiros bináriosFicheiros binários

Ficheiros binários em Python■ Leitura: open(nome,'rb')■ Escrita: open(nome,'wb')■ A diferença é que não se assume que possa ser lido linha a linha

ou convertido em string■ Não vamos lidar com estes ficheiros em ICE• Excepto usando bibliotecas adequadas (e.g. ler imagens)

Page 17: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

16

FicheirosFicheirosFicheirosFicheirosFicheirosFicheirosFicheirosFicheirosFicheiros

Exemplo: digestão de ADNExemplo: digestão de ADNExemplo: digestão de ADNExemplo: digestão de ADNExemplo: digestão de ADNExemplo: digestão de ADNExemplo: digestão de ADNExemplo: digestão de ADNExemplo: digestão de ADN

Page 18: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

17

ExemploExemploExemploExemploExemploExemploExemploExemploExemplo

Simular a digestão de ADN■ Ficheiro sequences.txt com sequências:

ID-00:TGGACTTTGTTTGCACCGGGGCGCGAGTCGTACACCTATCTTGAGATGCAACTGA...

ID-01:CGGGGGACGCATCAGTTATGTTCGCTAAGACGAACTACAGTAACCGCTATATCCG...

ID-02:CCGATTAGACGCGGAAGCACACATAGAGAGCGTATCTTACTCTAGTTGTTGCCAA...

...

■ Ficheiro enzymes.txt com informação sobre enzimas

EcoRI;GAATTC;G-AATTC

EcoRII;CCWGG;-CCWGG

...

■ Objectivo: criar um ficheiro para cada enzima com:• Identificador da sequência, número de fragmentos

■ Ficheiros: EcoRI.txt, EcoRII.txt, BamHI.txt, ...

Page 19: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

18

ExemploExemploExemploExemploExemploExemploExemploExemploExemplo

Plano do programa■ Ler sequências para lista de tuplos, identificador e sequência■ Ler enzimas para lista de tuplos: id, reconhecimento, corte■ Digerir uma sequência com uma enzima■ Gravar um ficheiro, para uma enzima■ Gravar para todas as enzimas (função final, junta tudo)

Page 20: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

19

ExemploExemploExemploExemploExemploExemploExemploExemploExemplo

Plano do programa■ Ler sequências para lista de tuplos, identificador e sequência

def read_sequences(seq_file): """Read sequences file to list of tuples (id,sequence)"""

■ Ler enzimas para lista de tuplos: id, reconhecimento, corte

def read_enzymes(file_name): """Read enzyme data to list of tuples (id, recon,cut)"""

■ Digerir sequência:

def fragments(sequence,recon,cut): """Return a list of fragments from cutting the sequence"""

Page 21: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

20

ExemploExemploExemploExemploExemploExemploExemploExemploExemplo

Plano do programa■ Gravar um ficheiro, para uma enzima

def create_report(file_name,sequences,recon,cut): """Create report with number of fragments for one enzyme"""

■ Gravar para todas as enzimas (função final, junta tudo)

def create_all_reports(seq_file,enz_file): """Create one report file per enzyme, name.txt"""

■ Importante pensar primeiro no problema, decompor e planear oencaixe das várias funções.

■ O objectivo é podermos depois implementar cada função sem terde pensar em tudo

Page 22: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

21

Exemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementação

■ Ler ficheiro das sequências• Nota: strip para tirar espaços e mudança de linha no final da string

def read_sequences(seq_file): "Read sequences file to list of tuples (id,sequence)" sequences = [] seq_lines = open(seq_file).readlines() for sl in seq_lines: sid,seq = sl.split(':') sequences.append( (sid,seq.strip()) ) return sequences

In : seqs = read_sequences('sequences.txt') In : seqs Out: [('ID-00', 'TGGACT...'), ('ID-01', 'CGGGGG...'), ...]

Page 23: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

22

Exemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementação

■ Ler ficheiro com os dados das enzimas

def read_enzymes(file_name): """Read enzyme data to list of tuples (id, recon,cut)""" enzymes = [] lines = open(file_name).readlines() for el in lines: e_id,recon,cut = el.split(';') enzymes.append( (e_id, recon, cut.strip()) ) return enzymes

In : enzymes = read_enzymes('enzymes.txt') Out : [('EcoRI', 'GAATTC', 'G-AATTC'), ('EcoRII', 'CCWGG', '-CCWGG'), ('BamHI', 'GGATCC', 'G-GATCC'), ('TaqI', 'TCGA', 'T-CGA'), ('Sau3AI', 'GATC', '-GATC'), ('AluI', 'AGCT', 'AG-CT')]

Page 24: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

23

Exemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementação

■ Digerir uma sequência com uma enzima

def fragments(sequence,recon,cut): """Return a list of fragments from cutting the sequence""" marked = sequence.replace(recon,cut) return marked.split('-')

In : fragments('ACTTATTCTG','TT','T-T') Out: ['ACT', 'TAT', 'TCTG']

Page 25: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

24

Exemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementação

■ Criar ficheiro com relatório para uma enzima

def create_report(file_name,sequences,recon,cut): """Create report with number of fragments for one enzyme""" ofil = open(file_name,'w') for seq_record in sequences: seq_id,seq = seq_record frags = fragments(seq,recon,cut) ofil.write('{0}\t{1}\n'.format(seq_id, len(frags)) ) ofil.close()

■ Nota 1: não é preciso return (não devolve valor)■ Nota 2: escrita formatada• O método format permite usar uma string de formatação

• As partes {num} indicam onde pôr os argumentos do format, convertidos parastring

Page 26: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

25

Exemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementação

■ Criar ficheiro com relatório para uma enzima

def create_report(file_name,sequences,recon,cut): """Create report with number of fragments for one enzyme""" ofil = open(file_name,'w') for seq_record in sequences: seq_id,seq = seq_record frags = fragments(seq,recon,cut) ofil.write('{0}\t{1}\n'.format(seq_id, len(frags)) ) ofil.close()

In : sequences = [('s1','ATTA'),('s2','ATTCTTA'),('s3','ACTTATTCTG')] In : create_report('test.txt',sequences,'TT','T-T') In : print(open('test.txt').read()) s1 2 s2 3 s3 3

print(open(ficheiro).read())

■ Imprime o conteúdo do ficheiro lido como uma única string

Page 27: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

26

Exemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementaçãoExemplo, implementação

■ Função final, todos os relatórios

def create_all_reports(seq_file,enz_file): """Create one report file per enzyme, name.txt""" sequences = read_sequences(seq_file) enzymes = read_enzymes(enz_file) for enzyme in enzymes: enz_id,recon,cut = enzyme create_report(enz_id+'.txt',sequences,recon,cut)

In : create_all_reports('sequences.txt','enzymes.txt')

(EcoRI.txt)

ID-0 2

ID-1 1

ID-2 1

ID-3 1

ID-4 1

ID-5 1

...

(EcoRII.txt)

ID-0 1

ID-1 1

ID-2 1

ID-3 1

ID-4 1

ID-5 1

...

(BamHI.txt)

ID-0 1

ID-1 1

ID-2 1

ID-3 1

ID-4 1

ID-5 1

...

(TaqI.txt)

ID-0 3

ID-1 3

ID-2 4

ID-3 3

ID-4 3

ID-5 3

...

Page 28: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

27

FicheirosFicheirosFicheirosFicheirosFicheirosFicheirosFicheirosFicheirosFicheiros

AvaliaçõesAvaliaçõesAvaliaçõesAvaliaçõesAvaliaçõesAvaliaçõesAvaliaçõesAvaliaçõesAvaliações

Page 29: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

28

Avaliações ICEAvaliações ICEAvaliações ICEAvaliações ICEAvaliações ICEAvaliações ICEAvaliações ICEAvaliações ICEAvaliações ICE

Trabalhos■ O que já está planeado, mesmas datas e regras de avaliaçãoTestes■ O que está planeado, excepto alguma incerteza acerca da data do

segundo teste■ Mas o primeiro será no dia 28, como previsto, às■ Nota: dia 28 é uma terça-feira que é sexta-feira na FCT

Page 30: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

29

Avaliações ICEAvaliações ICEAvaliações ICEAvaliações ICEAvaliações ICEAvaliações ICEAvaliações ICEAvaliações ICEAvaliações ICE

Testes■ Os testes serão online• Problema: alunos partilharem as respostas

■ Perguntas com tempo limitado■ Perguntas individualizadas (usar o login do CLIP)■ A resposta é enviada por e-mail■ Só podem usar o vosso e-mail oficial da FCTEnsaio para o teste■ Estará disponível esta semana

Page 31: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

30

Avaliações ICEAvaliações ICEAvaliações ICEAvaliações ICEAvaliações ICEAvaliações ICEAvaliações ICEAvaliações ICEAvaliações ICE

Detecção de fraude■ Problema: trabalhos ou testes não serem feitos pelo aluno■ Ainda estamos a pensar na solução (isto não é definitivo)• Mas pode incluir video-chamadas com uma amostra de alunos ou algo semelhante

• Só para detectar fraude (não é defesa de nota para avaliação)

■ Há muita incerteza ainda acerca disto■ Quando tivermos o plano formulado avisamos

Page 32: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

31

FicheirosFicheirosFicheirosFicheirosFicheirosFicheirosFicheirosFicheirosFicheiros

ResumoResumoResumoResumoResumoResumoResumoResumoResumo

Page 33: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13

32

FicheirosFicheirosFicheirosFicheirosFicheirosFicheirosFicheirosFicheirosFicheiros

Resumo■ Ficheiros: sequência de bytes identificada por caminho + nome■ Ficheiros em Python: open■ Leitura e escrita de ficheiros• Não esquecer o close() se o objecto ficar guardado

Leitura adicional:■ Recomendada: Capítulo 13 dos apontamentos■ Opcional: Secções 14.1 e 14.2 do livro

Page 34: 13 - Ficheiros13 - Ficheiros13 - Ficheiros13 - Ficheiros13 ...iceb.ssdi.di.fct.unl.pt/1920/files/ICE-B-13.pdf · ICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-BICE-B 13 - Ficheiros13 - Ficheiros13