uniproj_2024


Nameuniproj_2024 JSON
Version 0.1.7 PyPI version JSON
download
home_pageNone
SummaryCe projet a pour but la manipulation et l'analyse de données de protéines issues de la base de données Uniprot via l'implémentation de classes Python.
upload_time2024-11-29 14:01:06
maintainerNone
docs_urlNone
authorMaya Givre, Thibaud Guiramand
requires_python>=3.8
licenseNone
keywords uniprot protein gene
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Mini projet protéomique

Ce projet a pour but la manipulation et l'analyse de données de protéines issues de la base de données Uniprot via l'implémentation de classes Python.

## Classe Uniprot

La classe Uniprot est destinée à représenter une protéine unique avec ses données principales extraites d'un fichier Uniprot au format texte.

### Constructeur

**init(contenu_fichier: str)**
Parse le contenu textuel d'une fiche Uniprot.
Extrait et stocke les informations suivantes sous forme d'attributs :

- id (str) : Identifiant Uniprot de la protéine.
- ac (str) : Numéro AC de la protéine.
- org (str) : Organisme associé à la protéine.
- gene (str) : Nom du gène de la protéine.
- seq (str) : Séquence peptidique de la protéine.
- go (list) : Liste d'identifiants GO associés à la protéine.

### Méthodes

**fasta_dump()**
Exporte la séquence de la protéine au format FASTA dans un fichier nommé [AC].fasta.
La ligne de commentaires commence par > et inclut : l'identification, l'organisme et le nom du gène.

**molecular_weight()** -> float
Calcule et retourne le poids moléculaire de la protéine en Daltons.

**average_hydrophobicity()** -> float
Calcule et retourne l'hydrophobicité moyenne de la séquence de la protéine en utilisant une échelle standardisée.

**occurence_prot()** -> dict
Calcule la fréquence relative des acides aminés dans la séquence de la protéine.
Retourne un dictionnaire où chaque clé est un acide aminé et la valeur associée est la fréquence relative de cet acide aminé.

## Classe Collection

La classe Collection représente un ensemble d'objets Uniprot et fournit des outils pour manipuler, trier et analyser ces objets.

### Constructeur

**init()**
Initialise une collection vide.

### Méthodes

**load_collection(fichier_in: str)**
Charge une collection à partir d'un fichier contenant plusieurs fiches Uniprot séparées par //.

**add(contenu_uniprot: str)**
Crée un objet Uniprot à partir du contenu textuel fourni et l'ajoute à la collection.
Lève une exception si la protéine est déjà présente.

**remove(uniprot_id: str)**
Supprime l'objet Uniprot correspondant à l'identifiant donné.
Lève une exception si l'identifiant est introuvable.

**sort_by_length(reverse=False)**
Trie les objets Uniprot dans la collection par la longueur de leur séquence.

**filter_for_hydrophobic(min_hydro: float)**
Retourne une liste des protéines ayant une hydrophobicité moyenne supérieure à min_hydro.
Ces protéines sont retournées dans un dictionnaire qui permet de pallier aux capacités limitées d'une liste.

Le filtrage expert n'a pas été codé.

**add(other: Collection)** -> Collection
Fusionne deux collections en créant une nouvelle instance sans doublons.

**go_view()** -> dict
Retourne un dictionnaire comptant les occurrences des mots-clés GO dans la collection.

**collX()** -> dict
Calcule et retourne les occurrences globales de chaque acide aminé dans la collection.

**draw_ABRL(uniprot_id: str)**
Génère et sauvegarde un histogramme représentant le log-ratio des occurrences d'acides aminés pour une protéine spécifique par rapport à leur occurrence moyenne dans la collection.
Sauvegarde le fichier sous le nom <uniprot_id>.png.

## Exemples d'utilisation

### 1. Manipulation d'une protéine individuelle avec la classe `Uniprot`

#### Charger une protéine à partir d'une fiche Uniprot
Voici un exemple d'utilisation des principales méthodes de la classe `Uniprot` :

