Só pra ser muito chato: >> popular um hash inteiro já com os grupos montados,
http://wiki.mtgsalvation.com/article/Populate Popular um hash é neologismo de 'populate a hash' que é equivalente a povoar um hash... 2012/11/29 <[email protected]>: > Só para ser chato: > > >> popular um hash inteiro já com os grupos montados, > > > popular > adj. 2 g. > 1. Relativo ou pertencente ao povo. > 2. Que é usado ou comum entre o povo. > 3. Que é do agrado do povo. > 4. Vulgar, notório. > 5. Democrático. > s. m. > 6. Homem do povo. > > povoar - Conjugar > (povo + -oar) > v. tr. > 1. Fundar povoações em. > 2. Estabelecer habitantes em. > 3. Disseminar animais para reprodução. > 4. Dispor grande quantidade de árvores em. > 5. Dispor grande quantidade de plantas (ex.: povoar o terreno de vinha). > >>>> 6. [Por extensão] Encher com determinada coisa (ex.: a notícia povoou a >>>> sua vida com alegria). > > > v. pron. > 7. Encher-se de habitantes. > > > Em 2012-11-29 19:41, Renato Santos escreveu: >> >> Assim, >> não sei se tem muita diferença na memoria entre um $h e um %s, >> >> eu costumo usar $h por habito mesmo, mas poderia ser push >> @{$h{$grupo}} sem problemas, talvez até @$h{$grupo} funcione certo >> >> O 'evitar o loop' q eu digo, é você popular um hash inteiro já com os >> grupos montados, por exemplo ,se o grupo for a cada 10 numeros reais, >> voce poderia retornar >> "-30:-20" como chave para todos os valores de entrada dessa funcao, e >> popular tudo de uma vez só, no lugar de ler as chaves a cada pergunta >> de intervalo >> >> 2012/11/29 Aureliano Guedes <[email protected]> >> >>> Renato, fiquei sem entender, no meu caso não esta fazendo so um loop? E >>> qual a diferença entre usar um hash %h ou tranformar $h em um hash?? >>> Desculpe as perguntas é que não faço nenhum curso ligado a computação >>> logo as vezes fico "boiando". >>> >>> Thiago, segue o script caso tenha também algo a modificar/acrescentar a >>> nível das minhas péssimas práticas. >>> >>> use warnings; >>> use strict; >>> use Path::Class; >>> >>> #Guardar os valores em um hash acessado pelo valor do mfe >>> sub h_energy{ >>> my $data = shift; >>> my $file = file($data)->openr(); >>> my %hmfe = (); >>> my $mirna; >>> my $record; >>> >>> while (my $linha = <$file>) { >>> if ( $linha =~ m{target:.*} ) { >>> $record = $linha . $record if ($record); >>> $hmfe{$mirna} = $record if ($mirna); >>> $mirna = $+{mirna}; >>> $record = q() if ($record); >>> } >>> elsif ($linha =~ m{mfe:s+(S+)s+kcal/mol}){ >>> >>> $mirna = $1; >>> $record .= $linha; >>> } >>> else { >>> $record .= $linha; >>> } >>> } >>> return %hmfe; >>> } >>> >>> sub termofilter{ >>> my ($data, $min, $max) = @_; >>> my %d = h_energy($data); >>> >>> foreach my $keys (keys %d){ >>> if($keys >= $min and $keys <= $max){ >>> print $keys . "n"; >>> } >>> } >>> } >>> termofilter("hybrid.txt", "-30", "-20"); >>> >>>> Date: Thu, 29 Nov 2012 17:27:15 -0200 >>> >>> >>>> From: [email protected] >>>> To: [email protected] >>> >>> > Subject: Re: [Rio-pm] Chaves de hash >>>> >>>> >>>> Onde estou agora o firewall bloqueia o pastebin. Pela sua explicação, >>>> verificar por regex seria uma solução segura. O número sera convertido >>>> para um string e, se a sua regex prevê uma margem segura para a >>> >>> > imprecisão do ponto flutuante na sua aplicação, funciona sem problemas. >>>> >>>> >>>> Em 2012-11-29 16:59, Aureliano Guedes escreveu: >>>> > Nossa, aqui virou uma arena de ideias, da para aprender muita coisa >>> >>> > > so lendo. >>>> >>>> > >>>> > O problema é o seguinte, eu tenho uma lista nesse formato: >>>> > >>>> > target: 01010101 >>>> > length: 581 >>>> > miRNA : hsa-miR-15a >>>> > length: 22 >>> >>> > > >>>> >>>> > mfe: -24.4 kcal/mol >>>> > p-value: 0.334111 >>>> > >>>> > position 244 >>>> > target 5' C UCUCCUGUGGUCUCU G U 3' >>>> > CACA GACCA GUGCUGUU >>>> > GUGU UUGGU CACGACGA >>> >>> > > miRNA 3' AAUA U 5' >>>> >>>> > >>>> > Conforme este arquivo http://pastebin.com/9v6WFUT7 [1] >>>> >>>> > >>>> > Eu quero filtrar essa lista de acordo com o valor de mfe. >>> >>> > > >>>> >>>> > Exemplo, se mfe for menor que -30 e maior que -20 esta dentro. >>>> > >>>> > Logo fiz da seguinte forma: http://pastebin.com/Dnhv0Zya [2] >>> >>> > > >>>> >>>> > Funcionou, o problema era sono. Não percebi que a regex estava >>>> > pegando um espaço. >>>> > >>>> > Quanto a usar reais como chave de hash, se eu tiver dois reais iguais >>>> > poderá ser um problema para acessar os valores, >>> >>> > > mas em toda regra existe sua exceção. >>>> >>>> > >>>> > No meu caso, o que me importa é que mfe esteja no intervalo >>>> > determinado. >>>> > >>>> > Caso descordem seria uma honra ler a explicação de qualquer um de >>> >>> > > vocês. >>>> >>>> > >>>> >> Date: Thu, 29 Nov 2012 16:44:50 -0200 >>>> >> From: [email protected] >>>> >> To: [email protected] >>> >>> > >> Subject: Re: [Rio-pm] Chaves de hash >>>> >>>> >> >>>> >> Um exemplo mais preciso: >>>> >> >>>> >> $ uname -a >>>> >> SunOS cg01spo 5.10 Generic_138888-03 sun4v sparc >>> >>> > >> SUNW,SPARC-Enterprise-T5120 >>>> >>>> >> >>>> >> $ perl -E ' >>>> >> if (0.2 > 0.19999999999999997){ >>>> >> say "0.2 is greater than 0.19999999999999997";} >>> >>> > >> else { >>>> >>>> >> say "Floating Point is not true real"};' >>>> >> 0.2 is greater than 0.19999999999999997 >>>> >> $ >>>> >> >>>> >> $ perl -E ' >>> >>> > >> if (0.2 > 0.19999999999999998){ >>>> >>>> >> say "0.2 is greater than 0.19999999999999998";} >>>> >> else { >>>> >> say "Floating Point is not true real"};' >>> >>> > >> Floating Point is not true real >>>> >>>> >> $ >>>> >> >>>> >> Por que é importante saber essas coisas? >>>> >> http://ta.twi.tudelft.nl/users/vuik/wi211/disasters.html [3] >>> >>> > >> >>>> >>>> >> >>>> >> >>>> >> >>>> >> >>>> >> >>>> >> Em 2012-11-29 15:13, [email protected] escreveu: >>> >>> > >> >> Não se compara reais por igualdade. >>>> >>>> >> > Se você tem erro na igualdade, terá nas outras comparações se a >>>> >> > diferença entre os números for menor que o maior acréscimo >>> >>> > >> suportado >>>> >>>> >> > pela plataforma: >>>> >> > >>>> >> > $ perl -E ' >>>> >> > if (0.2 > 0.19999999999999999999999999999999999999999999){ >>>> >> >> say "0.2 is greater than >>> >>> > >> 0.19999999999999999999999999999999999999";} >>>> >>>> >> >> else { >>>> >> >> say "Floating Point is not true real"};' >>>> >> > Floating Point is not true real >>> >>> > >> > $ >>>> >>>> >> > >>>> >> > $ perl -E ' >>>> >> > if (0.2 > 0.199999){ >>>> >> > say "0.2 is greater than 0.199999";} >>>> >> > else { >>> >>> > >> > say "Floating Point is not true real"};' >>>> >>>> >> > 0.2 is greater than 0.199999 >>>> >> > $ >>>> >> > >>>> >> > Então, comparar pontos flutuantes não é seguro. Nem igualdade, nem >>> >>> > >> > maio, nem menor. >>>> >>>> >> > >>>> >> > E mais: garanto que se você quer usar um número real como chave de >>>> >> > Hash você tem um problema na análise da lógica do problema que >>> >>> > >> está >>>> >>>> >> > enfrentando e como solucioná-lo. >>>> >> > >>>> >> > >>>> >> > Em 2012-11-29 10:36, Blabos de Blebe escreveu: >>>> >> >> Na verdade é o contrário, não? >>> >>> > >> >> >>>> >>>> >> >> Não se compara reais por igualdade. >>>> >> >> >>>> >> >> Se você usa reais como chaves de hash, você tem algum problema... >>>> >> >> >>> >>> > >> >> Ao não controlar a representação interna em ponto flutuante, você >>>> >>>> >> >> pode >>>> >> >> nunca mais alcançar o valor relacionado à chave, se usar um >>>> >> número >>> >>> > >> >> real como chave, pois qualquer bit diferente, mesmo que >>>> >>>> >> arredondando >>>> >> >> no mesmo número vai resultar num cálculo diferente na tabela >>>> >> hash. >>> >>> > >> >> >>>> >>>> >> >> Igualdade entre númros reais constuma ser definida como algo >>>> >> assim: >>>> >> >> >>>> >> >> sub float_equal { >>>> >> >> my ($first, $second) = @_; >>> >>> > >> >> my $threshold = 0.00000001 # arbitrário >>>> >>>> >> >> return abs( $first - $second ) < $threshold; >>>> >> >> } >>>> >> >> >>>> >> >> Converter para string antes de usar como chave de hash também não >>> >>> > >> me >>>> >>>> >> >> parece saudável, pois, embora a string vá funcionar bem no hash, >>>> >> >> você >>>> >> >> não garante que a conversão vai resultar sempre na mesma string, >>> >>> > >> e >>>> >>>> >> >> aí >>>> >> >> vc se ferra do mesmo jeito. >>>> >> >> >>>> >> >> Por outro lado, se você nunca vai acessar o elemento do hash >>>> >> através >>> >>> > >> >> da chave, um foreach por keys() ou values() vai te retornar os >>>> >>>> >> >> valores... >>>> >> >> >>>> >> >> Mas aí eu te perguntaria por que rails você está usando hash pra >>> >>> > >> >> isso... >>>> >>>> >> >> >>>> >> >> >>>> >> >> >>>> >> >> On Thu, Nov 29, 2012 at 6:47 AM, <[email protected]> >>> >>> > >> wrote: >>>> >>>> >> >>> Existe um problema aqui, diferente da comparação. >>>> >> >>> A comparação de reais é problemática devido a estrutura interna >>>> >> do >>>> >> >>> ponto >>> >>> > >> >>> flutuante. NÃO SE COMPARA REAIS POR MAIOR OU MENOR.Isso não é do >>>> >>>> >> >>> Perl, mas >>>> >> >>> das regras de aproximação usada pelos processadores. >>>> >> >>> >>> >>> > >> >>> Rounding rules >>>> >>>> >> >>> >>>> >> >>> The standard defines five rounding rules. The first two round to >>>> >> a >>>> >> >>> nearest >>> >>> > >> >>> value; the others are called directed roundings: >>>> >>>> >> >>> Roundings to nearest >>>> >> >>> >>>> >> >>> Round to nearest, ties to even – rounds to the nearest value; >>> >>> > >> >>> if the >>>> >>>> >> >>> number falls midway it is rounded to the nearest value with an >>>> >> even >>>> >> >>> (zero) >>>> >> >>> least significant bit, which occurs 50% of the time; this is the >>> >>> > >> >>> default for >>>> >>>> >> >>> binary floating-point and the recommended default for decimal. >>>> >> >>> Round to nearest, ties away from zero – rounds to the nearest >>> >>> > >> >>> value; if >>>> >>>> >> >>> the number falls midway it is rounded to the nearest value above >>>> >> >>> (for >>>> >> >>> positive numbers) or below (for negative numbers); this is >>> >>> > >> intended >>>> >>>> >> >>> as an >>>> >> >>> option for decimal floating point. >>>> >> >>> >>>> >> >>> Directed roundings >>>> >> >>> >>> >>> > >> >>> Round toward 0 – directed rounding towards zero (also known as >>>> >>>> >> >>> truncation). >>>> >> >>> Round toward +∞ – directed rounding towards positive infinity >>> >>> > >> >>> (also >>>> >>>> >> >>> known as rounding up or ceiling). >>>> >> >>> Round toward −∞ – directed rounding towards negative infinity >>>> >> >>> (also >>> >>> > >> >>> known as rounding down or floor). >>>> >>>> >> >>> >>>> >> >>> Se a comparação for inevitável, converta o seu número para >>>> >> string e >>>> >> >>> compare >>> >>> > >> >>> ou determine um nível de precisão aceitável e faça bit a bit. >>>> >>>> >> >>> >>>> >> >>> Em 2012-11-28 21:42, Aureliano Guedes escreveu: >>>> >> >>>> >>> >>> > >> >>>> Ola Monges. >>>> >>>> >> >>>> >>>> >> >>>> Estou com um problema simples mas que não acho a solução. >>>> >> >>>> >>>> >> >>>> Eu tenho um hash onde as chaves são valores numericos reais (a >>> >>> > >> >>>> maioria negativo e quase nenhum inteiro). >>>> >>>> >> >>>> Estou limitando esses valores por um maximo e um minimo. >>>> >> >>>> >>>> >> >>>> foreach my $keys (keys %d) { >>> >>> > >> >>>> if ($keys <= $min and $keys >= $max) { >>>> >>>> >> >>>> print "$d{$keys}"; >>>> >> >>>> } >>>> >> >>>> } >>>> >> >>>> >>> >>> > >> >>>> Problema que não da certo. >>>> >>>> >> >>>> Ha algo de errado aqui?? >>>> >> >>>> >>>> >> >>>> _______________________________________________ >>> >>> > >> >>>> Rio-pm mailing list >>>> >>>> >> >>>> [email protected] >>>> >> >>>> http://mail.pm.org/mailman/listinfo/rio-pm [4] >>> >>> > >> >>> >>>> >>>> >> >>> >>>> >> >>> _______________________________________________ >>>> >> >>> Rio-pm mailing list >>>> >> >>> [email protected] >>> >>> > >> >>> http://mail.pm.org/mailman/listinfo/rio-pm [4] >>> >>>> >> >> _______________________________________________ >>> >>> > >> >> Rio-pm mailing list >>> > >> >> [email protected] >>>> >>>> >> >> http://mail.pm.org/mailman/listinfo/rio-pm [4] >>> >>> > >> > >>>> >>>> >> > _______________________________________________ >>>> >> > Rio-pm mailing list >>>> >> > [email protected] >>> >>> > >> > http://mail.pm.org/mailman/listinfo/rio-pm [4] >>> >>>> >> >>>> >> _______________________________________________ >>> >>> > >> Rio-pm mailing list >>> > >> [email protected] >>>> >>>> >> http://mail.pm.org/mailman/listinfo/rio-pm [4] >>>> > >>> >>> > > _______________________________________________ >>>> >>>> > Rio-pm mailing list >>>> > [email protected] >>>> > http://mail.pm.org/mailman/listinfo/rio-pm [4] >>> >>> > >>>> >>>> _______________________________________________ >>>> Rio-pm mailing list >>>> [email protected] >>>> http://mail.pm.org/mailman/listinfo/rio-pm [4] >>> >>> >>> _______________________________________________ >>> Rio-pm mailing list >>> [email protected] >>> http://mail.pm.org/mailman/listinfo/rio-pm [4] >> >> >> -- >> >> Saravá, >> Renato CRON >> >> http://www.renatocron.com/blog/ [5] >> @renato_cron [6] >> >> >> Links: >> ------ >> [1] http://pastebin.com/9v6WFUT7 >> [2] http://pastebin.com/Dnhv0Zya >> [3] http://ta.twi.tudelft.nl/users/vuik/wi211/disasters.html >> [4] http://mail.pm.org/mailman/listinfo/rio-pm >> [5] http://www.renatocron.com/blog/ >> [6] http://twitter.com/#!/renato_cron >> >> >> _______________________________________________ >> Rio-pm mailing list >> [email protected] >> http://mail.pm.org/mailman/listinfo/rio-pm > > > _______________________________________________ > Rio-pm mailing list > [email protected] > http://mail.pm.org/mailman/listinfo/rio-pm _______________________________________________ Rio-pm mailing list [email protected] http://mail.pm.org/mailman/listinfo/rio-pm
