Sunday, September 22, 2013

Jython - funny and simple scripts - first steps .

I play today with jython and can be fun but seams to be to slow in a linux os.

Jython is invoked using the "jython" script and it's an implementation of Python for the JVM.

Install the package jython in your linux distro and you can start to deal with java and python.

When you use jython then script will start with :

#!/usr/bin/env jython

I make also some very simple scripts...

First script make one button and give a action to exit.


#!/usr/bin/env jython
from javax import *
import java
from java import *
import sys

frame = awt.Frame(size=(500,100))
frame.background = 255,255,0
def exit(event):
  java.lang.System.exit(0)

my_button = awt.Button("Exit!", actionPerformed=exit)
frame.add(my_button,"Center")
frame.pack()
frame.setVisible(1)

The output is:


The script is easy to make ... it's like gtk with add, pack and action ...

Let's see the next script : one list.

from javax import *
from java import awt
import sys
python_list=[]
python_list.append('text 1')
python_list.append('text 2')
python_list.append('text 3')
python_list.append('text 4')
python_list.append('text 5')

frame=awt.Frame("test list")
panel=swing.JList(python_list)
frame.add(panel,"Center")
frame.pack()
frame.setVisible(1)

... and this is the gui with the list:


I make a simple list and add to the gui using pack() function.

The jython is not easy is much to learn and if you want then go to this website.

Check system , distro and commands using python scripts .

This is a simple example with two functions.

First will check the linux command : ls linux command.

The next function will give us some infos about system.

import shlex 
import subprocess
from subprocess import Popen, PIPE

import platform

def check_command(command):
    cmd='which ' + command 
    output = Popen(shlex.split(cmd), stdout=PIPE).communicate()[0]
    command_path =output.split('\n')[0]
    print command_path
    return command_path

def check_platform():
    arch, exe = platform.architecture()
    my_system = platform.system()
    if my_system == 'Linux':
        distro_name, distro_version, distro_id = platform.linux_distribution()
    elif my_system == 'Darwin':
        distro_name, distro_version, distro_id = platform.mac_ver()
    elif my_system == 'Windows':
 distro_name, distro_version, distro_id = platform.win32_ver()
    elif my_system == 'Java':
 distro_name, distro_version, distro_id = platform.java_ver()
    processor = platform.processor() or 'i386'
    print processor, my_system, arch, distro_name, distro_version, distro_id
    return processor, my_system, arch, distro_name, distro_version, distro_id

check_command('ls')

check_platform()

This python script can be use with any scripts when we need to test commands and system , distro version.

Thursday, September 12, 2013

Working with SunPy python module - part 001 .

The SunPy python module it's an open-source software library for solar physics using the Python programming language.

The SunPy module is included into nasa projects.

Now, if you want to use this python module then you need to install lapack and blas libraries for development.

I use # pip under super user account to install sunpy and the python modules required by SunPy.

# pip install --upgrade distribute
# pip install --upgrade pyfits
# pip install --upgrade suds
# pip install --upgrade pandas
# pip install --upgrade beautifulsoup4

... also you need to have this python modules: Scipy and Matplotlib.

After that you can install sunpy using:

# pip install sunpy
# pip install --upgrade sunpy

The basic example is one output created by Map() function.

This function can deal with many data sources, like:

SDO/AIA, SDO/HMI

STEREO/EUVI, STEREO/COR

Hinode/XRT

SOHO/EIT, SOHO/LASCO, SOHO/MDI

PROBA2/SWAP

Yohkoh/SXT

Let's try a simple example and will show the result...

>>> import sunpy 
>>> ati_map=sunpy.Map(sunpy.AIA_171_IMAGE).peek()

... and output is:


Let's make more sun maps...

>>> eit_map=sunpy.Map(sunpy.EIT_195_IMAGE).peek()

The the output is:


>>> rhessi_map=sunpy.Map(sunpy.RHESSI_IMAGE).peek()

You can see radio spectrometer image using:

>>> callisto_radio_maps=sunpy.Map(sunpy.CALLISTO_IMAGE).peek()

Also you can combine the maps , like in the next example:

>>> eti_rhessi_maps=sunpy.Map(sunpy.EIT_195_IMAGE, sunpy.RHESSI_IMAGE, composite=True).peek()

You can get more infos about Map using :

>>> help(sunpy.Map)

If you want more data to show then you can request data from here.

Also you can give parameters to the Map, like:

date : datetime
 |          Image observation time
...

This allow you to take more data and info...

Using matplotlib and scipy modules can help to parse and show all infos.

How to fix error: fatal error: Python.h: No such file or directory

This is a common error when your system don't have the python-dev.

I got this error when I try to use : pip .

Just install the package python-dev and then all will working well.

Monday, September 9, 2013

News - Python 3.4.0 Alpha 2 was released .

From python official website I found this :

Python 3.4.0 alpha 2 was released on September 9th, 2013. This is a preview release of the next major release of Python, Python 3.4, and is not suitable for production environments.

Major new features of the 3.4 series, compared to 3.3

Python 3.4 includes a range of improvements of the 3.x series, including hundreds of small improvements and bug fixes. Major new features and changes in the 3.4 release series so far include:

PEP 435, a standardized "enum" module

PEP 442, improved semantics for object finalization

PEP 443, adding single-dispatch generic functions to the standard library

PEP 445, a new C API for implementing custom memory allocators

PEP 446, changing file descriptors to not be inherited by default in subprocesses...