```python
# Charger une fiche Uniprot à partir d'un fichier
protein = Uniprot(open("data/P05067.txt", 'r').read())

# Affichage des informations principales
print("ID:", protein.id)                   # Affiche l'identifiant Uniprot
print("AC:", protein.ac)                   # Affiche le numéro AC
print("Organisme:", protein.org)           # Affiche l'organisme associé
print("Gene:", protein.gene)               # Affiche le gène correspondant
print("Séquence:", protein.seq)            # Affiche la séquence peptidique complète
print("GO:", protein.go)                   # Affiche les identifiants GO associés

# Exporter au format FASTA
protein.fasta_dump()
print("La séquence a été exportée au format FASTA.")

# Calcul du poids moléculaire
molecular_weight = protein.molecular_weight()
print(f"Le poids moléculaire de la protéine est de : {molecular_weight:.2f} Da")

# Calcul de l'hydrophobicité moyenne
average_hydrophobicity = protein.average_hydrophobicity()
print(f"L'hydrophobicité moyenne de la protéine est de : {average_hydrophobicity:.2f}")

# Fréquence relative des acides aminés
occurrences = protein.occurence_prot()
print("Occurrences des acides aminés :")
for aa, freq in occurrences.items():
    print(f"  {aa}: {freq:.4f}")
```
### 2. Manipulation d'une collection de protéines avec la classe `Collection`

#### Charger, ajouter, afficher et supprimer des protéines

