You can subscribe to this list here.
| 2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(3) |
Jun
|
Jul
|
Aug
(12) |
Sep
(12) |
Oct
(56) |
Nov
(65) |
Dec
(37) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2004 |
Jan
(59) |
Feb
(78) |
Mar
(153) |
Apr
(205) |
May
(184) |
Jun
(123) |
Jul
(171) |
Aug
(156) |
Sep
(190) |
Oct
(120) |
Nov
(154) |
Dec
(223) |
| 2005 |
Jan
(184) |
Feb
(267) |
Mar
(214) |
Apr
(286) |
May
(320) |
Jun
(299) |
Jul
(348) |
Aug
(283) |
Sep
(355) |
Oct
(293) |
Nov
(232) |
Dec
(203) |
| 2006 |
Jan
(352) |
Feb
(358) |
Mar
(403) |
Apr
(313) |
May
(165) |
Jun
(281) |
Jul
(316) |
Aug
(228) |
Sep
(279) |
Oct
(243) |
Nov
(315) |
Dec
(345) |
| 2007 |
Jan
(260) |
Feb
(323) |
Mar
(340) |
Apr
(319) |
May
(290) |
Jun
(296) |
Jul
(221) |
Aug
(292) |
Sep
(242) |
Oct
(248) |
Nov
(242) |
Dec
(332) |
| 2008 |
Jan
(312) |
Feb
(359) |
Mar
(454) |
Apr
(287) |
May
(340) |
Jun
(450) |
Jul
(403) |
Aug
(324) |
Sep
(349) |
Oct
(385) |
Nov
(363) |
Dec
(437) |
| 2009 |
Jan
(500) |
Feb
(301) |
Mar
(409) |
Apr
(486) |
May
(545) |
Jun
(391) |
Jul
(518) |
Aug
(497) |
Sep
(492) |
Oct
(429) |
Nov
(357) |
Dec
(310) |
| 2010 |
Jan
(371) |
Feb
(657) |
Mar
(519) |
Apr
(432) |
May
(312) |
Jun
(416) |
Jul
(477) |
Aug
(386) |
Sep
(419) |
Oct
(435) |
Nov
(320) |
Dec
(202) |
| 2011 |
Jan
(321) |
Feb
(413) |
Mar
(299) |
Apr
(215) |
May
(284) |
Jun
(203) |
Jul
(207) |
Aug
(314) |
Sep
(321) |
Oct
(259) |
Nov
(347) |
Dec
(209) |
| 2012 |
Jan
(322) |
Feb
(414) |
Mar
(377) |
Apr
(179) |
May
(173) |
Jun
(234) |
Jul
(295) |
Aug
(239) |
Sep
(276) |
Oct
(355) |
Nov
(144) |
Dec
(108) |
| 2013 |
Jan
(170) |
Feb
(89) |
Mar
(204) |
Apr
(133) |
May
(142) |
Jun
(89) |
Jul
(160) |
Aug
(180) |
Sep
(69) |
Oct
(136) |
Nov
(83) |
Dec
(32) |
| 2014 |
Jan
(71) |
Feb
(90) |
Mar
(161) |
Apr
(117) |
May
(78) |
Jun
(94) |
Jul
(60) |
Aug
(83) |
Sep
(102) |
Oct
(132) |
Nov
(154) |
Dec
(96) |
| 2015 |
Jan
(45) |
Feb
(138) |
Mar
(176) |
Apr
(132) |
May
(119) |
Jun
(124) |
Jul
(77) |
Aug
(31) |
Sep
(34) |
Oct
(22) |
Nov
(23) |
Dec
(9) |
| 2016 |
Jan
(26) |
Feb
(17) |
Mar
(10) |
Apr
(8) |
May
(4) |
Jun
(8) |
Jul
(6) |
Aug
(5) |
Sep
(9) |
Oct
(4) |
Nov
|
Dec
|
| 2017 |
Jan
(5) |
Feb
(7) |
Mar
(1) |
Apr
(5) |
May
|
Jun
(3) |
Jul
(6) |
Aug
(1) |
Sep
|
Oct
(2) |
Nov
(1) |
Dec
|
| 2018 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2020 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(1) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2025 |
Jan
(1) |
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Charles R. T. <ct...@ma...> - 2003-09-13 12:03:24
|
How hard would it be to add pie charts? Or have I missed them??
How would one do this? Patches?
Or: how many coffees to sponsor it?
-Charles
--
Charles R. Twardy, Res.Fellow, Monash University, School of CSSE
ctwardy at alumni indiana edu +61(3) 9905 5823 (w) 5146 (fax)
|
|
From: John H. <jdh...@ac...> - 2003-09-11 19:06:38
|
>>>>> "Jean-Baptiste" == Jean-Baptiste Cazier <Jea...@de...> writes:
Jean-Baptiste> If on top of that I could use the pixmap as a
Jean-Baptiste> background of other plot, (plot (pixmap, x,y) it
Jean-Baptiste> would be even better
Jean-Baptiste> Any idea on how this could be done ?
Yes, this should be fairly easy to implement, since all the drawing
commands draw to a gtk.gdk.Drawable, of which pixmap is a derived
class. When I make the hardcopy (png or tiff) I am already using a
blank pixmap as the background, so it should be fairly easy to add a
command to the Figure API, which is set_background_pixmap, and then
allow you to plot on top of it (or just use the pixmap alone). I will
take at look at this and get back to you.
Thanks for the suggestion,
John Hunter
|
|
From: Jean-Baptiste C. <Jea...@de...> - 2003-09-11 18:39:04
|
S=E6ll ! I recently discovered the matplotlib project with great pleasure. It is already fulling many of my wishes linked to python development However there is a function I would love to have, and it should be straight= forward to implement eventhough it is not in the matlab spirit: - I would like to be able to get a plot based on an existing pixmap - This way I would be able - to get the nice tools provided by the figure,= axes, zooming, etc.. - keep a consistent presentation of my many plots - As figures in matlibplot are supposed to be pixmaps in axes this should b= e fairly easy to implement instead of havinf plot(x,y) it would be plot(pixmap) If on top of that I could use the pixmap as a background of other plot, (pl= ot (pixmap, x,y) it would be even better Any idea on how this could be done ? Takk Kve=F0ja Jean-Baptiste --=20 ----------------------------- Jea...@de... Department of Statistics deCODE genetics Sturlugata,8 570 2993 101 Reykjav=EDk |
|
From: John H. <jdh...@ac...> - 2003-09-02 18:54:57
|
>>>>> "Charles" == Charles R Twardy <ct...@ma...> writes:
Charles> It seems I'm running the new version: * line 1702 of
Charles> figure.py reads as you asked * I just tried another CVS
Charles> get and got nothing * I just did another run of setup.py
Charles> and nothing happened
Charles> I still get the crash, and can reproduce with a simple
Charles> 3-line script, attached.
Charles> }Monday. If you'd like to send a script, I can add one
Charles> of them to the }screenshots section of the home page. My
Charles> script is an ugly beast that parses an ugly dataset. But
Charles> I'll see about getting a demo version. -C
Thanks for the update. I'm knee deep in getting a postscript backend
working so I'll take a look at this in the next few days. This is
proving to be very helpful because I've abstracted all the drawing
operations away from gtk which means it will be relatively easy to
port the lib to new output drivers or GUI toolkits.
As for the bug, I can replicate the bug on my system with your example
script, so it shouldn't be too hard to find and fix. I'll let you
know when I get an updated CVS.
JDH
|
|
From: Charles R. T. <ct...@ma...> - 2003-08-31 23:33:57
|
It seems I'm running the new version: * line 1702 of figure.py reads as you asked * I just tried another CVS get and got nothing * I just did another run of setup.py and nothing happened I still get the crash, and can reproduce with a simple 3-line script, attached. }Monday. If you'd like to send a script, I can add one of them to the }screenshots section of the home page. My script is an ugly beast that parses an ugly dataset. But I'll see about getting a demo version. -C -- Charles R. Twardy, Res.Fellow, Monash University, School of CSSE ctwardy at alumni indiana edu +61(3) 9905 5823 (w) 5146 (fax) |
|
From: John H. <jdh...@ac...> - 2003-08-30 12:59:50
|
>>>>> "Charles" == Charles Twardy <ct...@ma...> writes:
Charles> Hi John, The latest CVS changes seem to help! The new
Charles> deprecations are gone, and my own title works on center
Charles> justify.
Charles> But if I try an absurdly long title: gcf().text(0.5,
Charles> 0.95,'Distance Histograms by Category is a really long
Charles> title that should flow off', font, fontsize=12)
Charles> Then I get an X Window Error and my script crashes. Most
Charles> ungraceful.
Yes, most. Are you sure you are using the right version? Does line
1702 of figure.py read
def clip_gc(gc):
gc.set_clip_rectangle( (0, 0, self.width, self.height) )
for t in self._text:
t.clip_gc = clip_gc
I also tested with a ridiculously long figure title and did not get
the X windows crash after making these changes . CVS should have
this, but as you've noted, sometimes the mirrors are a little behind.
If you have this and are still getting the crashes, let me know and
I'll sort it out.
Charles> For fun, I've attached the .pngs I've been working
Charles> on. Lost-person behavior: distance travelled and outcome
Charles> of the search, broken down by major
Charles> categories. (Australian data)
That's great. Unfortunately I can't look at them right now because
I'm logged in remotely from a win32 machine but will check them out
Monday. If you'd like to send a script, I can add one of them to the
screenshots section of the home page.
JDH
|
|
From: Charles T. <ct...@ma...> - 2003-08-30 04:38:05
|
Hi John,
The latest CVS changes seem to help! The new deprecations are gone, and
my own title works on center justify.
But if I try an absurdly long title:
gcf().text(0.5, 0.95,'Distance Histograms by Category is a really long title that should flow off', font, fontsize=12)
Then I get an X Window Error and my script crashes. Most ungraceful.
For fun, I've attached the .pngs I've been working on. Lost-person
behavior: distance travelled and outcome of the search, broken down by
major categories. (Australian data)
-Charles
--
Charles R. Twardy Monash University, School of CSSE
ctwardy at alumni indiana edu +61(3) 9905 5823 (w) 5146 (fax)
~^~
"eloquence ought to be banish'd out of all civil Societies as a
thing fatal to Peace and good Manners..." ~Sprat 1667
|
|
From: John H. <jdh...@ac...> - 2003-08-26 15:45:51
|
Announcing matplotlib 0.21 -- http://matplotlib.sourceforge.net/ What's new in matplotlib 0.21 Deprecation warnings fixed -- Several users reported deprecation warnings with python2.3 and pygtk 1.99.18. These were all related to passing floats rather than ints to gtk drawing commands. These have been cleaned up and none of the examples generate wanings. Let me know if you get some! Improved interactive shell -- Jon Anderson posted an improved GTK shell to the pygtk mailing list. Using this no longer requires that pygtk have threading built in. See interactive2.py. Use this if you want to make plots interactively from the python shell. Specifying colors -- You can now specify colors with color format strings, RGB tuples, or hex strings as in html. See color_demo.py Figure text -- All text in matplotlib has previously been in axis (data) coordinates. Sometimes it's helpful to be able to specify text in figure (relative) coordinates. Now figures also have text. When you scroll interactively, axis text moves with the data, figure text is fixed. This is also useful for making a figure title when you have multiple columns of subplots. See figtext.py Flicker free updates -- All drawing is done to a pixmap and then updated. This allows flicker free updates of the figure. You can use this, for example, to build a system monitor, which continuously shows system resources such as RAM, CPU, etc... See system_monitor.py for a demo. |
|
From: John H. <jdh...@ac...> - 2003-08-26 15:15:41
|
>>>>> "Charles" == Charles Twardy <ct...@ma...> writes:
Charles> Hi there, I've just started playing with matplot and am
Charles> VERY impressed.
Thanks.
Charles>However, I thought I'd mention two items
Charles> in case no one else has seen them.
Charles> 1) There are a lot of Deprecation warnings on loading.
Thanks for the alert. Are you using python2.3? I've heard that 2.3
generates deprecation warnings and I plan to get them cleaned up in
the near future and do a bug-fix release, probably 0.21.
Charles> 2) I can generate an X Window Error via a gdk
Charles> crash. Here's the tail of the trace: [------ File
Charles> "/usr/lib/python2.3/site-packages/matplotlib/text.py",
Charles> line 310, in _set_font self._layout =
Charles> self._drawingArea.create_pango_layout(self._text)
Charles> TypeError: GtkWidget.create_pango_layout() argument 1
Charles> must be string, not int The program 'stats.py' received
Looks like you passed an integer to a text label command in the
set(gca..., command that is causing your troubles. If you are trying
to set a ticklabel, note that they must be strings, not ints. Eg,
set(gca(), 'xticklabels', ['%d' % val for val in arange(8)])
not
set(gca(), 'xticklabels', arange(8))
Is this the source of your troubles (The example code you meant to
send didn't come through)? Check it out. If not, send me the script
that generates the error and I'll take a look. I haven't seen this
bug before (and I use the library a lot <wink>).
John Hunter
|
|
From: John H. <jdh...@ac...> - 2003-08-26 15:04:51
|
>>>>> "Charles" == Charles Twardy <ct...@ma...> writes:
Charles> Hey all, I couldn't find any code to do quantiles in
Charles> Python. It seems like it belongs in python-stats, and
Charles> maybe other places like MLab or matplotlib. But at least
Charles> in python-stats. Put it there if you think it belongs.
Good point. I'm going to follow the matlab signature for matplotlib.
The matlab function for this is 'prctile', and takes percents rather
than fractions for the percentile. Also it doesn't do interpolation.
def prctile(x, p = (0.0, 25.0, 50.0, 75.0, 100.0)):
"""
Return the percentiles of x. p can either be a sequence of
percentil values or a scalar. If p is a sequence the i-th element
of the return sequence is the p(i)-th percentile of x
"""
x = sort(x)
Nx = len(x)
if not iterable(p):
return x[int(p*Nx/100.0)]
p = multiply(array(p), Nx/100.0)
ind = p.astype(Int)
ind = where(ind>=Nx, Nx-1, ind)
return take(x, ind)
I'll put it in matplotlib.mlab; let me know if you find any problems.
JDH
|
|
From: Charles T. <ct...@ma...> - 2003-08-26 13:57:02
|
Hey all,
I couldn't find any code to do quantiles in Python. It seems like it
belongs in python-stats, and maybe other places like MLab or matplotlib.
But at least in python-stats. Put it there if you think it belongs.
I've attached the code. It's based on the documentation given in R for
help(quantile). It's pretty straightforward and works on the two
testcases I've supplied.
It doesn't handle missing values. At least, I have no reason to expect
it would.
-Charles
--
Charles R. Twardy Monash University, School of CSSE
ctwardy at alumni indiana edu +61(3) 9905 5823 (w) 5146 (fax)
~^~
"eloquence ought to be banish'd out of all civil Societies as a
thing fatal to Peace and good Manners..." ~Sprat 1667
|
|
From: John H. <jdh...@ac...> - 2003-08-26 13:54:10
|
>>>>> "Charles" == Charles Twardy <ct...@ma...> writes:
Charles> Yes, I've just started using python2.3, which is almost
Charles> certainly the source of the deprecation warnings.
Charles> And yes, I had passed an integer to the text label
Charles> command. The crash seems a bit harsh, but at least I can
Charles> avoid that now.
I've added an automatic string conversion in the set ticklabels
functionality, so that any object that can be converted to a string
with %s will work as an argument to the ticklabels command.
Charles> I generated a graph with 8 subplots (histograms). I
Charles> wasn't able to use the title command on the subplots,
Charles> because the title appeared on top of the plot above
Charles> it. And I haven't yet figured out how to give the plot an
Charles> overall title. I'm happy for hints if you have the
Charles> time. Otherwise I'm fairly happy with what I've got
Charles> (titles inside each subplot, via the text command, and no
Charles> overall title).
I've needed this functionality too. I just followed matlab's design
which is to add the title to the current axes. In CVS, I've added a
new figure text function to the class API for Figure. The figure text
is in relative 0-1 coords (0,0 is lower left; 1,1 is upper right).
You can add a title with
gcf().text(0.5, 0.95, 'Figure Title', fontsize=12)
You can also add text anywhere else you want in figure coordinates
with this command (axis text is in data coordinates). In the examples
dir in CVS there is a file figtext.py that illustrates this. Perhaps
I'll add a new function figtitle to the matlab functional interface
since this comes up fairly often.
Charles> Thanks! This is great!
Your welcome!
John Hunter
|
|
From: John H. <jdh...@ac...> - 2003-08-26 02:27:16
|
I have updated matplotlib in CVS to fix the deprecation warnings for python2.3. I have tested all of my example scripts and get no warnings. If you would like to test on your scripts, please let me know if you get any warnings. I plan to do a bug fix release tomorrow, so let me know if you are having any troubles. Anyone else who would be willing to test the CVS version on their existing python2.2 installs before the bug-fix release, that would also be great. Thanks! John Hunter |
|
From: Charles T. <ct...@ma...> - 2003-08-25 23:33:01
|
Yes, I've just started using python2.3, which is almost certainly the
source of the deprecation warnings.
And yes, I had passed an integer to the text label command. The crash
seems a bit harsh, but at least I can avoid that now.
I generated a graph with 8 subplots (histograms). I wasn't able to use
the title command on the subplots, because the title appeared on top of
the plot above it. And I haven't yet figured out how to give the plot an
overall title. I'm happy for hints if you have the time. Otherwise I'm
fairly happy with what I've got (titles inside each subplot, via the
text command, and no overall title).
Thanks! This is great!
-Charles
--
Charles R. Twardy Monash University, School of CSSE
ctwardy at alumni indiana edu +61(3) 9905 5823 (w) 5146 (fax)
~^~
"eloquence ought to be banish'd out of all civil Societies as a
thing fatal to Peace and good Manners..." ~Sprat 1667
|
|
From: John H. <jdh...@ac...> - 2003-08-25 22:21:05
|
( I tried sending this earlier but my mail has been screwed up so my apologies if you got a duplicate) I have updated matplotlib in CVS to fix the deprecation warnings for python2.3. I have tested all of my example scripts and get no warnings. If you would like to test on your scripts, please let me know if you get any warnings. I plan to do a bug fix release tomorrow, so let me know if you are having any troubles. Anyone else who would be willing to test the CVS version on their existing python2.2 installs before the bug-fix release, that would also be great. Thanks! John Hunter |
|
From: Charles T. <ct...@ma...> - 2003-08-25 05:03:55
|
Hi there,
I've just started playing with matplot and am VERY impressed.
However, I thought I'd mention two items in case no one else has seen
them.
1) There are a lot of Deprecation warnings on loading.
2) I can generate an X Window Error via a gdk crash. Here's the tail of
the trace:
[------
File "/usr/lib/python2.3/site-packages/matplotlib/text.py", line 310,
in _set_font
self._layout = self._drawingArea.create_pango_layout(self._text)
TypeError: GtkWidget.create_pango_layout() argument 1 must be string,
not int
The program 'stats.py' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadMatch (invalid parameter attributes)'.
(Details: serial 4152 error_code 8 request_code 73 minor_code 0)
(Note to programmers: normally, X errors are reported asynchronously;
that is, you will receive the error a while after causing it.
To debug your program, run it with the --sync command line
option to change this behavior. You can then get a meaningful
backtrace from your debugger if you break on the gdk_x_error()
function.)
-----]
And here's the code. If you run it as is, it works fine (though the plot
is ugly.) However, if you uncomment the "set(gca(),...", it gives the
error.
I've started using matplot in a script to auto-generate a report.
-Charles
--
Charles R. Twardy Monash University, School of CSSE
ctwardy at alumni indiana edu +61(3) 9905 5823 (w) 5146 (fax)
~^~
"eloquence ought to be banish'd out of all civil Societies as a
thing fatal to Peace and good Manners..." ~Sprat 1667
|
|
From: John H. <jdh...@ac...> - 2003-05-29 12:55:54
|
>>>>> "John" == John Hunter <jdh...@ac...> writes:
John> If you want to use technique with bar, hist, or scatter
John> (which return Patch instances), you'll have to wait a few
John> minutes while I update the code, because I haven't added a
John> set data method for those classes.
I added some features to CVS to make this work with patches and do
allow the updates to occur flicker free. Below is an simulated
example that uses a bar chart to show network, CPU and memory usage,
updating 4 times per second. If you have trouble with CVS or want a
windows installer of the updated code, let me know
John Hunter
[ I'm reposting this because it didn't seem to get through yesterday.
If this is a duplicate sorry ]
import pygtk
pygtk.require('2.0')
import gtk
import time
from matplotlib.matlab import *
def get_memory():
"Simulate a function that returns system memory"
return 100*(1+sin(0.5*pi*time.time()))
def get_cpu():
"Simulate a function that returns cpu usage"
return 100*(1+sin(0.2*pi*(time.time()-0.25)))
def get_net():
"Simulate a function that returns network bandwidth"
return 100*(1+sin(0.7*pi*(time.time()-0.1)))
def get_stats():
return get_memory(), get_cpu(), get_net()
fig = figure(1)
ax = subplot(111)
ind = arange(1,4)
pm, pc, pn = bar(ind, get_stats())
centers = ind + 0.5*pm.get_width()
pm.set_facecolor('r')
pc.set_facecolor('g')
pn.set_facecolor('b')
ax.set_xlim([0.5,4])
ax.set_xticks(centers)
ax.set_ylim([0,100])
ax.set_xticklabels(['Memory', 'CPU', 'Bandwidth'])
ax.set_ylabel('Percent usage')
ax.set_title('System Monitor')
def updatefig(*args):
m,c,n = get_stats()
pm.set_height(m)
pc.set_height(c)
pn.set_height(n)
ax.set_ylim([0,100])
fig.draw()
return gtk.TRUE
gtk.timeout_add(250, updatefig)
show()
John Hunter
|
|
From: John H. <jdh...@ac...> - 2003-05-28 17:16:35
|
Golawala> Hi, I just discovered the matplotlib.matlab
Golawala> libraries. I am trying to create a dynamic graph using
Golawala> this library. So far I am only able to create a static
Golawala> view of the grap. Is is possible to create a graph that
Golawala> is dynamic? (Example: in windows if you select task
Golawala> manager you get a graph that shows you dynamic
Golawala> information about the CPU and Memory Usage history.) I
Golawala> just want to repaint the graph rather than closing it
Golawala> and re-showing it.
Yes, this is possible. The two key ingredients are 1) the use of the
gtk.timeout_add function which will repeatedly call a function of your
choice and 2) call the relevant axis/line/patch methods to update your
figure.
Here is an example, that resets the x and y data of the plot every
1000 milliseconds
import pygtk
pygtk.require('2.0')
import gtk
from matplotlib.matlab import *
fig = figure(1)
ind = arange(30)
X = rand(len(ind),10)
lines = plot(X[:,0], 'o')
def updatefig(*args):
lines[0].set_data(ind, X[:,updatefig.count])
fig.draw()
updatefig.count += 1
if updatefig.count<10: return gtk.TRUE
else: return gtk.FALSE
updatefig.count = 0
gtk.timeout_add(1000, updatefig)
show()
The timeout_add function will only keep calling your method as long as
you return gtk.TRUE. So in the example above, I return False after
the 10 columns of my random matrix X are plotted.
You can control other attributes of the line in a similar way, eg, by
calling set_color, set_linewidth, etc....
If you want to use technique with bar, hist, or scatter (which return
Patch instances), you'll have to wait a few minutes while I update the
code, because I haven't added a set data method for those classes.
John Hunter
|
|
From: Golawala, M. M (I. GE Interlogix) <Moi...@ge...> - 2003-05-28 16:12:10
|
Hi, I just discovered the matplotlib.matlab libraries. I am trying to create = a dynamic graph using this library. So far I am only able to create a = static view of the grap. Is is possible to create a graph that is = dynamic? (Example: in windows if you select task manager you get a graph = that shows you dynamic information about the CPU and Memory Usage = history.) I just want to repaint the graph rather than closing it and = re-showing it.=20 Any help appreciated. Thanks > Regards, > Moiz Golawala > Casi-Rusco, a GE Interlogix Company > 791 Park Of Commerce Blvd., Boca Raton, FL 33487 * > moi...@ca... * > 561-912-5972 * 561-912-1650 * >=20 >=20 |