|
8 de junio de 2007
Antártida
Por Sebastião Salgado
30 de abril de 2007
Plotting
Making publication-quality plots is one of the ugly parts in the life of a scientist wannabe. In my field there are two main plotting packages in use (besides IDL which i don't have): SuperMongo and PGPLOT.
Both are quite old. I guess the best of them must be SuperMongo, since its lemma is "You can't beat SM.". Joking aside I can't give an unbiased opinion, since all the times that I have tried to use SM, I have hit a wall of uneasiness. The syntax is too different from everything else that I know.
That leaves us with... erm well, PGPLOT and PLplot. Since my main computing environment has come to be Octave running on Ubuntu, I thought that it would be good to give PLplot a drive, after all it has pre-compiled packages and it's supposed to work fine from within Octave. Another advantage is that it's built to be very similar to PGPLOT, which I had used in the past. After fighting with it for some hours I can say that it is not ready for prime-time. Some of the problems I found while using it:
Those were the most important so, repeat after me: "You can't beat PGPLOT (unless you are SuperMongo, of course)". The final result, I'm using PGPLOT from inside Octave with the help of the matwrap tool. No need to make specific programs and compile them to plot your data. Works like a charm, it's much more solid than PGPLOT and the output has that fancy professional look that only SM and PGPLOT can attain.
Now I'm a believer, I won't doubt again about how to make my plots.
Both are quite old. I guess the best of them must be SuperMongo, since its lemma is "You can't beat SM.". Joking aside I can't give an unbiased opinion, since all the times that I have tried to use SM, I have hit a wall of uneasiness. The syntax is too different from everything else that I know.
That leaves us with... erm well, PGPLOT and PLplot. Since my main computing environment has come to be Octave running on Ubuntu, I thought that it would be good to give PLplot a drive, after all it has pre-compiled packages and it's supposed to work fine from within Octave. Another advantage is that it's built to be very similar to PGPLOT, which I had used in the past. After fighting with it for some hours I can say that it is not ready for prime-time. Some of the problems I found while using it:
- The gnome server won't work. That leaves us with the xwin server which is incapable of redrawing itself (a PITA if you are working from a full-screen terminal).
- Issuing plend() to close the active plotting window will make Octave segfault if actually there's no such window. Hey, I made a mistake! But no need to punish me so hard.
- The output is... well not-as-good-as-I-would-like. If you print directly to a Postscript device, some Hersey symbols (like the Sun's symbol $\odot$ in LaTeX) won't be drawn. If you plot to the xwin server and then save the output with save_fig, the result is ugly. All the letters and symbols are squashed and o's (supposed to be a round and in fact round on screen) appear as ellipses on the Postscript.
Those were the most important so, repeat after me: "You can't beat PGPLOT (unless you are SuperMongo, of course)". The final result, I'm using PGPLOT from inside Octave with the help of the matwrap tool. No need to make specific programs and compile them to plot your data. Works like a charm, it's much more solid than PGPLOT and the output has that fancy professional look that only SM and PGPLOT can attain.
Now I'm a believer, I won't doubt again about how to make my plots.
19 de abril de 2007
Pelis
Rannulph Junnah: Now, the question on the table is how drunk is drunk enough? And the answer is that it's all a matter of brain cells
Hardy Greaves: Brain cells?
Rannulph Junnah: That's right Hardy. You see every drink of liquor you take kills a thousand brain cells. Now that doesn't much matter 'cos we got billions more. And first the sadness cells die so you smile real big. And then the quiet cells go so you just say everything real loud for no reason at all. That'ok, that's ok because the stupid cells go next, so everything you say is real smart. And finally, come the memory cells. These are tough sons of bitches to kill.
Junnah.- Bien, lo que aquí se ha planteado es cuánto es lo bastante borracho. Y la respuesta es que depende de las células del cerebro.
Hardy.- ¿Del cerebro?
Junnah.- Así es Harvey, con cada vaso de licor que tomas acabas con cientos de esas células. Pero eso no importa mucho porque tenemos millones.
Primero mueren las de la tristeza, así que estás sonriente. Luego mueren las del silencio y todo lo dices en voz alta aunque no haya ninguna razón. ¡Pero eso no importa! No importa porque luego mueren las de la estupidez y hablas con inteligencia. Y por último las células de los recuerdos. Esas son difíciles de matar...
Rob: My desert island, all-time, top-five most memorable breakups, in chronological order, are as follows: Alison Ashmore; Penny Hardwick; Jackie Alden; Charlie Nicholson; and Sarah Kendrew. Those were the ones that really hurt. Can you see your name on that list, Laura? Maybe you'd sneak into the top ten. But there's just no room for you in the top five, sorry. Those places are reserved for the kind of humiliation and heartbreak you're just not capable of delivering.
Rob: Top five things I miss about Laura. One; sense of humor. Very dry, but it can also be warm and forgiving. And she's got one of the best all time laughs in the history of all time laughs, she laughs with her entire body. Two; she's got character. Or at least she had character before the Ian nightmare. She's loyal and honest, and she doesn't even take it out on people when she's having a bad day. That's character.
[holds up three fingers]
Rob: Three;
[long pause, hesitantly]
Rob: I miss her smell, and the way she tastes. It's a mystery of human chemistry and I don't understand it, some people, as far as their senses are concerned, just feel like home.
[shakes his head, recollecting, then looks back and lip synchs 'four' while holds up four fingers]
Rob: I really dig how she walks around. It's like she doesn't care how she looks or what she projects and it's not that she doesn't care it's just, she's not affected I guess, and that gives her grace. And five; she does this thing in bed when she can't get to sleep, she kinda half moans and then rubs her feet together an equal number of times... it just kills me. Believe me, I mean, I could do a top five things about her that drive me crazy but it's just your garden variety women you know, schizo stuff and that's the kind of thing that got me here.
Hardy Greaves: Brain cells?
Rannulph Junnah: That's right Hardy. You see every drink of liquor you take kills a thousand brain cells. Now that doesn't much matter 'cos we got billions more. And first the sadness cells die so you smile real big. And then the quiet cells go so you just say everything real loud for no reason at all. That'ok, that's ok because the stupid cells go next, so everything you say is real smart. And finally, come the memory cells. These are tough sons of bitches to kill.
Junnah.- Bien, lo que aquí se ha planteado es cuánto es lo bastante borracho. Y la respuesta es que depende de las células del cerebro.
Hardy.- ¿Del cerebro?
Junnah.- Así es Harvey, con cada vaso de licor que tomas acabas con cientos de esas células. Pero eso no importa mucho porque tenemos millones.
Primero mueren las de la tristeza, así que estás sonriente. Luego mueren las del silencio y todo lo dices en voz alta aunque no haya ninguna razón. ¡Pero eso no importa! No importa porque luego mueren las de la estupidez y hablas con inteligencia. Y por último las células de los recuerdos. Esas son difíciles de matar...
Rob: My desert island, all-time, top-five most memorable breakups, in chronological order, are as follows: Alison Ashmore; Penny Hardwick; Jackie Alden; Charlie Nicholson; and Sarah Kendrew. Those were the ones that really hurt. Can you see your name on that list, Laura? Maybe you'd sneak into the top ten. But there's just no room for you in the top five, sorry. Those places are reserved for the kind of humiliation and heartbreak you're just not capable of delivering.
Rob: Top five things I miss about Laura. One; sense of humor. Very dry, but it can also be warm and forgiving. And she's got one of the best all time laughs in the history of all time laughs, she laughs with her entire body. Two; she's got character. Or at least she had character before the Ian nightmare. She's loyal and honest, and she doesn't even take it out on people when she's having a bad day. That's character.
[holds up three fingers]
Rob: Three;
[long pause, hesitantly]
Rob: I miss her smell, and the way she tastes. It's a mystery of human chemistry and I don't understand it, some people, as far as their senses are concerned, just feel like home.
[shakes his head, recollecting, then looks back and lip synchs 'four' while holds up four fingers]
Rob: I really dig how she walks around. It's like she doesn't care how she looks or what she projects and it's not that she doesn't care it's just, she's not affected I guess, and that gives her grace. And five; she does this thing in bed when she can't get to sleep, she kinda half moans and then rubs her feet together an equal number of times... it just kills me. Believe me, I mean, I could do a top five things about her that drive me crazy but it's just your garden variety women you know, schizo stuff and that's the kind of thing that got me here.
28 de marzo de 2007
My favourite astro-ph papers
I've just added a section on the right called:
My favourite astro-ph papers
There I will be posting (much like this guy) every day the new papers on astro-ph that I find interesting or noteworthy. This is a personal selection based on my research interests. There is a feed available just in case you like my tastes :-)
My favourite astro-ph papers
There I will be posting (much like this guy) every day the new papers on astro-ph that I find interesting or noteworthy. This is a personal selection based on my research interests. There is a feed available just in case you like my tastes :-)
22 de marzo de 2007
Secret Tape with the Lost Writers
Given the speed that the series is taking, I guess we'll soon see the magic turtle ;-)
ACM ICPC, Problem B
This time in spanish :-)
Bueno, ya he escrito mi propuesta, ha costado un poco más de lo que esperaba y al final lo he hecho en C++. La idea básica es buscar la cadena más larga que sea decreciente, y quitarla. Aplicamos esto recursivamente hasta que se acaben los caracteres.
Bueno, ahí va el código:
Y el test de que funciona:
Me estoy cansando (he estado casi 3 horas con el problemita de marras). El problema C puede que tarde :-)
Bueno, ya he escrito mi propuesta, ha costado un poco más de lo que esperaba y al final lo he hecho en C++. La idea básica es buscar la cadena más larga que sea decreciente, y quitarla. Aplicamos esto recursivamente hasta que se acaben los caracteres.
Bueno, ahí va el código:
#include <iostream>
#include <string>
#include <list>
#include <algorithm>
using namespace std;
int streak(list<char> &sl)
{
list<char>::iterator i=sl.begin(), start=i;
while(i!=sl.end())
{
if(*i<=*start)
{
start=i;
i=sl.erase(i);
}
else i++;
}
return sl.size();
}
int main()
{
string s;
cin >> s;
int line = 1;
while (s != "end")
{
int n=1;
list<char> sl(s.size());
copy(s.begin(),s.end(),sl.begin());
while(streak(sl)>0)
n++;
cout << "Case " << line++ << ": " << n << endl;
cin >> s;
}
}
Y el test de que funciona:
franjesus@altamira:~/tmp$ ./test
ABC
Case 1: 3
CBA
Case 2: 1
CBACBA
Case 3: 2
CCCCCCCCCBBBBBBBBBAAAAAAAAAAA
Case 4: 1
CCCNBBBNAAA
Case 5: 2
CBACBACBA
Case 6: 3
ACMICPC
Case 7: 4
ANABMCAANABMCA
Case 8: 4
end
Me estoy cansando (he estado casi 3 horas con el problemita de marras). El problema C puede que tarde :-)
20 de marzo de 2007
ACM Programming contest. Problem A
I've seen the ACM programming contest 2007 on Barrapunto, and I think I know how to solve some of the problems. The problems are here. Here's the ones that I have thought so far:
Problem A
To solve this problem, I would start by defining an UnorderedSet class, containing element of type T (typical template C++ stuff), but since I don't want to get into the programming details, I will just say that we can deal with unordered sets that have elements that are unique. So let G be the set of all different combinations of alleles possible: OO, AO, AA, BO, BB, AB. Let F be the set of possible alleles for the father, M for the mother and C for the child, with F,M,C ⊆ G.
Our task for the first part would be to derive C from F and M. The second part consists on deriving M (F) from F (M) and C. In the last case the result can be the empty set.
Two basic functions are required to convert from and to our combinations in G to the "observed" genetic characteristics, so D(A) would give a set {AO, AA}, D(B)={BO,BB} D(AB)={AB}, D(O)={OO}. And similarly the reverse relation from elements of G (not subgroups as in the direct relation) towards blood types, we call this function R.
The first part (parents -> child) can be easily solved by taking the cartesian product of sF by sM where the s indicates the "simplify operation", that is taking all the alleles in F or M separately (and eliminating repeated ones), in that way, s{AB} -> {A, B} or s{AO, AA}->{A, O}. Since we are not interested in probabilities this will do. The result (after removing repeated results taking into account that alleles are commutative (AB=BA)) is C. Now just apply R to the elements of C. That is the result.
To solve the second part we need to make another formulation which serves us to solve the first part too, and takes into account the probabilities, so maybe it would be better to start with the second part and use the functions developed to easily solve the first part. It works like this:
We're done. The same algorithm could be applied to infer C from F and M (or F from M and C, for that matter). The only job remaining is to apply R to M to get the possible blood types for the mother.
The same algorithm can be applied to the +- alleles (this time the problem is smaller). The results should be the cartesian product of the ABO alleles and the +- alleles.
I haven't tested this solution. There's no guarantee that it will work, maybe it's dead wrong. Any comments are welcome. Problems B, C and I will surely follow when I get time to write them down. The rest... maybe, only if I can solve them :-)
Problem A
To solve this problem, I would start by defining an UnorderedSet class, containing element of type T (typical template C++ stuff), but since I don't want to get into the programming details, I will just say that we can deal with unordered sets that have elements that are unique. So let G be the set of all different combinations of alleles possible: OO, AO, AA, BO, BB, AB. Let F be the set of possible alleles for the father, M for the mother and C for the child, with F,M,C ⊆ G.
Our task for the first part would be to derive C from F and M. The second part consists on deriving M (F) from F (M) and C. In the last case the result can be the empty set.
Two basic functions are required to convert from and to our combinations in G to the "observed" genetic characteristics, so D(A) would give a set {AO, AA}, D(B)={BO,BB} D(AB)={AB}, D(O)={OO}. And similarly the reverse relation from elements of G (not subgroups as in the direct relation) towards blood types, we call this function R.
The first part (parents -> child) can be easily solved by taking the cartesian product of sF by sM where the s indicates the "simplify operation", that is taking all the alleles in F or M separately (and eliminating repeated ones), in that way, s{AB} -> {A, B} or s{AO, AA}->{A, O}. Since we are not interested in probabilities this will do. The result (after removing repeated results taking into account that alleles are commutative (AB=BA)) is C. Now just apply R to the elements of C. That is the result.
To solve the second part we need to make another formulation which serves us to solve the first part too, and takes into account the probabilities, so maybe it would be better to start with the second part and use the functions developed to easily solve the first part. It works like this:
- We define a function f: G³ ->{0,1} that takes 3 elements of G and returns 1 if it is a possible combination in the sense that f(x,y,z), where x ∈ F, y ∈ M, z ∈ C, is feasible ({AB,OO,AO} is a possible combination, {AO,AA,OO} is not), and 0 otherwise. This function is easily defined just by taking the cartesian product (as in the previous) of x and y and looking for z in the result. More programmatically, we evaluate the cartesian product for the 21 possible combinations (the cartesian product is abelian), or 36 if we don't want to bother with optimisations for such a small problem, of G x G and save the results in a 6 x 6 x 6 matrix (that we call by extension f).
- This second step is best explained in pseudocode:
for i in F
for k in C
for j in G
if (f(i,j,k)==1)
M.add(j)
end
of course, M is a set and the add method avoids having repeated entries.
We're done. The same algorithm could be applied to infer C from F and M (or F from M and C, for that matter). The only job remaining is to apply R to M to get the possible blood types for the mother.
The same algorithm can be applied to the +- alleles (this time the problem is smaller). The results should be the cartesian product of the ABO alleles and the +- alleles.
I haven't tested this solution. There's no guarantee that it will work, maybe it's dead wrong. Any comments are welcome. Problems B, C and I will surely follow when I get time to write them down. The rest... maybe, only if I can solve them :-)
Suscribirse a:
Entradas (Atom)