```python
from uniprot_collection import Collection 

# Charger la collection à partir d'un fichier
collection = Collection.load_collection("data/five_proteins.txt")

# Exemple de texte Uniprot pour ajouter une nouvelle protéine
uniprot_text = """ID   NEW_PROTEIN_HUMAN           Reviewed;        500 AA.
AC   P12345; Q67890;
DE   RecName: Full=New Protein; Short=NewP;
GN   Name=NewGene;
OS   Homo sapiens (Human).
SQ   SEQUENCE: 500 AA.
   MSKVEALQKSS..."""  # Exemple de texte Uniprot

# Créer une collection et ajouter des fiches Uniprots
collection = Collection()

# Ajouter l'objet Uniprot à la collection
collection.add(uniprot_text)

# Afficher le contenu de la collection
collection.display()

# Supprimer un Uniprot par son ID
collection.remove("NEW_PROTEIN_HUMAN")

# Afficher à nouveau après suppression
collection.display()

# Afficher le contenu initial de la collection
print("=== Contenu initial de la collection ===")
collection.display()

# Tester la méthode sort_by_length
print("\n=== Test de la méthode sort_by_length ===")
sorted_uniprots = collection.sort_by_length()
print("Proteines triées par longueur (croissante) :")
for uniprot in sorted_uniprots:
    print(f"ID: {uniprot.id}, Longueur: {len(uniprot.seq)} AA")

# Tester la méthode filter_for_hydrophobic avec min_hydro=0.4
print("\n=== Test de filter_for_hydrophobic avec retour en dictionnaire ===")
filtered_dict = collection.filter_for_hydrophobic_dict(0.4)
print(f"Protéines filtrées (dictionnaire) : {len(filtered_dict)} trouvées")
for uniprot_id, uniprot in filtered_dict.items():
    print(f"ID: {uniprot_id}, Hydrophobicité moyenne: {uniprot.average_hydrophobicity()}")

# Créer deux collections
collection_1 = Collection()
collection_2 = Collection()

# Ajouter des objets Uniprot fictifs
uniprot_1 = """ID   PROTEIN1_HUMAN           Reviewed;        300 AA.
AC   P12345;
OS   Homo sapiens (Human).
SQ   SEQUENCE: 300 AA.
   MSKVEALQKSS..."""
uniprot_2 = """ID   PROTEIN2_HUMAN           Reviewed;        400 AA.
AC   P67890;
OS   Homo sapiens (Human).
SQ   SEQUENCE: 400 AA.
   MSKVEALQKSS..."""
uniprot_3 = """ID   PROTEIN3_HUMAN           Reviewed;        500 AA.
AC   Q12345;
OS   Homo sapiens (Human).
SQ   SEQUENCE: 500 AA.
   MSKVEALQKSS..."""

# Ajouter les objets à leurs collections respectives
collection_1.add(uniprot_1)
collection_1.add(uniprot_2)

collection_2.add(uniprot_2)  # Doublon
collection_2.add(uniprot_3)

# Fusionner les collections
merged_collection = collection_1 + collection_2

# Afficher la collection fusionnée
print("=== Collection Fusionnée ===")
merged_collection.display()

# Analyser les termes GO dans la collection
print(collection.go_view())

# Calculer les occurrences globales des acides aminés
print(collection.collX())

# Tracer un histogramme des log-ratios pour une protéine spécifique
log_ratios = collection.draw_ABRL("SPRC_BOVIN")
print(log_ratios)
```

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "uniproj_2024",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "uniprot, protein, gene",
    "author": "Maya Givre, Thibaud Guiramand",
    "author_email": null,
    "download_url": "https://files.pythonhosted.org/packages/04/52/6c3917d5d1921b995c3d0baf5426bde4b76cca58c8c03dcc10b93737f0c2/uniproj_2024-0.1.7.tar.gz",
    "platform": null,
    "description": "# Mini projet prot\u00e9omique\n\nCe projet a pour but la manipulation et l'analyse de donn\u00e9es de prot\u00e9ines issues de la base de donn\u00e9es Uniprot via l'impl\u00e9mentation de classes Python.\n\n## Classe Uniprot\n\nLa classe Uniprot est destin\u00e9e \u00e0 repr\u00e9senter une prot\u00e9ine unique avec ses donn\u00e9es principales extraites d'un fichier Uniprot au format texte.\n\n### Constructeur\n\n**init(contenu_fichier: str)**\nParse le contenu textuel d'une fiche Uniprot.\nExtrait et stocke les informations suivantes sous forme d'attributs :\n\n- id (str) : Identifiant Uniprot de la prot\u00e9ine.\n- ac (str) : Num\u00e9ro AC de la prot\u00e9ine.\n- org (str) : Organisme associ\u00e9 \u00e0 la prot\u00e9ine.\n- gene (str) : Nom du g\u00e8ne de la prot\u00e9ine.\n- seq (str) : S\u00e9quence peptidique de la prot\u00e9ine.\n- go (list) : Liste d'identifiants GO associ\u00e9s \u00e0 la prot\u00e9ine.\n\n### M\u00e9thodes\n\n**fasta_dump()**\nExporte la s\u00e9quence de la prot\u00e9ine au format FASTA dans un fichier nomm\u00e9 [AC].fasta.\nLa ligne de commentaires commence par > et inclut : l'identification, l'organisme et le nom du g\u00e8ne.\n\n**molecular_weight()** -> float\nCalcule et retourne le poids mol\u00e9culaire de la prot\u00e9ine en Daltons.\n\n**average_hydrophobicity()** -> float\nCalcule et retourne l'hydrophobicit\u00e9 moyenne de la s\u00e9quence de la prot\u00e9ine en utilisant une \u00e9chelle standardis\u00e9e.\n\n**occurence_prot()** -> dict\nCalcule la fr\u00e9quence relative des acides amin\u00e9s dans la s\u00e9quence de la prot\u00e9ine.\nRetourne un dictionnaire o\u00f9 chaque cl\u00e9 est un acide amin\u00e9 et la valeur associ\u00e9e est la fr\u00e9quence relative de cet acide amin\u00e9.\n\n## Classe Collection\n\nLa classe Collection repr\u00e9sente un ensemble d'objets Uniprot et fournit des outils pour manipuler, trier et analyser ces objets.\n\n### Constructeur\n\n**init()**\nInitialise une collection vide.\n\n### M\u00e9thodes\n\n**load_collection(fichier_in: str)**\nCharge une collection \u00e0 partir d'un fichier contenant plusieurs fiches Uniprot s\u00e9par\u00e9es par //.\n\n**add(contenu_uniprot: str)**\nCr\u00e9e un objet Uniprot \u00e0 partir du contenu textuel fourni et l'ajoute \u00e0 la collection.\nL\u00e8ve une exception si la prot\u00e9ine est d\u00e9j\u00e0 pr\u00e9sente.\n\n**remove(uniprot_id: str)**\nSupprime l'objet Uniprot correspondant \u00e0 l'identifiant donn\u00e9.\nL\u00e8ve une exception si l'identifiant est introuvable.\n\n**sort_by_length(reverse=False)**\nTrie les objets Uniprot dans la collection par la longueur de leur s\u00e9quence.\n\n**filter_for_hydrophobic(min_hydro: float)**\nRetourne une liste des prot\u00e9ines ayant une hydrophobicit\u00e9 moyenne sup\u00e9rieure \u00e0 min_hydro.\nCes prot\u00e9ines sont retourn\u00e9es dans un dictionnaire qui permet de pallier aux capacit\u00e9s limit\u00e9es d'une liste.\n\nLe filtrage expert n'a pas \u00e9t\u00e9 cod\u00e9.\n\n**add(other: Collection)** -> Collection\nFusionne deux collections en cr\u00e9ant une nouvelle instance sans doublons.\n\n**go_view()** -> dict\nRetourne un dictionnaire comptant les occurrences des mots-cl\u00e9s GO dans la collection.\n\n**collX()** -> dict\nCalcule et retourne les occurrences globales de chaque acide amin\u00e9 dans la collection.\n\n**draw_ABRL(uniprot_id: str)**\nG\u00e9n\u00e8re et sauvegarde un histogramme repr\u00e9sentant le log-ratio des occurrences d'acides amin\u00e9s pour une prot\u00e9ine sp\u00e9cifique par rapport \u00e0 leur occurrence moyenne dans la collection.\nSauvegarde le fichier sous le nom <uniprot_id>.png.\n\n## Exemples d'utilisation\n\n### 1. Manipulation d'une prot\u00e9ine individuelle avec la classe `Uniprot`\n\n#### Charger une prot\u00e9ine \u00e0 partir d'une fiche Uniprot\nVoici un exemple d'utilisation des principales m\u00e9thodes de la classe `Uniprot` :\n\n```python\n# Charger une fiche Uniprot \u00e0 partir d'un fichier\nprotein = Uniprot(open(\"data/P05067.txt\", 'r').read())\n\n# Affichage des informations principales\nprint(\"ID:\", protein.id)                   # Affiche l'identifiant Uniprot\nprint(\"AC:\", protein.ac)                   # Affiche le num\u00e9ro AC\nprint(\"Organisme:\", protein.org)           # Affiche l'organisme associ\u00e9\nprint(\"Gene:\", protein.gene)               # Affiche le g\u00e8ne correspondant\nprint(\"S\u00e9quence:\", protein.seq)            # Affiche la s\u00e9quence peptidique compl\u00e8te\nprint(\"GO:\", protein.go)                   # Affiche les identifiants GO associ\u00e9s\n\n# Exporter au format FASTA\nprotein.fasta_dump()\nprint(\"La s\u00e9quence a \u00e9t\u00e9 export\u00e9e au format FASTA.\")\n\n# Calcul du poids mol\u00e9culaire\nmolecular_weight = protein.molecular_weight()\nprint(f\"Le poids mol\u00e9culaire de la prot\u00e9ine est de : {molecular_weight:.2f} Da\")\n\n# Calcul de l'hydrophobicit\u00e9 moyenne\naverage_hydrophobicity = protein.average_hydrophobicity()\nprint(f\"L'hydrophobicit\u00e9 moyenne de la prot\u00e9ine est de : {average_hydrophobicity:.2f}\")\n\n# Fr\u00e9quence relative des acides amin\u00e9s\noccurrences = protein.occurence_prot()\nprint(\"Occurrences des acides amin\u00e9s :\")\nfor aa, freq in occurrences.items():\n    print(f\"  {aa}: {freq:.4f}\")\n```\n### 2. Manipulation d'une collection de prot\u00e9ines avec la classe `Collection`\n\n#### Charger, ajouter, afficher et supprimer des prot\u00e9ines\n\n```python\nfrom uniprot_collection import Collection \n\n# Charger la collection \u00e0 partir d'un fichier\ncollection = Collection.load_collection(\"data/five_proteins.txt\")\n\n# Exemple de texte Uniprot pour ajouter une nouvelle prot\u00e9ine\nuniprot_text = \"\"\"ID   NEW_PROTEIN_HUMAN           Reviewed;        500 AA.\nAC   P12345; Q67890;\nDE   RecName: Full=New Protein; Short=NewP;\nGN   Name=NewGene;\nOS   Homo sapiens (Human).\nSQ   SEQUENCE: 500 AA.\n   MSKVEALQKSS...\"\"\"  # Exemple de texte Uniprot\n\n# Cr\u00e9er une collection et ajouter des fiches Uniprots\ncollection = Collection()\n\n# Ajouter l'objet Uniprot \u00e0 la collection\ncollection.add(uniprot_text)\n\n# Afficher le contenu de la collection\ncollection.display()\n\n# Supprimer un Uniprot par son ID\ncollection.remove(\"NEW_PROTEIN_HUMAN\")\n\n# Afficher \u00e0 nouveau apr\u00e8s suppression\ncollection.display()\n\n# Afficher le contenu initial de la collection\nprint(\"=== Contenu initial de la collection ===\")\ncollection.display()\n\n# Tester la m\u00e9thode sort_by_length\nprint(\"\\n=== Test de la m\u00e9thode sort_by_length ===\")\nsorted_uniprots = collection.sort_by_length()\nprint(\"Proteines tri\u00e9es par longueur (croissante) :\")\nfor uniprot in sorted_uniprots:\n    print(f\"ID: {uniprot.id}, Longueur: {len(uniprot.seq)} AA\")\n\n# Tester la m\u00e9thode filter_for_hydrophobic avec min_hydro=0.4\nprint(\"\\n=== Test de filter_for_hydrophobic avec retour en dictionnaire ===\")\nfiltered_dict = collection.filter_for_hydrophobic_dict(0.4)\nprint(f\"Prot\u00e9ines filtr\u00e9es (dictionnaire) : {len(filtered_dict)} trouv\u00e9es\")\nfor uniprot_id, uniprot in filtered_dict.items():\n    print(f\"ID: {uniprot_id}, Hydrophobicit\u00e9 moyenne: {uniprot.average_hydrophobicity()}\")\n\n# Cr\u00e9er deux collections\ncollection_1 = Collection()\ncollection_2 = Collection()\n\n# Ajouter des objets Uniprot fictifs\nuniprot_1 = \"\"\"ID   PROTEIN1_HUMAN           Reviewed;        300 AA.\nAC   P12345;\nOS   Homo sapiens (Human).\nSQ   SEQUENCE: 300 AA.\n   MSKVEALQKSS...\"\"\"\nuniprot_2 = \"\"\"ID   PROTEIN2_HUMAN           Reviewed;        400 AA.\nAC   P67890;\nOS   Homo sapiens (Human).\nSQ   SEQUENCE: 400 AA.\n   MSKVEALQKSS...\"\"\"\nuniprot_3 = \"\"\"ID   PROTEIN3_HUMAN           Reviewed;        500 AA.\nAC   Q12345;\nOS   Homo sapiens (Human).\nSQ   SEQUENCE: 500 AA.\n   MSKVEALQKSS...\"\"\"\n\n# Ajouter les objets \u00e0 leurs collections respectives\ncollection_1.add(uniprot_1)\ncollection_1.add(uniprot_2)\n\ncollection_2.add(uniprot_2)  # Doublon\ncollection_2.add(uniprot_3)\n\n# Fusionner les collections\nmerged_collection = collection_1 + collection_2\n\n# Afficher la collection fusionn\u00e9e\nprint(\"=== Collection Fusionn\u00e9e ===\")\nmerged_collection.display()\n\n# Analyser les termes GO dans la collection\nprint(collection.go_view())\n\n# Calculer les occurrences globales des acides amin\u00e9s\nprint(collection.collX())\n\n# Tracer un histogramme des log-ratios pour une prot\u00e9ine sp\u00e9cifique\nlog_ratios = collection.draw_ABRL(\"SPRC_BOVIN\")\nprint(log_ratios)\n```\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Ce projet a pour but la manipulation et l'analyse de donn\u00e9es de prot\u00e9ines issues de la base de donn\u00e9es Uniprot via l'impl\u00e9mentation de classes Python.",
    "version": "0.1.7",
    "project_urls": {
        "Documentation": "http://pedago-service.univ-lyon1.fr:2325/tguiramand/uniprot/-/blob/publish/README.md?ref_type=heads",
        "Repository": "http://pedago-service.univ-lyon1.fr:2325/tguiramand/uniprot/-/tree/publish?ref_type=heads"
    },
    "split_keywords": [
        "uniprot",
        " protein",
        " gene"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "9aadc1661f16a1b5c10a5f6722a683bdbefbfd05234cd86d0205ce269187b139",
                "md5": "ef215de7d5a6b5983c13e767cee383ec",
                "sha256": "b24b10e9933db63e28aa570d77f4ceda3a7adb7944b153cc857196ee62795d7a"
            },
            "downloads": -1,
            "filename": "uniproj_2024-0.1.7-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "ef215de7d5a6b5983c13e767cee383ec",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 9423,
            "upload_time": "2024-11-29T14:01:05",
            "upload_time_iso_8601": "2024-11-29T14:01:05.339348Z",
            "url": "https://files.pythonhosted.org/packages/9a/ad/c1661f16a1b5c10a5f6722a683bdbefbfd05234cd86d0205ce269187b139/uniproj_2024-0.1.7-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "04526c3917d5d1921b995c3d0baf5426bde4b76cca58c8c03dcc10b93737f0c2",
                "md5": "013a9bf12bc07dfc746fd993cef71fc4",
                "sha256": "9f46fecf009bd066c1b3bc3644c3edc83eea5fa629c5e282340efeda3b618877"
            },
            "downloads": -1,
            "filename": "uniproj_2024-0.1.7.tar.gz",
            "has_sig": false,
            "md5_digest": "013a9bf12bc07dfc746fd993cef71fc4",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 10574,
            "upload_time": "2024-11-29T14:01:06",
            "upload_time_iso_8601": "2024-11-29T14:01:06.741958Z",
            "url": "https://files.pythonhosted.org/packages/04/52/6c3917d5d1921b995c3d0baf5426bde4b76cca58c8c03dcc10b93737f0c2/uniproj_2024-0.1.7.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-11-29 14:01:06",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "uniproj_2024"
}
        
Elapsed time: 0.39957s