extensions

Tripal Developer's Meeting 2016-05-03 Tripal Community Meeting Notes

This is our bi-monthly open agenda meeting.  There is no formal agenda (aside from a few announcements) in order to allow attendees to bring up topics of interest to them.

 

  • Status of Tripal v3

    • Still on working towards a July 1st alpha2 or beta release

    • Web Services demo in May.

  • Status of Tripal v2.1 release

    • Lacey and Stephen will meet and announce a specific date for release.  Perhaps June 1st.

    • Support for Chado v1.3

    • Lots of bug fixes

    • Multi-Chado support (maybe)

    • NCBI Taxonomy loader.

  • Usage of Tripal:  https://www.drupal.org/project/usage/tripal

  • Report on Phylotree Module discussion

    • Try to integrate the d3 tree display.

  • Google School of Code 2016

  • Reminders:

    • Help with mailing list responses.

    • Please consider adding your Tripal extension modules to our Tripal organization on GitHub

    • Remember to add/update your module status on tripal.info

  • Training Topics for next month’s meeting?

    • Drupal coding standards.

    • Writing generic code for sharing.

    • Creating custom hooks.

    • How to use the d3 module.

    • Flag module

    • June 7th.

    • Web Services Tripal v3 (perhaps help with Blast UI)

    • Site-wide searching.

  • “Open Mic” Topics:

    • QTL module (Ethy): PeanutBase, LegumeInfo, Mainlab databases keep using what they each have and when Tripal v3 is released they groups will try to consolidate

    • Network module (Stephen):  Samyadeep is with the GSoC ‘16 and is working on this for the summer.  

    • Multi-chado (Valentin):  a few issues left to work out.  There is some prefixing of the ‘public’ schema in Tripal code we don’t need + some hooks are missing for (multi-)chado schema installation.

      • Try to get support into Tv2.1 release

      • Ensure Tv3 continue to support multi-chado instance.

    • Ontology search module (Ethy) for finding children, siblings, and/or parents for trait searching (i.e. QTLs). Use ontologies to expand searches.

    • Expression module (Meg Staton):  should be finished and can be shown in the next developer’s meeting, working on documentation.

    • Elastic Search module (Meg Staton):  working on hardwoods site, can demo at next meeting if anyone interested.

    • Chado Export for Apollo (Deepak): can export to an empty Chado database (with ontologies pre-loaded), working on a dump to an existing Chado database or an incremental updates.

      • Work with Apollo and Tv3 for RESTful updates to Chado.

Tripal Developer's Meeting 2016-06-07 Tripal Community Meeting Notes

Lacey Sanderson (Univ. Saskachewan) Provides a tutorial on Site-Wide Searching built into the upcoming Tripal 2.1 release.

Ming Chen of UT provides an overview of their implementation of a site-wide search: https://github.com/tripal/elastic_search

 
Tripal Developer's Meeting 2016-07-12 Tripal Community Meeting Notes

 

Watch a recording of this meeting:

 

  • Quick Items

  • Tripal v3 and REST API

    • The demonstration shows alpha functionality.  Things can still change, there are still bugs/mistakes in some places. Please offer suggestions!

    • Key Points:

      • Data back-end agnostic

        • Full support for Chado

        • Working on Neo4j support (via another project)

        • API for integration of other back-ends coming in the future….

      • Fully Backwards Compatible.

      • Ontology Driven

        • Integrates with semantic web for data exchange via web services

      • Full support of Drupal Entities

        • Allows for full web-based configuration of fields (less template editing!)

      • Style agnostic

        • Considering no default sidebar.

      • Exposed data is consistent between pages, web services (and other future methods i.e. downloads).

    • References:

    • REST API TODO:

      • How to integrate other custom REST APIs?

      • Support for more complex filters (e.g. with and/or conjunctions)

      • Mapping of CV terms to remaining Chado fields

Tripal Distribution Basic page

This is the alpha version of a Tripal Distribution.

tripalsite-7.x-2.0a.tar.gz

Tripal Event at PAG XXVI - update Announcement
 
Agenda for Tripal User's Meeting 1/12/2019:
 
Zoom for module development:
Meeting ID: 345237209
 
 
 
1. We will again be holding the Tripal Hackathon before PAG, from 9:00-4:30 on Thursday, Jan 11 and the User Meeting on Friday, Jan 12. We will be meeting at the Town & Country Hotel, in the Esquire Garden Salon I room (see hotel map: http://www.mobilemaplets.com/showplace/3170). We will also schedule a group dinner on Thursday night. 
If you are planning to attend, please add your name to this google doc. We are also soliciting feedback from the community on any topics or break out groups you would like to see. 
 
2. The Tripal workshop will be Sunday, Jan 14, from 4:00pm to 6:10pm in the California room. We have a great line up of speakers:
Yi Zheng: "Cucurbit Genomics Database: Integration Genetic and Genomics Resources for Cucurbit Breeding"
Dorrie Main: "Updates on Tripal Mapviewer and the Tripal Breeding Information Management System (BIMS)"
Stephen Ficklin: "The Tripal Gateway Project: Supporting Exchange, Transfer and Analysis of Large-Scale Data for Online Biological Databases"
Nic Herndon: "Tripal Extensions Facilitate Association Mapping Studies on Forest Trees with CartograTree
Abdullah Almsaeed: "Tripal Elasticsearch: Bringing Simple and Powerful Sitewide Search to Tripal Websites"
Sheri Sanders: "National Center for Genome Analysis Support (NCGAS) use and development of Tripal Genome Browsers on XSEDE’s Jetstream"
Alicia Talavera: "An Open and Community Oriented Web Portal for Subtropical Fruit Trees Genomic, Phenotype and Breeding Data Analysis"
 
3. Tripal will also be represented at the GMOD workshop, Wednesday, Jan 17, 10:30-2:00.
 
We had very low interest in a tutorial on Tripal install and basic site development training, so we have cancelled the tutorial. If anyone wants to work with a Tripal developer to do an online training, please email Meg Staton (mestato@gmail.com) and we'll set something up.
Tripal Events with PAG Announcement
 
1. PAG Tripal Session
The Tripal session at PAG will be the same time and place this year - Sunday January 14th 2018 from 4pm-6:10pm in San Diego, CA.  We are now requesting abstracts for oral presentations, due October 27th.  Anyone who is attending the conference is welcome to submit an abstract, and we are particularly encouraging groups that are new to Tripal or haven’t presented in this session in previous years to submit.  A variety of topics are welcome: new databases, custom extensions, integration with other tools, or any other Tripal related projects.  Abstracts should be limited to 250 words, and  can be submitted by email in MS Word or PDF, please send to both Meg Staton at mstaton1@utk.edu and Ethy Cannon at ekcannon@iastate.edu. We look forward to hearing from you!
 
(Poster abstracts for the PAG conference are handled separately and due the same day)
 
2. Hackathon and User Meeting
We will also be continuing the Hackathon (January 11th, Thursday) and User Meeting (January 12th, Friday) to be held in the 2 days prior to the start of PAG. If you are planning to attend, please add your name to this google doc so we can be sure to have a big enough room. We are also soliciting feedback from the community on any topics or break out groups you would like to see. More information on room location and times will be forthcoming shortly. 
 
3. Possible Tripal Install and Basic Site Development Training
If there is enough interest, we can offer a class of 8-16 students to learn the basics of Tripal during the morning of January 11th (in parallel with the hackathon). Each student will be able to use their own laptop or a free session on the cloud computing platform Jetstream to go through the materials. The class will guide the installation of all required software for a web server with Drupal, installing the Tripal core and extension modules, and loading data into standard modules (Organism, Feature, etc). Please share this with any interested colleagues, and please sign up here if you want to attend. We’ll make a decision about offering the course based on number of interested people.
 
Feel free to email Meg Staton at mstaton1@utk.edu with any questions. Hope to see you in San Diego!
Tripal Hackathon @ San Deigo 2017-01-12 Tripal Community Meeting Notes

Thursday, January 12

8:30am  Discuss ideas and break out into groups
9am - 12pm  Break-out Sessions
12pm - 1pm  LUNCH
1pm - 4pm  Break-out Sessions
4pm - 5pm  Round-table Discussion
Friday, January 13
 
 
Topics Covered
  • Module Development with sharing in mind

  • Tripal Download API

  • Using D3.js to display Chado Phylotree

Topic #1: How to make a Tripal module and make it shareable

The first time we attempted to break out into groups it became evident everyone wanted an introduction to making Tripal modules with tips on developing with sharing in mind. As such Lacey with help from other developers in the room gave an impromptu talk with examples:

  • Make a configuration form

  • When making a form you tell drupal to use the form api in hook_menu

  • Try to follow file-naming conventions and put code in the “usual” files. Being able to put most code pretty much anywhere can make it challenging to find bits of code.

  • Be careful with naming of Drupal variables to avoid conflicting with variables used by other variables, preferably prefaced with [machine] module name.

  • Likewise, function names should all be prefaced with [machine] module name

  • Choose a short, descriptive, unique machine name for the module. Note that this name is then used to prefix function and Drupal variable names; there is a limit on the length of Drupal variable names.

  • The module should be customizable.

    • Create hooks

    • Tripal 2: override templates - template name is displayed in admin “blue box” if logged in.

    • Tripal 3: don’t override templates (migrating to Twig templates), instead use Drupal Field API. Also enables use of different storage backends.

    • Your own custom hooks: https://www.drupal.org/docs/7/creating-custom-modules/creating-drupal-7-hooks  Take care the hooks have unique names.

  • Methods for altering a modules weight(d7 and d8)

  • Might want to separate generic and specific code into a core module and a customization of the core module. The core module would then be more shareable.

  • Create default templates inside module; put specific themes in your theme directory.

  • If your module implements hook_init, you need to make sure it will be loaded after Tripal has been initialized. To do so, you need to set the weight of your module to be higher than Tripal’s one. That’s done in your hook_install implementation with a piece of code like this:

     // Set loading order for tripal core.

     $tripal_weight = 0; // needs to be filled with Tripal core or other Tripal modules weight

     $sql_query = "UPDATE {system} SET weight = " . ($tripal_weight + 1) . " WHERE name = 'tripal_mymodule';";

     db_query($sql_query);

  • Materialized Views can adapt to varying methods of story data in chado.

Topic #2a: Tripal Download API

              $query = drupal_get_query_parameters();

  ?>

Download: <?php print l('GFF3', current_path() . '/gff3', array('target' => '_blank', 'query' => $query)); ?>

  • Save the view

Topic #2b: Having fun with D3JS (developing a module to display Chado phylotree)

  • Lead: Valentin Guignon

  • Participants:

    • Ming Chen

    • Katheryn Buble

    • Nic Herndon

    • Chris Childers

    • Qiaoshan Lin

    • Sudhansu Dash

    • Eric Wafula

    • Prakash Raj

    • Eliot Cline

  • UPDATE: the result is available here:

    https://github.com/tripal/tripal_dt

  • Setup: create a custom module copy of the tripal_example module

cd <drupal_sites_directory>/all/modules/

cp -r tripal/tripal_example tripal_dt

cd tripal_dt

mv tripal_example.info tripal_dt.info

mv tripal_example.install tripal_dt.install

mv tripal_example.module tripal_dt.module

mv theme/css/tripal_example.css theme/css/tripal_dt.css

mv theme/templates/tripal_example_base.tpl.php  theme/templates/tripal_dt_tree_page.tpl.php

  • Here is how your tripal_dt.info file should look like:

    name = Tripal Demo Tree

description = A tree module for Tripal.

core = 7.x

project = tripal_dt

package = Tripal Extensions

version = 7.x-2.0

dependencies[] = tripal_core

dependencies[] = tripal_views

dependencies[] = tripal_db

dependencies[] = tripal_cv

  • Open your tripal_dt.install file and only keep the function “tripal_example_requirements” and rename it into “tripal_dt_requirements”

  • Open the tripal_dt.module file

keep only the first two require() lines and change names ( the api and theme requirements)

Remove the hook_permissions implementation (we don’t need them in our case).

Keep the hook_menu implementation and rename it:

function tripal_dt_menu() {

 $items = array();

 $items['tripal_dt'] = array(

'title' => Demo Tree',

'description' => 'A nice D3JS demo tree.',

'page callback' => 'theme',

'page arguments' => array('tripal_dt_tree'),

'access callback' => TRUE,

'type' => MENU_NORMAL_ITEM,

 );

 return $items;

}

We keep the hook_theme implementation (and rename it):

function tripal_dt_theme($existing, $type, $theme, $path) {

   

 $items = array(

'tripal_dt_tree' => array(

       'template' => 'tripal_dt_tree_page',

       'variables' => array(),

       'path' => "$path/theme/templates",

),

);

 return $items;

}

And just remove other functions! :)

  • Now edit themes/tripal_dt.theme.inc and only keep one function:

function tripal_dt_preprocess_tripal_dt_tree(&$variables) {

 // Adds the appropriate JS and CSS specific to our page.

 // Note: those scripts won't be loaded on other pages!

 drupal_add_js(drupal_get_path('module', 'tripal_dt') .'/theme/js/d3.min.js');

 drupal_add_js(drupal_get_path('module', 'tripal_dt') .'/theme/js/d3.dndtree.js');

 drupal_add_css(drupal_get_path('module', 'tripal_dt') .'/theme/css/tripal_dt.css');

 $phylotree_id = 1; // our dataset phylotree_id

 // Loads phylonode records from the database.

 // Note: this process can be long/heavy so it might be a good idea to use

 // Drupal cache features and load the structure from cache if it has already

 // been generated once and saved into cache.

 $columns = array('phylonode_id', 'parent_phylonode_id', 'label');

 $values = array(

'phylotree_id' => $phylotree_id,

 );

 $options = array(

'order_by' => array(

  'phylonode_id' => 'ASC',

),

 );

 $phylonodes = chado_select_record(

'phylonode',

$columns,

$values,

$options

 );

 

 // Raw data table stuff.

 $header = array(

  t('phylonode_id'),

  t('Parent'),

  t('Name'),

 );

 $rows = array();

 

 // JSON data stuff.

 $tree_data = array(); // Store D3 tree structure.

 $node_lookup = array(); // Associate a Chado ID to a D3 node ID.

 $node_index = 1; // Used to generate D3 IDs starting from 1.

 

 // Process each node and fill the data.

 foreach ($phylonodes as $phylonode) {

// Fill raw data table.

$rows[] = array(

  $phylonode->phylonode_id,

  $phylonode->parent_phylonode_id,

  $phylonode->label,

);

   

// Generate the tree structure.

// Get current phylnode Chado ID.

$phylonode_id = $phylonode->phylonode_id;

// Fill lookup table.

$node_lookup[$phylonode_id] = $node_index;

// Store node data.

$tree_data[$node_index] = array(

  'id' => $node_index,

  'name' => $phylonode->label,

);

// Check if node has a parent and if so, add it to its parent.

if ($parent_id = $phylonode->parent_phylonode_id) {

  // Is it the first child?

  $parent_node_id = $node_lookup[$parent_id];

  if (!array_key_exists('children', $tree_data[$parent_node_id])) {

    // Yes, add a new children array to parent.

    $tree_data[$parent_node_id]['children'] = array(

      &$tree_data[$node_index]

    );

  }

  else {

    // No, add child to its siblings.

    $tree_data[$parent_node_id]['children'][] =

      &$tree_data[$node_index];

  }

}

// Next node.

++$node_index;

 }

 

 $variables['table'] = array('header' => $header, 'rows' => $rows);

 $variables['tree'] = $tree_data[1];

}

 

  • Edit theme/templates/tripal_dt_tree_page.tpl.php and fill it with:

