Transgenes
back to Caltech documentation
Contents
Transgene objects
We curate all integrated (Is, In, Si), and select extrachromosomal (Ex) transgenes.
For each transgene, we extract the following information:
- name of the transgene*
- genomic expression summary
- construct <as of WS245>
- co-injection markers (as noted as part of the genomic expression summary)
- method of integration, and to what LG it was mapped, if known
- which papers use the transgene as part of an experiment
- other names for the transgene reported by different authors
{*In cases where a transgene has not been assigned a name, or one that does not adhere to standard nomenclature, we assign a name based on the WBPaperID.}
The construct contains the specific information for the array elements
- plasmid name
- promoter(s)
- reporters (GFP, YFP, LacZ, etc.),
- gene product(s)
- etc.
Transgene model (WS245)
?Transgene Evidence #Evidence Public_name UNIQUE ?Text Summary UNIQUE ?Text Synonym ?Text Corresponding_variation UNIQUE ?Variation XREF Corresponding_transgene //put in to unambiguously associate the allele/transgene Construction Construct ?Construct XREF Transgene_construct Coinjection ?Construct XREF Transgene_coinjection Coinjection_other ?Text //for coinjection markers that are not specified as a construct Integration_method UNIQUE ?Text Integrated_from ?Transgene XREF Transgene_derivation Laboratory ?Laboratory #Lab_Location Author ?Author Construction_summary ?Text Genetic_information Extrachromosomal Integrated Map ?Map #Map_position //needed for transgenes with no granular mapping, e.g., just mapped to a LG Mapping_data 2_point ?2_point_data //deleted for WS245, rolled back for WS246 Map_evidence #Evidence Phenotype ?Phenotype XREF Transgene #Phenotype_info Phenotype_not_observed ?Phenotype XREF Not_in_Transgene #Phenotype_info Used_for Transgene_derivation ?Transgene XREF Integrated_from Expr_pattern ?Expr_pattern XREF Transgene Marker_for ?Text #Evidence Interactor ?Interaction Associated_with Marked_rearrangement ?Rearrangement XREF By_transgene Strain ?Strain XREF Transgene Reference ?Paper XREF Transgene Species UNIQUE ?Species Remark ?Text #Evidence Historical_gene ?Gene #Evidence
--Kyook (talk) 22:25, 29 December 2014 (UTC)
Transgene first pass:
In/Is/Si transgenes
Arun and Wen have automated the identification of papers that contain transgenes by using Textpresso to scan the C. elegans corpus of papers for the regular expressions (1-3 capital letter)Is, In, or Si (1-4 digits). This script will miss any transgenes that do not have a standard name using fitting this regex.
Transgene names are extracted during a cron job and stored in
http://textpresso-dev.caltech.edu/transgene/transgenes_in_regular_papers.out
"...paper.sup.1" means the transgene name was mentioned in the supplementary file.
Transgene-paper information is picked up by a cron job every Monday at 4am and entered into the trp tables with curator "Arun". Script is found here:
/home/postgres/work/pgpopulation/textpresso/transgene/update_textpresso_transgene.pl
Only the 'Is' and 'Si' lines are entered into postgres. Only paper connections are attached to pre-existing 'In' lines. 'In' is not an accepted nomenclature for transgenes; however, this nomenclature had been used in the past, so there are a handful of transgenes that are valid and should be consistently curated for papers that use report them.
Ex transgenes
Ex transgenes are curated in association with expression patterns, overexpression gene function phenotype, genetic interaction and gene regulation experiments. Although a script was employed to find all Ex transgenes along with genomic summaries in the C. elegans corpus; these have not been consistently curated as a rule. When an extrachromosomal array with a standardized name has been used, it should be curated like all integrated arrays.
This output file can be viewed here:
http://textpresso-dev.caltech.edu/transgene/transgenes_summary.out
Dealing with false positive transgenes
False positive transgenes include
- "In" lines that are chromosomal inversions rather than transgenes.
- typos in transgene names
- formatting-induced textpresso extraction errors of transgene names, such as when transgenes are referred to as syIs13-19 in the paper, in which case Textpresso reports it as syIs1319 (i.e., the hyphen disappears sometimes during pdf2Text conversion).
Initially, these transgenes were added to:
/home/acedb/wen/phenote_transgene/ObsoleteTg.txt
which was called on by update_textpreso_transgene.pl to identify objects that shouldn't be entered into the trp tables
All bad transgene objects are now entered into the trp tables and appended with "FAIL". Transgenes that match a pre-existing Transgene public_name-paper association marked as FAIL are ignored during trp table population.
Curation
The Textpresso transgene search deposits the transgene name and all new paper instances of the transgene directly into the transgene table.
Curation tools
Transgene .ace dumper
The transgene.ace dumper was written by Juancarlos and Wen to translate the transgene postgres data into .ace format for uploading into AcEDB. The script is located on tazendra. The output file is dumped into the same directory.
Test the .ace in CitaceMinus
- make sure the file reads in fine.
- look at all the transgene objects to make sure there are no strange looking ones.
- do a count of objects before and after the read-in to make sure the number of new objects is reasonable.
A cron job set up by Juancarlos and Wen runs the Transgene .ace dumper script on Thursday mornings at 6am and deposits it on citace at 8am. If there has been any new data or changes in data between testing the file and the Thursday morning dump, make sure to rerum the script and transfer the new data dump to citace for upload.
Requested changes
Changes recorded on https://bitbucket.org/kyook/ky_wbprojects/wiki/transgene_dump_ace.pl
--kjy 23:26, 20 June 2012 (UTC)
- change dump cron job to Wed morning, spica still calls it at 8am on Thursday
- fix source of allele codes for obo_laboratory, URL for the lab-allele designations
http://www.cbs.umn.edu/cgc/lab-allele Juancarlos will parse out the page and create a local copy. A cron job will compare the page to the local copy, if the page is altered in format the table will revert to the local copy.
Handling Dead Genes During Dump Process
The dumper script will now (as of May, 2013) run an automatic check for dead genes in any gene field (for transgenes this applies to "Driven_by_gene", "Gene" and "3_UTR" fields/tags). Any genes that are considered dead that are referenced in an Transgene object in the OA will be handled in the following manner:
1) If there is a replacement for the gene (i.e. the gene has merged into another gene), the dead gene will be dumped into a "Historical_gene" field in the .ACE file, the replacement gene will fill the original gene field. A comment will be added to the Historical_gene field via the #Evidence hash. The original gene field (now with the updated gene reference) will be printed with an "Inferred_automatically" tag after the gene. So, for example, if WBGene00001234 is now a dead gene that has been merged into WBGene00002345:
Gene "WBGene00001234"
becomes
Gene "WBGene00002345" Inferred_automatically Historical_gene "WBGene00001234" Remark "Note: This object originally referred to WBGene00001234. WBGene00001234 is now considered dead and has been merged into WBGene00002345. WBGene00002345 has replaced WBGene00001234 accordingly."
2) If there is no replacement for the gene (Dead or Suppressed), we would dump the following:
Historical_gene "WBGene00001234" Remark "Note: This object originally referred to a gene (WBGene00001234) that is now considered dead. Please interpret with discretion."
OR
Historical_gene "WBGene00001234" Remark "Note: This object originally referred to a gene (WBGene00001234) that has been suppressed. Please interpret with discretion."
and lastly,
3) If the gene has undergone a split, the interaction will still get dumped, but such genes will be printed out in the error output file of the dumping script for a curator to go back and manually change according to best judgement.
Gene Examples:
A split gene: WBGene00012507
A merged gene: WBGene00007524
A dead gene: WBGene00007814
A suppressed gene: WBGene00015490
Cross curation with other curators
Transgenes are used by other datatypes; Expr_pattern, Phenotype, Gene_regulation, Interaction. All curators that use transgenes will need to run a script before each upload to make sure all their transgenes are valid objects.
Gene_regulation
The gene regulation curator can create new transgenes using the Transgene OA or request them from the transgene curator.
Expr_pattern
The expression pattern curator requires many transgene objects to be created on the fly. Rather than impeding the curation flow, when the expression pattern curator needs a transgene that has not been created already, they enter the relavant information for the transgene in their Reporter gene text box. A script that is manually run will check for lines that have text in the reporter gene field and missing a value in the transgene field. This script will create a new object in the transgene OA containing with the corresponding paper id, expression curator as curator, and the remark field populated with the reporter gene text. A synonym will be created based on the expression pattern value with an appended _Ex. This temporary name will be deposited in the synonym field of the transgene OA for that newly created object. See this wiki page for more information: http://wiki.wormbase.org/index.php/Expression_Pattern#Exporting_Reporter_Gene_description_from_Expr_pattern_OA_to_Transgene_OA
The transgene curator needs to
- verify that the object created by the expression pattern curator is not a duplicate transgene, if it is a duplicate, the transgene curator will merge the transgene into the preexisting one, this will make the new transgene invalid its information will not be dumped. The new transgene ID and other synonyms will be pipe added to the synonym list of the pre-existing object
- assign a public name if it exists or if needed
- fill in all other relevant information
Interaction
The interaction curator can create new transgenes using the Transgene OA or request them from the transgene curator.
Strain
Strain data from the CGC has relevant remarks about the transgene in the strain. Often, there are discrepancies between how an author describes a transgene's genotype and how a CGC strain submitter enters the transgene details. Near the end of every data upload, Mary Ann processes a strain report from the CGC and creates a file transgene_report.<date>.txt that maps transgenes mentioned in the CGC file to WBTransgene IDs, then sends the file to the WB transgene curator.
In the transgene_report, the data shows like:
Transgene : staIs1 Strain : ABR5 Description : staIs1 [pie-1p::GFP + unc-119(+)]. Superficially wild-type. Maintain under normal conditions. Reference: This strain is used as the empty vector control in Greer EL et al Nature 2010 doi: 10.1038/nature09195. WBID : WBTransgene00017210
The file needs to be placed on tazendara (note name change) postgres/work/pgpopulation/transgene/transgene_report.txt
Run script populate_maryann_transgene.pl
The populate_maryann_transgene.pl script
1. Enter transgenes from CGC file that are missing from WB.
Start with transgene name, map to WBTransgene ID from trp_name/trp_publicname.
- If no transgene match, add trp_name (generate trp_name (WBTransgeneID)if it didn't exist already) trp_publicname, trp_strain, trp_cgcremark, and trp_summary.
- If there is a transgene match only add/change whatever is new/different
- compare and add strains to trp_strain, pipe separate, ' | ', multiple values, output in out.strains.
nIs407 10031 PG CGC MT19635 trp_strain NOW MT19635 nIs408 8234 PG MT20298 CGC MT19756 | MT20298 trp_strain NOW MT19756 | MT20298 nIs425 NEW PG CGC MT19851 trp_strain NOW MT19851
Line 1 no strain existed for pgid 10031 nIs407, the CGC strain was added to trp_strain.
Line 2 different strain existed for pgid 8234 nIs408, CGC strain was merged and pipe separated.
Line 3 nIs425 did not exist in pg, a line was created, and the CGC strain was added to trp_strain.
2. Extract CGC transgene genotype(s), compare it to WB transgene trp_summary. trp_table changes are recorded in out.summary.
The transgene should be in square brackets after the transgene name (optional space or words 'contains' or 'is' may be between the transgene name and genotype) in the Description field. There are many cases where the same transgene is described differently in the CGC, the script designates the longest CGC description as the canonical one and pipe separates the remaining genotypes in trp_synonym, with the original trp_summary genotype if it doesn't match the chosen CGC description.
If there is no transgene name mentioned in the Description that matches the Transgene value, pretend there is no genotype, but there is a strain and transgene. Put all unmatched and transgenes with no recognizable genotypes in file cgc_transgene_errors. If the transgene does not exist in pg, a new line, with pgid, trp_publicname, trp_strain, trp_laboratory 'CGC' and trp_curator 'Mary Ann' will be created, but no genotype will be assigned.
Genotype goes to trp_summary, anything that was in summary goes to trp_synonym aggregating with what was there before and separating with ' | '. There can only be one genotype in trp_summary, and it cannot match anything in trp_synonym.
Get the cgcgenotypes sort them get the longest one to be the genotype get the trp_summary values into an aggregate list get the trp_synonyms values into the aggregate list get the remaining cgcgenotypes that are not the longest one into the aggregate list if cgcgenotype different from pgsummary, update, and add pgsummary to aggregate list if aggregate list different from pg synonyms, replace trp_summary with aggregate list
asIs2 72 PG [pie-1::mcherry-egg-3] PGSYN CGC [pie-1::mcherry::egg-3] | [unc-119(+) + ppie-1::GFP::egg-1] 72 trp_summary NOW [unc-119(+) + ppie-1::GFP::egg-1] 72 trp_synonym NOW [pie-1::mcherry-egg-3] | [pie-1::mcherry::egg-3]
Line 1 transgene pgid trp_summary trp_synonym.
Line 2 CGC genotypes, aggregated and pipe separated
Line 3 pgid trp_summary replaced by longest CGC genotype
Line 4 pgid trp_synonym aggregate of original trp_summary(PG), original trp_synonyms(PGSYN), and remaining CGC genotypes.
First run was done on all genotypes. In future runs only do it if the genotype is different from the trp_summary.
3. Map WB annotated genes with CGC genotypes, output in out.summary.
In many cases, CGC genotypes use a different form of the gene name than what was published. To make it easier to compare the CGC genotypes with WB transgene genotypes, it is helpful to have a gene name mapping output for these elements.
Look at existing trp_gene and trp_drivenbygene, and compare with genes in all gin_locus, gin_synonyms, gin_seqname.
Output on 3 columns which ones matched somewhere in the genotype, which had no match, and whether there was no match at all.
arIs36 45 PG [phsp::ssGFP] PGSYN CGC [phsp::ssGFP] 45 trp_summary NOW [phsp::ssGFP] 45 trp_synonym NOW 45 Matched Gene: None 45 Gene Synonyms: None asIs2 72 PG [pie-1::mcherry-egg-3] PGSYN CGC [pie-1::mcherry::egg-3] | [unc-119(+) + ppie-1::GFP::egg-1] 72 trp_summary NOW [unc-119(+) + ppie-1::GFP::egg-1] 72 trp_synonym NOW [pie-1::mcherry-egg-3] | [pie-1::mcherry::egg-3] 72 Matched Gene: WBGene00004027 pie-1 72 Matched Gene: WBGene00009701 egg-3 72 Gene Synonyms: WBGene00004027 CELE_Y49E10.14, Y49E10.14, pic-1 72 Gene Synonyms: WBGene00009701 CELE_F44F4.2, F44F4.2 axEx1125 78 PG [pie-1::gfp-mex-5] PGSYN CGC [pKR2.04 + pRF4 + N2 genomic DNA] 78 trp_summary NOW [pKR2.04 + pRF4 + N2 genomic DNA] 78 trp_synonym NOW [pie-1::gfp-mex-5] 78 Matched Gene: None 78 Gene Synonyms: WBGene00003230 CELE_W02A2.7, W02A2.7, mex-5 78 Gene Synonyms: WBGene00004027 CELE_Y49E10.14, Y49E10.14, pic-1, pie-1 axIs1427 5676 PG [pie-1prom::LAP::DCAP-1] PGSYN CGC [pCG26/ LAP-tag DCP-1] 5676 trp_summary NOW [pCG26/ LAP-tag DCP-1] 5676 trp_synonym NOW [pie-1prom::LAP::DCAP-1] 5676 Matched Gene: None 5676 Gene Synonyms: WBGene00004027 CELE_Y49E10.14, Y49E10.14, pic-1, pie-1 5676 Gene Synonyms: WBGene00021929 CELE_Y55F3AM.12, Y55F3AM.12, dcap-1, dcp1
Full entries in out.summary.
For arIs36, the CGC genotype matched trp_summary value, not need to compare genes.
For asIs2, the CGC genotype did not match trp_summary value, genes within old and new trp_summary values need comparing. Matched genes are noted. Gene synonyms are supplied.
For axEx1125, trp_summary replaced, but no genes match, no gene or gene synonym recognized in CGC genotype, this transgene needs resolving.
For axIs1427, trp_summary replaced, gene synonyms match for DCAP-1 and DCP-1.
4. errors file in output are for pg entries that can't be compared, for example if there are duplicate transgene public_names, and neither of them have been labeled as 'FAIL'. These objects will need to be resolved or the script will break.
5. All changes to the postgres tables are listed in out.pg. Use these grep searches to display the number of changes to the different tables:
>grep " trp_strain VALUES " out.pg | wc -l 902 >grep " trp_summary VALUES " out.pg | wc -l 4450 >grep " trp_synonym VALUES " out.pg | wc -l 4396 >grep " trp_publicname VALUES " out.pg | wc -l 55
Other tables that can be queried from the out.pg are:
- trp_summary_hst
- trp_strain_hst
- trp_synonym_hst
- trp_publicname_hst NOTE: trp_publicname and trp_publicname_hst table change when there is a new entry
- trp_laboratory NOTE: trp_laboratory and trp_laboratory_hst table change when there is a new entry
- trp_laboratory_hst
NOTE: No diff file necessary between transgene_reports, always run on everything, only do stuff when it's new.
Web Displays
Page for mapped transgenes http://wiki.wormbase.org/index.php/Mapped_Transgenes