# Mworks - python

**URL:** <https://mworks.discourse.group/t/mworks-python/383>\
**Category:** Support\
**Created:** [August 22, 2017, 3:18pm UTC](https://mworks.discourse.group/t/mworks-python/383 "2017-08-22T15:18:33Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [August 22, 2017, 3:18pm UTC](https://mworks.discourse.group/t/mworks-python/383/1 "2017-08-22T15:18:33Z")

</div>

Chris,

I would like to run a short python script to load images into Mworks (i.e., the python script parse some json file and reads the location of those images).  
How do I then instruct Mworks to load those files?

Thanks,

Shay

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [August 22, 2017, 7:49pm UTC](https://mworks.discourse.group/t/mworks-python/383/2 "2017-08-22T19:49:14Z")

</div>

Hi Shay,

I’ve attached an example with explanatory comments. To run it, you’ll need a recent [nightly build](https://mworks.github.io/downloads/) (which I believe you’re using already). The experiment is written in [MWEL](https://mworks.github.io/documentation/0.8/mwel/index.html), but the techniques it demonstrates can be implemented in XML, too.

If you have any questions, please let me know.

Chris

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [August 22, 2017, 7:49pm UTC](https://mworks.discourse.group/t/mworks-python/383/3 "2017-08-22T19:49:14Z")

</div>

Attachment: [python\_image\_loading.zip](https://mworks.discourse.group/uploads/short-url/4AtqYAtuW4NYBWH5Zvg80bMdCyp.zip) (1.62 KB)

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [August 22, 2017, 8:25pm UTC](https://mworks.discourse.group/t/mworks-python/383/4 "2017-08-22T20:25:26Z")

</div>

Chris,

Do I need to rewrite all my experiment protocol in this mwel format, or can  
I incorporate pieces of mwel code into existing mworks protocols?  
– Shay

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [August 22, 2017, 8:36pm UTC](https://mworks.discourse.group/t/mworks-python/383/5 "2017-08-22T20:36:27Z")

</div>

At the moment, you can’t mix them. If you want to use MWEL, all of your experiment must be written in it. But it might be worth changing that, to help folks who want to transition old experiment code to the new language. Let me think about it.

Chris

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [August 22, 2017, 8:38pm UTC](https://mworks.discourse.group/t/mworks-python/383/6 "2017-08-22T20:38:48Z")

</div>

Hi Chris,

Long term - yes.  
Short term - I’d like to get this up & running as soon as possible. Can I  
load images from a python script without using mwel?

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [August 23, 2017, 2:17pm UTC](https://mworks.discourse.group/t/mworks-python/383/7 "2017-08-23T14:17:12Z")

</div>

Yes. Here’s the equivalent XML.

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [August 23, 2017, 2:17pm UTC](https://mworks.discourse.group/t/mworks-python/383/8 "2017-08-23T14:17:12Z")

</div>

Attachment: [python\_image\_loading.xml](https://mworks.discourse.group/uploads/short-url/1YYENUloTLdDL3xCs2tTsUW00RA.xml) (4.17 KB)

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [August 23, 2017, 2:19pm UTC](https://mworks.discourse.group/t/mworks-python/383/9 "2017-08-23T14:19:37Z")

</div>

Great. Thank you Chris.  
Was this the automatic output generated by “compiling” the mwel ?

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [August 23, 2017, 2:25pm UTC](https://mworks.discourse.group/t/mworks-python/383/10 "2017-08-23T14:25:03Z")

</div>

No, I created it from scratch in MWEditor. The automatic conversion from MWEL produces XML that is less readable, with a fair amount of metadata. If you want to see it:

```
/Library/Application\ Support/MWorks/MWEL/mwel2xml python_image_loading.mwel

```

Chris

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [August 23, 2017, 6:44pm UTC](https://mworks.discourse.group/t/mworks-python/383/11 "2017-08-23T18:44:37Z")

</div>

> Note that, at present, the path to the image directory (both here and in the Python script) must be absolute. This limitation will be removed shortly.

This is done. As of tonight’s nightly build, the path to the image directory can be relative to the experiment file.

Chris

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [August 23, 2017, 6:48pm UTC](https://mworks.discourse.group/t/mworks-python/383/12 "2017-08-23T18:48:01Z")

</div>

OK. Thank you for the update.

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [August 30, 2017, 3:40pm UTC](https://mworks.discourse.group/t/mworks-python/383/13 "2017-08-30T15:40:03Z")

</div>

Hi Chris,

Sorry to bother you during your vacation, but this example doesn’t seem to  
work for me.  
I’ve tried it with the latest nightly build.  
The problem seems to be related to defining the image path as a variable  
for deferred loading.  
It keeps trying to actually search for a file called $variablename

Do you have an idea how to fix this?

Thanks,

Shay

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [August 30, 2017, 4:40pm UTC](https://mworks.discourse.group/t/mworks-python/383/14 "2017-08-30T16:40:02Z")

</div>

Did you include one or more “resource” declarations that identify the images you want to use? My examples include them. They won’t work without them.

Chris

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [August 30, 2017, 6:08pm UTC](https://mworks.discourse.group/t/mworks-python/383/15 "2017-08-30T18:08:18Z")

</div>

Yes. Not sure what is going on. It is not finding some of the images.  
Also complains about missing sound files.

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [August 30, 2017, 6:08pm UTC](https://mworks.discourse.group/t/mworks-python/383/16 "2017-08-30T18:08:51Z")

</div>

I think it’s a relative/absolute path problem. I’ll try to dig into things  
further.

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [August 30, 2017, 6:14pm UTC](https://mworks.discourse.group/t/mworks-python/383/17 "2017-08-30T18:14:05Z")

</div>

Hi.  
I can’t figure out what is going on. I have a absolute path stated for the  
sound files, but I still get an error during run time:

* * *

BRAIN-AND-COG-SIX-SEVENTY-NINE:sounds shayo$ ls -la  
/Users/shayo/Desktop/sounds/acquire.wav

-rw-------@ 1 shayo staff 11468 Jul 13 2004  
/Users/shayo/Desktop/sounds/acquire.wav

* * *
 ...
* * *

_22:08:27_: ERROR: Failed to create object.

Extended information:

reason: Path does not exist:  
/var/folders/ch/j7r8cncd6ql35y2p34dx1f\_00000gn/T/MWorks/Experiment  
Cache/\_Users\_shayo\_Desktop\_shay\_protocols/tmp/Users/shayo/Desktop/sounds/acquire.wav

location: at line 265

object\_type: sound/wav\_file

ref\_id: idm34632846946112

component: acquire\_sound  
parser\_context: mw\_create

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [August 30, 2017, 7:14pm UTC](https://mworks.discourse.group/t/mworks-python/383/18 "2017-08-30T19:14:34Z")

</div>

You need to declare the sound files as resources, too. See [https://mworks.github.io/documentation/0.8/components/resource.html](https://mworks.github.io/documentation/0.8/components/resource.html) .

Chris

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [August 30, 2017, 7:26pm UTC](https://mworks.discourse.group/t/mworks-python/383/19 "2017-08-30T19:26:06Z")

</div>

I don’t fully understand. Do I need to completely remove all my previous  
declarations of images and sound files and put all under resources?  
How do I declare a sound resource vs an image resource?  
Will the dynamic path work with resources?

– Shay

---

<div class="post-metadata">

**Author:** ![cstawarz](https://yyz1.discourse-cdn.com/flex031/user_avatar/mworks.discourse.group/cstawarz/32/3_2.png) [@cstawarz](https://mworks.discourse.group/u/cstawarz)\
**Post date:** [August 30, 2017, 8:07pm UTC](https://mworks.discourse.group/t/mworks-python/383/20 "2017-08-30T20:07:59Z")

</div>

You don’t need to change or remove anything. You just need to add a resource declaration for any external files your experiment needs. If multiple files are in the same directory, you can just declare the directory path. Something like

The paths used in the resource declarations must match the paths used in the image and sound declarations (e.g. if using absolute paths, they must be absolute in both places).

Chris

[Next page](https://mworks.discourse.group/t/mworks-python/383.md?page=2)
