Re: [Rio-pm] Função uniq com bug ou erro no codigo?

2017-03-06 Por tôpico Ronaldo Ferreira de Lima
Saudações Aureliano,

On Sun, Mar 05, 2017 at 04:35:49PM +, Aureliano Guedes wrote:
> Ola,
> 
> Caros Monges.
> 
> Estou com uma pequena dúvida.
> Estou usando a função uniq (List::Util e List::MoreUtils) para reduzir a
> redundância de um array.
> 
> echo "SP+TM+TM+TM+TM+TM+TM+TM+TM+TM+TM+TM" | perl -MList::Util='uniq' -MDDP 
> -ne
> '@a = uniq (split (/\+/, $_)); print "\n"; p @a; print "\n"'
> 
> Separa os elementos pelo '+' e depois remove a redundância. Acontece que o
> ultimo elemento for redundante ele não é eliminado.
> 
> Alguém sabe o porque disso??
O comando 'echo' produziu uma quebra de linha que não foi tratada pelo
código, ou seja, depois do 'split', a sua lista ficou assim:

$VAR1 = [
  "SP",
  "TM",
  "TM",
  "TM",
  "TM",
  "TM",
  "TM",
  "TM",
  "TM",
  "TM",
  "TM",
  "TM\n"
];

> 
> Alguma sujestão de como reverter sem q eu tenha que criar um script pra isso 
> ou
> minha propria rotina uniq??
Como já sugerido, remova a quebra de linha com o chomp ou similar que
estará resolvido.

> Desde já grato.
[]'s
-- 
"Não manejo bem as palavras
Mas manipulo bem as strings."
--
https://perspicazsite.wordpress.com
___
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm


Re: [Rio-pm] [DÚVIDA]Hash: varias key pra um mesmo value

2016-04-13 Por tôpico Ronaldo Ferreira de Lima
Saudações Aureliano,

Vou sugerir a abordagem mais simplista que consegui pensar:

Criar um hash com a correspondência entre aminoácidos e códons:
 
my %a2c = (  
A => [qw[CGA CGC CGT CGG]],  
F => [qw[TTC TTT]],  
L => [qw[TTA TTG CTA CTG CTC CTT]],  
...
);   
 
E em seguida criar o hash %aa do seu exemplo:  
 
my %aa;  
foreach my $aminoacido ( keys %a2c ) {   
foreach my $codom ( @{ $a2c{$aminoacido} } ) {   
$aa{$codom} = $aminoacido;   
}
}

Uma vez que você tem o conhecimento de "o quê gera quem", seria possível
ainda  modelar o  problema no  código  apenas codificando  as regras  do
negócio. A implementação  (acho) que poderia ser  apenas com permutações
e/ou funções/métodos.  Eu entendo nada  de BIO  e fico sem  poder ajudar
neste aspecto.

