4.2 Creating a SeqRecord Vers 4.1
Using a SeqRecord object is not very complicated, since all of the information is presented as attributes of the class. ** L'utilisation de l'objet SeqRecord n'est pas si compliquée, car toutes les informations sont explicitement énoncées comme un attribut de la classe. ** **
Usually you won’t create a SeqRecord “by hand”, but instead use Bio.SeqIO to read in a sequence file for you (see Chapter 5 and the examples below). However, creating SeqRecord can be quite simple. ** Normalement, vous ne créez pas vous-même l'objet SeqRecord, utilisez plutôt Bio.SeqIO pour le lire à partir du fichier de séquence. (Voir chap5 et l'exemple ci-dessous) Cependant, générer un SeqRecord est très simple. ** **
4.2.1 SeqRecord objects from scratch
To create a SeqRecord at a minimum you just need a Seq object: ** Vous pouvez créer un objet SeqRecord minimal en utilisant simplement la classe Seq. ** **
>>> from Bio.Seq import Seq
>>> simple_seq = Seq("GATC")
>>> from Bio.SeqRecord import SeqRecord
>>> simple_seq_r = SeqRecord(simple_seq)
Additionally, you can also pass the id, name and description to the initialization function, but if not they will be set as strings indicating they are unknown, and can be modified subsequently: ** De plus, l'identifiant, le nom et la description peuvent être attribués lors de l'initialisation. Si vous ne le faites pas, ces valeurs seront initialisées comme inconnues, mais vous pourrez les modifier ultérieurement. ** **
>>> simple_seq_r.id
'<unknown id>'
>>> simple_seq_r.id = "AC12345"
>>> simple_seq_r.description = "Made up sequence I wish I could write a paper about"
>>> print(simple_seq_r.description)
Made up sequence I wish I could write a paper about
>>> simple_seq_r.seq
Seq('GATC')
Including an identifier is very important if you want to output your SeqRecord to a file. You would normally include this when creating the object: ** Si vous souhaitez afficher SeqRecord sous forme de fichier, il est très important de lui donner un identifiant. Généralement ajouté lors de la création d'un objet. ** **
>>> from Bio.Seq import Seq
>>> simple_seq = Seq("GATC")
>>> from Bio.SeqRecord import SeqRecord
>>> simple_seq_r = SeqRecord(simple_seq, id="AC12345")
As mentioned above, the SeqRecord has an dictionary attribute annotations. This is used for any miscellaneous annotations that doesn’t fit under one of the other more specific attributes. ** Comme mentionné ci-dessus, SeqRecord a un attribut de type dictionnaire appelé annotation. Utilisez cette option pour les annotations diverses qui ne rentrent pas dans d'autres attributs explicites. ** **
Adding annotations is easy, and just involves dealing directly with the annotation dictionary: ** L'ajout d'annotations est facile, il suffit de les ajouter directement dans le dictionnaire. ** **
>>> simple_seq_r.annotations["evidence"] = "None. I just made it up."
>>> print(simple_seq_r.annotations)
{'evidence': 'None. I just made it up.'}
>>> print(simple_seq_r.annotations["evidence"])
None. I just made it up.
Working with per-letter-annotations is similar, letter_annotations is a dictionary like attribute which will let you assign any Python sequence (i.e. a string, list or tuple) which has the same length as the sequence: ** L'utilisation des annotations par lettre est similaire, letter_annotations peut affecter des données de séquence de type dictionnaire. (c'est-à-dire chaîne, liste ou tapple) **
>>> simple_seq_r.letter_annotations["phred_quality"] = [40, 40, 38, 30]
>>> print(simple_seq_r.letter_annotations)
{'phred_quality': [40, 40, 38, 30]}
>>> print(simple_seq_r.letter_annotations["phred_quality"])
[40, 40, 38, 30]
The dbxrefs and features attributes are just Python lists, and should be used to store strings and SeqFeature objects (discussed later in this chapter) respectively. ** Les références croisées à la base de données (.dbxrefs) et les informations sur les fonctionnalités sont utilisées pour stocker les types de liste, les chaînes et les objets SeqFeature, respectivement. (Voir plus loin dans ce chapitre) **
4.2.2 SeqRecord objects from FASTA files
This example uses a fairly large FASTA file containing the whole sequence for Yersinia pestis biovar Microtus str. 91001 plasmid pPCP1, originally downloaded from the NCBI. ** Cet exemple utilise un fichier FASTA assez volumineux contenant la séquence entière de Yersinia pestis. Je l'ai téléchargé de NCBI. ** **
This file is included with the Biopython unit tests under the GenBank folder, or online NC_005816.fna from our website. ** Le fichier contenant le test unitaire Biopython se trouve dans le dossier GenBank, ou vous pouvez également obtenir le fichier sur notre site. ** **
The file starts like this - and you can check there is only one record present (i.e. only one line starting with a greater than symbol): ** Ce fichier commence comme ceci - je n'ai qu'une seule ligne pour le moment (c'est-à-dire une ligne commençant par le signe supérieur à) **
>gi|45478711|ref|NC_005816.1| Yersinia pestis biovar Microtus ... pPCP1, complete sequence
TGTAACGAACGGTGCAATAGTGATCCACACCCAACGCCTGAAATCAGATCCAGGGGGTAATCTGCTCTCC
...
Back in Chapter 2 you will have seen the function Bio.SeqIO.parse(...) used to loop over all the records in a file as SeqRecord objects. ** Comme nous l'avons vu au chapitre 2, la fonction Bio.SeqIO.parse (...) parcourt tous les enregistrements du fichier objet SeqRecord. ** **
The Bio.SeqIO module has a sister function for use on files which contain just one record which we’ll use here (see Chapter 5 for details): ** Ici, nous utilisons une fonction sœur similaire trouvée dans le module Bio.SeqIO pour lire des fichiers qui n'ont qu'un seul enregistrement. (Les détails seront donnés au chapitre 5.) **
Now, let’s have a look at the key attributes of this SeqRecord individually – starting with the seq attribute which gives you a Seq object: ** Voyons maintenant les principaux attributs de SeqRecord - il renverra un objet Seq lorsque vous accéderez à l'attribut seq. ** **
>>> record.seq
Seq('TGTAACGAACGGTGCAATAGTGATCCACACCCAACGCCTGAAATCAGATCCAGG...CTG', SingleLetterAlphabet())
Here Bio.SeqIO has defaulted to a generic alphabet, rather than guessing that this is DNA. ** Bio.SeqIO a renvoyé l'alphabet génétique, inutile de dire que c'est l'ADN. ** **
If you know in advance what kind of sequence your FASTA file contains, you can tell Bio.SeqIO which alphabet to use (see Chapter 5). ** Si vous savez à l'avance quelles données de séquence seront incluses dans le fichier FASTA, vous pouvez spécifier l'alphabet à utiliser pour le module Bio.SeqIO (voir chapitre 5). ** **
Next, the identifiers and description: ** Viennent ensuite "Identifiant" et "Description": **
>>> record.id
'gi|45478711|ref|NC_005816.1|'
>>> record.name
'gi|45478711|ref|NC_005816.1|'
>>> record.description
'gi|45478711|ref|NC_005816.1| Yersinia pestis biovar Microtus ... pPCP1, complete sequence'
As you can see above, the first word of the FASTA record’s title line (after removing the greater than symbol) is used for both the id and name attributes. ** Comme nous l'avons vu ci-dessus, la première lettre du titre de la ligne d'enregistrement dans le fichier FASTA (après avoir supprimé le signe supérieur à>) est utilisée à la fois pour les attributs id et name. ** **
The whole title line (after removing the greater than symbol) is used for the record description. This is deliberate, partly for backwards compatibility reasons, but it also makes sense if you have a FASTA file like this: ** La ligne de titre entière (après avoir supprimé le signe supérieur à>) est utilisée pour décrire l'enregistrement. Ceci pour des raisons telles que la compatibilité avec le backend. Et encore plus avec les fichiers FASTA suivants. ** **
>Yersinia pestis biovar Microtus str. 91001 plasmid pPCP1
TGTAACGAACGGTGCAATAGTGATCCACACCCAACGCCTGAAATCAGATCCAGGGGGTAATCTGCTCTCC
...
Note that none of the other annotation attributes get populated when reading a FASTA file: ** Veuillez noter que les autres attributs sont vides au stade initial de la soumission du fichier FASTA. ** **
In this case our example FASTA file was from the NCBI, and they have a fairly well defined set of conventions for formatting their FASTA lines. ** Dans ce cours, notre exemple de fichier FASTA est tiré du NCBI et le format de l'enregistrement FASTA est assez bien conservé. ** **
This means it would be possible to parse this information and extract the GI number and accession for example. However, FASTA files from other sources vary, so this isn’t possible in general. ** En d'autres termes, il est possible d'analyser les informations et d'extraire les numéros d'IG et des informations supplémentaires. Mais avec d'autres sources, ce sera difficile. ** **
4.2.3 SeqRecord objects from GenBank files
As in the previous example, we’re going to look at the whole sequence for Yersinia pestis biovar Microtus str. 91001 plasmid pPCP1, originally downloaded from the NCBI, but this time as a GenBank file. ** Dans l'exemple précédent, nous avons vu la séquence entière de la bactérie Yersinia pestis téléchargée à partir du NCBI. Jetons un coup d'œil à la version GenBank cette fois. ** **
Again, this file is included with the Biopython unit tests under the GenBank folder, or online NC_005816.gbfrom our website. ** De même, utilisez un fichier avec le test unitaire Biopython du dossier GenBank ou téléchargez-le directement depuis le site. ** **
This file contains a single record (i.e. only one LOCUS line) and starts: ** Ce fichier contient un seul enregistrement (une seule, c'est-à-dire une ligne LOCUS) et commence **
LOCUS NC_005816 9609 bp DNA circular BCT 21-JUL-2008
DEFINITION Yersinia pestis biovar Microtus str. 91001 plasmid pPCP1, complete
sequence.
ACCESSION NC_005816
VERSION NC_005816.1 GI:45478711
PROJECT GenomeProject:10638
...
Again, we’ll use Bio.SeqIO to read this file in, and the code is almost identical to that for used above for the FASTA file (see Chapter 5 for details): ** De même, lisez le fichier en utilisant Bio.SeqIO et faites-le de la même manière que pour le fichier FASTA. (Voir le chapitre 5 pour plus de détails): **
>>> from Bio import SeqIO
>>> record = SeqIO.read("NC_005816.gb", "genbank")
>>> record
SeqRecord(seq=Seq('TGTAACGAACGGTGCAATAGTGATCCACACCCAACGCCTGAAATCAGATCCAGG...CTG',
IUPACAmbiguousDNA()), id='NC_005816.1', name='NC_005816',
description='Yersinia pestis biovar Microtus str. 91001 plasmid pPCP1, complete sequence.',
dbxrefs=['Project:10638'])
You should be able to spot some differences already! But taking the attributes individually, the sequence string is the same as before, but this time Bio.SeqIO has been able to automatically assign a more specific alphabet (see Chapter 5 for details): ** Vous devriez déjà avoir découvert quelques différences, mais regardons chacune d'elles, la séquence a les mêmes chaînes qu'avant, mais cette fois Bio.SeqIO a pu déterminer le type d'alphabet plus précisément. (Voir le chapitre 5 pour plus de détails) **
The name comes from the LOCUS line, while the id includes the version suffix. The description comes from the DEFINITION line: ** Le nom est la ligne LOCUS et l'id contient les informations de version. L'explication est tirée de la ligne DEFINITION. ** **
GenBank files don’t have any per-letter annotations: ** Il n'y a pas d'annotation par lettre dans le fichier GenBank. ** **
>>> record.letter_annotations
{}
Most of the annotations information gets recorded in the annotations dictionary, for example: ** De nombreuses informations d'annotation sont stockées dans le dictionnaire d'annotations. Par exemple: **
>>> len(record.annotations)
11
>>> record.annotations["source"]
'Yersinia pestis biovar Microtus str. 91001'
The dbxrefs list gets populated from any PROJECT or DBLINK lines: ** La liste dbxrefs reflète le contenu de la ligne PROJECT ou DBLINK. ** **
>>> record.dbxrefs
['Project:10638']
Finally, and perhaps most interestingly, all the entries in the features table (e.g. the genes or CDS features) get recorded as SeqFeature objects in the features list. ** Enfin, le plus intéressant, toutes les entrées de la table des fonctionnalités (par exemple les gènes ou les fonctionnalités CDS) sont stockées dans la liste des fonctionnalités en tant qu'objets SeqFeature. ** **
Recommended Posts