To upload your code, first create an algorithm to contain it: Log in and go to your dashboard, where you will find the New Algorithm button. Click it and choose the appropriate language from the dropdown (you can add more languages later if you need to). You will then be taken to a new private workspace, to which you can upload your files, and from which you can run and publish your code!
You keep all rights to your content! You can choose under what license to publish your algorithm so other users know how they can and cannot use it.
Algorithms on Code Ocean start out private and visible to you only. You can invite your collaborators to view or edit any of your algorithms through the Collaborate tab. If you’d like your algorithm to be publicly accessible, you are welcome to publish it (see Publishing). Once you’ve published an algorithm, you can send the link to anyone, share it on social media or any other way you like!
Cookies are pieces of data that websites, including Code Ocean, store in your browser so they can remember who you are. Some advertisers use this functionality to track users and so browsers have started blocking cookies from third parties automatically. This helps protect your privacy but also breaks many honest companies' embedded content.
Whether your browser blocks 3rd party cookies by default or whether you enabled blocking yourself, if you'd like to access the full functionality of our widget, including running and editing code, you'll need to tell your browser to allow codeocean.com to access its cookies.
Follow the instructions from your browser vendor to take full advantage of our widget: Safari, Chrome, Firefox
Code consists of all the algorithm's source files, i.e. anything that's executable. Data is any other files that the code operates on. When an algorithm runs, code will be found in the /code folder, while its data will be found in /data. (We recommend using the relative path ../data to make it easier for you and your users to run your code locally.)
While there is nothing stopping you from mixing your code and data, there are certain advantages to the separation - first and foremost, clearly communicating what is the essence of your innovation. Another advantage is making it easier for you and other users of your algorithm to swap out your sample data for the data they’re interested in. Finally, you can assign different licenses to your code and data if the situation calls for it.
If you can’t find the dataset you need on our list of datasets, please contact us and we’ll add it for you!
Not having to upload the dataset will save you time and storage space (datasets don't count against your quota), especially if you use the same dataset in more than one algorithm.
At the end of a successful run, any files that exist in the ../results (i.e. /results) folder are made available in the Results pane. Make sure any files your code generates that you consider to be results end up in that folder, otherwise you won't be able to access them.
If you’ve customized your run environment in any way, for example by adding packages, the system will build your environment and save the console output to a file called SetupLog in your results.
Note that if the system can find this custom environment in its cache, it will use that and you will not see SetupLog in your results. (This will happen, for example, when you run your algorithm a second time without modifying its environment.)
Your code will continue running until it terminates or the run is cancelled. The results will be waiting for you when you return.
Once you’ve got your algorithm running to your satisfaction, simply fill out the details and pick an image that best represents your algorithm, then simply press the Publish button. Our team will quickly verify that everything is in order before publishing your algorithm for everyone to try, share, and cite.
Generally speaking, our aim is to showcase your work and its computational reproducibility in the best possible way. To that end, we want to make sure you’re taking full advantage of the platform and its capabilities. We’ll also try to catch any last-minute mistakes or typos that might have slipped under the radar.
Here are a couple of examples for the kind of things we would check:
All necessary code and data is included, i.e. the algorithm is self-contained;
No extraneous/duplicate/leftover files or dependencies;
The details, in particular its name, description, and image, reflect its functionality;
Relevance and value to the community.
Once your algorithm has been verified and published by Code Ocean, click the share button on the algorithm page to find the embed option; this will provide you with a snippet of HTML code you can use on any website.
Beyond becoming publicly accessible and searchable, published algorithms are frozen, along with their entire environment (including dependencies, any code files, and results) and archived for perpetuity. Any modifications you or others make will not affect the published algorithm.
A published algorithm cannot be deleted, generally speaking. You can make modifications or duplicate the algorithm - both will only affect your personal copy of the algorithm. If you have a reason to believe that an algorithm should be removed immediately please contact us at firstname.lastname@example.org.
C/C++, Fortran, Java, Julia, Lua, MATLAB, Octave, Perl, Python and R. If you have an algorithm you’d like to publish in a language we don’t currently support, please let us know!
Yes! You can actually mix as many languages as you want in the same algorithm. Simply pick the first language (if one of the language is MATLAB, choose it first) and then install the second language via apt-get by adding the appropriate package to your Run Environment, e.g.:
build-essential for the C/C++ toolchain (gcc/g++, make, etc.)
r-base for R
python for Python (add python-pip for pip installer support)
perl for Perl (add cpanm if needed)
luajit for Lua (add luarocks if needed)
Not at the moment. Our aim is to provide you with the tools you need to adapt your existing algorithms to a cloud-based reproducible environment. It is not our main focus to create a fully-featured desktop-grade editor or IDE (Integrated Development Environment).
Having said that, you can publish new versions of your algorithm and link them to the same article. The new versions will be easily discoverable by users searching for your algorithm’s previous version or the article itself.
Of course! Just pick the appropriate language (e.g. Python for TensorFlow, Lua for Torch, C++ for plain CUDA etc.) and select the base environment you want in the run environment dialog.
Bioinformatics Toolbox, Communications System Toolbox, Computer Vision System Toolbox, Control System Toolbox, DSP System Toolbox, Image Processing Toolbox, Neural Network Toolbox, Optimization Toolbox, Parallel Computing Toolbox, Signal Processing Toolbox, Statistics and Machine Learning Toolbox, and Wavelet Toolbox. If you require a toolbox which is not part of this list, please contact us at email@example.com.
Run Environment ➝ Show all packages, click the current version number shown to replace it with the required version. You can also enter “latest” if you simply want the latest version available.
apt-get is the command-line tool for working with APT (Advanced Package Tool) software packages. It is the preferred way of installing packages on the Linux distributions Code Ocean uses (Ubuntu and Debian).
Most often you'll know the name of the package you need from the homepage or documentation of the code or higher-level library you're using. In other times, you might need to search to find the exact name. Feel free to reach out via live chat or email if you need help finding a package.
At minimum, your algorithm will be running on an 8-core 2.3GHz machine with 32gb memory. Algorithms that require a GPU will have access to a NVIDIA K80 GPU.
Code Ocean offers seamless integration with Plotly, a library that lets you generate HTML charts from your favorite programming language. Please refer to Plotly’s documentation for information on using the library.
Your computing time consists of the sum total time across all your runs, from start to finish (or cancellation). Time logged into the platform, or editing code without running it, will not count against your quota.
All code, data (excluding datasets), and result files across your algorithms - with the exception of your published algorithms - are counted against your storage quota.
To see a summary of how far you are into your monthly quota, hover your mouse cursor over the speedometer icon at the top right of your dashboard or bottom right of any code page.
A message will pop up alerting you of the situation. You won’t be able to initiate any further runs or upload any files until the beginning of your next billing cycle, or until you upgrade your plan.
Like all cloud providers, we run your algorithm in a shared environment alongside other algorithms. We do our best to dynamically adjust the capacity of our cloud so as to provide every algorithm with the same resources on average. Despite our best efforts, every once in a while the platform might experience a spike in demand that causes your algorithm run time to deviate.