DOI: 10.5061/dryad.6t1g1jx4q
title: Evolutionary assembly of the plant terrestrialization toolkit from protein domains

description: Land plants (embryophytes) came about in a momentous evolutionary
 singularity: plant terrestrialization. This event marks not only the
 conquest of land by plants but also the massive radiation of embryophytes
 into a diverse array of novel forms and functions. The unique suite of
 traits present in the earliest land plants is thought to have been ushered
 in by a burst genomic novelty. Here, we asked the question of how these
 bursts were possible. For this, we used phylostratigraphy to explore the
 (i) initial emergence and (ii) reshuffling of domains to give rise to
 hallmark environmental response genes of land plants. We pinpoint that a
 quarter of the embryophytic stress physiology is specific to the lineage,
 yet a significant portion of this novelty arises not de novo but from
 re-shuffling and recombining of pre-existing domains. Our data suggest
 that novel combinations of old genomic substrates shaped the plant
 terrestrialization toolkit, including hallmark processes in signaling,
 biotic interactions, and specialized metabolism.
description: # Orthogroup data used for: Evolutionary assembly of the plant
 terrestrialization toolkit from protein domains ## Description of the data
 and file structure We have submitted all required data and information to
 recreate the main findings of our study. For ease, we have structured the
 detailed information on this by the main figures that are found in the
 manuscript. These are the Orthofinder-based results used for the study
 "Evolutionary assembly of the plant terrestrialization toolkit from
 protein domains". Each TSV file presents the direct output from the
 orthofinder. ## Sharing/Access information Data was derived from the
 following sources: (i) six species of chlorophyte algae, (ii) seven
 species of streptophyte algae, five bryophytes, and 14 tracheophytes.
 Orthogroups were built on protein data from five species of cyanobacteria
 were included as an outgroup: (HulseKemp et al. 2021), Arabidopsis
 thaliana (Lamesch et al. 2012), Arabidopsis lyrata (V2.1; Hu et al. 2011);
 Rawat et al.(Rawat et al. 2015), Brassica rapa (FPsc v1.3; Goodstein et
 al. 2012), Medicago truncatula (Mt4.0v1; Tang et al. 2014), Pisum sativum
 (Kreplak et al. 2019), Lotus japonicus (Lj1.0v1; Li et al. 2020b), Oryza
 sativa (v7.0; Kawahara et al. 2013), Brachipodium distachyon (v3.2;
 International Brachypodium Initiative 2010), Amborella trichopoda (v1.0;
 Amborella Genome Project 2013), Gnetum montanum (Wan et al. 2018), Picea
 abies (Nystedt et al. 2013), Azolla filiculoides (Li et al. 2018),
 Selanigella moellendorffi (Banks et al. 2011), Physcomitrella patens (Lang
 et al. 2018), Sphagnum fallax (v1.1; Healey et al. 2023), Marchantia
 polymorphya (v3.1; Bowman et al. 2017), Anthoceros punctatus (Li et al.
 2020a), Anthoceros agrestis (Bonn; Li et al. 2020a), Mesotaenium
 endlicherianum (Cheng et al. 2019), Penium margaritaceum (Jiao et al.
 2020), Spirogloea muscicola (Cheng et al. 2019), Chara braunii (Nishiyama
 et al. 2018), Klebsormidium nitens (v1.1; Hori et al. 2014), Chlorokybus
 melkonianii (Wang et al. 2020) for naming, see Irisarri et al.(2021),
 Mesostigma viride (Wang et al. 2020), Micromonas pusilla (v3.0; Worden et
 al. 2009), Ostreococcus lucimarinus (v2.0; Palenik et al. 2007), Ulva
 mutabilis (De Clerck et al. 2018), Chlamydomonas reinhardtii (v5.6;
 Merchant et al. 2007), Chlorella variabilis (Blanc et al. 2010), Coccomyxa
 subellipsoidea (C-169 v2.0; Blanc et al. 2012), Nostoc punctiforme (Meeks
 et al. 2001), Trichormus azollae (Ran et al. 2010), Fischerella thermalis
 (Dagan et al. 2013), Gloeomargarita lithophora (Ponce-Toledo et al. 2017),
 Oscillatoria acuminata (Shih et al. 2013). ## Figure 1B Github link:
 [https://github.com/ADhabaliaAshok/EvolutionaryAssemblyFromProteinDomains/tree/main](https://github.com/ADhabaliaAshok/EvolutionaryAssemblyFromProteinDomains/tree/main) Figure 1B shows the proteomic details and quality of our dataset of 37 species. Reference proteomes have been downloaded to perform this analysis. ### Description of the data and file structure This figure is divided into two parts: BUSCO analysis of proteomes The number of proteins: ``` Proteins Proteins annotated by Interproscanner Stress Annotated Proteins ``` ### Sharing/Access information The input files to create the figure are as follows: BUSCO analysis of proteomes - obtained from Code part 1.1 and Code part 1.2 The number of proteins: ``` Proteins - from the input fasta file Proteins annotated by Interproscanner - from Interproscanner output files Number of Stress Annotated Proteins - data file from Figure 1C approach 3 ``` ## Code/Software Final data files: ``` figure1_BUSCO.csv figure1_table.csv ``` Code part 1.1: busco -m $MODE -i $IN -o $OUT -f -l chlorophyta_odb10 -o Spinacia_oleracea_BUSCO_out ``` IN: fasta file of each of 37 species MODE: proteins OUT: busco_out ``` Code part 1.2: Concatenate the complete BUSCO scores (C) for every species into the final data file figure1_BUSCO.csv Code part 1.3: Create a plot to show the completeness of BUSCO scores for the dataset of 37 species Code part 2.1: interproscan.sh -i $IN -d /output_directory/ -T /temporary_directory/ -f tsv IN: fasta file of each of 37 species Code part 2.2: annotating stress-relevant proteins Code part 2.3: Concatenate for each species the number of: ``` Proteins - from the input fasta file Proteins annotated by Interproscanner - from Interproscanner output files Number of Stress Annotated Proteins - data file from Figure 1C approach 3 ``` ## Figure 1C Github link: [https://github.com/ADhabaliaAshok/EvolutionaryAssemblyFromProteinDomains/tree/main](https://github.com/ADhabaliaAshok/EvolutionaryAssemblyFromProteinDomains/tree/main) Figure 1C shows a comparison among three approaches to annotate proteins and orthologs as stress-relevant ### Description of the data and file structure This figure is divided into three approaches to annotating proteins and orthologs: Approach 1: A.thaliana and P.patens model organisms open source database Approach 2: Gene Ontology open source tool known as Eggnogmapper Approach 3: Intersection of Approach 1 and Approach 2 ### Sharing/Access information Model organisms ``` 1\) A.thaliana database: https://www.arabidopsis.org/download/list?dir=GO_and_PO_Annotations%2FGene_Ontology_Annotations 2\) P.patens database: https://peatmoss.plantcode.cup.uni-freiburg.de/ppatens_db/downloads.php ``` The base input file needed is the 37 species clustered into orthogroups – obtained from Code Part 1. The Orthogroups file is used to annotate the ortho groups and proteins as follows: Approach 1 – from the model organisms database, and ortho group file Approach 2 – fasta files of 37 species as input for Eggnogmapper, and ortho group file Approach 3 – ortho group IDs from Approach 1 and Approach 2 ### Code/Software Code part 1: Create ortho groups using OrthoFinder orthofinder.py -f /directory_with_37species_fasta_files/ Code part 2.1: python3 make_input_3_1.py ``` INPUT FILES REQUIRED (all files can be downloaded from DatabaseFiles): Ppatens_GO - download file from P.patens database ATH_GO_GOSLIM_2021_removed4lines.txt – modified file from A.thaliana PEATmossTAIR_GOBP_GORTS - download file from P.patens database PEATmossTAIR_stress_proteins – modified from Ppatens_GO concat_all_files_len13_ipr – interproscanner files Orthogroups.tsv - from Code part 1 species_ordered_list_final_m – input 37 species list OUTPUT FILES: 3_1_input_file_m ``` Code part 2.2: python3 make_output_3_1.py ``` INPUT FILES REQUIRED: 3_1_input_file_m OUTPUT FILES: py_plot_AtPpOG_m.png – distribution of stress-annotated orthogroups from Approach 1 ``` Code part 3.1: python3 make_input_3_2.py ``` INPUT FILES REQUIRED (all files can be downloaded from DatabaseFiles): database_GOID_GORTS – output from python3 create_database_GO_GORTS.py Orthogroups.tsv – from Code part 1 species_ordered_list_final_m - input 37 species list OUTPUT FILES: 3_2_input_file ``` Code part 3.2: python3 make_output_3_2.py ``` INPUT FILES REQUIRED: 3_2_input_file OUTPUT FILES: py_plot_EggOG.png - distribution of stress-annotated orthogroups from Approach 2 ``` Code part 4.1: python3 compare_index.py ``` INPUT FILES REQUIRED: 3_1_index_final_m - obtained from header of 3_1_input_file_m 3_2_index - obtained from header of 3_2_input_file OUTPUT FILES: 3_3_index_overlaps ``` Code part 4.2: python3 make_input_3_3.py ``` INPUT FILES REQUIRED: 3_1_input_file_m – from Code part 2 species_ordered_list_final_m - input 37 species list 3_3_index_overlaps – from Code part 4.1 OUTPUT FILES: 3_3_input_file_m ``` Code part 4.3: python3 make_output_3_3.py ``` INPUT FILES REQUIRED: 3_3_input_file_m OUTPUT FILES: py_plot_AtPpOG_EggOG_m.png - distribution of stress-annotated orthogroups from Approach 3 ``` ## Figure 2A Github link: [https://github.com/ADhabaliaAshok/EvolutionaryAssemblyFromProteinDomains/tree/main](https://github.com/ADhabaliaAshok/EvolutionaryAssemblyFromProteinDomains/tree/main) Figure 2A shows the weighted distribution of stress-annotated proteome across the 37 species ### Description of the data and file structure This figure is divided into two parts of stress annotated proteome: * Stress annotated Orthogroups: shows the distribution of the presence and prevalence of stress-annotated proteins across the 37 species * Stress annotated protein domains: shows the distribution of the presence and prevalence of protein domains present within the stress-annotated ortho groups across the 37 species ### Sharing/Access information Model organisms *A.thaliana* database: https://www.arabidopsis.org/download/list?dir=GO_and_PO_Annotations%2FGene_Ontology_Annotations *P.patens* database: https://peatmoss.plantcode.cup.uni-freiburg.de/ppatens_db/downloads.php The base input file needed is the Stress-annotated orthogroups from Figure 1C Approach 3 and interproscanner files. ### Code/Software Code part 1: python3 make_input_6_2475OG.py ``` INPUT FILES REQUIRED (all files can be downloaded from DatabaseFiles): species_numbered_list_final_m - input 37 species list database_domainfirstappearance – from python3 create_database_domainfirstappearance.py database_OGfirstappearance – from python3 create_database_Ogfirstappearance.py database_OG3_3_uniquedomains – from python3 create_database_OG3_3_uniquedomains.py OUTPUT FILES: 6_2475OG_input_file ``` Code part 2.1: python3 make_input_7.py ``` INPUT FILES REQUIRED: Orthogroups.tsv – from README_Figure1C Code part 1 species_ordered_list_final_m - input 37 species list 6_2475OG_input_file – from Code part 1 OUTPUT FILES: 7_input_file 7_input_file_log2 ``` Code part 2.2: Rscript final_m_heatmap_7.R ``` INPUT FILES REQUIRED 7_input_file_log2 OUTPUT FILES 7_output_file_log2_heatmap.pdf ``` Code part 3.1: python3 extract_stress_og_37.py ``` INPUT FILES REQUIRED: Orthogroups.tsv – from README_Figure1C Code part 1 OUTPUT: all_species_stress_og_fromOrthogroupstsv_37species ``` Code part 3.2: python3 make_input_4.py ``` INPUT FILES REQUIRED: species_ordered_list_final_m - input 37 species list 3_3_input_file_m – from README_Figure1C Code part 4 all_species_stress_og_fromOrthogroupstsv_37species – from Code part 3.1 database_proteindomains – from create_database_proteindomains.py OUTPUT: 4_input_file_3_3 4_input_file_log2_3_3 ``` ## Figure 2B Github link: [https://github.com/ADhabaliaAshok/EvolutionaryAssemblyFromProteinDomains/tree/main](https://github.com/ADhabaliaAshok/EvolutionaryAssemblyFromProteinDomains/tree/main) Figure 2B shows the top 10 protein domain bursts at every ascending node from the 9 lineages of 37 species ### Description of the data and file structure Protein Domain bursts are retrieved from the file database_proteindomains. The protein domains were summed up and sorted for each lineage. This number was normalized as follows: ``` number of domains in lineage/number of species in lineage ``` The top 10 were selected at every node between lineages. Since one lineage encompasses the next lineages at most nodes, repeated protein domain bursts were not considered from one node to the next. However, in the figure, we show that they are still part of the proteome for that lineage. Simple command lines were used on the terminal to get the result. The figure was made manually on Affinity Designer. ### Sharing/Access information Interpro2GO: this is a website that gives gene ontology annotation for interproscanner annotated protein domains: [https://www.ebi.ac.uk/GOA/InterPro2GO](https://www.ebi.ac.uk/GOA/InterPro2GO) ### Code/Software Code part 1: python3 final_figure_3.py ``` INPUT FILES REQUIRED: Interpro2go – downloaded from https://www.ebi.ac.uk/GOA/InterPro2GO OUTPUT FILES: final_figure3_output_4Jan2023 ``` Software used: Affinity Designer to design the evolutionary tree with protein domain bursts ## Figure 2C Github link: [https://github.com/ADhabaliaAshok/EvolutionaryAssemblyFromProteinDomains/tree/main](https://github.com/ADhabaliaAshok/EvolutionaryAssemblyFromProteinDomains/tree/main) ### Description Figure 2C shows the weighted distribution of stress-annotated protein domains across the 37 species ### Sharing/Access information The base input file needed is the Stress-annotated orthogroups from Figure 1C Approach 3 and interproscanner files. ### Code/Software Code part 1: python3 make_input_5_spvsipr_intermediate.py ``` INPUT FILES REQUIRED (download from DatabaseFiles link): 4_input_file_log2 – from README_Figure2A database_OG3_3_Orthogroups.tsv – from python3 create_database_OG3_3_Orthogroups.tsv database_proteindomains – from python3 create_database_proteindomains.py OUTPUT FILES: 5_input_file_uniqprot_spvsipr 5_input_file_uniqog_spvsipr ``` Code part 2: python3 make_input_5_spvsipr.py ``` INPUT FILES REQUIRED: 4_input_file_log2_3_3 – from README_Figure2A database_OG3_3_Orthogroups.tsv - from python3 create_database_OG3_3_Orthogroups.tsv database_proteindomains - from python3 create_database_proteindomains.py 5_input_file_uniqprot_spvsipr – from Code part 1 5_input_file_uniqog_spvsipr – from Code part 1 species_numbered_list_final_m – 37 species list OUTPUT FILES: 5_final_input_file_log2PROT_OG_1 5_final_input_file_log2PROT_log2OG_1 ``` Code part 3: python3 sort_5_inputfile.py ``` INPUT FILES REQUIRED: 5_final_input_file_log2PROT_log2OG_1 – from Code part 2 OUTPUT FILES: 5_intermediate_input_file_log2PROT_log2OG_sortedPROT_1 5_intermediate_input_file_log2PROT_log2OG_sortedOG_1 ``` Code part 4: python3 sort_5_finalfile.py ``` INPUT FILES REQUIRED: 5_intermediate_input_file_log2PROT_log2OG_sortedPROT_1 – from Code part 3 5_intermediate_input_file_log2PROT_log2OG_sortedOG_1 – from Code part 3 5_final_input_file_log2PROT_OG_1 – from Code part 2 OUTPUT FILES: 5_final_input_file_log2PROT_OG_sortPROT_2 5_final_input_file_log2PROT_OG_sortOG_2 ``` Code part 5: Rscript bubbleheatmap_final_m_spvsipr_sortOG.R ``` INPUT FILES REQUIRED: 5_final_input_file_log2PROT_OG_sortOG_2 – from Code part 4 OUTPUT FILES: 5_output_SPvsIPR_log2PROT_OG_sortOG_1.pdf ``` ## Figure 2D, 2E, 2F Github link: [https://github.com/ADhabaliaAshok/EvolutionaryAssemblyFromProteinDomains/tree/main](https://github.com/ADhabaliaAshok/EvolutionaryAssemblyFromProteinDomains/tree/main) Figures 2D, 2E, and 2F are created to show the different distributions of ortho groups ### Description of the data and file structure Figure 2D is to show the distribution of ortho groups with Latent Genetic Potential Figure 2E is to show the distribution of all ortho groups and stress-relevant ortho groups Figure 2F is to show the distribution of cyanobacterial ortho groups ### Sharing/Access information NA ### Code/Software Code part 1: Figure 2D - The 96 ortho groups in this figure have been selected based on two filters which are as follows: ``` 1\. Orthologs in Land Plants (Embryophyta) 2\. Protein Domains in embryophytes and non-Embryophyta species ``` Code part 2: Figure 2E – The number of ortho groups exclusive to each lineage is shown in sequential order at every node Code part 3: Figure 2F – The number of ortho groups exclusive to each lineage and Cyanobacterial species Software: Affinity designer was used to design the trees ## Figure 3A Github link: [https://github.com/ADhabaliaAshok/EvolutionaryAssemblyFromProteinDomains/tree/main](https://github.com/ADhabaliaAshok/EvolutionaryAssemblyFromProteinDomains/tree/main) Figure 3A shows the Latent Genetic Potential in terms of protein domains for 96 ortho groups ### Description of the data and file structure The 96 ortho groups in this figure have been selected based on two filters which are as follows: 1\) Orthologs in Land Plants (Embryophyta) 2\) Protein Domains in embryophytes and non-Embryophyta species The purpose of creating this is to create a four-dimensional database file with the following parameters: Species Stress-annotated Orthogroup Number of proteins Embryophytic Domain (in)completion Example: column1: Species_X column2: Orthogroup_N column3: number of proteins from Orthogroup_N in Species_X column4: Embryophytic Domain completion(=1, incompletion=0) in Species_X proteome ### Sharing/Access information NA ### Code/Software Code part 1: MAKE INTERMEDIATE INPUT FILES python3 make_intermediate_input_5.py INPUT FILES REQUIRED: 3_1_input_file_m – from README_Figure1C all_species_stress_og_fromOrthogroupstsv_37species – Orthogroups.tsv manipulated to give orthogroup ID with respect to the protein ad species species_ordered_list_final_m – list of 37 species database_proteindomains – from python3 create_database_proteindomains.py database_OG3_3_EmbryophyteLCAdomains – from python3 create_database_OG3_3_EmbryophyteLCAdomains.py OUTPUT: 5_input_file_uniqipr 5_input_file_uniqprot Code part 2: MAKE FINAL RESULT FILE python3 make_input_5.py INPUT FILES REQUIRED: 3_1_input_file_m all_species_stress_og_fromOrthogroupstsv_37species - Orthogroups.tsv manipulated to give ortho group ID with respect to the protein ad species species_ordered_list_final_m - list of 37 species database_proteindomains - from python3 create_database_proteindomains.py database_OG3_3_EmbryophyteLCAdomains - from python3 create_database_OG3_3_EmbryophyteLCAdomains.py 5_input_file_uniqipr – from Code part 1 5_input_file_uniqprot – from Code part 1 OUTPUT: 5_final_input_file_PROT_DOM_1 Code part 3: MAKING FINAL INPUT FILE TO LOOK AT L.G.P IN EMBRYOPHYTES FILTERING FINAL RESULT FILE: Code part 3.1: ``` 5_3_3OG_input_file_PROT_DOM_1 - obtained by filtering 5_final_input_file_PROT_DOM_1 to extract 2475 stress-annotated orthogroups ``` Code part 3.2: python3 make_input_6.py ``` INPUT FILES REQUIRED: species_numbered_list_final_m – list of 37 species database_domainfirstappearance – from python3 create_database_domainfirstappearance.py database_OGfirstappearance – from python3 create_database_Ogfirstappearance.py database_OG3_3_EmbryophyteLCAdomains – from python3 create_database_OG3_3_EmbryophyteLCAdomains.py OUTPUT FILES: 6_filterlessthan_input_file_EmbryophyteLCA 6_filtergreaterthan_input_file_EmbryophyteLCA 6_filterequal_input_file_EmbryophyteLCA OUTPUT FILE FORMAT: column1-orthogroup column2-beginning of embryophytic domain set appearance (datatype:integer - from the file species_numbered_list_final_m) column3-complete appearance of embryophytic domain set (datatype: integer) column4-beginning of appearance of orthologous proteins from orthogroup (datatype:integer) ``` NOTE: We can now filter the ortho groups whose complete set of embryophytic domains appeared before the appearance of the orthologous proteins Code part 3.3: 6_filtergreaterthanorequalto_annotation1.1_nonembryophyte_EmbryophyteLCA: ``` Column1, column2, column3 and column4 are obtained by filtering (filter: column3&lt;=column4 and column4&gt;=18) Column5 (orthogroup functional annotation) obtained from command: python3 make_annotation_6.py ``` Code part 3.4: ``` INPUT FILES REQUIRED: 5_final_input_file_PROT_DOM_1 6_filtergreaterthanorequalto_annotation1.1_nonembryophyte_EmbryophyteLCA (column1) OUTPUT FILE: 5_96OG_reorder_new FILTER: 5_96OG_reorder_new obtained by filtering 5_final_input_file_PROT_DOM_1 to extract filtered orthogroups from 6_filtergreaterthanorequalto_annotation1.1_nonembryophyte_EmbryophyteLCA (column1) ``` ## Figure 3B Github link: [https://github.com/ADhabaliaAshok/EvolutionaryAssemblyFromProteinDomains/tree/main](https://github.com/ADhabaliaAshok/EvolutionaryAssemblyFromProteinDomains/tree/main) Figure 3B shows the Gene ontology for the 96 ortho groups with Latent Genetic Potential ### Description of the data and file structure Figure 3B shows the Gene ontology for the 96 orthogroups with Latent Genetic Potential that was present in the ancestors of Embryophyta and algae. ### Sharing/Access information NA ### Code/Software Code part 1: python3 count_wordle.py ``` INPUT FILES NEEDED: 6_annotation_96OG_1.out - annotations for 96 orthogroups are obtained using the annotated A.thaliana and P.patens proteins (from TAIR10 and PEATmoss databases) OUTPUT wordle_input_withcount.csv wordle_input_words.txt ``` Software: Final figure is made using the Wordle2 tool with input wordle_input_withcount.csv and wordle_input_words.txt