Repository_ReadkeyWords00 Set of keywords use to launch the search of the repository. They must be surrounded by single quotes. 2017-01-18 09:05:41.557 UTC 'breast cancer' 2017-01-18 19:10:26.345 UTC headerFile00 --headerFile 'path/to/file' 2017-01-18 19:41:25.847 UTC Dataset file with a header row that can be used to give a secondary ranking to the results' relevance. It is important to give the path to the file surrounded by single quotes. Otherwise, leave it empty. 2017-01-18 09:05:23.23 UTC lastAction0repoSearchkeyWords0headerFile0STDOUT00STDERR00net.sf.taverna.t2.activitiesexternal-tool-activity1.5net.sf.taverna.t2.activities.externaltool.ExternalToolActivity default_2 789663B8-DA91-428A-9F7D-B3F3DA185FD4 default local_4 <?xml version="1.0" encoding="UTF-8"?> <localInvocation><directory>/home/brayan/Taverna/</directory><shellPrefix>/bin/sh -c</shellPrefix><linkCommand>/bin/ln -s %%PATH_TO_ORIGINAL%% %%TARGET_NAME%%</linkCommand></localInvocation> 25cde908-3071-4bbf-af89-ff2168bc6c0a python repoSearch.py %%keyWords%% %%headerFile%% 1200 1800 headerFile keyWords repoSearch.py true false false UTF-8 false import requests, urllib, json, argparse, csv, pickle # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Constants definition REPOSEARCH_FILE = '/home/brayan/Taverna/repoSearch-results' DATAVERSE_API_KEY = 'aa7b80fd-db9d-4f10-a33c-8f0879d0160d' SEARCH_API_POINT = 'https://dataverse.harvard.edu/api/search?' # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Input data read parser = argparse.ArgumentParser(description = 'This module launches the search over the Harvard Dataverse.') parser.add_argument('keywords', help = 'List of keywords to use to perform the search') parser.add_argument('--headerFile', help = 'File with a header row that can be used to check datasets\' importance') searchKeywords = parser.parse_args().keywords headerFile = parser.parse_args().headerFile # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Search searchQuery = {'q' : searchKeywords, 'type' : 'dataset', 'show_relevance': 'true', 'per_page' : 20, 'key' : DATAVERSE_API_KEY} searchEncoded = urllib.urlencode(searchQuery) response = requests.get(SEARCH_API_POINT + searchEncoded) responseDict = json.loads(response.text) header = searchKeywords.lower().split() # In case there is no headerFile, we use search keywords if headerFile: header = [word.lower() for word in next(csv.reader(open(headerFile, 'rb')), [])] print 'Read header:', ', '.join(header) print responseDict['data']['total_count'], 'datasets were found!' resultsFile = open(REPOSEARCH_FILE, 'w') resultsFile.truncate() pickle.dump(responseDict['data']['items'], resultsFile) resultsFile.close() keyWords keyWords false false false UTF-8 false false false headerFile headerFile false false false UTF-8 false false false true true true 0 false net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize 1 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBouncenet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failovernet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry 1.0 1000 5000 0 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.InvokemainLoopheaderFile0keyWords0lastAction00net.sf.taverna.t2.activitiesdataflow-activity1.5net.sf.taverna.t2.activities.dataflow.DataflowActivitynet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize 1 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBouncenet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Loop <activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><raven><group>net.sf.taverna.t2.activities</group><artifact>beanshell-activity</artifact><version>1.5</version></raven><class>net.sf.taverna.t2.activities.beanshell.BeanshellActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.beanshell.BeanshellActivityConfigurationBean xmlns=""> <inputs> <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean> <name>lastAction</name> <depth>0</depth> <translatedElementType>java.lang.String</translatedElementType> <allowsLiteralValues>true</allowsLiteralValues> </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean> </inputs> <outputs> <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean> <name>loop</name> <depth>0</depth> <granularDepth>0</granularDepth> </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean> </outputs> <classLoaderSharing>workflow</classLoaderSharing> <localDependencies /> <artifactDependencies /> <script>loop = "" + ! lastAction.equals("Quit program"); if ("true".matches(loop)) { Thread.sleep(500); }</script> <dependencies /> </net.sf.taverna.t2.activities.beanshell.BeanshellActivityConfigurationBean></configBean><annotations /></activity> true net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failovernet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry 1.0 1000 5000 0 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoketitlevalue00net.sf.taverna.t2.activitiesstringconstant-activity1.5net.sf.taverna.t2.activities.stringconstant.StringConstantActivity Search info net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize 1 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBouncenet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failovernet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry 1.0 1000 5000 0 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.InvokeTellmessage0title0net.sf.taverna.t2.activitieslocalworker-activity1.5net.sf.taverna.t2.activities.localworker.LocalworkerActivity title 0 'text/plain' java.lang.String true message 0 'text/plain' java.lang.String true workflow net.sourceforge.taverna.scuflworkers.ui.TellWorker UserNameHere 2017-01-18 11:34:10.263 UTC net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize 1 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBouncenet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failovernet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry 1.0 1000 5000 0 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.InvokeConcatenate_two_stringsstring10string20output00net.sf.taverna.t2.activitieslocalworker-activity1.5net.sf.taverna.t2.activities.localworker.LocalworkerActivity string1 0 'text/plain' java.lang.String true string2 0 'text/plain' java.lang.String true output 0 'text/plain' 0 workflow org.embl.ebi.escience.scuflworkers.java.StringConcat net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize 1 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBouncenet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failovernet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry 1.0 1000 5000 0 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.InvokedeleteTmpnet.sf.taverna.t2.activitiesexternal-tool-activity1.5net.sf.taverna.t2.activities.externaltool.ExternalToolActivity 789663B8-DA91-428A-9F7D-B3F3DA185FD4 default local_4 <?xml version="1.0" encoding="UTF-8"?> <localInvocation><directory>/home/brayan/Taverna/</directory><shellPrefix>/bin/sh -c</shellPrefix><linkCommand>/bin/ln -s %%PATH_TO_ORIGINAL%% %%TARGET_NAME%%</linkCommand></localInvocation> 53489c16-f8e0-45d8-a7ad-6ddea79fe390 python deleteTmp.py 1200 1800 deleteTmp.py true false false UTF-8 false import os # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Constant definition REPOSEARCH_FILE = '/home/brayan/Taverna/repoSearch-results' CURRENT_RESULT_FILE = '/home/brayan/Taverna/repoSearch-current' # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Main program try: os.remove(REPOSEARCH_FILE) os.remove(CURRENT_RESULT_FILE) except OSError: pass false true true 0 false net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize 1 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBouncenet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failovernet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry 1.0 1000 5000 0 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.InvokerepoSearchkeyWordskeyWordsrepoSearchheaderFileheaderFilemainLoopheaderFileheaderFilemainLoopkeyWordskeyWordsTellmessageConcatenate_two_stringsoutputTelltitletitlevalueConcatenate_two_stringsstring1repoSearchSTDERRConcatenate_two_stringsstring2repoSearchSTDOUTlastActionmainLooplastAction 7440a668-9bb7-4333-a053-884366af36a4 2017-01-18 11:57:45.734 UTC ae638f31-83db-4a37-a87c-d57ddc0e972e 2017-01-18 19:10:27.352 UTC 1ec03e3a-bd5a-4b7a-839f-e8234fdbea89 2017-01-18 09:20:45.651 UTC 63f06900-e18f-4d6b-b4cd-21bb610446e2 2017-01-16 23:37:10.354 UTC f07fe259-464f-4ea9-89a4-f214e61f487c 2017-01-17 00:59:58.401 UTC 7c13e557-6089-45e4-bad6-de760ebbd5ac 2017-01-17 00:07:26.638 UTC 5481fa2a-d102-410a-a82a-c0f4a7b50ead 2017-01-18 11:53:45.611 UTC 39622add-a611-4290-8537-32a6ad23ad9e 2017-01-18 11:55:08.982 UTC 8ca26ca8-67bf-4991-b689-152e24402974 2017-01-18 11:37:28.725 UTC 2ef40ea0-5b2e-4e0a-89d9-8e89833d3914 2017-01-18 09:26:48.244 UTC be18670d-be68-4a97-9da6-666c0860d38b 2017-01-18 09:24:20.669 UTC add29333-981c-4309-b10d-c14d53833e22 2017-01-17 00:03:42.858 UTC 9822530b-1dcc-4cae-a9bc-0318b5f5f9fa 2017-01-17 00:55:08.400 UTC 12c905cc-4760-4584-8590-40d8710c8060 2017-01-18 08:52:13.727 UTC abd801a6-78b0-4386-816a-9ff44aac7671 2017-01-17 00:09:43.754 UTC This workflow launches a search in the Harvard Dataverse repository. Only a few keywords are needed. One can optionally include a datafile with a header line so that results' descriptions are compared with those words that compose the header in order to give a secondary ranking of the results' relevance. 2017-01-18 08:52:08.915 UTC 73b916d9-6bf9-43c5-96d1-4160d9538d8c 2017-01-17 00:22:21.631 UTC 96a6d5cd-ffb4-47bc-a9d3-bdaa97ccc4b3 2017-01-18 09:48:34.509 UTC b49af5ee-81c9-40dd-97d9-f509207ec4a7 2017-01-18 09:12:47.755 UTC 674ae031-9d5c-4639-af1b-c72e3b521c41 2017-01-17 00:42:55.580 UTC f0e19e1b-2bb6-41ec-bec0-744a716b7651 2017-01-18 19:41:27.176 UTC b41b99ad-2bde-4d65-abda-d147be841aa5 2017-01-18 09:21:11.51 UTC 963215c5-8509-4511-b6e0-16f51d8dfe59 2017-01-18 09:28:07.60 UTC 2fcefc6d-b130-4e96-8f1e-fae6bb4b65bb 2017-01-17 00:36:52.364 UTC e0afde41-dd76-48a8-aecb-a68689a87fc7 2017-01-18 09:29:36.20 UTC c6052817-c6e8-48d6-ae12-f954d84eb240 2017-01-17 00:07:04.260 UTC 2638fc67-4bba-4a96-8aeb-c078c02270e5 2017-01-18 09:40:18.133 UTC 48b0e435-7de9-4d54-bcfb-be360a6c8d60 2017-01-17 00:52:12.582 UTC 36110a21-1fe8-4eac-b7c5-ee3f5426df53 2017-01-17 01:01:25.366 UTC 1c42bdd6-f65f-4c70-beab-5a1b5c6005fb 2017-01-18 11:36:21.57 UTC 9432f2f1-321b-4767-b282-f08d5f60d713 2017-01-18 11:52:58.779 UTC 5ffdf7d4-b6fc-436b-8ae3-0f47ef6f4685 2017-01-16 23:30:41.164 UTC e5879a29-aa74-4bcb-94b0-a6c416bc1354 2017-01-16 23:51:21.996 UTC 9106cf46-861d-4802-87d5-318a2faaf505 2017-01-18 09:31:47.532 UTC 6dd6e1ba-fb1f-4d87-858e-bb3eefe88167 2017-01-18 08:54:00.609 UTC 86e6efc1-3d7c-437a-a317-6a08decb30eb 2017-01-17 00:15:37.626 UTC f61c2521-be6b-4440-865c-2def6cb23408 2017-01-18 09:04:54.183 UTC 65de9280-3a9e-4b5e-abae-4197f6eba2a4 2017-01-18 14:18:24.132 UTC c9ac6f13-cdb8-4b09-8ca7-065f98e55980 2017-01-18 08:58:18.338 UTC a98726c7-b2ba-4d71-a3e1-48216f60bdc5 2017-01-17 00:52:55.392 UTC a276f6e7-43d3-4d2e-8769-51c4f179e64a 2017-01-18 11:54:55.503 UTC Brayan Stiven Zapata Impatá 2017-01-18 08:50:18.830 UTC 1eeb8598-ea93-491a-a663-3486d764b213 2017-01-18 09:07:49.619 UTC 1f0446e7-42ef-4f19-a4d1-55b3078ebb5b 2017-01-18 14:13:47.431 UTC Repository Read 2017-01-18 08:50:25.598 UTC 8e91050a-7edc-496b-b602-117ede0703b3 2017-01-17 00:10:15.250 UTC a8506575-fa1a-4385-b6c1-0421241ca120 2017-01-18 15:22:12.921 UTC 118e1be6-3d7c-4791-a224-f9f679af1e1c 2017-01-16 23:52:58.322 UTC 0ab5a349-3932-40f2-82fc-fce69408dfe6 2017-01-18 09:36:56.284 UTC c176bb12-61dc-409d-9a52-43640960e3c4 2017-01-16 23:31:41.570 UTC f7ec5397-111f-47d2-90e1-0a6a4725670b 2017-01-18 15:23:10.390 UTC effb819b-c5ca-463d-a038-ff7965c920e1 2017-01-18 09:05:42.732 UTC d9562a4f-9df2-427c-8926-3c5a3c17656c 2017-01-17 01:03:25.206 UTC b8bac212-1097-4a89-afdc-f9712c1cc398 2017-01-18 09:17:47.147 UTC d2cb45c5-8163-4e68-8ab1-227be447e010 2017-01-18 11:52:56.937 UTC 8bc37dc1-264a-4f11-9670-9c914fdb7c9a 2017-01-17 00:11:49.963 UTC 044d1437-46cc-4199-860c-0155024ddb69 2017-01-18 11:55:22.672 UTC 89acf9fb-729b-4e9c-bbd7-3da2f4fb8582 2017-01-18 11:34:11.720 UTC 437185d4-93dc-4872-931e-c590d3bce40f 2017-01-18 11:57:34.919 UTC f6197c8f-ceb4-4ed2-aab5-8f2649542d5a 2017-01-17 00:26:34.467 UTC 2f99fa7e-1f4a-40cb-9743-8561a3d6a0fe 2017-01-18 09:11:53.707 UTC 50a04a08-8c1c-48f7-b3ba-02e603d46486 2017-01-18 09:45:44.344 UTC d27ce05d-6e23-4dc0-bf99-e0fc1bc08f34 2017-01-18 09:55:35.830 UTC IfDownloadDownloadFlag00resultDownloadSTDOUT00STDERR00net.sf.taverna.t2.activitiesexternal-tool-activity1.5net.sf.taverna.t2.activities.externaltool.ExternalToolActivity default_2 789663B8-DA91-428A-9F7D-B3F3DA185FD4 default local_4 <?xml version="1.0" encoding="UTF-8"?> <localInvocation><directory>/home/brayan/Taverna/</directory><shellPrefix>/bin/sh -c</shellPrefix><linkCommand>/bin/ln -s %%PATH_TO_ORIGINAL%% %%TARGET_NAME%%</linkCommand></localInvocation> 8cd38833-752b-4a4b-b494-f5ce7c226df2 python resultDownload.py 1200 1800 resultDownload.py true false false UTF-8 false import sys, os, requests, urllib, json, re # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Constants definition DATASETS_FOLDER = '/home/brayan/Taverna/datasets' CURRENT_RESULT_FILE = '/home/brayan/Taverna/repoSearch-current' DATAVERSE_API_KEY = 'aa7b80fd-db9d-4f10-a33c-8f0879d0160d' DATASET_API_POINT = 'https://dataverse.harvard.edu/api/datasets/:persistentId/?' FILEACCESS_API_POINT = 'https://dataverse.harvard.edu/api/access/datafile/' # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Dataset file download currentResultFile = open(CURRENT_RESULT_FILE, 'r') globalId = currentResultFile.read() currentResultFile.close() searchQuery = {'persistentId' : globalId, 'key' : DATAVERSE_API_KEY} searchEncoded = urllib.urlencode(searchQuery) response = requests.get(DATASET_API_POINT + searchEncoded) responseDict = json.loads(response.text) if len(responseDict['data']['latestVersion']['files']) == 0: print 'No files in this dataset...' print 'Showing the following result.' sys.exit() fileData = responseDict['data']['latestVersion']['files'][0]['dataFile'] if re.match('.*pdf.*|.*various.*|.*i', fileData['contentType'].lower()) or re.match('.*x-stata.*|.*spss-*', fileData['originalFileFormat']): print 'This dataset includes a non-open file format (PDF, SPSS, Stata, etc)...' print 'Showing the following result.' sys.exit() searchQuery = {'format' : 'original', 'key' : DATAVERSE_API_KEY} searchEncoded = urllib.urlencode(searchQuery) response = requests.get(FILEACCESS_API_POINT + str(fileData['id']) + '?' + searchEncoded) if not os.path.exists(DATASETS_FOLDER): os.makedirs(DATASETS_FOLDER) fileName = fileData['filename'] targetFile = open(DATASETS_FOLDER + '/' + fileName, 'w') targetFile.truncate() targetFile.write(response.text) targetFile.close() print "Datafile '" + fileName + "' donwloaded!" false true true 0 false net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize 1 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBouncenet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failovernet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry 1.0 1000 5000 0 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.InvokeConcatenate_two_stringsstring20string10output00net.sf.taverna.t2.activitieslocalworker-activity1.5net.sf.taverna.t2.activities.localworker.LocalworkerActivity string1 0 'text/plain' java.lang.String true string2 0 'text/plain' java.lang.String true output 0 'text/plain' 0 workflow org.embl.ebi.escience.scuflworkers.java.StringConcat net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize 1 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBouncenet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failovernet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry 1.0 1000 5000 0 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.InvokedownloadInfomessage0title0net.sf.taverna.t2.activitieslocalworker-activity1.5net.sf.taverna.t2.activities.localworker.LocalworkerActivity title 0 'text/plain' java.lang.String true message 0 'text/plain' java.lang.String true answer 0 'text/plain' 0 workflow net.sourceforge.taverna.scuflworkers.ui.TellWorker net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize 1 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBouncenet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failovernet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry 1.0 1000 5000 0 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoketitlevalue00net.sf.taverna.t2.activitiesstringconstant-activity1.5net.sf.taverna.t2.activities.stringconstant.StringConstantActivity Download information net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize 1 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBouncenet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failovernet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry 1.0 1000 5000 0 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.InvokeConcatenate_two_stringsstring2resultDownloadSTDOUTConcatenate_two_stringsstring1resultDownloadSTDERRdownloadInfomessageConcatenate_two_stringsoutputdownloadInfotitletitlevalue 2524aebc-b9da-4d9f-9d5f-e2f2095e9232 2017-01-18 11:36:58.517 UTC a2713069-bf03-4644-85b9-520be9c88247 2017-01-18 09:36:46.844 UTC 1ea73594-9729-45f9-830e-476fe1b505b6 2017-01-17 00:51:51.34 UTC In case the selected action is "Download", this workflow dowloads the dataset file. 2017-01-18 09:36:47.162 UTC IfDownload 2017-01-17 00:51:28.695 UTC 298f433a-a717-4d3f-953f-6be4a164139b 2017-01-18 09:36:50.348 UTC e7b9085c-40f4-4cb5-ab16-3c7bb6a8d6e5 2017-01-17 01:03:15.742 UTC fa1344aa-6169-49ad-85b1-5dcddb49d5e5 2017-01-18 14:17:17.813 UTC 332f5ced-3a18-4d66-970e-46907457392f 2017-01-17 00:52:06.734 UTC 9f5da592-bb4e-435b-9531-55e12d4b2988 2017-01-18 14:13:36.381 UTC 3bef4d22-b94c-4051-8ae3-f52f4d44349f 2017-01-18 09:48:25.989 UTC a8cb744d-481e-4dee-9966-b6e2ea2ac9d3 2017-01-18 09:29:28.884 UTC 469e2c4a-0120-460c-a466-17000bbedfce 2017-01-18 11:37:02.453 UTC 39351cdd-f67a-4dc6-9b3b-1d8eb4c8cdac 2017-01-18 09:45:40.870 UTC Brayan Stiven Zapata Impatá 2017-01-18 09:36:23.389 UTC 15e5d7e1-06cf-43c5-a022-e5b0b78c6219 2017-01-18 09:03:32.250 UTC cd7123cd-3b33-49a2-8b73-80d882d4d121 2017-01-18 09:55:06.198 UTC Search_main_loopkeyWords00headerFile00lastAction0IfDownloadDownloadFlag0net.sf.taverna.t2.activitiesdataflow-activity1.5net.sf.taverna.t2.activities.dataflow.DataflowActivitynet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize 1 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBouncenet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failovernet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry 1.0 1000 5000 0 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.InvokeResultsIterationkeyWords0headerFile0Action00net.sf.taverna.t2.activitiesdataflow-activity1.5net.sf.taverna.t2.activities.dataflow.DataflowActivitynet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize 1 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBouncenet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Loop <activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><raven><group>net.sf.taverna.t2.activities</group><artifact>beanshell-activity</artifact><version>1.5</version></raven><class>net.sf.taverna.t2.activities.beanshell.BeanshellActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.beanshell.BeanshellActivityConfigurationBean xmlns=""> <inputs> <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean> <name>Action</name> <depth>0</depth> <translatedElementType>java.lang.String</translatedElementType> <allowsLiteralValues>true</allowsLiteralValues> </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean> </inputs> <outputs> <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean> <name>loop</name> <depth>0</depth> <granularDepth>0</granularDepth> </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean> </outputs> <classLoaderSharing>workflow</classLoaderSharing> <localDependencies /> <artifactDependencies /> <script>loop = "" + Action.equals("Next"); if ("true".matches(loop)) { Thread.sleep(500); }</script> <dependencies /> </net.sf.taverna.t2.activities.beanshell.BeanshellActivityConfigurationBean></configBean><annotations /></activity> true net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failovernet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry 1.0 1000 5000 0 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.InvokecheckIfDownloadAction0DownloadFlags11 This service checks if the condition is "true" and if so outputs a value in the pass_flags list and leaves the fail_flags empty. If the condition is not true then the service outputs a value in the fail_flags list and leaves the pass_flags empty. 2011-11-15 09:59:22.100 UTC net.sf.taverna.t2.activitiesbeanshell-activity1.5net.sf.taverna.t2.activities.beanshell.BeanshellActivity Action 0 text/plain java.lang.String true DownloadFlags 1 1 workflow net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize 1 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBouncenet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failovernet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry 1.0 1000 5000 0 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.InvokeIfDownloadDownloadFlagcheckIfDownloadDownloadFlagsResultsIterationkeyWordskeyWordsResultsIterationheaderFileheaderFilecheckIfDownloadActionResultsIterationActionlastActionResultsIterationAction 12b383c1-d878-42fb-a175-12cd3a4513f3 2017-01-18 11:54:35.498 UTC 3b75ad0c-0566-4418-ac57-6a6ad2b6be8e 2017-01-18 09:35:15.124 UTC 18839b5f-5caa-40ef-8f64-05c0a56e19d8 2017-01-18 11:55:21.471 UTC baeedf29-d74f-43e3-a023-ab36bc37eba8 2017-01-18 11:36:17.565 UTC 08707bb7-18c1-4c23-bc81-497fff0cf7a0 2017-01-18 09:55:26.150 UTC Once the repo sends the results, this workflow iterates through them and download the dataset files (only if they are CSV/text files). 2017-01-18 09:35:12.647 UTC aed0108e-1a6c-42da-b2c3-ea879f935893 2017-01-18 09:25:32.355 UTC 3deddeb4-434c-4509-8d86-7d5f46f1a1a8 2017-01-18 14:18:17.711 UTC 77587c6f-c6ee-404b-a25d-b73734e9bef9 2017-01-18 09:29:33.460 UTC e0ffc6e0-94e7-48c2-8dd4-6ea98f2a3b90 2017-01-18 09:24:11.571 UTC afc5b273-fecf-45f0-94a2-50cbf569bf7c 2017-01-18 11:52:58.502 UTC 38f405af-10b4-4419-a640-e109847bf9dc 2017-01-18 14:17:19.493 UTC 012d5a82-759c-4635-987a-93e13d96929a 2017-01-18 09:45:42.93 UTC a00517a8-1948-4386-b321-b6eaff6383ae 2017-01-18 14:13:45.383 UTC Brayan Stiven Zapata Impatá 2017-01-18 09:34:12.649 UTC 3aa09d49-93d2-4396-813e-0b68dfe07e4a 2017-01-18 09:19:50.246 UTC b4b00cb4-e6d0-4717-bd6e-6b2aef2fda43 2017-01-18 11:52:56.665 UTC 1fab449c-ec8d-4a30-9750-36837d102418 2017-01-18 11:53:45.338 UTC 291aac27-f144-4132-92ad-a8ad5316c8e2 2017-01-18 09:23:45.532 UTC 6fba939e-576d-4e33-bfbe-fce018d8605f 2017-01-18 15:23:10.155 UTC 818ee95d-ccf7-4441-aa05-d69a138a9582 2017-01-18 09:20:18.507 UTC 3c5a1c95-77c4-4571-8c6e-169d437e8cfd 2017-01-18 11:54:51.694 UTC a41c908f-3b71-4eba-b1bd-be03b1bed7f6 2017-01-18 11:37:28.469 UTC f548e44c-4efb-4251-9ad2-8e852611270c 2017-01-18 09:48:32.870 UTC Search main loop 2017-01-18 09:34:21.89 UTC f5a344d0-9dda-4aa4-9293-eb3fd23fd4a8 2017-01-18 09:36:55.21 UTC ResultsIterationheaderFile00keyWords00Action0resultsReadheaderFile0keyWords0STDOUT00STDERR00net.sf.taverna.t2.activitiesexternal-tool-activity1.5net.sf.taverna.t2.activities.externaltool.ExternalToolActivity default_2 789663B8-DA91-428A-9F7D-B3F3DA185FD4 default local_4 <?xml version="1.0" encoding="UTF-8"?> <localInvocation><directory>/home/brayan/Taverna/</directory><shellPrefix>/bin/sh -c</shellPrefix><linkCommand>/bin/ln -s %%PATH_TO_ORIGINAL%% %%TARGET_NAME%%</linkCommand></localInvocation> a6d2412f-4a3a-44ec-8bc3-abc24ca32ec8 python resultsRead.py %%keyWords%% %%headerFile%% 1200 1800 headerFile keyWords resultsRead.py true false false UTF-8 false import argparse, csv, pickle # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Constants definition REPOSEARCH_FILE = '/home/brayan/Taverna/repoSearch-results' CURRENT_RESULT_FILE = '/home/brayan/Taverna/repoSearch-current' # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Data definition parser = argparse.ArgumentParser(description = 'This module reads the results send by the repository.') parser.add_argument('keywords', help = 'List of keywords used to perform the search') parser.add_argument('--headerFile', help = 'File with a header row that can be used to check datasets\' importance') searchKeywords = parser.parse_args().keywords headerFile = parser.parse_args().headerFile resultsFile = open(REPOSEARCH_FILE, 'r') results = pickle.load(resultsFile) header = searchKeywords.lower().split() # In case there is no headerFile, we use search keywords if headerFile: header = [word.lower() for word in next(csv.reader(open(headerFile, 'rb')), [])] # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Result reading dataset = results[0] print dataset['name'], '\n' print '- Search score:', dataset['score'] print '- Global Id:', dataset['global_id'] if 'description' in dataset: print '- Description:' lenght = len(dataset['description']) maxLength = 100 for i in range(lenght / maxLength): if i * maxLength + 2 * maxLength > lenght: print dataset['description'][i * maxLength : ] else: print dataset['description'][i * maxLength : i * maxLength + maxLength] matches = [word for word in header if word in dataset['description'].lower()] print '- Matches:', len(matches) , '/', len(header) print '- Matched words:', ', '.join(matches) resultsFile = open(REPOSEARCH_FILE, 'w') resultsFile.truncate() pickle.dump(results[1:], resultsFile) resultsFile.close() currentResultFile = open(CURRENT_RESULT_FILE, 'w') currentResultFile.truncate() currentResultFile.write(dataset['global_id']) currentResultFile.close() keyWords keyWords false false false UTF-8 false false false headerFile headerFile false false false UTF-8 false false false true true true 0 false net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize 1 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBouncenet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failovernet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry 1.0 1000 5000 0 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invokemessagevalue00net.sf.taverna.t2.activitiesstringconstant-activity1.5net.sf.taverna.t2.activities.stringconstant.StringConstantActivity Select an action to perform over the result: net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize 1 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBouncenet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failovernet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry 1.0 1000 5000 0 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.InvokeQuitOptionvalue00net.sf.taverna.t2.activitiesstringconstant-activity1.5net.sf.taverna.t2.activities.stringconstant.StringConstantActivity Quit program net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize 1 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBouncenet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failovernet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry 1.0 1000 5000 0 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.InvokeNextOptionvalue00net.sf.taverna.t2.activitiesstringconstant-activity1.5net.sf.taverna.t2.activities.stringconstant.StringConstantActivity Next net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize 1 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBouncenet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failovernet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry 1.0 1000 5000 0 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.InvokeDownloadOptionvalue00net.sf.taverna.t2.activitiesstringconstant-activity1.5net.sf.taverna.t2.activities.stringconstant.StringConstantActivity Download net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize 1 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBouncenet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failovernet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry 1.0 1000 5000 0 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.InvokecreateMenssagestring20string10output00net.sf.taverna.t2.activitieslocalworker-activity1.5net.sf.taverna.t2.activities.localworker.LocalworkerActivity string1 0 'text/plain' java.lang.String true string2 0 'text/plain' java.lang.String true output 0 0 workflow org.embl.ebi.escience.scuflworkers.java.StringConcat UserNameHere 2017-01-18 09:12:42.726 UTC net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize 1 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBouncenet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failovernet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry 1.0 1000 5000 0 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.InvokeConcatenate_two_stringsstring10string20output00net.sf.taverna.t2.activitieslocalworker-activity1.5net.sf.taverna.t2.activities.localworker.LocalworkerActivity string1 0 'text/plain' java.lang.String true string2 0 'text/plain' java.lang.String true output 0 'text/plain' 0 workflow org.embl.ebi.escience.scuflworkers.java.StringConcat net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize 1 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBouncenet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failovernet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry 1.0 1000 5000 0 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.InvokeActionOverResultmessage0valueList1title0answer00net.sf.taverna.t2.activitieslocalworker-activity1.5net.sf.taverna.t2.activities.localworker.LocalworkerActivity valueList 1 l('text/plain') java.lang.String true message 0 'text/plain' java.lang.String true title 0 'text/plain' java.lang.String true answer 0 'text/plain' 0 workflow net.sourceforge.taverna.scuflworkers.ui.SelectWorker net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize 1 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBouncenet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failovernet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry 1.0 1000 5000 0 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Invoketitlevalue00net.sf.taverna.t2.activitiesstringconstant-activity1.5net.sf.taverna.t2.activities.stringconstant.StringConstantActivity New result net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Parallelize 1 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.ErrorBouncenet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Failovernet.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.Retry 1.0 1000 5000 0 net.sf.taverna.t2.coreworkflowmodel-impl1.5net.sf.taverna.t2.workflowmodel.processor.dispatch.layers.InvokeresultsReadheaderFileheaderFileresultsReadkeyWordskeyWordscreateMenssagestring2messagevaluecreateMenssagestring1Concatenate_two_stringsoutputConcatenate_two_stringsstring1resultsReadSTDERRConcatenate_two_stringsstring2resultsReadSTDOUTActionOverResultmessagecreateMenssageoutputActionOverResulttitletitlevalueActionOverResultvalueListNextOptionvalueActionOverResultvalueListDownloadOptionvalueActionOverResultvalueListQuitOptionvalueActionActionOverResultanswer cd494e49-a182-41dc-b434-aa85823c7a4e 2017-01-18 09:17:45.827 UTC 40d3a924-2a4b-404e-9030-be84adbcbe8e 2017-01-18 09:04:34.906 UTC 59457717-f145-4353-882e-67e3ae2078c6 2017-01-18 09:18:43.771 UTC 9f5a1f04-e393-451a-8f63-71315eabd570 2017-01-18 09:36:12.540 UTC fd7965fb-8874-4b79-9f8e-0bb4220b0d6d 2017-01-18 15:23:09.992 UTC 12910405-7067-42db-b43f-81fad95fac88 2017-01-18 09:48:16.597 UTC ResultsIteration 2017-01-17 00:00:23.548 UTC b4082b66-02fb-4aaa-b85b-f3b5c631ea19 2017-01-17 00:36:45.868 UTC 7fc40992-cef3-44f2-98c9-3df481d3a3db 2017-01-17 00:09:40.326 UTC 2a6b5ae4-f707-4945-9710-a99601a035ee 2017-01-18 11:54:33.494 UTC 8730ceb4-d074-40b2-bdf1-a186d57242c9 2017-01-18 11:53:42.838 UTC 04ad450c-2d6e-4c0b-8a24-65a788bc6a48 2017-01-18 09:07:47.362 UTC ea818803-c2ac-43be-bba0-60745e7f822b 2017-01-18 11:37:22.128 UTC Displays the information of a single result and ask for an action to perform over it. 2017-01-18 09:36:11.534 UTC 50ef0d4f-3980-4bf8-977a-60a6068f2f2e 2017-01-18 11:36:10.941 UTC ceda8e50-0f46-4910-ba96-6f6e9ad0f86a 2017-01-18 09:54:33.907 UTC b430d88f-b0e7-4058-a3e8-8d20e1c97a80 2017-01-18 11:37:26.85 UTC 531fa87e-acd8-4b6c-8e72-3998388ae562 2017-01-18 09:11:46.819 UTC 3488ae09-255d-490d-bb74-17920b69d20b 2017-01-18 11:54:49.439 UTC 2f356067-d3bb-4eb3-a73b-90926dddb76a 2017-01-17 00:36:21.972 UTC e0f4b85a-772b-429e-b6ff-be1ed50ce742 2017-01-18 08:57:18.525 UTC 6fffd565-6d08-4f7d-9b40-9719d47b199f 2017-01-17 00:01:41.740 UTC fa9d38ed-f1d1-4e6c-8226-3dc79ccd0ec4 2017-01-18 11:43:00.589 UTC 669ca007-bd14-4966-b1d3-a0ef80378e07 2017-01-18 08:57:35.749 UTC dd27f10e-cd27-46ec-b444-12c3f1bb211d 2017-01-18 09:12:46.787 UTC 4230824b-f64b-45bf-aeec-1584c7f04752 2017-01-17 00:07:01.330 UTC 55da0de6-bdc6-40b9-b6e4-78c00a1b7cb6 2017-01-18 08:57:41.74 UTC e8bab8f2-3f7a-4f43-839a-1d2005b22d73 2017-01-17 00:03:25.764 UTC Brayan Stiven Zapata Impatá 2017-01-18 09:35:46.915 UTC 3f53d6ad-ecb8-4a3b-b5a3-dd1dc6b2fb27 2017-01-18 08:57:13.312 UTC d94b8b21-36d4-4543-bafe-ed4f5559cb94 2017-01-18 08:58:03.674 UTC 68dc1c1f-8096-4912-8a52-cf3dba401646 2017-01-18 11:52:53.726 UTC 26391e9b-9544-475b-b77b-4f1ba0ba1f0c 2017-01-18 14:18:07.277 UTC d60af919-e711-46c8-bd60-fb3f2663d21c 2017-01-17 00:24:23.755 UTC 1ba8e2de-1ceb-4e22-87d7-af06a2e02bb1 2017-01-18 09:04:44.74 UTC c8d96777-d4ec-4ec2-9f8e-38467bbd7443 2017-01-18 09:42:56.949 UTC 2dacb16f-78e4-4ea2-a554-0b4bc676f172 2017-01-18 09:55:24.357 UTC ddfe5c19-addd-4206-bba8-298ff2e68981 2017-01-17 00:42:52.917 UTC