On Wed, Apr 13, 2016 at 12:24:53AM +, Aureliano Guedes wrote:
[...]
> Eu tenho varias códigos que acessam o mesmo valor (no caso que uso são vários
> códons que traduzem o mesmo aminoácido).
> 
> Exemplo:
> Aminoacido -> Códons
> Sendo os aminoácidos representados por 20 letras diferentes mais o X (stop
> códon).
> E os codons, combinações de 3 nucleotídeos, sendo um total de 4 nucleotídeos
> (A, T, C e G),  logo temos 64 combinações de 3 nucleotídeos (64 codons
> possíveis).
> Por isso um mesmo aminoácido pode ser codificado por mais de um códon.
> No caso do aminoácido Alanina (Ala || A) é códificado pelos códons GCA, GCC,
> GCT ou GCU.  Observe que os dois primeiros nucleotídeos são C e G,
> respectivamente, e o terceiro pode ser ocupado por qualquer um dos 4
> nucleotídeo possíveis.
> Dessa forma:
> 
>   o A -> CGA ou CGC ou CGT ou CGG
> 
> Outros:
> 
>   o F -> TTC || TTT
>   o L -> TTA || TTG || CTA || CTG || CTC || CTT
> 
> Bom, meu objetivo é simplesmente criar um hash, como esse:
> 
>   o my %aa = ( "UUU" => "F", "UUC" => "F",   "UUA" => "L", "UUG" 
> =>
> "L", "UCU" => "S", "UCC" => "S", "UCA" => "S", "UCG" => "S", "UAU"
> => "Y", "UAC" => "Y", "UAA" => "X","UAG" => "X", "UGU" => "C", "UGC" 
> =>
> "C", "UGA" => "X", "UGG" => "W", "CUU" => "L", "CUC" => "L", "CUA"
> => "L", "CUG" => "L", "CCU" => "P", "CCC" => "P", "CCA" => "P",
> "CCG" => "P", "CAU" => "H", "CAC" => "H", "CAA" => "Q", "CAG"
> => "Q", "CGU" => "R", "CGC" => "R", "CGA" => "R", "CGG" => "R",
> "AUU" => "I", "AUC" => "I", "AUA" => "I", "AUG" => "M", "ACU"
> => "T", "ACC" => "T", "ACA" => "T", "ACG" => "T", "AAU" => "N",
> "AAC" => "N", "AAA" => "K", "AAG" => "K", "AGU" => "S", "AGC"
> => "S", "AGA" => "R", "AGG" => "R", "GUU" => "V", "GUC" => "V",
> "GUA" => "V", "GUG" => "V", "GCU" => "A", "GCC" => "A", "GCA"
> => "A", "GCG" => "A", "GAU" => "D", "GAC" => "D", "GAA" => "E",
> "GAG" => "E", "GGU" => "G", "GGC" => "G", "GGA" => "G", "GGG" => 
> "G",);
> 
> Contudo pensei em tomar outra abordagem, informar pra chave quem ela pode ser.
> Não sei se é possível, mas eu comecei tentando algo como:
> 
>   o my %codon = ( "CG"./[ACTG]/ => "A", "TT"./[CT]/ => "F",
> ("TT"./[AG]/||"CU"./[ACTG]/) => "L",);
> 
> Mas não funcionou.
> 
> Pensei em pegar uma abordagem mais IUPAC, onde:
> 
>   o Y = C ou T
>   o R = A ou G
>   o N = A, C, G ou T
> 
> *tem outros, mas por enquanto apenas estou vendo a possibilidade.
> Então fiz:
> 
>   o my $Y = /[CT]/;
>   o my $R = /[AG]/;
>   o my $N = /[ACTG]/;
>   o
> 
>   o my %codon = ( "CG".$N => "A", "TT".$Y => "F", ("TT".$R||"CU".$N) => "L",);
> 
> Mas não funcionou.

-- 
"Não manejo bem as palavras
Mas manipulo bem as strings."
--
http://perspicazsite.wordpress.com

___
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm


Re: [Rio-pm] Dúvida com split

2014-11-07 Por tôpico Ronaldo Ferreira de Lima
Saudações Aureliano,

On Fri, Nov 07, 2014 at 02:03:08PM +, Aureliano Guedes wrote:
[...]
> o fato é que ainda não aprendi bem regex então não conhecia \w.
[...] 
Sendo regexp uma limitação, você  poderia fazer a manipulação de strings
sem  o  uso  de  regexp  neste caso.  Dois  exemplos  (de  provavelmente
dezenas):

1. # Obs.: Destrói o conteúdo de $rna
   my @condom;
   push @condom, substr $rna, 0, 3, q() while length $rna > 2;

2. # Trata o conteúdo da scalar $rna como um filehandle
   local $/ = \3;
   open my $fh, q(<), \$rna;
   my @condom = <$fh>;

[]'s
--
"Não manejo bem as palavras
Mas manipulo bem as strings."
--
http://tecnoveneno.blogspot.com
___
Rio-pm mailing list
Rio-pm@pm.org
http://mail.pm.org/mailman/listinfo/rio-pm