RAMS logo
Introduction | Species lists | Search taxa | Taxon tree | Literature | Distributions | Statistics | Editors | Match taxa | Webservice | Log in

Calling the RAMS webservice from Python (example 1)

Step 1: Install Python 2
Go to www.python.org, download & install Python (Windows/Mac OS X/Linux).

Step 2: Install SOAPpy
Go to http://sourceforge.net/projects/pywebsvcs/files/SOAP.py, download & install SOAPpy

Step 3: Copy/paste the following code in a file 'worms.py'

from SOAPpy import WSDL
import re
import sys

def get_Records(name, offset_number):
	a = wsdlObjectWoRMS.getAphiaRecords(name, like='true', fuzzy='true', marine_only='false', offset=offset_number)

def process_worms_output(records):
    for b in records:
            record = str(b)
            t_family = re.compile("family': '[A-Z][a-z]+idae")
            m_family = t_family.search(record)
            if m_family:
                family = m_family.group().replace("family': '","")
                t_name = re.compile("scientificname': '[A-Z][a-z]+[ a-z]*")
                m_name = t_name.search(record)
                if m_name:
                   name = m_name.group().replace("scientificname': '","")
                   t_authority = re.compile("authority': '[\(\)A-Za-z ]+")
                   m_authority = t_authority.search(record)
                   if m_authority:
                       authority = m_authority.group().replace("authority': '","")
                       t_valid = re.compile("valid_name': '[\(\)A-Za-z ]+")
                       m_valid = t_valid.search(record)
                       if m_valid:
                           valid = m_valid.group().replace("valid_name': '","")
                           print '\n', name, authority
                           print 'Accepted name:', valid
                           print family
                           print '\n', name, authority
                           print 'Accepted name: None'
                           print family

def get_all_worms_records(taxon_name):
    start = 1
    max_capacity = 50
    records = []
    print 'get_all_worms_records: fetching records', start, 'to', max_capacity, 'for taxon', taxon_name
    a = get_Records(str(taxon_name), start)
    if not a == None:
        for i in a:
        while len(records) == max_capacity:
            start = start + 50
            max_capacity = max_capacity + 50
            print 'get_all_worms_records: fetching records', start, 'to', max_capacity, 'for taxon', taxon_name
            b = get_Records(str(taxon_name), start)
            if not b == None:
                for i in b:
        print 'get_all_worms_records: returning', len(records), 'records for taxon', taxon_name

wsdlObjectWoRMS = WSDL.Proxy('http://www.marinespecies.org/rams/aphia.php?p=soap&wsdl=1')

if len(sys.argv) == 1:
    print '  USAGE: ./worms.py taxon_name1 taxon_name2 ... taxon_nameN'
    print '  EXAMPLE: ./worms.py Mytilus\ edulis Tellinidae'
    print '  ERROR: Enter one or more taxon names'

target_names = sys.argv[1:]
for a in target_names:
    print '\n'

Step 4: Run the script from the command line [followed by taxon name(s)]:
./worms.py Mollusca

Download this example.
Download example with suds package.

Credits for this tutorial go to Andre F. Sartori (Muséum National d'Histoire Naturelle, France) and Jonathan Pye (Ocean Tracking Network, Canada)

Calling the matchAphiaRecordsByNames function from Python (example 2)

Since some users experienced issue while implementing the call 'matchAphiaRecordsByNames' with suds-py3, we have added another python example that covers this case. Enjoy!

Step 1: Install python 3
Go to www.python.org, download & install Python (Windows/Mac OS X/Linux).

Step 2: Install the suds-py3 library
Go to https://github.com/cackharot/suds-py3, follow the installation instructions.

Step 3: Copy/paste the following code in a file 'match_taxa.py' (and adapt as desired)

from suds import null, WebFault
from suds.client import Client
cl = Client('http://www.marinespecies.org/rams/aphia.php?p=soap&wsdl=1')

scinames = cl.factory.create('scientificnames')
scinames["_arrayType"] = "string[]"
scinames["scientificname"] = ["Buccinum fusiforme", "Abra alba"]

array_of_results_array = cl.service.matchAphiaRecordsByNames(scinames, like="true", fuzzy="false", marine_only="false")
    for results_array in array_of_results_array:
        for aphia_object in results_array:
            print('%s %s %s' % (aphia_object.AphiaID, aphia_object.scientificname, aphia_object.genus))

Step 4: Run the script from the command line


Website and databases developed and hosted by VLIZ · Page generated 2018-01-22 GMT · contact: Anton Van de Putte