Projects
========

Everything in Anaconda Enterprise Notebooks begins by creating or 
opening a project. After that you can set up a special environment 
with the packages you want, add team members and set their access 
permissions. You can also modify your project settings. 

To begin, log onto your AEN account. This brings you to your user 
profile page. Now you are ready to open an existing project or 
create a new project.

Create new project
~~~~~~~~~~~~~~~~~~

To create a new project, click on the new project icon on the right hand
side of the upper Anaconda Enterprise Notebooks task bar:

|image0|

Or on your profile page, you can click the *New project* button:

|image1|

This brings you to the project page where you can name your project, select
whether it will be public or private, and include a summary
of your project:

|image2|

TIP: You can update the summary and description any time from your 
Project settings' Project menu as described below.

After you have filled in the new project form, click the *Next* button at 
the bottom right.

This opens your new project's home page or project dashboard:

|image3|

Use the Project Settings icon at the top right of the project page to
modify the summary or add a description of the project.  

A project description is
recommended, and may optionally be written in Markdown syntax (plain text 
valid Markdown).  Click the Preview tab in the description area to see how the
Markdown will appear.

TIP: You can add or update your project's summary and description any time 
from the Project Settings Project menu described below.

Add team members
~~~~~~~~~~~~~~~~

Now you may add team members to your new project if you wish. 
Adding team members to your projects makes collaboration easy
in Anaconda Enterprise Notebooks. Team members have full access to the
project applications, files and services. When you add a team member,
their home directory is mounted in the project. There is no need to
download and email data or scripts -- your team member can work on the
same files in the same environment in which you are working.

To add new team members to your project, in the Team box start typing the first 
few letters of their username. The type-ahead feature displays  
all team members with that spelling so you can quickly add team members. 

TIP: You can add or remove team members any time from the Project Settings 
Team menu described below. You can also modify their read, write or 
execute permissions any time from the :doc:`Workbench <workbench>` app. 


Project drive and directory
~~~~~~~~~~~~~~~~~~~~~~~~~~~

Each project has a project drive attached that all team members can access.  
The size of the project drive is not limited by Anaconda Enterprise Notebooks.  
Please contact your system administrator if you find you do not have sufficent 
space.

Each project also has a separate project directory on the project drive.  The
project directory is a separate directory from the owner's and team members'
home directories, for project files and data so team members can share and
have equal access.

NOTE: The path to your project directory is ``/projects/<project_owner>/<project_name>``

.. environments info moved to Anaconda page, also detailed in notebooks page.

Project settings menu
~~~~~~~~~~~~~~~~~~~~~

Access your project settings from the Project page, the Project Settings 
3-gear icon at the top right: 

|image4|

Here you will find settings for the Project, Team, Admin and Info. 

Project settings
^^^^^^^^^^^^^^^^

Status. The project settings Status box allows you to toggle between 
manually starting and stopping your project. Stopping a project stops all the 
apps launched for that project. Projects do use resources such as memory and 
compute cycles when running, so it is best to stop projects when they are not 
in use.

Project. In the Project box you can update your project's summary 
and description. 

Description. In the Description box you can use plain text or markdown syntax. 
Click the Preview tab to see how the markdown description looks.
Click the Submit button at the bottom left to save your changes:

|image5|

Team settings
^^^^^^^^^^^^^

From the project settings Team menu, you may easily add or remove team 
members who have access to this project. Simply type in a few letters 
of the username you would like to include, then select them from the 
usernames that appear. To add them, click the 'Add' button. Repeat for 
each team member you wish to add to this project.

|image6|

Removing team members is just as easy as adding them. Click the red 
'Remove' link next to the name of the user you would like to remove.

Admin settings
^^^^^^^^^^^^^^

From the project settings Admin menu, you may *make this project 
private or public*. 

You may also *reclaim ownership of a project*. Ownership of all files 
and folders created by the team members on this project will be 
transferred to you. Project files and folders are copied and renamed. 

TIP: Be sure you have stopped the project from the Project Settings menu 
so team members cannot make changes while you are changing ownership. 

*Delete this project* deletes all project files and information about it. 
There is no "undo" option. Be sure you have downloaded a copy of all files 
that you may want to save. 

*Move this project to a new compute node* if you have multiple resources 
available and want to move them to the other resource. The project must 
exist on both compute nodes. Make sure that this is done before you move.

|image7|

Info settings
^^^^^^^^^^^^^

The info settings menu provides details about your project. See whether it 
is currently running or stopped, when it was created, when it was last 
accessed, and data center in which it is running.

|image8|

Using Search
~~~~~~~~~~~~

You can search for projects and files using the Search box at the top of
the screen. When you are viewing a project home page, the Search box
will search for files within the current project. Otherwise, it will
search for projects containing files that match your search criteria.

Your search results will include only files and projects which
you have permissions to view. To search, just enter a string of 
text and press enter.  

TIP: Search matches by glob pattern in a similar manner to file
matching on command lines.  For example, to find projects in the 'Test'
family that are numbered from 00 to 99, search for ``Test-??``.  To find
all projects whose name ends in 'Stats', use ``*Stats``.

|image9|

After pressing enter your search results will appear. Click on the plus
("+") icon to show the files that search returned for the given
project:

|image10|

The results are limited to public projects and those private
projects to which you have at least view access. If you click on a filename, 
the file will open for you to view:

|image11|

Clicking on the project name instead of the plus ("+") sign will take
you to the project.

Saving a search
^^^^^^^^^^^^^^^

You can save a search for future use. At the top of the search results
clicking on the "save this search" text will save the search:

|image12|

The "save this search" text will change to read "stored".

The saved search can be found on your home page in the "Saved Searches" box 
that lists all the projects for which you are a contributor.

