Question

J'écris un script en Perl qui recherche un motif (sous-chaîne) dans la séquence protéique (chaîne). La séquence de motifs à rechercher (ou sous-chaîne) est hhhDDDssEExD, où:

  • h est un acide aminé hydrophobe
  • s est un acide aminé de petite taille
  • x est un acide aminé
  • h, s, x peuvent avoir plusieurs valeurs séparément

Plusieurs valeurs peuvent-elles être attribuées à une variable? Si oui, comment devrais-je faire cela? Je souhaite attribuer une liste de valeurs multiples à une variable.

Était-ce utile?

La solution

Je ne suis pas un grand expert en perl, il existe donc peut-être un moyen plus rapide d'y parvenir, mais il semble que l'opérateur de correspondance "" // ". dans le contexte de liste est ce dont vous avez besoin. Lorsque vous affectez le résultat d'une opération de correspondance à une liste, l'opérateur de correspondance prend le contexte de liste et renvoie une liste avec chacune des sous-expressions délimitées par des parenthèses. Si vous spécifiez des correspondances globales avec le " g " drapeau, il retournera une liste de toutes les correspondances de chaque sous-expression. Exemple:

# print a list of each match for "x" in "xxx"
@aList = ("xxx" =~ /(x)/g);
print(join(".", @aList));

imprimera

x.x.x

Je suppose que vous avez une expression régulière pour chacun de ces 5 types h , D , s , E et x . Vous n'avez pas dit si chacune de ces parties est un seul caractère ou plusieurs, alors je vais supposer qu'il peut s'agir de plusieurs personnages. Si tel est le cas, votre solution pourrait ressembler à ceci:

$h = ""; # Insert regex to match "h"
$D = ""; # Insert regex to match "D"
$s = ""; # Insert regex to match "s"
$E = ""; # Insert regex to match "E"
$x = ""; # Insert regex to match "x"

$sequenceRE = "($h){3}($D){3}($s){2}($E){2}($x)($D)"

if ($line =~ /$sequenceRE/) {
    $hPart = $1;
    $sPart = $3;
    $xPart = $5;

    @hValues = ($hPart =~ /($h)/g);
    @sValues = ($sPart =~ /($s)/g);
    @xValues = ($xPart =~ /($x)/g);
}

Je suis sûr que quelque chose m'a échappé, et il y a quelques subtilités de Perl que j'ai oubliées, mais cela devrait vous faire avancer le plus possible. Pour plus d'informations, consultez le correspondant du match de Perl. et expressions régulières .

Autres conseils

Il semble que vous souhaitiez une sorte de correspondance de motif. Cela peut être fait avec des chaînes utilisant des expressions régulières.

Vous pouvez utiliser des classes de caractères dans votre expression régulière. Les cours que vous avez mentionnés seraient:

 h -> [VLIM]
 s -> [AG]
 x -> [A-IK-NP-TV-Z]

Le dernier signifie "A à I, K à N, P à T, V à Z".

L'expression régulière de votre exemple serait:

/[VLIM]{3}D{3}[AG]{2}E{2}[A-IK-NP-TV-Z]D/

Les expressions régulières Perl sont ce dont vous avez besoin

Je pourrais être complètement déconnecté, mais il semblerait que vous souhaitiez qu'un objet avec une méthode intégrée soit généré sous forme de chaîne.

Si vous commencez par une chaîne, comme celle que vous avez mentionnée, vous pouvez la transmettre à la classe en tant que nouvel objet, en utilisant des expressions régulières comme tout le monde l'a déjà suggéré pour analyser les fragments que vous affecteriez ensuite en tant que variables. cet objet. Enfin, vous pouvez lui demander de générer une chaîne basée sur les variables de cet objet, par exemple:

 $string = "COHOCOHOCOHOCOHOCOHOC";
 $sugar = new Organic($string);

 Class Organic {
 $chem;
       function __construct($chem) {
           $hydro_find = "OHO";
           $carb_find = "C";
           $this-> hydro = preg_find ($hydro_find, $chem);
           $this -> carb = preg_find ($carb_find, $chem);

        function __TO_STRING() {
           return $this->carb."="$this->hydro;
        }
   }

 echo $sugar;

D'accord, ce genre de problème s'est effondré à la fin, et c'était pseudo-php, pas perl. Mais si je comprends bien votre question, vous cherchez un moyen d’obtenir toutes les informations de la chaîne mais de les garder liées à cette chaîne. Ce sont des objets et des classes.

Vous voulez probablement un tableau (ou un tableau) ou un motif (qr //).

Ou peut-être Quantum :: Superpositions .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top