IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Modules Perl Discussion :

J'aimerais apprendre à compiler


Sujet :

Modules Perl

  1. #1
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut J'aimerais apprendre à compiler
    Bonjour,

    J'aimerais apprendre à compiler, n'auriez vous pas un tuto à me conseiller, je n'ai rien trouver sur ce forum mais j'ai peut-être mal cherché.
    Si j'ai bien compris Perl est un langage interprété qu'il ne faut pas compiler.
    Néanmoins il est parfois nécessaire de compiler certains modules avant de pourvoir les utiliser. Je ne comprends pas bien. Pourquoi faut il compiler certains pakages et pas d'autres?
    http://www.pasteur.fr/formation/info...n/ch05s02.html


    Sur ce site, on donne une partie de la réponse
    http://www.unix.org.ua/orelly/perl/perlnut/ch03_04.htm
    The compiler allows you to distribute Perl programs in binary form, which enables easy packaging of Perl-based programs without having to depend on the source machine having the correct version of Perl and the correct modules installed. After the initial compilation, running a compiled program should be faster to the extent that it doesn't have to be recompiled each time it's run.
    J'ai aussi vu qu'il y a plein de compilateurs différenst? Sur quels critères se baser afin de choisir celui qui convient le mieux à notre problème? il en faut un qui traduit donc du Perl en code binaire. Cela dépend aussi de mon OS, je suppose non?
    http://www.developpez.net/forums/sho...ight=compil%E9
    Dans ce post, on conseille PAR.

    Voici mon problème
    http://search.cpan.org/~sendu/bioper...o/Tools/HMM.pm
    This package comes with the main bioperl distribution. You also need to install the lastest bioperl-ext package which contains the XS code that implements the algorithms. This package won't work if you haven't compiled the bioperl-ext package.
    Déjà, je ne suis pas certaine d'avoir tout compris.
    L'algorithme que je veux utiliser dois donc être "traduit" en code XS. Et pour pouvoir ce faire, j'ai besoin de compiler le package bioperl-ext.
    Donc, je dois télécharge bioperl-ext, le compiler afin qu'il puis être utiliser par mon PC. Une fois cela fait, ce parckage traduira mon algorithme écrit en perl en code XS.
    Est-ce bien cela?



    Merci,


    Jasmine,
    -- Jasmine --

  2. #2
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    J'ai été lire dans le README de bioperl-ext
    This is the directory for the Bioperl C compiled Extensions.

    Depending on your choise of extensions, you might need
    Inline::MakeMaker and Inline::C to create the makefile. Use for
    example the cpan program to install Inline::MakeMaker and answer yes
    when prompted to install Inline::C.

    To install all of the extension packages, you can use the top-level
    Makefile.PL (present in the same directory you're reading this README
    from)
    bioperl-ext : extentions C compilées pour des alignements de séquences.

    Perl => code binaire
    code binaire généré sera utilisé par un moteur C
    Je dois donc utiliser Inline::C ?

    bioperl-ext : perl => C (grâce à Inline::C)
    hmm.ppm : utilisera bioperl-ext au niveau des alignements de séquences et traduira l'agorithme en un code XS?

    Je vais essayer de suivre le fichier README.


    Je crois que j'ai compris
    1) on peut compiler un programme écrit en Perl en code binaire
    2) on peut réécrire une module écrit en Perl en un autre langage comme C
    Et je mélangeais les 2 notions.


    Merci,

    Jasmine,
    -- Jasmine --

  3. #3
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    J'ai déjà compilé bioperl-ext pour toi, reviens un peu en arrière dans le sujet précédent, à un moment je t'ai envoyé le ppd nécessaire... Réinstalle-le.

    En fait on ne peut pas vraiment compiler Perl par nature (vu qu'on peut évaluer dynamiquement des morceaux de code sous forme de strings...), la plupart des "compilateurs" se contentent d'embarquer l'interpréteur perl, le script, et les modules qui lui sont nécessaires dans un seul exécutable. Les meilleurs dans le domaine sont PAR::Packer et Perl2Exe.
    ("perlcc" compilait du Perl vers du C partiellement, mais c'était une expérience vraiment pas très au point, et c'est abandonné maintenant, donc évite)

    Par contre un certain nombre de modules Perl comporte effectivement une partie en C pour la vitesse, ou l'intégration avec l'OS, ou avec une librairie C classique. Dans ce cas il faut effectivement compiler cette partie en C. Ou alors télécharger directement un paquetage binaire où cette compilation a déjà été effectué pour ton architecture. Par exemple ActivePerl distribue des .ppd qui référencent une archive précompilée, un certain nombre de distribution Linux propose des paquets contenant les modules CPAN les plus populaire, précompilés (pour ceux qui ont une partie en C, ce n'est pas le cas de la majorité, même si beaucoup de modules "indispensable" sont dans ce cas). Sous Windows les utilisateurs ont rarement les outils nécessaires installés sur leur ordinateurs, c'est pourquoi il est encore plus important que sous Linux d'avoir des paquetages binaires et pourquoi ActiveState a mis en place son PPM.

    --
    Jedaï

  4. #4
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par Jasmine80
    Perl => code binaire
    code binaire généré sera utilisé par un moteur C
    Je dois donc utiliser Inline::C ?

    bioperl-ext : perl => C (grâce à Inline::C)
    hmm.ppm : utilisera bioperl-ext au niveau des alignements de séquences et traduira l'agorithme en un code XS?
    En fait XS comme Inline::C sont des manières de faire cohabiter du code Perl et C, le Perl utilisant les fonctions définies en C (et donc compilées et très rapides espérons le, en tout cas c'est le but). Inline::C permet d'écrire directement son C dans son script Perl et est assez simple à utiliser (pourvu qu'on ait le nécessaire pour compiler, ce qui sous Windows n'est pas évident), XS est un peu plus complexe mais c'est la manière classique de lier du C et du Perl, et il est supporté partout, contrairement à Inline::C qui nécessite d'avoir le module Inline::C (qui n'est pas dans le CORE), c'est pourquoi XS est encore préféré pour écrire un module pour le CPAN. (En fait c'est un peu plus compliqué que ça, mais nous en resterons là pour l'instant).

    --
    Jedaï

  5. #5
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Oui, en effet, je te présente mes excuses mais vendredi j'avais tellement eu du mal, j'avais pataugé et oublié que tu avais déjà fait la compilation pour moi. Merci.

    Tapes juste "search bioperl", puis "install n" ou n sera le numéro désignant la dernière version de bioperl dans la liste que vient de te donner search.

    Ensuite, il va falloir que tu installes le moteur en C qui permet d'utiliser HMM, je l'ai compilé pour toi, mais je ne suis pas sûr qu'il fonctionne bien... A toi d'essayer. Pour l'installer, tu vas télécharger l'archive que je met en pièce jointe, et la décompresser dans un répertoire "rep" quelconque. Ensuite tu feras en ligne de commande : "ppm install rep\Bio-Tools-HMM.ppd".

    Dis nous si ça marche.

    --
    Jedaï
    Fichiers attachés HMM.zip (19,6 Ko, 2 affichages)

    Ensuite, il va falloir que tu installes le moteur en C qui permet d'utiliser HMM
    ActivePerl est ce un exemple de moteur?
    Il me faut donc l'équivalent en C?

    Parce que sans cela j'ai un message d'erreur:
    Argument "ACGT" isn't numeric in numeric lt (<) at C:/Perl/site/lib/Bio/Tools/HMM.pm line 160.
    Argument "NC" isn't numeric in numeric lt (<) at C:/Perl/site/lib/Bio/Tools/HMM.pm line 172.

    ------------- EXCEPTION: Bio::Root::Exception -------------
    MSG: Observation Sequence contains characters that is not in the
    alphabet of observation symbols!

    STACK: Error::throw
    STACK: Bio::Root::Root::throw C:/Perl/site/lib/Bio/Root/Root.pm:359
    STACK: Bio::Tools::HMM::baum_welch_training C:/Perl/site/lib/Bio/Tools/HMM.pm:299
    STACK: P:\Perl\scripts\MANIPU~1\HMM\HMM.pl:26
    -----------------------------------------------------------
    Free to wrong pool 223f38 not 30801b3.
    Le programme que j'essaie d'exécuter est simplement celui donner en exemple
    http://search.cpan.org/~sendu/bioper...o/Tools/HMM.pm



    Merci beaucoup,


    Jasmine,
    -- Jasmine --

  6. #6
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Argument "ACGT" isn't numeric in numeric lt (<) at C:/Perl/site/lib/Bio/Tools/HMM.pm line 160.
    Argument "NC" isn't numeric in numeric lt (<) at C:/Perl/site/lib/Bio/Tools/HMM.pm line 172.
    Je dirais que tu n'utilises pas le module correctement, plus qu'autre chose.
    Malheureusement je ne connais pas du tout ce module, j'y jetterais un coup d'oeil quand j'aurais un peu plus de temps.
    Ou alors peut-être que le module a d'autres problèmes...

    --
    Jedaï

  7. #7
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Je crois qu'à la base ce module est crée afin d'analyser des séries numériques. Mais, j'ai besoin de l'utiliser sur des séquences. Donc, il me réclamme des valeurs numériques au lieu de string. D'où l'utilité de bioeperl-ext qui va me permettre d'utiliser des letters. Est-ce plausible comme idée?


    la compilation permet elle que hmm.pm sache qu'il doit faire appel à bioperl-ext? je ne dois plus le remettre dans le code?
    hmm.ppm : utilisera bioperl-ext au niveau des alignements de séquences et traduira l'agorithme en un code XS
    Ce qui doit être traduit en C est en rapport avec l'alignement de séquences, or celui-ci varie à chaque appel du script.


    Merci pour ton aide.




    Jasmine,
    -- Jasmine --

  8. #8
    Membre émérite
    Avatar de Jasmine80
    Femme Profil pro
    Bioinformaticienne
    Inscrit en
    Octobre 2006
    Messages
    3 157
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 44
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Bioinformaticienne
    Secteur : Santé

    Informations forums :
    Inscription : Octobre 2006
    Messages : 3 157
    Points : 2 673
    Points
    2 673
    Par défaut
    Je viens de créer un nouveau post dans la partie bioinformatique car cela me parait plus adéquat.

    Merci,


    Jasmine,
    -- Jasmine --

Discussions similaires

  1. J'aimerais apprendre la programmation
    Par bobo3285 dans le forum Débuter
    Réponses: 2
    Dernier message: 23/07/2013, 12h29
  2. Apprendre un langage compilé "multi-plateforme" et "multi-purpose"
    Par Autodidacte xp dans le forum Langages de programmation
    Réponses: 34
    Dernier message: 15/12/2011, 18h38
  3. J'aimerais apprendre la POO mais..
    Par Sundark dans le forum Débuter
    Réponses: 8
    Dernier message: 25/05/2008, 21h20
  4. je veux apprendre la programmation quel language choisir??
    Par existance dans le forum Débuter
    Réponses: 26
    Dernier message: 06/08/2002, 05h32
  5. Réponses: 1
    Dernier message: 27/05/2002, 01h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo