{"id":279,"date":"2020-11-02T18:40:30","date_gmt":"2020-11-02T17:40:30","guid":{"rendered":"https:\/\/itrop.ird.fr\/wordpress\/?page_id=279"},"modified":"2022-04-06T14:50:28","modified_gmt":"2022-04-06T12:50:28","slug":"assemblytrinity","status":"publish","type":"page","link":"https:\/\/bioinfo.ird.fr\/index.php\/tutorials-fr\/assemblytrinity\/","title":{"rendered":"Tutorials &#8211; Assembly with Trinity"},"content":{"rendered":"<table class=\"table-contact\">\n<tr>\n<td><img decoding=\"async\" width=\"100%\" src=\"https:\/\/eagle.fish.washington.edu\/whale\/fish546\/Trinity_r2013-08-14_analysis1-2014-02-08-20-44-13.233\/bin\/trinityrnaseq_r2013_08_14\/docs\/images\/TrinityCompositeLogo.png\" alt=\"\" \/>\n<\/td>\n<td>\n<h3> De novo transcriptome assembly and functional annotation of transcrits <\/h3>\n<p><\/p>\n<\/td>\n<\/tr>\n<\/table>\n<table>\n<thead>\n<tr>\n<th>Name<\/th>\n<th>Transcriptome Assembly and Funtional Annotation<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Description<\/td>\n<td>This page describes a serie of tools and linux commands used to manipulate fastq files for transcriptome assembly and funtional annotation of transcrits using Trinity and Trinotate.<\/td>\n<\/tr>\n<tr>\n<td>Authors<\/td>\n<td>Julie Orjuela (julie.orjuela_at_ird.fr)<\/td>\n<\/tr>\n<tr>\n<td>Research Unit<\/td>\n<td>UMR BOREA IPME DIADE<\/td>\n<\/tr>\n<tr>\n<td>Institut<\/td>\n<td>IRD<\/td>\n<\/tr>\n<tr>\n<td>Creation Date<\/td>\n<td>10\/08\/2018<\/td>\n<\/tr>\n<tr>\n<td>Last Modified Date<\/td>\n<td>13\/02\/2019<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>We need, in this tutorial:<\/p>\n<ul>\n<li>A directory with fastq files<\/li>\n<li>Samples information (biological replicates?).<\/li>\n<\/ul>\n<h3>Keywords<\/h3>\n<p>Trinity, assembly, de novo, normalisation, RNAseq, transcriptomics<\/p>\n<h3>Files format<\/h3>\n<p>fastq, sam, bam<\/p>\n<hr \/>\n<h2>Summary<\/h2>\n<p><!-- TOC depthFrom:2 depthTo:2 withLinks:1 updateOnSave:1 orderedList:0 --><\/p>\n<ul>\n<li>\n<p><a href=\"#preAssembly\">1. Checking quality control and cleaning reads<\/a><\/p>\n<ul>\n<li><a href=\"#fastqc\">1.1. Quality control using <code>fastqc<\/code><\/a><\/li>\n<li><a href=\"#trimmomatic\">1.2. Quality trimming and adapter removal using <code>Trimmomatic<\/code><\/a><\/li>\n<li><a href=\"#SORTMERNA\">1.3. Removing Ribosomal RNA using <code>sortmerna<\/code><\/a><\/li>\n<li><a href=\"#ReadsNormalisation\">1.4. Normalization using <code>Trinity<\/code><\/a><\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#trinity\">2. Generating a Trinity de novo RNA-Seq assembly<\/a><\/p>\n<ul>\n<li><a href=\"#assemblyQuality\">2.1. Evaluating the quality of the assembly<\/a><\/li>\n<li><a href=\"#DEtranscrits\">2.2. Identifying differentially expressed (DE) transcripts<\/a><\/li>\n<\/ul>\n<\/li>\n<li>\n<p><a href=\"#trinotate\">3. Functional annotation of transcripts using <code>Trinotate<\/code> and predicting coding regions using <code>TransDecoder<\/code><\/a><\/p>\n<\/li>\n<\/ul>\n<p><!-- \/TOC --><\/p>\n<hr \/>\n<p>In this section, $shortName it is the sample name.<\/p>\n<p><a name=\"preAssembly\"><\/a><\/p>\n<h2>1. Checking quality control and cleaning reads<\/h2>\n<p><a name=\"fastqc\"><\/a><\/p>\n<h3>1.1. Quality control of reads using <code>fastqc<\/code><\/h3>\n<p>Follow fastqc protocol <a href=\"https:\/\/southgreenplatform.github.io\/tutorials\/\/bioanalysis\/rnaSeq\/#fastqc\">here<\/a><\/p>\n<p><a name=\"trimmomatic\"><\/a><\/p>\n<h3>1.2. Quality trimming and adapter removal using <code>Trimmomatic<\/code><\/h3>\n<pre><code>java -Xmx4G -jar $path_to_trimmomatic\/trimmomatic-0.33.jar PE -phred33 -threads 16 \\\n-trimlog logfile_$shortName $shortName_R1.fastq.gz $shortName_R2.fastq.gz \\\n$path_to_trimmomatic_results\/$shortName_R1.PairedTrimmed.fastq.gz \\\n$path_to_trimmomatic_results\/$shortName_R1.PairedUntrimmed.fastq.gz \\\n$path_to_trimmomatic_results\/$shortName_R2.PairedTrimmed.fastq.gz \\\n$path_to_trimmomatic_results\/$shortName_R2.PairedUntrimmed.fastq.gz \\\nILLUMINACLIP:&quot;$path_to_trimmomatic_adapters&quot;:2:30:10 SLIDINGWINDOW:5:20 LEADING:5 TRAILING:5 MINLEN:50&quot;<\/code><\/pre>\n<p>If you are sure of quality reads and parameters, you can directly run trimmomatic and assembly of reads usign Trinity.<br \/>\nSimilar for normalisation.<\/p>\n<p><a name=\"SORTMERNA\"><\/a><\/p>\n<h3>1.3. Removing Ribosomal RNA using <code>sortmerna<\/code><\/h3>\n<h5>i. indexing the rRNA databases<\/h5>\n<pre><code>echo &quot;indexing sortmerna&quot;\npath_to_sortmerna=&quot;\/usr\/local\/sortmerna-2.1\/&quot;;\n$path_to_sortmerna\/indexdb_rna --ref \\\n$path_to_sortmerna\/rRNA_databases\/silva-bac-16s-id90.fasta,$path_to_sortmerna\/index\/silva-bac-16s-db:\\\n$path_to_sortmerna\/rRNA_databases\/silva-bac-23s-id98.fasta,$path_to_sortmerna\/index\/silva-bac-23s-db:\\\n$path_to_sortmerna\/rRNA_databases\/silva-arc-16s-id95.fasta,$path_to_sortmerna\/index\/silva-arc-16s-db:\\\n$path_to_sortmerna\/rRNA_databases\/silva-arc-23s-id98.fasta,$path_to_sortmerna\/index\/silva-arc-23s-db:\\\n$path_to_sortmerna\/rRNA_databases\/silva-euk-18s-id95.fasta,$path_to_sortmerna\/index\/silva-euk-18s-db:\\\n$path_to_sortmerna\/rRNA_databases\/silva-euk-28s-id98.fasta,$path_to_sortmerna\/index\/silva-euk-28s:\\\n$path_to_sortmerna\/rRNA_databases\/rfam-5s-database-id98.fasta,$path_to_sortmerna\/index\/rfam-5s-db:\\\n$path_to_sortmerna\/rRNA_databases\/rfam-5.8s-database-id98.fasta,$path_to_sortmerna\/index\/rfam-5.8s-db \necho &quot;done&quot;<\/code><\/pre>\n<h5>ii.  merging reads<\/h5>\n<pre><code>cd $path_sortmerna_results\/\necho &quot;=&gt; Starting Interleaving of reads ..&quot;\nzcat $path_to_trimmomatic_results\/$shortName_R1.PairedTrimmed.fastq.gz | perl -pe &#039;s\/\\n\/\\t\/ if $. %4&#039; - &gt; $path_sortmerna_results\/TMP_$shortName_R1.fastq\nzcat $path_to_trimmomatic_results\/$shortName_R2.PairedTrimmed.fastq.gz | perl -pe &#039;s\/\\n\/\\t\/ if $. %4&#039; - &gt; $path_sortmerna_results\/TMP_$shortName_R2.fastq\necho &quot;   Interleaving R1 and R2 ..&quot;\npaste -d &#039;\\n&#039; $path_sortmerna_results\/TMP_$shortName_R1.fastq $path_sortmerna_results\/TMP_$shortName_R2.fastq |\\\ntr &quot;\\t&quot; &quot;\\n&quot; &gt; $path_sortmerna_results\/$shortName.interleaved.fastq\necho &quot;   Removing temporal files  ..&quot;\nrm $path_sortmerna_results\/TMP_$shortName_R1.fastq $path_sortmerna_results\/TMP_$shortName_R2.fastq\necho &quot;   Interleaving was done.&quot;<\/code><\/pre>\n<h5>iii. Filtering out rRNA from reads<\/h5>\n<pre><code>$path_to_sortmerna\/sortmerna --fastx -a 8 --log --paired_out -e 0.1 --id 0.97 --coverage 0.97 --otu_map\\\n--ref $path_to_sortmerna\/rRNA_databases\/silva-bac-16s-id90.fasta,$path_to_sortmerna\/index\/silva-bac-16s-db:\\\n$path_to_sortmerna\/rRNA_databases\/silva-bac-23s-id98.fasta,$path_to_sortmerna\/index\/silva-bac-23s-db:\\\n$path_to_sortmerna\/rRNA_databases\/silva-arc-16s-id95.fasta,$path_to_sortmerna\/\/index\/silva-arc-16s-db: \\\n$path_to_sortmerna\/rRNA_databases\/silva-arc-23s-id98.fasta,$path_to_sortmerna\/\/index\/silva-arc-23s-db:\\\n$path_to_sortmerna\/rRNA_databases\/silva-euk-18s-id95.fasta,$path_to_sortmerna\/\/index\/silva-euk-18s-db:\\\n$path_to_sortmerna\/rRNA_databases\/silva-euk-28s-id98.fasta,$path_to_sortmerna\/\/index\/silva-euk-28s:\\\n$path_to_sortmerna\/rRNA_databases\/rfam-5s-database-id98.fasta,$path_to_sortmerna\/\/index\/rfam-5s-db:\\\n$path_to_sortmerna\/rRNA_databases\/rfam-5.8s-database-id98.fasta,$path_to_sortmerna\/\/index\/rfam-5.8s-db \\\n--reads $path_sortmerna_results\/$shortName.interleaved.fastq \\\n--other $path_sortmerna_results\/$shortName.sortmerna.mRNA \\\n--aligned $path_sortmerna_results\/$shortName.sortmerna.aligned -v<\/code><\/pre>\n<h5>iv.  unmerging reads<\/h5>\n<pre><code>echo &quot;=&gt; Starting un-interleave ..&quot;\necho &quot;   Processing R1 .. &quot;\nperl -pe &#039;s\/\\n\/\\t\/ if $. %4&#039; $path_sortmerna_results\/$shortName.sortmerna.mRNA.fastq | awk &#039;NR%2 {print}&#039; | tr &quot;\\t&quot; &quot;\\n&quot; &gt;| $path_sortmerna_results\/$shortName_R1.sortmerna.mRNA.fastq\necho &quot;   Processing R2 ..&quot;\nperl -pe &#039;s\/\\n\/\\t\/ if $. %4&#039; $path_sortmerna_results\/$shortName.sortmerna.mRNA.fastq | awk &#039;(NR+1)%2 {print}&#039;| tr &quot;\\t&quot; &quot;\\n&quot; &gt;| $path_sortmerna_results\/$shortName_R2.sortmerna.mRNA.fastq\necho &quot;   Un-interleaving was done.&quot;<\/code><\/pre>\n<p><a name=\"ReadsNormalisation\"><\/a><\/p>\n<h3>1.4. Normalisation using <code>Trinity<\/code><\/h3>\n<p>If you don't have biological replicates, you can directly done a alone normalisation of reads by sample.<\/p>\n<pre><code>perl $path_to_trinity\/util\/insilico_read_normalization.pl --seqType fq --JM 100G --max_cov 50 \\\n--left $shortName_R1.sortmerna.mRNA.fastq \\\n--right $shortName_R2.sortmerna.mRNA.fastq \\\n--pairs_together --PARALLEL_STATS --CPU 8 --output $path_to_normalized_data\/<\/code><\/pre>\n<p>If biological replicates, you can run trinity assembly with option <code>--normalize_by_read_set<\/code> in section 2 or give R1 and R2 reads for each condition to <code>insilico_read_normalization.pl<\/code> :<\/p>\n<pre><code>perl $path_to_trinity\/util\/insilico_read_normalization.pl --seqType fq --JM 100G --max_cov 50 \\\n--left $shortNameReplique1_R1.fastq.gz,\\\n$shortNameReplique2_R1.sortmerna.mRNA.fastq.gz, \\\n$shortNameReplique3_R1.sortmerna.mRNA.fastq.gz  \\\n--right $shortNameReplique1_R2.sortmerna.mRNA.fastq.gz,\\\n$shortNameReplique2_R2.sortmerna.mRNA.fastq.gz, \\\n$shortNameReplique3_R2.sortmerna.mRNA.fastq.gz \\\n--pairs_together --PARALLEL_STATS --CPU 8 --output $path_to_normalized_data\/<\/code><\/pre>\n<p><a name=\"trinity\"><\/a><\/p>\n<h2>2. Generating a Trinity de novo RNA-Seq assembly<\/h2>\n<p>You can assembly reads from one sample :<\/p>\n<pre><code>$R1=$path_sortmerna_results\/$shortName_R1.sortmerna.mRNA.fastq\n$R2=$path_sortmerna_results\/$shortName_R2.sortmerna.mRNA.fastq\nTrinity --seqType fq --left $R1 --right $R2 --max_memory 50G --CPU 8 --output trinity_OUT<\/code><\/pre>\n<p>If you want assembly reads using the whole of samples of a specie (several tissues of a specie without biological replicates) OR<br \/>\nif you have biological replicates in your experiment and you want to obtain a transcriptome by condition :<\/p>\n<pre><code>Trinity --seqType fq --max_memory 80G --CPU 8 --normalize_by_read_set --samples_file samples.txt --output trinity_OUT <\/code><\/pre>\n<p>Remember that is possible run trimmomatic, normalisation and assembly in one command line :<\/p>\n<pre><code>Trinity --seqType fq --max_memory 50G --CPU 4 --samples_file sample.txt --trimmomatic --quality_trimming_params &quot;ILLUMINACLIP:illumina.fa:2:30:10 SLIDINGWINDOW:4:5 LEADING:5 TRAILING:5 MINLEN:25 --normalize_by_read_set<\/code><\/pre>\n<p>Samples.txt file exemple (tabulated file)<\/p>\n<pre><code>condA\\tcondA_rep1\\tcondA_rep1_R1.fastq.gz\\tcondA_rep1_R2.fastq.gz\\n\ncondA\\tcondA_rep2\\tcondA_rep2_R1.fastq.gz\\tcondA_rep2_R2.fastq.gz\\n\ncondB\\tcondB_rep1\\tcondB_rep1_R1.fastq.gz\\tcondB_rep1_R2.fastq.gz\\n\ncondB\\tcondB_rep2\\tcondB_rep2_R1.fastq.gz\\tcondB_rep2_R2.fastq.gz\\n<\/code><\/pre>\n<p><a name=\"assemblyQuality\"><\/a><\/p>\n<h3>2.1. Evaluating the quality of the assembly<\/h3>\n<h4>Assembly metrics<\/h4>\n<pre><code>$path_to_trinity\/util\/TrinityStats.pl Trinity.fasta<\/code><\/pre>\n<h4>Reads mapping back rate :<\/h4>\n<p>A typical \u2018good\u2019 assembly has ~80 % reads mapping to the assembly and \\~80% are properly paired<\/p>\n<ul>\n<li>Alignment methods : bowtie2 -RSEM, kallisto, salmon <code>--est_method<\/code> <\/li>\n<\/ul>\n<pre><code>perl $path_to_trinity\/util\/align_and_estimate_abundance.pl \\\n--transcripts Trinity.fasta \\\n--seqType fq \\\n--left $R1 --right $R2\\\n--est_method RSEM --aln_method bowtie2 \\\n--trinity_mode --prep_reference \\\n--output_dir outdir\n\nOR\n\nperl $path_to_trinity\/util\/align_and_estimate_abundance.pl \\\n--transcripts Trinity.fasta \\\n--seqType fq \\\n--samples_file samples.txt \\\n--est_method salmon\n--trinity_mode --prep_reference\n--output_dir outdir\n<\/code><\/pre>\n<p>We suggest visualise mapping back using IGV. Recovery BAM and Trinity.fasta files and import it in IGV browser. You must to index BAMs files before. Use <code>samtools index BAM<\/code> to do it.<\/p>\n<p>If you don't have replicates and you want only mapping reads agains transcriptome obtained by trinity use :<\/p>\n<pre><code>$path_to_trinity\/util\/bowtie_PE_separate_then_join.pl --seqType fq --left left.fq --right right.fq --target Trinity.fasta --aligner bowtie -- -p 4 --all --best --strata -m 300<\/code><\/pre>\n<p>To get alignment statistics, run the following:<\/p>\n<pre><code>$path_to_trinity\/util\/SAM_nameSorted_to_uniq_count_stats.pl bowtie_out\/bowtie_out.nameSorted.bam<\/code><\/pre>\n<ul>\n<li>Expression matrix construction<\/li>\n<\/ul>\n<pre><code>$path_to_trinity\/util\/abundance_estimates_to_matrix.pl --est_method kallisto --out_prefix Trinity_trans\\\n--name_sample_by_basedir\\\ncond_A_rep1\/abundance.tsv\\\ncond_A_rep2\/abundance.tsv\\\ncond_B_rep1\/abundance.tsv\\\ncond_B_rep2\/abundance.tsv<\/code><\/pre>\n<p>You have to obtain two matrices: The firts one containing the estimated counts, and the second one containing the TPM expression values that are cross-sample normalized using the TMM method <code>Trinity_trans.TMM.EXPR.matrix<\/code>. TMM normalization assumes that most transcripts are not differentially expressed, and linearly scales the expression values of samples to better enforce this property.<\/p>\n<ul>\n<li>Compute N50 based on the top-most highly expressed transcripts (Ex50)<\/li>\n<\/ul>\n<pre><code>$path_to_trinity\/util\/misc\/contig_ExN50_statistic.pl Trinity_trans.TMM.EXPR.matrix Trinity.fasta &gt; ExN50.stats<\/code><\/pre>\n<pre><code>$path_to_trinity\/util\/misc\/contig_ExN50_statistic.pl Trinity_trans.TMM.EXPR.matrix Trinity.fasta | tee ExN50.stats<\/code><\/pre>\n<p>Plotting ExN50<\/p>\n<pre><code>% \/usr\/local\/trinityrnaseq-2.5.1\/util\/misc\/plot_ExN50_statistic.Rscript ExN50.stats<\/code><\/pre>\n<p>If you want to know, how many transcripts correspond to the Ex 90 peak, you could:<\/p>\n<pre><code>cat transcripts.TMM.EXPR.matrix.E-inputs |  egrep -v ^\\# | awk &#039;$1 &lt;= 90&#039; | wc -l<\/code><\/pre>\n<p><a href=\"https:\/\/github.com\/trinityrnaseq\/trinityrnaseq\/wiki\/Transcriptome-Contig-Nx-and-ExN50-stats\">https:\/\/github.com\/trinityrnaseq\/trinityrnaseq\/wiki\/Transcriptome-Contig-Nx-and-ExN50-stats<\/a><\/p>\n<h4>Tools to evaluate transcriptomes<\/h4>\n<p>To avoid redundant transcripts, we kept the longest isoform for each \u201cgene\u201d identified by TRINITY (unigene) using the <code>get_longest_isoform_seq_per_trinity_gene.pl<\/code> utility in TRINITY:<\/p>\n<pre><code>$path_to_trinity\/util\/misc\/get_longest_isoform_seq_per_trinity_gene.pl Trinity.fasta &gt; Trinity.longest.fasta<\/code><\/pre>\n<ul>\n<li>Validation using Transrate<\/li>\n<\/ul>\n<pre><code>$path_to_transrate\/transrate --assembly  Trinity.fasta --left $R1 --right $R2  --output transrate_outdir<\/code><\/pre>\n<ul>\n<li>Validation using BUSCO<\/li>\n<\/ul>\n<pre><code>BUSCOPathDB=&quot;\/home\/orjuela\/BUSCO_DB\/actinopterygii_odb9&quot;\npython $path_to_busco\/scripts\/run_BUSCO.py -i Trinity.fasta -o outputBusco -l $BUSCOPathDB -m transcriptome -c 8<\/code><\/pre>\n<ul>\n<li>Validation using BLASTX<\/li>\n<\/ul>\n<p>First, we downloaded and indexed the database:<\/p>\n<pre><code>wget ftp:\/\/ftp.ebi.ac.uk\/pub\/databases\/uniprot\/current_release\/knowledgebase\/complete\/uniprot_sprot.fasta.gz\ngunzip uniprot_sprot.fasta.gz\n$path_to_ncbi-blast+\/makeblastdb -in uniprot_sprot.fasta -dbtype prot -out SwissProt_no_seqids<\/code><\/pre>\n<p>Then, we ran BLASTX to get the top match hit:<\/p>\n<pre><code>$path_to_ncbi-blast+\/blastx -db SwissProt_no_seqids -query Trinity.longest.fasta \\\n-num_threads 16 -max_target_seqs 1 -outfmt 6 -evalue 1e-20 &gt; SwissProt_1E20_TrinityLongest_blastx.outfmt6<\/code><\/pre>\n<p>Finally, we examined the percent of alignment coverage:<\/p>\n<pre><code>$path_to_trinity\/util\/misc\/blast_outfmt6_group_segments.pl SwissProt_1E20_TrinityLongest_blastx.outfmt6 \\\n> SwissProt_1E20_TrinityLongest_blastx.outfmt6.grouped<\/code><\/pre>\n<pre><code>$path_to_trinity\/util\/misc\/blast_outfmt6_group_segments.tophit_coverage.pl SwissProt_1E20_TrinityLongest_blastx.outfmt6.grouped \\\n> SwissProt_1E20_TrinityLongest_blastx.outfmt6.grouped.output<\/code><\/pre>\n<p>If you generate assemblies at a range of different read depths up to and including your assembly leveraging all available reads, you can perform this full-length transcript analysis separately for each of your assemblies, and then plot the number of full-length transcripts vs. number of input RNA-Seq fragments.<\/p>\n<p><a name=\"DEtranscrits\"><\/a><\/p>\n<h3>2.2 Identifying differentially expressed (DE) transcripts<\/h3>\n<pre><code> $path_to_trinity\/Analysis\/DifferentialExpression\/run_DE_analysis.pl \\\n--matrix Trinity.isoform.counts.matrix \\\n--samples_file samples.txt \\\n--method DESeq2 \\\n--output DESeq2_trans<\/code><\/pre>\n<ul>\n<li>Extracting differentially expressed transcripts and generating heatmaps<\/li>\n<\/ul>\n<p>Extract those differentially expressed (DE) transcripts that are at least 4-fold  (C is set to 2^(2) ) differentially expressed at a significance of &lt;= 0.001 (-P 1e-3) in any of the pairwise sample comparisons<\/p>\n<pre><code>cd DESeq2_trans\/\n$path_to_trinity\/Analysis\/DifferentialExpression\/analyze_diff_expr.pl \\\n--matrix Trinity.isoform.TMM.EXPR.matrix \\\n--samples samples.txt -P 1e-3 -C 2 <\/code><\/pre>\n<ul>\n<li>Extract transcript clusters by expression profile by cutting the dendrogram<\/li>\n<\/ul>\n<p>Extract clusters of transcripts with similar expression profiles by cutting the transcript cluster dendrogram at a given percent of its height (ex. 60%), like so:<\/p>\n<pre><code>$path_to_trinity\/Analysis\/DifferentialExpression\/define_clusters_by_cutting_tree.pl \\\n--Ptree 60 -R diffExpr.P1e-3_C2.matrix.RData<\/code><\/pre>\n<ul>\n<li>Run the DE analysis at the gene level\n<pre><code>$path_to_trinity\/Analysis\/DifferentialExpression\/run_DE_analysis.pl \\\n--matrix Trinity.gene.counts.matrix \\\n--samples_file samples.txt \\\n--method DESeq2 \\\n--output DESeq2_gene<\/code><\/pre>\n<\/li>\n<\/ul>\n<p><a href=\"https:\/\/github.com\/trinityrnaseq\/trinityrnaseq\/wiki\/Trinity-FAQ#ques_why_so_many_transcripts\">https:\/\/github.com\/trinityrnaseq\/trinityrnaseq\/wiki\/Trinity-FAQ#ques_why_so_many_transcripts<\/a><\/p>\n<ul>\n<li>Most downstream analyses should be applied to the entire set of assembled transcripts, including functional annotation and differential expression analysis.<\/li>\n<\/ul>\n<p>If you decide that you want to filter transcripts to exclude those that are lowly expressed, you can use the following script:<\/p>\n<pre><code>$path_to_trinity\/util\/filter_low_expr_transcripts.pl<\/code><\/pre>\n<p><a name=\"trinotate\"><\/a><\/p>\n<h2>3. Functional annotation of transcripts using <code>Trinotate<\/code> and predicting coding regions using <code>TransDecoder<\/code><\/h2>\n<p>Transcrits assembled using Trinity can be easily annotate using trinotate <a href=\"https:\/\/github.com\/Trinotate\/Trinotate.github.io\/wiki\">https:\/\/github.com\/Trinotate\/Trinotate.github.io\/wiki<\/a>.<\/p>\n<p>Trinotate use different methods for functional annotation including homology search to known sequence data (BLAST+\/SwissProt), protein domain identification (HMMER\/PFAM), protein signal peptide and transmembrane domain prediction (signalP\/tmHMM), and take advantage from annotation databases (eggNOG\/GO\/Kegg). These data are integrated into a SQLite database which allows to create an annotation report for a transcriptome.<\/p>\n<p>Two bash scripts were created to obtain the whole of files obligatories to build a Sqlite database and create reports. <\/p>\n<p>The fist one, <code>trinotate-JAv1.0.sh<\/code> <a href=\"https:\/\/github.com\/julieaorjuela\/scripts\/blob\/master\/trinotate-JAv1.0.sh\">https:\/\/github.com\/julieaorjuela\/scripts\/blob\/master\/trinotate-JAv1.0.sh<\/a>, needs as input a repertory containing the fasta files you want to annotate. It generates three repertories : Trinonate, sh, and trash and a submitQsub.sge file that launch every fasta analysis in job array mode. The bash repertory contains scripts created automatically for every fasta file, the Trinotate repertory contains annotation results and the trash contains the log files for every step in the process.<\/p>\n<pre><code>bash ~\/scripts\/trinotate-JAv1.0.sh -f \/repertory\/containing\/fastaFiles\/<\/code><\/pre>\n<pre><code>qsub \/repertory\/containing\/fastaFiles\/jobArray-Trinotate\/submitQsub.sge<\/code><\/pre>\n<p>To understand steps run by trinotate-JAv1.0.sh we can view a script generated from HNglobal fasta file as exemple :<\/p>\n<pre><code>more jobArray-Trinotate\/sh\/2_Trinotate.sh <\/code><\/pre>\n<h3>Charging modules<\/h3>\n<pre><code>module load bioinfo\/Trinotate\/3.0.1\nmodule load bioinfo\/TransDecoder\/3.0.0\nmodule load bioinfo\/hmmer\/3.1b2\nmodule load bioinfo\/diamond\/0.7.11<\/code><\/pre>\n<h3>Defining scratch and destination repertories\\n<\/h3>\n<pre><code>pathToScratch=&quot;\/scratch\/orjuela\/Trinotate_$JOB_ID.$SGE_TASK_ID\/&quot;\npathToDest=&quot;\/repertory\/containing\/fastaFiles\/jobArray-Trinotate\/Trinotate&quot;\nmkdir -p $pathToScratch\nmkdir -p $pathToScratch\/DB<\/code><\/pre>\n<h3>Copie du fichier Trinity.fasta vers la partition \/scratch du noeud<\/h3>\n<p>scp \/repertory\/containing\/fastaFiles\/HNglobal*.fasta $pathToScratch\/<\/p>\n<h3>Copie des bases uniprot_sprot<em>, Pfam-A.hmm<\/em>, et uniref90.fasta.dmnd vers la partition \/scratch du noeud<\/h3>\n<pre><code>scp \/usr\/local\/Trinotate-3.0.1\/uniprot_sprot.dmnd \/usr\/local\/Trinotate-3.0.1\/uniprot_sprot.pep \/usr\/local\/Trinotate-3.0.1\/uniprot_sprot.pep.phr \/usr\/local\/Trinotate-3.0.1\/uniprot_sprot.pep.pin \/usr\/local\/Trinota\nte-3.0.1\/uniprot_sprot.pep.psq $pathToScratch\/DB\/\nscp \/data\/projects\/banks\/\/uniref90.fasta.dmnd $pathToScratch\/DB\/\nscp \/usr\/local\/Trinotate-3.0.1\/Pfam-A.hmm \/usr\/local\/Trinotate-3.0.1\/Pfam-A.hmm.h3f \/usr\/local\/Trinotate-3.0.1\/Pfam-A.hmm.h3i \/usr\/local\/Trinotate-3.0.1\/Pfam-A.hmm.h3m \/usr\/local\/Trinotate-3.0.1\/Pfam-A.hmm.h3p $\npathToScratch\/DB\/<\/code><\/pre>\n<pre><code>cd $pathToScratch\/ \nmkdir $pathToScratch\/results_HNglobal\ncd $pathToScratch\/results_HNglobal\/<\/code><\/pre>\n<h3>Running tool<\/h3>\n<h3>Calculing trinity_component_distribution<\/h3>\n<pre><code>perl \/usr\/local\/trinityrnaseq-2.5.1\/util\/misc\/trinity_component_distribution.pl $pathToScratch\/HNglobal.fasta \ncmd=\" perl \/usr\/local\/trinityrnaseq-2.5.1\/util\/misc\/trinity_component_distribution.pl $pathToScratch\/HNglobal.fasta \"\necho \"commande executee: $cmd\"<\/code><\/pre>\n<h2>1 getting gene to trans map<\/h2>\n<pre><code>perl \/usr\/local\/trinityrnaseq-2.5.1\/util\/support_scripts\/get_Trinity_gene_to_trans_map.pl $pathToScratch\/HNglobal.fasta > $pathToScratch\/results_HNglobal\/HNglobal.fasta_gene_trans_map \ncmd=\" perl \/usr\/local\/trinityrnaseq-2.5.1\/util\/support_scripts\/get_Trinity_gene_to_trans_map.pl $pathToScratch\/HNglobal.fasta \\> $pathToScratch\/results_HNglobal\/HNglobal.fasta_gene_trans_map \"\necho \"commande executee: $cmd\"<\/code><\/pre>\n<h2>2 generation of peptide file<\/h2>\n<h3>2.1 generation of longestOrf<\/h3>\n<pre><code>TransDecoder.LongOrfs -t $pathToScratch\/HNglobal.fasta --gene_trans_map $pathToScratch\/results_HNglobal\/HNglobal.fasta_gene_trans_map -m 50 \ncmd=\" TransDecoder.LongOrfs -t $pathToScratch\/HNglobal.fasta --gene_trans_map $pathToScratch\/results_HNglobal\/HNglobal.fasta_gene_trans_map -m 50  \"\necho \"commande executee: $cmd\"<\/code><\/pre>\n<h4>2.2a recherche d\u2019identit\u00e9 parmis les longorfs hmmscan<\/h4>\n<pre><code>hmmscan --cpu 10 --domtblout pfam_longorfs.domtblout $pathToScratch\/DB\/\/Pfam-A.hmm $pathToScratch\/results_HNglobal\/HNglobal.fasta.transdecoder_dir\/longest_orfs.pep \ncmd=\" hmmscan --cpu 10 --domtblout pfam_longorfs.domtblout $pathToScratch\/DB\/\/Pfam-A.hmm $pathToScratch\/results_HNglobal\/HNglobal.fasta.transdecoder_dir\/longest_orfs.pep  \"\necho \"commande executee: $cmd\"<\/code><\/pre>\n<h4>2.2b recherche d\u2019identit\u00e9 parmis les longorfs diamond<\/h4>\n<pre><code> \/usr\/local\/diamond-0.8.29\/diamond blastp --query $pathToScratch\/results_HNglobal\/HNglobal.fasta.transdecoder_dir\/longest_orfs.pep --db $pathToScratch\/DB\/\/uniprot_sprot --out diamP_uniprot_longorfs.outfmt6 --out\nfmt 6 --max-target-seqs 1 \ncmd=\" \/usr\/local\/diamond-0.8.29\/diamond blastp --query $pathToScratch\/results_HNglobal\/HNglobal.fasta.transdecoder_dir\/longest_orfs.pep --threads 10 --db $pathToScratch\/DB\/\/uniprot_sprot.pep --out diamP_uniprot_\nlongorfs.outfmt6 --outfmt 6 --max-target-seqs 1  \"\necho \"commande executee: $cmd\"<\/code><\/pre>\n<h3>2.3 Prediction peptides<\/h3>\n<pre><code> TransDecoder.Predict --cpu 10 -t $pathToScratch\/HNglobal.fasta --retain_pfam_hits $pathToScratch\/results_HNglobal\/pfam_longorfs.domtblout --retain_blastp_hits $pathToScratch\/results_HNglobal\/diamP_uniprot_longo\nrfs.outfmt6 \ncmd=\" TransDecoder.Predict --cpu 10 -t $pathToScratch\/HNglobal.fasta --retain_pfam_hits pfam_longorfs.domtblout --retain_blastp_hits diamP_uniprot_longorfs.outfmt6  \"\necho \"commande executee: $cmd\"<\/code><\/pre>\n<h2>3 Recherche de similarit\u00e9 en utilisant Diamond<\/h2>\n<h3>blastp diamP_uniprott<\/h3>\n<pre><code> \/usr\/local\/diamond-0.8.29\/diamond blastp --query $pathToScratch\/results_HNglobal\/HNglobal.fasta.transdecoder.pep --threads 10 --db $pathToScratch\/DB\/\/uniprot_sprot --out $pathToScratch\/results_HNglobal\/diamP_un\niprot.outfmt6 --outfmt 6 --max-target-seqs 1 --more-sensitive \ncmd=\" \/usr\/local\/diamond-0.8.29\/diamond blastp --query $pathToScratch\/results_HNglobal\/HNglobal.fasta.transdecoder.pep --threads 10 --db $pathToScratch\/DB\/\/uniprot_sprot --out $pathToScratch\/results_HNglobal\/dia\nmP_uniprot.outfmt6 --outfmt 6 --max-target-seqs 1 --more-sensitive  \"\necho \"commande executee: $cmd\"<\/code><\/pre>\n<h3>Building a Sqlite database and report<\/h3>\n<p>The second bash script, `build_Sqlite_trinotate_database_and_report-JAv1.2.0.sh`<a href=\"https:\/\/github.com\/julieaorjuela\/scripts\/blob\/master\/build_Sqlite_trinotate_database_and_report-JAv1.2.0.sh\">https:\/\/github.com\/julieaorjuela\/scripts\/blob\/master\/build_Sqlite_trinotate_database_and_report-JAv1.2.0.sh<\/a>, needs as input the assembled transcrits and the repertory containing the whole of results obtained by trinotate-JAv1.0.sh in the last step.<\/p>\n<pre><code>qsub -q bioinfo.q -N reportTrinonate -V -b yes -cwd 'bash ~\/scripts\/build_Sqlite_trinotate_database_and_report-JAv1.2.0.sh -f \/repertory\/containing\/fastaFiles\/longestAGglobal-Trinity.fasta -r \/repertory\/containing\/fastaFiles\/jobArray-Trinotate\/Trinotate\/results_longestAGglobal-Trinity\/'<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>De novo transcriptome assembly and functional annotation of transcrits Name Transcriptome Assembly and Funtional Annotation Description This page describes a&hellip; <br \/> <a class=\"read-more\" href=\"https:\/\/bioinfo.ird.fr\/index.php\/tutorials-fr\/assemblytrinity\/\">Lire la suite<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":1325,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"inline_featured_image":false,"footnotes":""},"class_list":["post-279","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Tutorials - Assembly with Trinity - itrop<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/bioinfo.ird.fr\/index.php\/tutorials-fr\/assemblytrinity\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorials - Assembly with Trinity - itrop\" \/>\n<meta property=\"og:description\" content=\"De novo transcriptome assembly and functional annotation of transcrits Name Transcriptome Assembly and Funtional Annotation Description This page describes a&hellip; Lire la suite\" \/>\n<meta property=\"og:url\" content=\"https:\/\/bioinfo.ird.fr\/index.php\/tutorials-fr\/assemblytrinity\/\" \/>\n<meta property=\"og:site_name\" content=\"itrop\" \/>\n<meta property=\"article:modified_time\" content=\"2022-04-06T12:50:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/eagle.fish.washington.edu\/whale\/fish546\/Trinity_r2013-08-14_analysis1-2014-02-08-20-44-13.233\/bin\/trinityrnaseq_r2013_08_14\/docs\/images\/TrinityCompositeLogo.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@ItropBioinfo\" \/>\n<meta name=\"twitter:label1\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data1\" content=\"15 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/bioinfo.ird.fr\/index.php\/tutorials-fr\/assemblytrinity\/\",\"url\":\"https:\/\/bioinfo.ird.fr\/index.php\/tutorials-fr\/assemblytrinity\/\",\"name\":\"Tutorials - Assembly with Trinity - itrop\",\"isPartOf\":{\"@id\":\"https:\/\/bioinfo.ird.fr\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/bioinfo.ird.fr\/index.php\/tutorials-fr\/assemblytrinity\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/bioinfo.ird.fr\/index.php\/tutorials-fr\/assemblytrinity\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/eagle.fish.washington.edu\/whale\/fish546\/Trinity_r2013-08-14_analysis1-2014-02-08-20-44-13.233\/bin\/trinityrnaseq_r2013_08_14\/docs\/images\/TrinityCompositeLogo.png\",\"datePublished\":\"2020-11-02T17:40:30+00:00\",\"dateModified\":\"2022-04-06T12:50:28+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/bioinfo.ird.fr\/index.php\/tutorials-fr\/assemblytrinity\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/bioinfo.ird.fr\/index.php\/tutorials-fr\/assemblytrinity\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/bioinfo.ird.fr\/index.php\/tutorials-fr\/assemblytrinity\/#primaryimage\",\"url\":\"https:\/\/eagle.fish.washington.edu\/whale\/fish546\/Trinity_r2013-08-14_analysis1-2014-02-08-20-44-13.233\/bin\/trinityrnaseq_r2013_08_14\/docs\/images\/TrinityCompositeLogo.png\",\"contentUrl\":\"https:\/\/eagle.fish.washington.edu\/whale\/fish546\/Trinity_r2013-08-14_analysis1-2014-02-08-20-44-13.233\/bin\/trinityrnaseq_r2013_08_14\/docs\/images\/TrinityCompositeLogo.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/bioinfo.ird.fr\/index.php\/tutorials-fr\/assemblytrinity\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/bioinfo.ird.fr\/index.php\/en\/front-page-2\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorials &#8211; FR\",\"item\":\"https:\/\/bioinfo.ird.fr\/index.php\/tutorials-fr\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Tutorials &#8211; Assembly with Trinity\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/bioinfo.ird.fr\/#website\",\"url\":\"https:\/\/bioinfo.ird.fr\/\",\"name\":\"itrop\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/bioinfo.ird.fr\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/bioinfo.ird.fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/bioinfo.ird.fr\/#organization\",\"name\":\"i-Trop\",\"url\":\"https:\/\/bioinfo.ird.fr\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/bioinfo.ird.fr\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/bioinfo.ird.fr\/wp-content\/uploads\/2021\/10\/i-tropTwt5.png\",\"contentUrl\":\"https:\/\/bioinfo.ird.fr\/wp-content\/uploads\/2021\/10\/i-tropTwt5.png\",\"width\":1356,\"height\":1356,\"caption\":\"i-Trop\"},\"image\":{\"@id\":\"https:\/\/bioinfo.ird.fr\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/ItropBioinfo\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Tutorials - Assembly with Trinity - itrop","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/bioinfo.ird.fr\/index.php\/tutorials-fr\/assemblytrinity\/","og_locale":"fr_FR","og_type":"article","og_title":"Tutorials - Assembly with Trinity - itrop","og_description":"De novo transcriptome assembly and functional annotation of transcrits Name Transcriptome Assembly and Funtional Annotation Description This page describes a&hellip; Lire la suite","og_url":"https:\/\/bioinfo.ird.fr\/index.php\/tutorials-fr\/assemblytrinity\/","og_site_name":"itrop","article_modified_time":"2022-04-06T12:50:28+00:00","og_image":[{"url":"https:\/\/eagle.fish.washington.edu\/whale\/fish546\/Trinity_r2013-08-14_analysis1-2014-02-08-20-44-13.233\/bin\/trinityrnaseq_r2013_08_14\/docs\/images\/TrinityCompositeLogo.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_site":"@ItropBioinfo","twitter_misc":{"Dur\u00e9e de lecture estim\u00e9e":"15 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/bioinfo.ird.fr\/index.php\/tutorials-fr\/assemblytrinity\/","url":"https:\/\/bioinfo.ird.fr\/index.php\/tutorials-fr\/assemblytrinity\/","name":"Tutorials - Assembly with Trinity - itrop","isPartOf":{"@id":"https:\/\/bioinfo.ird.fr\/#website"},"primaryImageOfPage":{"@id":"https:\/\/bioinfo.ird.fr\/index.php\/tutorials-fr\/assemblytrinity\/#primaryimage"},"image":{"@id":"https:\/\/bioinfo.ird.fr\/index.php\/tutorials-fr\/assemblytrinity\/#primaryimage"},"thumbnailUrl":"https:\/\/eagle.fish.washington.edu\/whale\/fish546\/Trinity_r2013-08-14_analysis1-2014-02-08-20-44-13.233\/bin\/trinityrnaseq_r2013_08_14\/docs\/images\/TrinityCompositeLogo.png","datePublished":"2020-11-02T17:40:30+00:00","dateModified":"2022-04-06T12:50:28+00:00","breadcrumb":{"@id":"https:\/\/bioinfo.ird.fr\/index.php\/tutorials-fr\/assemblytrinity\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/bioinfo.ird.fr\/index.php\/tutorials-fr\/assemblytrinity\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/bioinfo.ird.fr\/index.php\/tutorials-fr\/assemblytrinity\/#primaryimage","url":"https:\/\/eagle.fish.washington.edu\/whale\/fish546\/Trinity_r2013-08-14_analysis1-2014-02-08-20-44-13.233\/bin\/trinityrnaseq_r2013_08_14\/docs\/images\/TrinityCompositeLogo.png","contentUrl":"https:\/\/eagle.fish.washington.edu\/whale\/fish546\/Trinity_r2013-08-14_analysis1-2014-02-08-20-44-13.233\/bin\/trinityrnaseq_r2013_08_14\/docs\/images\/TrinityCompositeLogo.png"},{"@type":"BreadcrumbList","@id":"https:\/\/bioinfo.ird.fr\/index.php\/tutorials-fr\/assemblytrinity\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/bioinfo.ird.fr\/index.php\/en\/front-page-2\/"},{"@type":"ListItem","position":2,"name":"Tutorials &#8211; FR","item":"https:\/\/bioinfo.ird.fr\/index.php\/tutorials-fr\/"},{"@type":"ListItem","position":3,"name":"Tutorials &#8211; Assembly with Trinity"}]},{"@type":"WebSite","@id":"https:\/\/bioinfo.ird.fr\/#website","url":"https:\/\/bioinfo.ird.fr\/","name":"itrop","description":"","publisher":{"@id":"https:\/\/bioinfo.ird.fr\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/bioinfo.ird.fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Organization","@id":"https:\/\/bioinfo.ird.fr\/#organization","name":"i-Trop","url":"https:\/\/bioinfo.ird.fr\/","logo":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/bioinfo.ird.fr\/#\/schema\/logo\/image\/","url":"https:\/\/bioinfo.ird.fr\/wp-content\/uploads\/2021\/10\/i-tropTwt5.png","contentUrl":"https:\/\/bioinfo.ird.fr\/wp-content\/uploads\/2021\/10\/i-tropTwt5.png","width":1356,"height":1356,"caption":"i-Trop"},"image":{"@id":"https:\/\/bioinfo.ird.fr\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/ItropBioinfo"]}]}},"_links":{"self":[{"href":"https:\/\/bioinfo.ird.fr\/index.php\/wp-json\/wp\/v2\/pages\/279","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/bioinfo.ird.fr\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bioinfo.ird.fr\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bioinfo.ird.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bioinfo.ird.fr\/index.php\/wp-json\/wp\/v2\/comments?post=279"}],"version-history":[{"count":12,"href":"https:\/\/bioinfo.ird.fr\/index.php\/wp-json\/wp\/v2\/pages\/279\/revisions"}],"predecessor-version":[{"id":742,"href":"https:\/\/bioinfo.ird.fr\/index.php\/wp-json\/wp\/v2\/pages\/279\/revisions\/742"}],"up":[{"embeddable":true,"href":"https:\/\/bioinfo.ird.fr\/index.php\/wp-json\/wp\/v2\/pages\/1325"}],"wp:attachment":[{"href":"https:\/\/bioinfo.ird.fr\/index.php\/wp-json\/wp\/v2\/media?parent=279"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}