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

Langage Perl Discussion :

problèmes avec motifs


Sujet :

Langage Perl

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 6
    Points : 5
    Points
    5
    Par défaut problèmes avec motifs
    Bonsoir, mon problème est le suivant,
    j'ai un fichier "pdb" (par exemple ici 1J1H), dans lequel je dois remplacer l'avant dernier nombre
    par une valeur identique pour chaque groupe d'atome. ex du fichier pdb :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    ATOM    943  N   ILE A  60      17.874  -3.630  -2.201  1.00  0.33           N  
    ATOM    944  CA  ILE A  60      16.488  -3.129  -2.150  1.00  0.37           C  
    ATOM    945  C   ILE A  60      16.156  -2.460  -3.476  1.00  0.48           C  
    ATOM    946  O   ILE A  60      16.849  -1.587  -3.922  1.00  0.41           O  
    ATOM    947  CB  ILE A  60      16.352  -2.155  -0.949  1.00  0.47           C  
    ATOM    948  CG1 ILE A  60      16.726  -2.924   0.343  1.00  0.70           C  
    ATOM    949  CG2 ILE A  60      14.896  -1.692  -0.855  1.00  0.48           C  
    ATOM    950  CD1 ILE A  60      18.209  -3.320   0.323  1.00  1.71           C  
    ATOM    951  H   ILE A  60      18.621  -3.002  -2.122  1.00  0.46           H  
    ATOM    952  HA  ILE A  60      15.820  -3.967  -2.003  1.00  0.38           H  
    ATOM    953  HB  ILE A  60      17.009  -1.273  -1.062  1.00  0.66           H  
    ATOM    954 HG12 ILE A  60      16.533  -2.310   1.207  1.00  0.67           H  
    ATOM    955 HG13 ILE A  60      16.129  -3.820   0.411  1.00  1.25           H  
    ATOM    956 HG21 ILE A  60      14.860  -0.613  -0.863  1.00  0.76           H  
    ATOM    957 HG22 ILE A  60      14.341  -2.077  -1.698  1.00  0.76           H  
    ATOM    958 HG23 ILE A  60      14.460  -2.061   0.061  1.00  0.93           H  
    ATOM    959 HD11 ILE A  60      18.647  -3.136   1.289  1.00  2.07           H  
    ATOM    960 HD12 ILE A  60      18.295  -4.369   0.085  1.00  2.28           H  
    ATOM    961 HD13 ILE A  60      18.730  -2.742  -0.422  1.00  1.89           H
    c'est-à-dire ici ce qui précède la lettre de fin par le code se trouvant en dernière position du second fichier, et ce pour chaque groupe d'atome/
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Y  A59 C  63   0.00
    I  A60 E   3   0.00
    A  A61 E  38  -5.63
    Cependant, on code fonctionne pour environs 97% des lignes, mais pour les 3% restant déconne plus que trop
    il m'inverse l'avant dernière valeur et la précédente, ou me remplace le nombre en seconde position par le nombre que je suis placer en avant dernier.

    mon expression régulière est la suivante (dans une boucle qui détecte à quel groupe d'atome on se trouve via une expression régulière également)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    if ($LINES[$j]=~/(^ATOM)\s+(\d+)\s+(\w+)\s+(\w{3})\s(\w)\s+(\d+)/) {
    	$v=$6;
    	if ($i == $v) {
    		if ($LINES[$j]=~/(-?\d+\.\d+)\s+(\w)\s\s$/){
    			$LINES[$j]=~s/$1/$val[$i+1]/;
    		}
    	}
    }
    je ne comprend pas ce qui cloche dans mes expressions...

    une solution plus simple et moins propre serait de découper la chaine selon les espaces et de remplacer l'avant dernier, ca fonctionnerais, mais moins propre.

    Pourriez-vous m'aider svp... ?

    Merci ^^

    PS : aussi si qqun connais une facons de bien aligner toutes les "colonnes", je suis preneur

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    trouvé !

    problème de longueur de ligne restant...
    si la longueur de la ligne ATOM du fichier pdb est trop longue, pymol déconne à l'affichage,
    donc je voudrais "normaliser" la longueur des lignes pour l'ensemble...

  3. #3
    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
    Que vaut $i et $val[$i+1]?

    Cela ne serait-il pas plus propre d'utiliser le module prévu pour manipuler les fichier pdb Chemistry-File-PDB? Je ne l'ai jamais utilisé mais à ta place j'y jetterais un oeil.

    Que veux-tu dire par normaliser la longueur des lignes? Ajouter des espaces?
    -- Jasmine --

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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