analitics

Pages

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...

Saturday, August 17, 2013

Working with PEP 8 conventions ...

I am wrote my own python scripts to long time ago and now I saw many of this scripts are a mess  in terms of PEP criteria.
What is the pep criteria? The PEP describing style guidelines for the C code in the C implementation of Python.
If you using Blender 3D/Python development  then you need to follow the PEP 8.
The PEP 8 and can be found here and the authors are: Guido van Rossum , Barry Warsaw and Nick Coghlan.
Today I will show you a brief listing of pep8 criteria:
-indentation of 4 spaces not use tabs
-camel caps for class names: MyClass , AnotherClass
-all lower case underscore separated module names: my_module, another_module
-use explicit imports, not importing '*'
-imports should usually be on separate lines, not import os,sys
-adding whitespace around the operators , not 1+2 or 7+ 3
-don't use spaces around the = sign , not a = b +1
-use single quotes for enums, and double quotes for strings
-each line of a block comment starts with a # and a single space
-don't make comments that contradict the code
-if you want to writing good documentation strings then follow the PEP 257 conventions.
-run checks for pep8 compliance
# <pep8 compliant=""></pep8>
-and enable line length checks use this instead
# <pep8-80 compliant=""></pep8-80>
-don't use multiple statements on the same line, like:
if foo == 'test': do_test_thing()
one_test(); two_test()
... this is the correct way:
if foo == 'test':
    do_test_thing()
one_test()
two_test()
Also you can read about Blender 3D/Python and PEP 8 best practice here.

Saturday, August 10, 2013

Fix python error: SyntaxError: Non-ASCII character.

This can be fix easy ... just add the below line at top of the python file:
# coding: utf-8
You will see now something like this error:
SyntaxError: invalid syntax
... but also will be point to the bad encoding character with : ^
For example I had this:
usertest@home:~$ python sunet.py 
  File "sunet.py", line 22
    def  __init__ ( self , a , b , c ) :
                                 ^
SyntaxError: invalid syntax

How to deal with environment variables using python script.

Any OS like Linux, Unix, Windows has environment variables.

Also any variables which must not be committed on a public code can be used in this way.

You can give this variables to your application.

Let's see one simple example about how to do that:

import os
ENV_VAR = os.environ.get("ENV_VAR", None)
if not ENV_VAR:
        print "not ENV_VAR"
if ENV_VAR:
        print "yes ! is ENV_VAR"

Now you can give this ENV_VAR to the script or not. See next...

usertest@home:~$ ENV_VAR=true python demo-env.py 
yes ! is ENV_VAR
usertest@home:~$ python demo-env.py 
not ENV_VAR

With Python 3 on Unix, environment variables are decoded using the file system encoding.