To remove a saved search, click the "x" next to the name of the search:

|image14|

Search tips
^^^^^^^^^^^

These types of files are included in search results:

-  ``.py``: Python source files
-  ``.ipynb``: IPython/Jupyter notebooks
-  ``.txt``: plain text files
-  ``.md``: Markdown files

You can use any of the following search constructs:

-  Ordinary words will match the full-text contents of any file
-  Wildcards are permitted (``John*`` will match ``John`` and
   ``Johnny``).  These are called "glob patterns" and resemble the 
   usage in command-line shells.
-  Combine queries using ``AND`` or ``OR``, and group them using
   parentheses.

Regular expression patterns can be embedded in the query string by wrapping
them in forward-slashes (``/``)::

    name:/joh?n(ath[oa]n)/

The supported regular expression syntax is explained in
`the Elasticsearch reference <https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-regexp-query.html#regexp-syntax>`_.

WARNING: The wildcards still apply inside a regular expression. A query string
such as ``/.*n/`` would force the search to visit every term in the index.

You can also search in specific metadata fields:

-  ``imports:name`` will match files that import the module 'name'
-  ``uses:name`` will match files that reference the identifier 'name'.
   Referenced names include functions and globals imported from other
   modules, as well as the names of methods invoked on any object.
-  ``defines:name`` will match files that define the identifier 'name'.
   Defined names include functions defined at global scope, class names,
   and method names within classes.
-  ``acl:user`` will match files that the user named 'user' has read
   access to.

Files that are modified while a project is running will automatically be
re-indexed. Normally, this will occur shortly after the files are
modified. If you create or update a large number of files (for example,
cloning a git repository or copying a directory), the search results may
take several minutes to update.

If files are modified while the project is not running, they will be
re-indexed once the project is started.

Tag a project
~~~~~~~~~~~~~

Add or Remove Tags
^^^^^^^^^^^^^^^^^^

*Tags* are a way to group similar or related projects, to
identify a project so that it is easier to find at a later date, or as a
way to let others know about a project.  

You can create and remove tags on any project that you have access to.

To add a new tag, go to the project's main page.  In the "Tags" box on the right
of the page enter the name of the tag you wish to add and click the "Add" button.
The new tag will be added and show up in the "Tags" list.  

To remove a tag from a project, click on the "x" next to the tag's name:

|image15|

If the tag was not already visible from your main home page in the
"Tag" list it will be added. If the tag already was showing because
another project had the tag, then the number next to the tag name
will be incremented:

|image17|

List tagged projects
^^^^^^^^^^^^^^^^^^^^

Just click on a tag name and a list of projects with that tag will
be shown. Example, here we click the tag "science":

|image18|

The results list shows both public projects and private
projects that you can access.

|image19|

Clicking on a project in the tagged list will take you to that 
project's home page.

Star a project
~~~~~~~~~~~~~~

When you *star* a project, it makes it more likely that the project will
appear in the *Top Rated* project list on the Dashboard home page. 

To star a project,
just click the star icon at the upper right on the project page. To
unstar a project, just click the star again. 

TIP: Adding or removing stars
on a project does not affect anyone else's stars that they may have
added.

|image20|

The number next to the project in the Top Rated list is the number of stars
that have been given to that project. Clicking on a project in the list
will take you to a view of that project's home page.

|image21|

Related projects
~~~~~~~~~~~~~~~~

On a project's home page, on the right side, there is a list of 
"Related Projects". The projects listed in this 
section are automatically based on how similar their fields are to the
project being viewed:

|image22|

Recommendations
~~~~~~~~~~~~~~~

The recommendation engine leverages the search functionality to locate
similar files and projects.  In determining what should be listed in
*Related Projects*, the recommendation engine scans the files in the
project.  The terms found in those documents are weighted to determine which
ones are to be used for the "likeness" search.  A search is then performed,
with extra weighting given to the *uses* and *imports* keywords.  The engine
finds the files and the projects that are most similar to the current
project's files.  The results are scored and the top scoring matches are
displayed for public projects and those private projects to which you have
access.  The recommendation is based on how similar the files are between
the projects.

Collaborators
~~~~~~~~~~~~~

A project's home page has a section that lists your top collaborators.  
This list is composed of those collaborators who share the most projects 
in common with you.  

If you click on one of the collaborator's names, you will be taken to a view
of their home page where you can see all public projects and private projects 
they have shared with you.

|image23|

.. |image0| image:: /img/aen-user-projects_new1.png
.. |image1| image:: /img/aen-user-projects_new1b.png
.. |image2| image:: /img/aen-user-projects_new2.png
.. |image3| image:: /img/aen-user-projects_created.png
.. |image4| image:: /img/aen-user-project_settings.png
.. |image5| image:: /img/aen-user-projects_project.png
.. |image6| image:: /img/aen-user-manage_team_members.png
.. |image7| image:: /img/aen-user-project_admin.png
.. |image8| image:: /img/aen-user-project_info.png
.. |image9| image:: /img/aen-user-search_box.png
.. |image10| image:: /img/aen-user-search_results_expansion_icon.png
.. |image11| image:: /img/aen-user-search_results_details.png
.. |image12| image:: /img/aen-user-save_search.png
.. |image14| image:: /img/aen-user-saved_searches.png
.. |image15| image:: /img/aen-user-tag_add.png
.. |image17| image:: /img/aen-user-tag_on_dashboard.png
.. |image18| image:: /img/aen-user-tag_click.png
.. |image19| image:: /img/aen-user-tag_results.png
.. |image20| image:: /img/aen-user-star.png
.. |image21| image:: /img/aen-user-star_list.png
.. |image22| image:: /img/aen-user-recommended_projects.png
.. |image23| image:: /img/aen-user-top_collaborators.png
