# Difference between revisions of "Statistical Algorithms Importer: Python Project FAQ"

## Contents

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:

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
name=sys.argv
phone_list = {}

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)