Statistical Algorithms Importer: Python Project FAQ
From Gcube Wiki
F.A.Q. of Statistical Algorithms Importer (SAI), here are common mistakes we have found in Python Project.
How to use the input and output file parameters
- For example we consider Phonebook algorithm:
- DataMiner show the Phonebook algorithm in this way:
- Python script code in sample:
# # author Giancarlo Panichi # # Phonebook # import sys import string def print_numbers(numbers): print "Telephone Numbers:" for x in numbers.keys(): value="Name: "+x+" Number: "+numbers[x] print value, def lookup_number(numbers,name): if numbers.has_key(name): return "For "+name+" the number is "+numbers[name] else: return "For "+name+" was not found" def load_numbers(numbers,filename): with open(filename,"r") as f: for in_line in f: [name,number] = string.split(in_line,",") numbers[name] = number def save_result(result,filename): with open(filename,"w") as f: f.write(result) phonebookFile=sys.argv[1] name=sys.argv[2] phone_list = {} load_numbers(phone_list,phonebookFile) print_numbers(phone_list) number=lookup_number(phone_list,name) print number save_result(number,"result.txt")
- phonebook.csv:
Giancarlo,0123456789 Gianpaolo,9876541234 Paolo,1231410414
- phonebook result with Giancarlo:
For Giancarlo the number is 0123456789
- Phonebook code:
Matplotlib
Matplotlib require the $DISPLAY environment variable which means a running X server. DataMiner service do not allow a running X server session. So your code must be modified:
# # author Giancarlo Panichi # # Write file image.png # import matplotlib as mpl mpl.use('Agg') import matplotlib.pyplot as plt import numpy as np .... plt.imshow(image) plt.savefig('image.png')
Urllib
On DataMiner services is installed Urllib3, see:
# # author Giancarlo Panichi # # Request Url # import urllib3 http = urllib3.PoolManager() r = http.request('GET', 'http://httpbin.org/robots.txt') print(r.status) print(r.data)
StorageHub
- StorageHub is the service for accessing to the user's D4Science Workspace. Below we show the StorageHubFacilityPython algorithm, it exhibits the interactions with StorageHub through its Rest API:
- Indicates the I/O parameters:
- Indicates the python version:
- Indicates the main code python:
- DataMiner result:
- This algorithm shows 5 types of interactions with StorageHub:
- Get Root Info
- Get Item Info (requires an itemId as argument1)
- Get Root Children
- Get Item Children (requires an itemId as argument1)
- Item Download (requires an itemId as argument1)
- Python source code of StorageHubFacilityPython:
- File:StorageHubFacilityPython.zip
- View the demo in DataMiner:
- StorageHub Facility Python