<h2>Tree raw data</h2>

<?php

 echo theme('table', $table);

?>

<br/>

<h2>Tree structure</h2>

<pre>

<?php

 echo json_encode(

$tree,

JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES

 );

?>

</pre>

<br/>

<h2>Tree</h2>

<div id="tripal_dt-tree">

</div>

<script>

 jQuery(function() {

var tree_data = <?php print json_encode($tree); ?>;

Drupal.tripal_dt.renderD3JSTree(tree_data);

 });

</script>

Now we need some data to work on, into chado. Here is an example dataset:

INSERT INTO phylotree VALUES (1,  1, 'Testing tree', 1, NULL, 'A tree for testing');

INSERT INTO phylonode VALUES

(1, 1, NULL, 1, 14, 1, NULL, 'Musaceae', NULL),

(2, 1, 1, 2, 9, 1, NULL, 'Musa', NULL),

(3, 1, 1, 10, 13, 1, NULL, 'Ensete', NULL),

(4, 1, 2, 3, 8, 1, NULL, 'Eumusa', NULL),

(5, 1, 4, 4, 5, 1, NULL, 'acuminata', NULL),

(6, 1, 4, 6, 7, 1, NULL, 'balbisiana', NULL),

(7, 1, 3, 11, 12, 1, NULL, 'lasiocarpa', NULL)

;

This dataset represents a subpart of the banana species taxonomy:

   1#Musaceae#14

  /       °°°°°°°°°°\

