X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/3aaefcb3c76ff470b475d950398d01255e87712a..c110a9aeed738f1b2dd456950a8ee3018cd97fed:/doc/sdk/python/cookbook.html.textile.liquid diff --git a/doc/sdk/python/cookbook.html.textile.liquid b/doc/sdk/python/cookbook.html.textile.liquid index 3aa01bbb56..f3186ebbb6 100644 --- a/doc/sdk/python/cookbook.html.textile.liquid +++ b/doc/sdk/python/cookbook.html.textile.liquid @@ -237,13 +237,13 @@ with c.open(filename, "rb") as reader: print("Finished downloading %s" % filename) {% endcodeblock %} -h2. Copy files from a collection a new collection +h2. Copy files from a collection to a new collection {% codeblock as python %} import arvados.collection -source_collection = "x1u39-4zz18-krzg64ufvehgitl" -target_project = "x1u39-j7d0g-67q94einb8ptznm" +source_collection = "zzzzz-4zz18-zzzzzzzzzzzzzzz" +target_project = "zzzzz-j7d0g-zzzzzzzzzzzzzzz" target_name = "Files copied from source_collection" files_to_copy = ["folder1/sample1/sample1_R1.fastq", "folder1/sample2/sample2_R1.fastq"] @@ -258,13 +258,13 @@ target.save_new(name=target_name, owner_uuid=target_project) print("Created collection %s" % target.manifest_locator()) {% endcodeblock %} -h2. Copy files from a collection another collection +h2. Copy files from a collection to another collection {% codeblock as python %} import arvados.collection -source_collection = "x1u39-4zz18-krzg64ufvehgitl" -target_collection = "x1u39-4zz18-67q94einb8ptznm" +source_collection = "zzzzz-4zz18-zzzzzzzzzzzzzzz" +target_collection = "zzzzz-4zz18-aaaaaaaaaaaaaaa" files_to_copy = ["folder1/sample1/sample1_R1.fastq", "folder1/sample2/sample2_R1.fastq"] @@ -277,6 +277,16 @@ for f in files_to_copy: target.save() {% endcodeblock %} +h2. Delete a file from an existing collection + +{% codeblock as python %} +import arvados + +c = arvados.collection.Collection("zzzzz-4zz18-zzzzzzzzzzzzzzz") +c.remove("file2.txt") +c.save() +{% endcodeblock %} + h2. Listing records with paging Use the @arvados.util.keyset_list_all@ helper method to iterate over all the records matching an optional filter. This method handles paging internally and returns results incrementally using a Python iterator. The first parameter of the method takes a @list@ method of an Arvados resource (@collections@, @container_requests@, etc). @@ -288,3 +298,37 @@ api = arvados.api() for c in arvados.util.keyset_list_all(api.collections().list, filters=[["name", "like", "%sample123%"]]): print("got collection " + c["uuid"]) {% endcodeblock %} + +h2. Querying the vocabulary definition + +The Python SDK provides facilities to interact with the "active metadata vocabulary":{{ site.baseurl }}/admin/metadata-vocabulary.html in the system. The developer can do key and value lookups in a case-insensitive manner: + +{% codeblock as python %} +from arvados import api, vocabulary +voc = vocabulary.load_vocabulary(api('v1')) + +[k.identifier for k in set(voc.key_aliases.values())] +# Example output: ['IDTAGCOLORS', 'IDTAGFRUITS', 'IDTAGCOMMENT', 'IDTAGIMPORTANCES', 'IDTAGCATEGORIES', 'IDTAGSIZES', 'IDTAGANIMALS'] +voc['IDTAGSIZES'].preferred_label +# Example output: 'Size' +[v.preferred_label for v in set(voc['size'].value_aliases.values())] +# Example output: ['S', 'M', 'L', 'XL', 'XS'] +voc['size']['s'].aliases +# Example output: ['S', 'small'] +voc['size']['Small'].identifier +# Example output: 'IDVALSIZES2' +{% endcodeblock %} + +h2. Translating between vocabulary identifiers and labels + +Client software might need to present properties to the user in a human-readable form or take input from the user without requiring them to remember identifiers. For these cases, there're a couple of conversion methods that take a dictionary as input like this: + +{% codeblock as python %} +from arvados import api, vocabulary +voc = vocabulary.load_vocabulary(api('v1')) + +voc.convert_to_labels({'IDTAGIMPORTANCES': 'IDVALIMPORTANCES1'}) +# Example output: {'Importance': 'Critical'} +voc.convert_to_identifiers({'creature': 'elephant'}) +# Example output: {'IDTAGANIMALS': 'IDVALANIMALS3'} +{% endcodeblock %} \ No newline at end of file