2#Musa#9           10#Ensete#13

  |                   |

3#Eumusa#8    11#lasiocarpa#12

  |   °°°°°°°°°°\

4#acuminata#5  6#balbisiana#7

You need to add the 2 following JS files into tripal_dt/theme/js/:

All thoses files are available there: https://github.com/tripal/tripal_dt

 
Tripal Hacktoberfest 2020 Announcement

Rules

To earn your Tripal Hacktoberfest swag, here’s what you need to do:

  • Make four valid pull requests (PRs) between October 1-31 (in any time zone) to one of two repositories: Tripal core or t4d8, the temporary home for Tripal 4 development.
  • Your pull requests should follow the Tripal guidelines for contributing and developers handbook. Among other requirements, PRs must link to a related issue page (you can create the issue!) and follow Drupal coding standards. 
  • Even if your PR has not yet been accepted and merged at the end of the month, it can still count toward your total.
  • We are strongly encouraging “quality” PRs! What does that mean? We’re going to follow the GitHub Hacktoberfest definitions of quality. If unsure of whether your PRs are helping and if you are doing them correctly, don’t hesitate to ask on Slack in the dedicated #codefest channel.  
  • An optional official “Tripal Hacktoberfest” event will correspond with the T4 developers call on October 13th, 8am PDT, 11am EDT, 3pm GMT (find your time zone here). It is not necessary to participate in this specific online event to participate in the Hackathon, but would be a great way to get ideas on what to work on, what others are working on, and get help with issues.
  • At the end of the month, to get your swag and let the community know about your awesome progress, fill out this form.  If you do more than 4 PRs, don’t be afraid to show off! 

Need ideas?

Tripal version 4 (T4)

We’re strongly encouraging Tripal 4 participation for our current focus issues. Good starter PRs include API functions to ensure the T4 API is backward compatible with T3 - these teach you the new way to do things as well as help you become familiar with the API in general! Also, tests are always appreciated. 

 

If you want to be involved but do not know where best to start, just send a message on the #codefest channel on slack and/or attend the official event on October 13th (see above). 

 

Documentation focused PRs are highly encouraged! If there is something that you wish was included in the docs, you can write up the answers for PRs.

Tripal version 3 (T3)

Not quite ready for T4 or have some issues you want to tackle in T3? Awesome! If you need ideas, the tag “Please Contribute” in the issue queue indicates we’d love help. If you are just getting started, look for the tag “Good first issue”.

 

Organizers

Event:

Meg Staton 

Abdullah Almsaeed

Noah Caldwell 

Sean Buehler 

 

PMC:

Lacey Anne Sanderson 

Stephen Ficklin 

Bradford Condon

Tripal has a new Logo! Announcement

Tripal now has a new look as the Tripal 1.0 release date approaches!

This logo was designed by Pubudu Basnayaka at the University of Saskatchewan to commemorate the Tripal 1.0 release. The following images are available for use on scientific posters, publications and websites wishing to give recognition to Tripal. The first image is to be used on material with a light background; whereas, the second image is meant for material with a dark background.

This Tripal logo is to be used on light backgrounds

Tripal logo to be used on dark backgrounds

 

What is the meaning behind the logo?

  • Tripal is a Drupal module which means that it extends the functionality of the Drupal content management system. As such Drupal is a very big part of what Tripal is and it was thought fitting to use the Drupal logo silloutte when designing the Tripal logo.
  • Tripal displays biological data and is meant specifically to aid in the creation of Model organism websites. Since Tripal is not specific to the type of organism, it was decided the logo should be green, red and white to represent plants, animals and all other organisms.
  • Finally the logo was divided into three portions as a nod to the "Tri" in Tripal.
Tripal Help Desk Schedule Announcement

Here are the scheduled Tripal Help Desk meetings for tomorrow, Friday, February 23, 2018.

 

Subject: Tripal v2 to v3 upgrade issues 
Time: 9 am PST, 10 am Mountain Time, 12 pm EST
Link: https://zoom.us/j/856350863

 

______________________
 
Subject: Web Services
Time: 10:30 am PST, 11:30 am Mountain Time, 1:30 pm EST
 
______________________
 
Subject: Ontology Load issues (Sequence Ontology)
Time: 12 pm PST, 1 pm Mountain Time, 3 pm EST
 
Feel free to join any meeting that may be of interest to you or that you might have insight into.