diff --git a/doc/TechnicalReference/TechnicalReference.tex b/doc/TechnicalReference/TechnicalReference.tex index bbbe5a54d12a26279299b07b7e3d53247d3f0d88..23564f82c2295ee84a60a909efe5060762e428ad 100644 --- a/doc/TechnicalReference/TechnicalReference.tex +++ b/doc/TechnicalReference/TechnicalReference.tex @@ -644,9 +644,72 @@ transcription start, transcription stop and CDS stop, a function \newpage \section{Programs} \label{sec:programs} +In this section we discuss a number of possible interconnections between the +modules. \subsection{Mutalyzer} \label{subsec:mutalyzer} +\subsubsection{Semantic checks} +The main function of \texttt{Mutalyzer} program, is \emph{semantic name +checking}. It uses the \texttt{Parser} module for syntactic checking and the +generation of a parse tree, and applies the given description to a reference +sequence. This reference sequence is provided by either the \texttt{LRGparser} +of \texttt{GBparser} module. By combining the variant description and the +interpreted reference sequence file, semantic checking can be done. + +Semantic checks focus on several aspects of a variant description: +\begin{itemize} +\item Correctness of an intronic position notation. +\item Disambiguation of a deletion or insertion. +\item Minimising a description. +\item Verifying optional arguments. +\end{itemize} + +As an example of an intronic position check, we look at the position $25+4$. In +this case, position $25$ must be a splice donor site. + +When a nucleotide is deleted from a stretch of nucleotides, the HGVS prescribes +that the last one should be deleted. This disambiguation also applies for more +complex structures; deleting \verb#GACTATTCCCTG# from a sequence +\verb#ATGGACTATTCCCTGGCT# for example, should be corrected to the deletion of +\verb#ACTATTCCCTGG#. Only deletions, insertions and duplications are sensitive +to this kind of ambiguity. + +Every description can be written as a deletion/insertion (\emph{delins}) +operation, but using this representation is not necessarily the shortest one. A +delins of one nucleotide, for example should be written as a substitution. +Several checks are implemented to reduce one representation to an other. In +Table~\ref{tab:erosion} a list of possibly ``disguised'' variants is shown. + +\begin{table}[H] +\begin{center} +\begin{tabular}{l|l} +Variant type & Could be \\ +\hline +delins & del, ins, dup, subst, inv \\ +ins & dup \\ +inv & subst +\end{tabular} +\end{center} +\caption{Disguised variants.} \label{tab:erosion} +\end{table} + +Apart from this possible disguise, a variant can be described using too much +nucleotides, or a range that is too large. A delins can include part of the +flanking sequence of the real change. To prevent this, the \emph{longest common +prefix} and \emph{longest common suffix} are pruned. Likewise, an inversion +can be too large when the \emph{reverse complement} of a prefix is a suffix. +This is pruned in a similar way. Finally, a delins, subst or inv can have no +effect at all. + +Any optional arguments must also be checked. If a length of a deletion is given +for example, it must match the range of the deletion. If a stretch of +nucleotides is given, this stretch must match the reference sequence. + +\subsubsection{Visualisation} + +\subsubsection{Effect prediction} + \subsection{VarInfo} \label{subsec:varinfo} \subsection{UCSC\_Update} \label{subsec:ucsc_update} diff --git a/src/Modules/Parser.py b/src/Modules/Parser.py index be18693c2cf7b2ef2e959ca2b57037e48941aea3..4035b1ef00ca7582751b11031c4a0225dca8b858 100644 --- a/src/Modules/Parser.py +++ b/src/Modules/Parser.py @@ -70,7 +70,8 @@ class Nomenclatureparser() : ProtIso = Suppress("_i") + Number("ProtIso") GeneSymbol = Suppress('(') + Group(Name("GeneSymbol") + \ Optional(TransVar ^ ProtIso))("Gene") + Suppress(')') - GI = Suppress(Optional("GI") ^ Optional("GI:")) + Number("RefSeqAcc") + GI = Suppress(Optional("GI") ^ Optional("GI:") ^ Optional("gi") ^ + Optional("gi:")) + Number("RefSeqAcc") Version = Suppress('.') + Number("Version") AccNo = NotAny("LRG_") + \ Combine(Word(alphas + '_') + Number)("RefSeqAcc") + \ diff --git a/src/Modules/Web.py b/src/Modules/Web.py index 80c20f619516e2a44b8a9eaa24914fa404a47626..5ec7476ed1df405127fd6fde14750d2591861f02 100644 --- a/src/Modules/Web.py +++ b/src/Modules/Web.py @@ -42,8 +42,9 @@ class Web() : version ; Here the displayed version is defined. """ - self.version = "2.0α-5" + self.version = "2.0β-1" self.nomenclatureVersion = "2.0" + self.releaseDate = "9 Aug 2010" C = Config.Config() self.email = C.Retriever.email @@ -134,6 +135,7 @@ class Web() : context.addGlobal("version", self.version) context.addGlobal("nomenclatureVersion", self.nomenclatureVersion) + context.addGlobal("releaseDate", self.releaseDate) context.addGlobal("contactEmail", self.email) for i in args : context.addGlobal(i, args[i]) diff --git a/src/Mutalyzer.py b/src/Mutalyzer.py index 65f1fe9df98038d9fead8a3edac508f96fd031e7..8e09f53cc0c5b11677c185835f7634f744ba1b2b 100644 --- a/src/Mutalyzer.py +++ b/src/Mutalyzer.py @@ -269,6 +269,16 @@ def __cdsLen(splice_sites) : return l #__cdsLen +def __checkDNA(arg) : + """ + """ + + for i in str(arg) : + if not i in IUPAC.unambiguous_dna.letters : + return False + return True +#__checkDNA + def __checkOptArg(ref, p1, p2, arg, O) : """ """ @@ -285,6 +295,10 @@ def __checkOptArg(ref, p1, p2, arg, O) : #if #if else : + if not __checkDNA(arg) : + O.addMessage(__file__, 4, "ENODNA", + "Invalid letters in argument.") + return False ref_slice = str(ref[p1 - 1:p2]) if ref_slice != str(arg) : # FIXME more informative. O.addMessage(__file__, 3, "EREF", @@ -537,11 +551,15 @@ def _createBatchOutput(O): O.addOutput("batchDone", outputline) +#_createBatchOutput def checkSubstitution(start_g, Arg1, Arg2, MUU, GenRecordInstance, O) : """ """ + if not __checkDNA(Arg2) : + #O.addMessage(__file__, 4, "ENODNA", "Invalid letter in input") + return if Arg1 == Arg2 : O.addMessage(__file__, 3, "ENOVAR", "No mutation given (%c>%c) at position %i." % ( @@ -640,6 +658,14 @@ def checkInsertion(start_g, end_g, Arg1, MUU, GenRecordInstance, O) : if start_g + 1 != end_g : O.addMessage(__file__, 3, "EINSRANGE", "%i and %i are not consecutive positions." % (start_g, end_g)) + return + #if + if not Arg1 or not __checkDNA(Arg1) : + O.addMessage(__file__, 3, "EUNKVAR", "Although the syntax of this " \ + "variant is correct, the effect can not be analysed.") + return + #if + MUU.insM(start_g, Arg1) insertionLength = len(Arg1) newStart = MUU.shiftpos(start_g) @@ -674,6 +700,13 @@ def checkInsertion(start_g, end_g, Arg1, MUU, GenRecordInstance, O) : (roll[0] + shift - insertionLength, 0)) #if else : + if shift : + O.addMessage(__file__, 2, "WROLL", "Insertion of %s at position " \ + "%i_%i was given, however, the HGVS notation prescribes " \ + "that it should be an insertion of %s at position %i_%i." % ( + MUU.mutated[newStart:newStop], start_g, start_g + 1, + MUU.mutated[newStart + shift:newStop + shift], + newStart + shift, newStart + shift + 1)) GenRecordInstance.name(start_g, start_g + 1, "ins", MUU.mutated[newStart + shift:newStop + shift] , "", (roll[0], shift)) @@ -899,6 +932,9 @@ def __rv(MUU, RawVar, GenRecordInstance, parts, O, transcript) : def __ppp(MUU, parts, GenRecordInstance, O) : if parts.RawVar or parts.SingleAlleleVarSet : + if parts.RefType == 'r' : + O.addMessage(__file__, 4, "ERNA", "Descriptions on RNA level " \ + "are not supported.") if parts.RefType in ['c', 'n'] : GS, W = None, None goi, toi = O.getOutput("geneSymbol")[-1] @@ -1194,6 +1230,7 @@ def process(cmd, C, O) : fullDescr =\ "%st%s:%c.%s" % (reference, j.name, j.molType, descr) O.addOutput("descriptions", fullDescr) + #if else: O.addOutput("descriptions", (i.name)) @@ -1203,12 +1240,14 @@ def process(cmd, C, O) : fullpDescr = "%sp%s:%s" % (reference, j.name, pDescr) O.addOutput("protDescriptions", fullpDescr) cAcc, pAcc = j.transcriptID, j.proteinID + #if O.addOutput("NewDescriptions", ( iName, jName, mType, cDescr, pDescr, gAcc, cAcc, pAcc, fullDescr, fullpDescr)) - - #if + #for + #for + #if else : for i in GenRecordInstance.record.geneList : for j in sorted(i.transcriptList, key = attrgetter("name")) : @@ -1232,11 +1271,13 @@ def process(cmd, C, O) : reference, iName, jName, pDescr) O.addOutput("protDescriptions", fullpDescr) cAcc, pAcc = j.transcriptID, j.proteinID + #if O.addOutput("NewDescriptions", ( iName, jName, mType, cDescr, pDescr, gAcc, cAcc, pAcc, fullDescr, fullpDescr)) #for + #for #else diff --git a/src/index.py b/src/index.py index e67584ccd6970cb8e8897597f6bd980213b4379a..60f123adc13e78f94f2c32c7af39d0e6303fd53f 100644 --- a/src/index.py +++ b/src/index.py @@ -44,6 +44,7 @@ def snp(req) : R = Retriever.Retriever(C.Retriever, O, None) R.snpConvert(rsId) O.addMessage(__file__, -1, "INFO", "Finished processing rs%s" % rsId) + #if args = { "snp" : O.getOutput("snp"), @@ -63,6 +64,16 @@ def index(req) : return W.tal("HTML", "templates/index.html", {}) #index +def help(req) : + W = Web.Web() + return W.tal("HTML", "templates/help.html", {}) +#about + +def about(req) : + W = Web.Web() + return W.tal("HTML", "templates/about.html", {}) +#about + def nameGenerator(req): W = Web.Web() return W.tal("HTML", "templates/generator.html", {}) @@ -113,11 +124,15 @@ def check(req) : else : reference += ".gb" + pe = O.getOutput("parseError") + if pe : + pe[0] = pe[0].replace('<', "<") + args = { "lastpost" : name, "messages" : O.getMessages(), "summary" : summary, - "parseError" : O.getOutput("parseError"), + "parseError" : pe, "errors" : errors, "genomicDescription" : W.urlEncode([O.getIndexedOutput( "genomicDescription", 0)])[0], @@ -188,10 +203,15 @@ def syntaxCheck(req) : #else : # args["messages"].append("The syntax of this variant is OK!") #if + + pe = O.getOutput("parseError") + if pe : + pe[0] = pe[0].replace('<', "<") + args = { "variant" : variant, "messages" : O.getMessages(), - "parseError" : O.getOutput("parseError"), + "parseError" : pe, "debug" : "" } ret = W.tal("HTML", "templates/parse.html", args) diff --git a/templates/about.html b/templates/about.html new file mode 100644 index 0000000000000000000000000000000000000000..aad12185a7a9348950f49997bb6761ad3331d58a --- /dev/null +++ b/templates/about.html @@ -0,0 +1,49 @@ +<html> + <head> + <title></title> + </head> + <body> + <div metal:define-macro="content"> + <center> + <h3>About</h3> + </center> + Mutalyzer <span tal:content = "structure string:${version}"></span> + is designed and developed by Jeroen F. J. Laros, with the + following exceptions: + <ul> + <li>The LRG parser, as well as the Batch interfaces are written + by Gerben R. Stouten.</li> + <li>The position converter interfaces (webservice and WWW) are + written by Gerard C. P. Schaafsma.</li> + </ul> + Specifications are given by Peter E. M. Taschner and Johan T. den + Dunnen.<br> + <br> + Since the publication is under development, please use the old + reference for now when referring to these pages: + <a href="http://www.ncbi.nlm.nih.gov/entrez/utils/fref.fcgi?PrId=3058&itool=AbstractPlus-def&uid=18000842&db=pubmed&url=http://dx.doi.org/10.1002/humu.20654"> + "Wildeman M et al. (2008). Improving sequence variant + descriptions in mutation databases and literature using the + Mutalyzer sequence variation nomenclature checker. Hum Mutat 29, + 6-13"</a>.<br> + <br> + Project development is sponsored by + <a href="http://www.gen2phen.org" target="_blank"> + <img src="base/images/gen_2_phen_logo_print.png" + width="110" + height="50" + align="middle" + border="0" + alt="Eurogentest"></a> + and has been supported by + <a href="http://www.eurogentest.org" target="_blank"> + <img src="base/images/Eurogentest.png" + width="110" + height="50" + align="middle" + border="0" + alt="Eurogentest"></a> + <br> + </div> + </body> +</html> diff --git a/templates/help.html b/templates/help.html new file mode 100644 index 0000000000000000000000000000000000000000..52ebab3ef0b98aea523fa1b7d755dfcbb1cb428c --- /dev/null +++ b/templates/help.html @@ -0,0 +1,953 @@ +<html> + <head> + <title>Mutalyzer - Sequence variant nomenclature check - Help</title> + </head> + <body> + <div metal:define-macro="content"> + <center><h3>Mutalyzer 2 Help</h3></center> + + <h3>About Mutalyzer</h3> + <p> + Mutalyzer is a tool primarily designed to check descriptions of + sequence variants according to the standard human sequence variant + nomenclature of the Human Genome Sequence Variation Society + (<a href="http://www.hgvs.org/">HGVS</a>) (For an overview, visit + <a href="http://www.hgvs.org/mutnomen/" + >http://www.hgvs.org/mutnomen/</a>). + Mutalyzer aims to encourage the proper use of nomenclature in + publications and reduce redundancy in sequence variation databases. In + principle, Mutalyzer can check descriptions of sequence variants + detected in other organisms, provided that the standard HGVS + nomenclature is applied. + </p> + + <h3>Mutalyzer 2 flow</h3> + <p> + The user specifies a reference sequence (file) and a variant using the + <a href="#NameGenerator">Name Generator</a> or the + <a href="#NameChecker">Name checker</a> interface. The Name Generator + builds the complete variant description for the Name Checker (e.g., + Mutalyzer uses this input to perform the nomenclature check in the + following steps: + </p> + <p> + 1) Retriever: retrieves + <a href="#Ref">reference sequence records</a> from the + <a href="http://www.ncbi.nlm.nih.gov/">NCBI</a> or + <a href="http://www.lrg-sequence.org/">LRG</a> websites. + </p> + <p> + 2) Reference sequence parser: extracts sequence and annotation from + reference sequence records + </p> + <p> + 3) <a href="#SyntaxChecker">Syntax checker</a>: context-free parser + using the complete sequence variant description to check whether the + syntax is correct according to standard HGVS sequence variant + nomenclature + </p> + <p> + 4) <a href="#NameChecker">Name checker</a>: the core nomenclature + checker using the complete sequence variant description to check + whether it is correct according to standard HGVS sequence variant + nomenclature + </p> + <p> </p> + <p> + <b>Additional Mutalyzer 2 functionality:</b> + </p> + <p> + - <a href="#PositionConverter">Position Converter</a>: converts hg18 + and hg19 chromosomal positions to transcript positions in HGVS n. or + c. notation and vice versa. The n. or c. notation should be checked + with the Name checker + </p> + <p> + - <a href="#GenBankUploader">GenBank Uploader</a>: allows you to + upload and use your own reference sequence. + </p> + <p> + - <a href="#SNPConverter">SNP converter</a>: allows you to convert a + <a href="http://www.ncbi.nlm.nih.gov/projects/SNP/">dbSNP</a> rsId to + HGVS notation. + </p> + <p> + - <a href="#BatchChecker">Batch Checkers</a>: interfaces for the + different checkers that accept a large list of descriptions as input. + </p> + <p> + - <a href="#Webservices">Webservices</a>: programmatic access to + Mutalyzer's functionality. + </p> + <p> </p> + + <h2>Introduction</h2> + + <h3>Reference sequences<a name="Ref"></a></h3> + <p> + <b> + We strongly recommend the use of genomic reference sequences + containing proper annotation for optimal use of Mutalyzer's + capabilities to generate descriptions for all transcripts and protein + isoforms of the gene(s) affected by the sequence variation. + </b> + </p> + <p> + Mutalyzer accepts the following reference sequences: + </p> + <p> + 1) GenBank files + </p> + <p> + GenBank records (e.g., NG_007400.1) are specified by a + <i>GenBank accession number</i> (NG_007400) and a version number (.1). + Omission of the version number automatically results in selection of + the most recent version of that record. In case of outdated versions, + Mutalyzer will issue a warning. Alternatively, the unique + <i>GenInfo identifier</i> (gi) of the reference sequence (e.g., + 4506864) can be used with or without the letters “gi”. + Mutalyzer does not accept GenBank records containing no sequence (e.g. + chromosomal reference sequence identifiers referring to contig + accession numbers) or files larger than 10 MB. Mutalyzer also accepts + user-defined files in GenBank format, including slices of chromosomal + reference sequences. These files are specified by unique + <i><a href="#UD">UD identifiers</a></i>, which are returned by Mutalyzer + after upload (See the <a href="#GenBankUploader">GenBank Uploader</a> + section for more information).<br> + </p> + <p> + 2) LRG files + </p> + <p> + Locus Reference Genomic (LRG) files containing uniquely and stable + reference DNA sequences along with all relevant transcript and protein + sequences essential to the description of gene variants (see the + <a href="http://www.lrg-sequence.org/"> LRG website</a> for more + information). LRG files are based on + <a href="http://www.ncbi.nlm.nih.gov/">NCBI</a>'s + <a href="http://www.ncbi.nlm.nih.gov/RefSeq/RSG/">RefSeqGene project</a> + and created in collaboration with the community of research and + diagnostic labs, LSDB curators and mutation consortia. LRG files are + specified by the prefix "LRG_" followed by a number (e.g., + LRG_1). The <a href="http://www.lrg-sequence.org/"> LRG website</a> + lists existing LRG sequences and has an + <a href="ftp://ftp.ebi.ac.uk/pub/databases/lrgex/">FTP site</a> for + downloading LRGs. To maintain LRG stability, Mutalyzer's uploader does + not accept user-defined LRG files. + </p> + + <h3>Variant descriptions</h3> + <p> + The Mutalyzer nomenclature checker accepts variant descriptions in + standard human sequence variant nomenclature format. For users, who are + not familiar with the nomenclature syntax, Mutalyzer's + <a href="#NameGenerator">Name Generator</a> provides a form to acquire + the separate components necessary to construct variant descriptions. + </p> + <p> + These components, which are discussed in more detail below are:\ + </p> + <p> + 1) <a href="#Position">Position numbering scheme (Sequence Type)</a> + </p> + <p> + 2) <a href="#GeneSymbol" + >Gene symbol, transcript variant and protein isoform</a> + </p> + <p> + 3) <a href="#Start">Variant start and end positions</a> + </p> + <p> + 4) <a href="#Mutation">Mutation type</a> + </p> + <p> + 5) <a href="#Deleted">Deleted and Inserted sequence</a> + </p> + <p> + <b><a name="Position"></a>Position numbering scheme (Sequence Type)</b> + </p> + <p> + The standard human sequence variant nomenclature uses different + position numbering schemes to describe variants relative to the + reference sequence. Mutalyzer checks if the specified reference + sequence is compatible with the selected position numbering scheme for + the sequence variation. Variant descriptions involving upstream or + downstream regulatory sequences and intron sequences can only be + checked using genomic sequence records. Therefore, genomic records with + correct annotation of all genes, transcripts and protein isoforms + support most position numbering schemes. Mutalyzer automatically + converts the given variant description to other position numbering + schemes supported by the reference sequence and its annotation. + Mutalyzer will not return results when the selected reference sequence + does not contain sufficient sequence or annotation to support the + nomenclature check of the variant. + </p> + <p> + There are six position numbering schemes (Sequence Types): + </p> + <p> + <i>Genomic</i> + </p> + <p> + The <i>Genomic</i> position numbering scheme is applied to raw genomic + records. The value 1 is assigned to the first base in the record and + all bases are counted from there. In the output, genomic numbering is + indicated by the g. prefix preceding the position number(s). LRG + records and all <i>GenBank</i> records with 'DNA' in the first line + will be accepted. + </p> + <p> + Please note that well-annotated genomic sequence records containing + annotated transcripts and corresponding coding sequences can be used in + combination with non-coding DNA, coding DNA and protein position + numbering schemes. + </p> + <p> + <i>Non-coding DNA (ncDNA)</i> + </p> + <p> + The <i>Non-coding DNA</i> or <i>ncDNA</i> position numbering scheme can + be used with:<br> + a) <i> GenBank</i> records containing genomic sequences with annotated + transcripts without a corresponding coding sequence.<br> + b) LRG records<br> + c) <i> Genbank </i>records containing transcript sequences without + annotated coding sequences, provided that no intronic bases are + involved in the variation. Mutalyzer needs a correctly annotated + genomic reference sequence to check HGVS Non-coding DNA numbering of + intron positions. + </p> + <p> + The value 1 is assigned to to the first base of the transcript in the + record and all the exonic bases are counted from there. Intronic bases + are numbered x+1, x+2, x+3 … y-3, y-2, y-1 where x is the value + of the last exonic base upstream of the intron, y is the value of the + first exonic base downstream of the intron and x and y are consecutive + numbers. Intronic position numbers are always counted from the closest + exonic base. In case of a tie, the upstream base is used. In the + output, ncDNA numbering is indicated by the n. prefix preceding the + position number(s). + </p> + <p> + <i>Coding DNA (cDNA)</i> + </p> + <p> + The <i>Coding DNA</i> or <i>cDNA</i> position numbering scheme can be + used with:<br> + a) <i> Genbank</i> records containing genomic sequences with annotated + transcripts and corresponding coding sequences. <br> + b) LRG records<br> + c) <i>Genbank </i>records containing transcript sequences with + annotated coding sequences, provided that no intronic bases are + involved in the variation. Mutalyzer needs a correctly annotated + genomic reference sequence to check HGVS Coding DNA numbering of intron + positions. + </p> + <p> + The value 1 is assigned to the A of the ATG start codon and all the + exonic bases between start and stop are counted normally.<br> + 5' untranslated region: Exonic bases upstream of (i.e. before) the ATG + are numbered -1, -2, -3 and so on.<br> + 3' untranslated region: Exonic bases downstream of (i.e. behind) the + stop codon are numbered *1, *2, *3 and so on.<br> + Intronic bases in the Coding sequence are numbered x+1, x+2, x+3 + … y-3, y-2, y-1 where x is the value of the last exonic base + upstream of the intron, y is the value of the first exonic base + downstream of the intron and x and y are consecutive numbers. Intronic + position numbers are always counted from the closest exonic base. In + case of a tie, the upstream base is used.<br> + In case of: a 5' untranslated region split over two or more exons: + Intronic bases are numbered -x+1, -x+2, -x+3 … -y-3, -y-2, -y-1 + where -x is the value of the last exonic base upstream of the intron, + -y is the value of the first exonic base downstream of the intron and x + and y are consecutive numbers.<br> + In case of: a 3' untranslated region split over two or more exons: + Intronic bases are numbered *x+1, *x+2, *x+3 … *y-3, *y-2, *y-1 + where *x is the value of the last exonic base upstream of the intron, + *y is the value of the first exonic base downstream of the intron and y + are consecutive numbers. + <br> + In the output, cDNA numbering is indicated by the c. prefix preceding + the position number(s). + </p> + <p> + <i>RNA</i> + </p> + <p> + The <i>RNA</i> position numbering scheme has not yet been implemented + in Mutalyzer 2. The value 1 is assigned to the first base in the record + and from there all bases are counted normally. In the output, RNA + numbering is indicated by the r. notation preceding the position + number(s). + </p> + <p> + <i>Mitochondrial DNA (mtDNA)</i> + </p> + <p> + The <i>Mitochondrial DNA (mtDNA)</i> position numbering scheme uses raw + genomic records. The value 1 is assigned to the first base in the + record and from there all bases are counted normally. + </p> + <p> + <i>Protein</i> + </p> + <p> + The <i>Protein</i> position numbering scheme is used to generate + variant descriptions at protein level from genomic or Coding DNA + descriptions by translation of the Coding sequence. The current version + of Mutalyzer 2 does not yet support checks of protein variants using a + <i>GenBank</i> protein record. The value 1 is assigned to the first + amino acid of the translated Coding sequence and from there all amino + acids are counted normally. In the output, protein variants have the + prefix p. folllowed by the amino acid changes between parentheses to + indicate that they are predicted by translation of the modified Coding + sequence. + </p> + <p> + <i>EST</i> + </p> + <p> + The <i>EST</i> position numbering scheme can be used with + <i>GenBank</i> <i>EST</i> records. The value 1 is assigned to the first + base in the record and from there all bases are counted normally. + Sequence variation descriptions based on EST sequences lack the c. + prefix to indicate that only part of the coding sequence may be + present. All records with 'EST' in the first line will be accepted. + These records do not allow checks of intronic sequence variations. + </p> + <p> + <b><a name="GeneSymbol"></a>Gene Symbol and Variant</b> + </p> + <p> + In genomic records containing annotation of multiple genes, alternative + transcript variants and protein isoforms, only genomic positions are + unambiguous. Descriptions at <i>Non-coding DNA, coding DNA, </i>or + protein level may be ambiguous. Mutalyzer parses the annotation of the + reference sequence record and displays the detected genes, transcript + variants or protein isoforms in the legend at the bottom of the output + page. Mutalyzer uses the annotation to detect potential ambiguity in a + variant description. Further specification of genes, transcript + variants or protein isoforms may be required to solve it. Only Gene + Symbols matching the reference sequence annotation are allowed. + Usually, gene symbols have to be combined with the desired transcript + variant or protein isoform + </p> + <p> + Variant descriptions are accepted in two formats: + </p> + <p> + - A positive integer referring to the order of the transcripts in the + annotation, e.g. <b>1</b>, <b>2</b>, <b>3</b>, ...<br> + - The exact identifier following the underscore behind the Gene symbol + in the legend, e.g. v002 for a transcript variant or i002 for a + protein isoform + </p> + <p> + <b><a name="Start"></a>Start and End Position</b> + </p> + <p> + The Start position is the positional value of the most upstream base or + amino acid in the reference sequence affected by the mutation. The End + position is the positional value of the most downstream base or amino + acid in the reference sequence affected by the mutation. Mutalyzer only + accepts positions contained within the reference sequence. The values + should be a positive integer (whole number) for all position numbering + schemes, except <i>Non-coding DNA </i> and<i> Coding DNA </i> . For + <i>Non-coding </i> and<i> Coding DNA,</i> these positions may also + contain + and - signs to indicate intron positions. For + <i> Coding DNA,</i> positions can also have prefixes - and * to + indicate exonic positions in 5' or 3' untranslated regions. + Furthermore, in descriptions of deletions, exonic positions can be + followed by +? or -? to indicate unknown intronic positions.<br> + The Mutalyzer nomenclature checker has a strict implementation of Start + and End positions in <i>Non-coding DNA </i> and<i> Coding DNA</i> + position numbering schemes. To prevent discrepancies between + <i>Non-coding DNA </i> and<i> Coding DNA</i> descriptions based on + genomic RefSeqGene (NG_) records and the corresponding RefSeq + transcript (NR_ or NM_) records, exon positions may not exceed those of + the transcript annotated in the genomic reference sequence record. + Therefore, Mutalyzer cannot use - or * prefixes to indicate positions + in upstream or downstream intergenic regions. + </p> + <p> + For upstream intergenic positions, Mutalyzer combines the position of + the first nucleotide of the transcript with the suffix -u followed by + the position of the upstream nucleotide. Intergenic bases upstream of + <i>Non-coding DNA </i>are numbered n.1-uy, ..., n.1-u3, n.1-u2, n.1-u1 + where y is the value of the most upstream base and n.1-u1 is the value + of the first intergenic base upstream of the first exon. Intergenic + bases upstream of <i>Coding DNA </i>are numbered c.x-uy, ..., c.x-u3, + c.x-u2, c.x-u1 where x is the value of the first nucleotide of the + first exon and y is the value of the most upstream base. The advantage + of this notation is that the -u position corresponds to the - position + used by to describe transcription factor binding sites. + </p> + <p> + For downstream intergenic positions, Mutalyzer combines the position of + the last nucleotide of the transcript with the suffix +d followed by + the position of the downstream nucleotide. Intergenic bases downstream + of <i>Non-coding DNA </i>are numbered n.x+d1, n.x+d2, n.x+d3 ... where + x is the value of the last nucleotide of the last exon. Intergenic + bases downstream of <i>Coding DNA </i>are numbered c.x+d1, c.x+d2, + c.x+d3, ... where x is the value of the last nucleotide of the last + exon. + </p> + <p> + <b><a name="Mutation"></a>Mutation Type</b> + </p> + <p> + The syntax of the standard human sequence variant nomenclature depends + on the type of mutation. Six mutation types are supported: + </p> + <p> + <i>Substitution</i> + </p> + <p> + A substitution is the replacement of a single nucleotide or amino acid + by another. A substitution involving multiple residues is classified as + an indel. The start and end position should be identical. The original + residue and the new residue have to be specified and must be + non-identical. In the Name Generator, the Deleted Sequence and Inserted + Sequence fields must be filled in. + </p> + <p> + <i>Deletion</i> + </p> + <p> + A deletion is the removal of one or more nucleotides or amino acids + without replacement. In the Name Generator, the Inserted Sequence field + must remain empty. The Deleted Sequence field can be filled in to check + the start and end positions and to match the deleted residues with the + reference sequence (Optional). Please note that the start and end + positions should be equal when only one nucleotide or amino acid is + deleted. + </p> + <p> + <i>Insertion</i> + </p> + <p> + An insertion is the addition of one or more nucleotides or amino acids + without removing any previously existing ones. The starting and end + positions should differ by exactly one. In the Name Generator, Inserted + Sequence must be filled in with the actual new sequence. If the + inserted sequence is already present in the reference sequence at the + location of the insertion, it should be represented as a + duplication. + </p> + <p> + <i>Duplication</i> + </p> + <p> + Duplication is the addition of one or more nucleotides or amino acids + identical to the sequence from the specified start position to the + specified end position, at the end position. In the Name + Generator, Deleted Sequence must remain empty. Inserted Sequence + can be filled in to check the start and end positions and to match the + duplicated residues with the reference sequence (Optional). + </p> + <p> + <i>Insertion/Deletion (indel)</i> + </p> + <p> + An indel is the removal of one or more bases or amino acids, combined + with the addition of one or more bases or amino acids. In case a single + residue is deleted and another residue is inserted, the mutation should + be described as a substitution, not an indel. If the inserted sequence + is the reverse complement of the original sequence, it should be + described as an inversion. Start and end position define the boundaries + of the deletion in the original sequence. In the Name Generator, the + deleted sequence should be entered in the Deleted Sequence field and + the Inserted sequence in the New Sequence field. + </p> + <p> + <i>Inversion (nucleotide sequences only)</i> + </p> + <p> + An inversion is a sequence of two or more bases inserted as its reverse + complement. Start and end position must be non-identical. In the Name + Generator, the Deleted Sequence and Inserted Sequence fields must + remain empty. + </p> + <p> + <b><a name="Deleted"></a>Deleted and Inserted Sequence</b> + </p> + <p> + The syntax of the standard human sequence variant nomenclature requires + specification of the inserted residue(s) for several mutation types. + Specification of the original residue(s) is optional for most types, + except for subsitutions. In the Name Generator, the presence or absence + of these fields depends on the selected Mutation Type. These fields + should be used:<br> + -to enter the original amino acid or nucleotide residue(s) present in + the reference sequence (Deleted Sequence).<br> + -to enter the amino acid(s) or nucleotide residue(s) introduced by the + change (Inserted Sequence). + </p> + + <hr> + + <h3>Mutalyzer Name Checker Help<a name="NameChecker"></a></h3> + <p> + Users can check the correctness of a variant description. The Name + Checker will try to regenerate the variant sequence and name it + according to the HGVS standard human sequence variant nomenclature. + </p> + <p> + Examples: <br> + AB026906.1:c.3_4insG<br> + AB026906.1:c.[1del;4G>T]<br> + AL449423.14(CDKN2A_v1):c.1_10del<br> + UD_127955523176(DMD_v002):c.136G>T<br> + LRG_1t1:c.266G>T + </p> + + <hr> + + <h3>Mutalyzer Syntax Checker Help<a name="SyntaxChecker"></a></h3> + <p> + Users can check the correctness of the standard nomenclature syntax. + The Syntax Checker uses a context-free parser to detect deviations from + the standard nomenclature syntax in the input. The position of + the deviation is indicated in the error message and by a caret (^) + below the description. + </p> + <p> + Examples: <br> + AB026906:c.3_4inG<br> + AB026906.1:c.35_36ins<br> + LRG_1t1:c.266G<T + </p> + + <hr> + + <h3> + Mutalyzer Position Converter Help<a name="PositionConverter"></a> + </h3> + <p> + The Position Converter will convert the positions of the variation + description from the chromosomal position for a specific human genome + build to a position relative to RefSeq transcript reference sequences. + The Position Converter uses a local database containing the mapping + information from the + <a href="http://genome.ucsc.edu/index.html?org=Human" + >UCSC genome browser</a> for human genome builds hg18 (NCBI 36) and + hg19 (GRCh37). The specified version of the RefSeq transcript Accession + number has to be present in the database. The sequence variation + description has <u>not</u> been checked by Mutalyzer's + <a href="#NameChecker">Name Checker</a>. + </p> + <p> + Examples:<br> + NM_003002.2:c.274G>T<br> + chr11:g.111959693G>T<br> + NC_000011.9:g.111959693G>T + </p> + + <hr> + + <h3>Mutalyzer SNP Converter Help<a name="SNPConverter"></a></h3> + <p> + The SNP Converter will submit a <a + href="http://www.ncbi.nlm.nih.gov/projects/SNP/">dbSNP</a> rsID to + dbSNP to retrieve the sequence variation description according to the + HGVS sequence variation description listed in dbSNP.<br> + The sequence variation description has <u>not</u> been checked by + Mutalyzer's <a href="#NameChecker">Name Checker</a>. + </p> + <p> + Example:<br> + SNP Accession number: rs9919552 + </p> + + <hr> + + <h3>Mutalyzer Name Generator Help<a name="NameGenerator"></a></h3> + <p> + The Name Generator aims to assist users, who are not familiar with all + the details of the HGVS standard human sequence variant nomenclature, + to construct variant descriptions. The Name Generator presents a form + to collect the separate components of a variant description described + above. The variant description generated is subsequently used by the + Name Checker to construct the variant sequence and name it according to + the HGVS standard human sequence variant nomenclature. + </p> + <p> + Example: <br> + Reference: AL449423.14<br> + Sequence Type: Coding DNA<br> + Gene symbol: CDKN2A<br> + Transcript: v_1 + </p> + <p> + Variant 1<br> + Mutation Type: Substitution<br> + Start Position: 112<br> End Position: 112<br> + Deleted Sequence: C<br> + Inserted Sequence: T + </p> + + <hr> + + <h3>Mutalyzer Batch Checker Help<a name="BatchChecker"></a></h3> + <p> + <br> + The Batch checkers support submission of files containing large + datasets to the <a href="#NameChecker">Name Checker</a>, + <a href="#SyntaxChecker">Syntax Checker</a>, and + <a href="#PositionConverter">Position Converter</a> tools. + </p> + <p>The Mutalyzer batch checker accepts the following file formats + <ul> + <li>Tab Delimited Text File</li> + <li>Microsoft Excel XML File</li> + <li>OpenOffice .odt File</li> + </ul> + </p> + + <h5> + We accept two types of input files, you can download examples below + </h5> + + <h5> + New Style <a href="downloads/batchtestnew.txt">Download Example File</a> + </h5> + <div style="padding-left:20px; width:400px"> + <p> + This file format has no header-row and no columns. Instead each row + contains a single variant for the Batch check. + </p> + <table> + <tr> + <td>AB026906.1:c.274G>T</td> + </tr> + <tr> + <td>AL449423.14(CDKN2A_v002):c.5_400del<td> + </tr> + </table> + </div> + + <h5> + Old Style: + <a href="downloads/batchtestold.txt">Download Example File</a> + </h5> + <div style="padding-left:20px; width:400px"> + <p> + This file format has a header-row, which consists of three tab + delimited fields. In each following row, the corresponding data is + also tab delimited.The gene symbol field may be left empty, when it + is not nessary to select a particular gene or transcript. + </p> + <table> + <tr> + <td>AccNo</td><td>Genesymbol</td><td>Mutation</td> + </tr> + <tr> + <td>AB026906.1</td><td>SDHD</td><td>g.7872G>T</td> + </tr> + </table> + </div> + + <h5>Output Format</h5> + <div style="padding-left:20px; width:400px"> + <p> + The output of a Mutalyzer Batch run is a Tab Delimited Text file, + which has a header-row to clarify the results. + </p> + </div> + <p> + Users can upload a tab-delimited text file with the sequence + variations to be checked. Files for the Name Checker and the Syntax + Checker may contain any combination of reference sequences and sequence + types for different genes. Mutalyzer's + <i><a href="#UD">UD identifiers</a></i> can also be used, but we + strongly suggest to update any GenBank record following + <a href="http://www.ncbi.nlm.nih.gov/Genbank/update.html" + >these instructions</a>.<br> + </p> + <p> + A message containing a link to the results will be send to the e-mail + address specified, when the analysis is finished, but Mutalyzer's + progress can be followed in the browser window also. Performance + depends on the server load and the number of reference sequence records + to be downloaded. The program will process approximately 100 variations + per minute, when using a single reference sequence record. + </p> + <p> + The Batch checkers use JavaScript to update the progress report. In + Internet Explorer, progress may not be reported correctly. Adding + Mutalyzer to your trusted sites is one option to solve this. + </p> + + <hr> + + <h2>Mutalyzer Output</h2> + <p> + Mutalyzer has been designed to issue warnings, when correcting entries, + encountering inconsistencies, incomplete sequences or annotation, or + identifying variations with potential effects on splicing before + presenting the results of the analysis. Errors will be generated when + the entries can not be processed properly (see below for more + information). <br> + The sequence variation description will always be in the format: + </p> + <p> + <<i>Accession Number</i>>.<<i>version number></i>:<i><sequence type</i>>.<<i >mutation</i>><br> + + (Examples: NM_003002.1:c.5delC or AL449423.14:g.61866_85191del)<br> + or<br> + <<i>Accession Number</i>>.<<i>version number><(Gene Symbol)></i>:<i ><sequence type</i>>.<<i >mutation</i>><br> + In the latter case, the gene symbol may be followed by transcript + variant or protein isoform numbers (e.g., _v001 or _i001, + respectively).<br> + Example: the fictitious sequence variation AL449423.14:g.61866_85191del + corresponds with the following changes in transcript variants and + protein isoforms:<br> + AL449423.14(CDKN2A_v001):c.-271_234del<br> + AL449423.14(CDKN2A_v002):c.5_400del<br> + AL449423.14(CDKN2A_v003):c.1_*3352del<br> + and<br> + CAH70600.1(CDKN2A_i001):p.Met1?<br> + CAH70601.1(CDKN2A_i002):p.Gly2AspfsX41<br> + CAH70599.1(CDKN2A_i003):p.Met1? + </p> + <p> + From the example “CAD55702.1:p.Pro2Arg (missense + mutation)”, you can conclude that the protein in version 1 of the + record CAD55702 has a mutation denoted as Pro2Arg (which signifies an + arginine substituted for a proline at position 2). + </p> + <p> + Please note the following: + </p> + <p> + - Sequence variation descriptions using genomic references in + combination with Sequence Type "Coding DNA" will result in + the use of nucleotides in reverse complement for genes transcribed in + the opposite orientation. + </p> + <p> + - Genbank Identifiers are always converted to Genbank Accession + Numbers, which are automatically retrieved from the annotation based + on the selected Sequence Type. Example: 4506864:c.5del will be + converted into NM_003002.1:c.5delC + </p> + + <hr> + + <h3>GenBank Uploader Help<a name="GenBankUploader"></a></h3> + <p> + Users can upload their own reference sequence file in + <a href="http://www.ncbi.nlm.nih.gov/Sitemap/samplerecord.html" + >GenBank Flat file format</a>, retrieve the genomic sequence of a + gene with its flanking regions, or specify a chromosomal range for use + as a reference sequence. Mutalyzer checks whether the file is in valid + GenBank Flat file format. If so, Mutalyzer stores the file locally and + returns a unique number the <i><a href="#UD">UD identifier</a></i> that + can be used with all different forms of the Mutalyzer Sequence + Variation Nomenclature Checker. This option allows users to use + reference files, which are not present in GenBank, or add information + about alternative transcripts or proteins or additional genes contained + within or derived from the reference sequence to an existing GenBank + file. Users are encouraged to limit their use of this option by + submitting annotation updates and corrections of existing GenBank files + following <a href="http://www.ncbi.nlm.nih.gov/Genbank/update.html" + >these instructions</a>. + </p> + <p> + Uploader options: + </p> + <p> + <b>The reference sequence file is a local file</b> + </p> + <p> + Browse to locate your Genbank Flat file with a .gb extension and press + the submit button. + </p> + <p> </p> + <p> + <b>The reference sequence file can be found at the following URL</b> + </p> + <p> + Enter the URL of the website, where the Genbank Flat file with a .gb + extension can be found and press the submit button. + </p> + <p> </p> + <p> + <b> + Retrieve part of the reference genome for a + (<a href="http://www.genenames.org">HGNC</a>) gene symbol + </b> + </p> + <p> + This option retrieves part of the chromosomal reference sequence, which + is annotated for this gene in the last genome build of the + organism. + </p> + <p> + The organism name should not contain any spaces (e.g., use + homo_sapiens, human or man) + </p> + <p> + Input: + </p> + <div style="padding-left:20px; width:400px"> + <i>Please enter the Gene symbol and organism name without spaces and + specify the length of the flanking sequences</i> + <table> + <tr> + <td>Gene symbol</td> + <td><input type="text" name="genesymbol"></td> + </tr> + <tr> + <td>Organism name</td> + <td><input type="text" name="organism"></td> + </tr> + <tr> + <td>Number of 5' flanking nucleotides</td> + <td><input type="text" name="5utr" value="5000"></td> + </tr> + <tr> + <td>Number of 3' flanking nucleotides</td> + <td><input type="text" name="3utr" value="2000"></td> + </tr> + </table> + </div> + <p> + <b>Retrieve a range of a chromosome</b> + </p> + <p> + Use of NC_accession numbers without version number will result in + retrieval of the latest version. + </p> + <p> + Input: + </p> + <div style="padding-left:20px; width:400px"> + <i>Please enter the accession number of the chromosome or contig and + specify the range</i><br> + <table> + <tr> + <td>Chromosome Accession Number</td> + <td><input type="text" name="chracc"></td> + </tr> + <tr> + <td>Start Position</td> + <td><input type="text" name="start"></td> + </tr> + <tr> + <td>Stop Position</td> + <td><input type="text" name="stop"></td> + </tr> + <tr> + <td>Orientation</td> + <td> + <select name="orientation"> + <option value="1">Forward</option> + <option value="-1">Reverse</option> + </select> + </td> + </tr> + </table> + </div> + <p> + <b>Mutalyzer output for all options:</b> + </p> + <p> + Output:<a name="UD"></a> + </p> + <div style="padding-left:20px; width:400px"> + <p> + Your reference sequence was uploaded successfully. You now can use + mutalyzer with the following accession number as reference: + UD_127955523176 <br> + Download this reference sequence. + </p> + </div> + <p> + The GenBank uploader uses JavaScript to change the form depending on + the selected option. In Internet Explorer, forms may not be displayed + correctly. Adding Mutalyzer to your trusted sites is one option to + solve this. + </p> + + <hr> + + <h3>Mutalyzer Webservices <a name="Webservices"></a></h3> + <p> + Mutalyzer's webservices provide programmatic access to different parts + of Mutalyzer's functionality. In the future, these will be used by + <a href="http://www.LOVD.nl">LOVD</a> to convert coding DNA positions + to chromosomal positions for mapping and display purposes. A full + description of available webservices can be found at the + <a href="documentation">Webservice documentation page</a>. + Example scripts and requirements can be found at the + <a href="webservices">Webservice page</a>. + </p> + + <hr> + + <h3>Using Mutalyzer with sequences from other organisms</h3> + <p> + Mutalyzer can process Genbank reference files from other organisms than + man and will apply the appropriate coding table to translate an open + reading frame into a protein sequence. Please note that all variants + will be described according to the HGVS + <a href="http://www.hgvs.org/mutnomen/" + >standard human sequence variation nomenclature</a>. When trying to + retrieve genomic reference sequences using gene symbols with the + Genbank uploader or when specifying a particular gene in a genomic + reference sequence, the gene symbol should be similar to that used in + the (genome) sequence annotation. + </p> + + <h3>Errors and feature requests</h3> + <p> + Any error message gives an indication of the problem encountered and + replicates the input of the user. Most errors occurring after mistyping + should be easy to understand and can be corrected immediately by + altering the data in the field specified. In other cases, Mutalyzer + should advise you to contact + <a href="mailto:Mutalyzer@humgen.nl">us</a> when the error persists. + Please specify your input and which tool you used. + </p> + <p> + Occasionally, Mutalyzer will display an Internal Server Error message + due to unexpected behavior. You can use Mutalyzer's + <a href="https://www.mutalyzer.nl/projects/mutalyzer2/" + >bugtracking system</a> to report errors and send in feature requests. + </p> + + <h3>Citing Mutalyzer </h3> + <p> + When you use Mutalyzer, please cite this paper: Wildeman M, van + Ophuizen E, den Dunnen JT, Taschner PE. Improving sequence variant + descriptions in mutation databases and literature using the MUTALYZER + sequence variation nomenclature checker. + <a href="http://www.ncbi.nlm.nih.gov/entrez/utils/fref.fcgi?PrId=3058&itool=AbstractPlus-def&uid=18000842&db=pubmed&url=http://dx.doi.org/10.1002/humu.20654">Hum Mutat 29:6-13 (2008)</a> + [<a href="http://www.ncbi.nlm.nih.gov/pubmed/18000842?" + >PMID: 18000842</a>]. + </p> + <p> + Mutalyzer 2 has been completely redesigned by Jeroen F.J. Laros, with + help from Gerben R. Stouten and Gerard C. P. Schaafsma, according to + specifications provided by Peter E. M. Taschner and Johan T. den + Dunnen. The different parts of the nomenclature checker functionality + have been separated into modules, which can be used as independent + webservices and undergo further development and extension in the + future. + </p> + + <hr> + + <p> + If you have any comments or suggestions be sure to let us know! + </p> + + <p> + Last modified: August 6, 2010 + </p> + <a href="mailto:Mutalyzer@humgen.nl"> + <address>mutalyzer@humgen.nl</address></a> + </div> + </body> +</html> diff --git a/templates/index.html b/templates/index.html index 052a4275e1577814befef8a0215fae02ebf95d0e..329d53a3875ac2055cc7749102e6c4507921b830 100644 --- a/templates/index.html +++ b/templates/index.html @@ -50,28 +50,6 @@ </li> </ul> <br> - Mutalyzer <span tal:content = "structure string:${version}"></span> - is designed and developed by Dr. Jeroen F. J. Laros, with the - following exceptions: - <ul> - <li>The LRG parser, as well as the Batch interfaces are written - by Gerben R. Stouten.</li> - <li>The position converter interfaces (webservice and WWW) are - written by Ir. Gerard C. P. Schaafsma.</li> - </ul> - Specifications are given by Dr. Peter E. M. Taschner and Prof. Dr. - Johan T. den Dunnen.<br> - <br> - Since the publication is under development, please use the old - reference for now when referring to these pages: - <a href="http://www.ncbi.nlm.nih.gov/entrez/utils/fref.fcgi?PrId=3058&itool=AbstractPlus-def&uid=18000842&db=pubmed&url=http://dx.doi.org/10.1002/humu.20654"> - "Wildeman M et al. (2008). Improving sequence variant - descriptions in mutation databases and literature using the - Mutalyzer sequence variation nomenclature checker. Hum Mutat 29, - 6-13" - </a>.<br> - <br> - <br> <!-- Mutalyzer <span tal:content = "structure string:${version}"></span> is written completely in <a href="http://www.python.org">Python</a>. The @@ -86,22 +64,6 @@ <a href = "http://www.sun.com">SUN Microsystems</a> with server hardware within the scope of the Academic Excellence Grant (AEG) program (award EDUD-7832-080223-CNE).<br> - Project development is sponsored by - <a href="http://www.gen2phen.org" target="_blank"> - <img src="base/images/gen_2_phen_logo_print.png" - width="110" - height="50" - align="middle" - border="0" - alt="Eurogentest"></a> - and has been supported by - <a href="http://www.eurogentest.org" target="_blank"> - <img src="base/images/Eurogentest.png" - width="110" - height="50" - align="middle" - border="0" - alt="Eurogentest"></a> </div> </body> </html> diff --git a/templates/menu.html b/templates/menu.html index a8abaa0a3bdb1417f7c0f44df3efa1d38da57065..0e1d4ddb4a21e5efad2eef1cec15aeae8a6398d6 100644 --- a/templates/menu.html +++ b/templates/menu.html @@ -40,7 +40,7 @@ preloadImages('base/images/bullitlicht1.gif', 'base/images/bullitlicht2.gif');"> <!-- Header --> - <a id="top"></a> + <a id = "top" name = "top"></a> <table width="98%" border="0" @@ -89,6 +89,8 @@ <td align="right"> <a href="index" class="hornav">home</a> + <a href="about" + class="hornav">about</a> <a tal:attributes = "href string:mailto:${contactEmail}" class="hornav">contact</a> <a href="#bottom" class="hornav">go to bottom</a> @@ -120,81 +122,6 @@ <img src="base/images/1x1b.gif" height="19" border="0"> </td> </tr> - - <!-- Home - <tr> - <td valign="top" width="20"> - <img src="base/images/bullitdonker.gif" id="b_"> - </td> - <td colspan="3"> - <a id="page_" - onClick="swapActive('');" - href="/" - onMouseover="navAct('base/images/bullitlicht1.gif', - '');" - onMouseout="navDeAct('base/images/bullitdonker.gif', - '');" - class="vertnavsub">Home</a> - </td> - </tr> - --> - - <!-- Contact - -> - <tr> - <td valign="top" width="20"> - <img src="base/images/bullitdonker.gif" id="b_contact"> - </td> - <td colspan="3"> - <a id="page_contact" - onClick="swapActive('contact');" - href="/#contact" - onMouseover="navAct('base/images/bullitlicht1.gif', - 'contact');" - onMouseout="navDeAct('base/images/bullitdonker.gif', - 'contact');" - class="vertnavsub">Contact</a> - </td> - </tr> - --> - - <!-- Current Projects --> - <!-- - <tr> - <td valign="top" width="20"> - <img src="base/images/bullitdonker.gif" id="b_projects"> - </td> - <td colspan="3"> - <a id="page_projects" - onClick="swapActive('projects');" - href="/#projects" - onMouseover="navAct('base/images/bullitlicht1.gif', - 'projects');" - onMouseout="navDeAct('base/images/bullitdonker.gif', - 'projects');" - class="vertnavsub">Current Projects</a> - </td> - </tr> - <!- - Current Projects sub: SNP - -> - <tr style="display:none" id="projects_0"> - <td></td> - <td valign="baseline" width="10"> - <img src="base/images/bullitmiddel.gif" id="b_projects_snp"> - </td> - <td colspan="2"> - <a id="page_projects_snp" - onClick="swapActive('projects_snp');" - href="/projects/snp/" - onMouseover="navAct('base/images/bullitlicht2.gif', - 'projects_snp');" - onMouseout="navDeAct('base/images/bullitmiddel.gif', - 'projects_snp');" - class="vertnavsub">SNP</a> - </td> - </tr> - --> - - <!-- Finished Projects --> - <tr> <td valign="top" width="20"> @@ -260,38 +187,6 @@ </td> </tr> - <tr> - <td valign="top" width="20"> - <img src="base/images/bullitdonker.gif" id="b_nameGenerator"> - </td> - <td colspan="3"> - <a id="page_nameGenerator" - onclick="swapActive('nameGenerator');" - href="nameGenerator" - onmouseover="navAct('base/images/bullitlicht1.gif', - 'nameGenerator');" - onmouseout="navDeAct('base/images/bullitdonker.gif', - 'nameGenerator');" - class="vertnavsub">Name Generator</a> - </td> - </tr> - - <tr> - <td valign="top" width="20"> - <img src="base/images/bullitdonker.gif" id="b_upload"> - </td> - <td colspan="3"> - <a id="page_upload" - onclick="swapActive('upload');" - href="upload" - onmouseover="navAct('base/images/bullitlicht1.gif', - 'upload');" - onmouseout="navDeAct('base/images/bullitdonker.gif', - 'upload');" - class="vertnavsub">GenBank uploader</a> - </td> - </tr> - <tr> <td valign="top" width="20"> <img src="base/images/bullitdonker.gif" id="b_snp"> @@ -310,17 +205,17 @@ <tr> <td valign="top" width="20"> - <img src="base/images/bullitdonker.gif" id="b_webservices"> + <img src="base/images/bullitdonker.gif" id="b_nameGenerator"> </td> <td colspan="3"> - <a id="page_webservices" - onclick="swapActive('webservices');" - href="webservices" - onmouseover="navAct('base/images/bullitlicht1.gif', - 'webservices');" - onmouseout="navDeAct('base/images/bullitdonker.gif', - 'webservices');" - class="vertnavsub">Webservices</a> + <a id="page_nameGenerator" + onclick="swapActive('nameGenerator');" + href="nameGenerator" + onmouseover="navAct('base/images/bullitlicht1.gif', + 'nameGenerator');" + onmouseout="navDeAct('base/images/bullitdonker.gif', + 'nameGenerator');" + class="vertnavsub">Name Generator</a> </td> </tr> @@ -347,7 +242,6 @@ </td> <td colspan="2"> <a id="page_batchNameChecker" - onclick="swapActive('batchNameChecker');" href="batchNameChecker" class="vertnavsub">Name Checker</a> </td> @@ -360,7 +254,6 @@ </td> <td colspan="2"> <a id="page_batchSyntaxChecker" - onclick="swapActive('batchSyntaxChecker');" href="batchSyntaxChecker" class="vertnavsub">Syntax Checker</a> </td> @@ -373,12 +266,45 @@ </td> <td colspan="2"> <a id="page_batchPositionConverter" - onclick="swapActive('batchPositionConverter');" href="batchPositionConverter" class="vertnavsub">Position Converter</a> </td> </tr> + <tr> + <td valign="top" width="20"> + <img src="base/images/bullitdonker.gif" id="b_upload"> + </td> + <td colspan="3"> + <a id="page_upload" + onclick="swapActive('upload');" + href="upload" + onmouseover="navAct('base/images/bullitlicht1.gif', + 'upload');" + onmouseout="navDeAct('base/images/bullitdonker.gif', + 'upload');" + class="vertnavsub">GenBank uploader</a> + </td> + </tr> + + <tr> + <td valign="top" width="20"> + <img src="base/images/bullitdonker.gif" id="b_webservices"> + </td> + <td colspan="3"> + <a id="page_webservices" + onclick="swapActive('webservices');" + href="webservices" + onmouseover="navAct('base/images/bullitlicht1.gif', + 'webservices');" + onmouseout="navDeAct('base/images/bullitdonker.gif', + 'webservices');" + class="vertnavsub">Webservices</a> + </td> + </tr> + + <tr><td> </td></tr> + <tr> <td valign="top" width="20"> <img src="base/images/bullitdonker.gif" id="b_help"> @@ -468,7 +394,6 @@ </td> <td colspan="2"> <a id="page_external_hgb" - onclick="swapActive('external_hgb');" href="http://www.genenames.org/guidelines.html" class="vertnavsub">Human Gene Nomenclature</a> </td> @@ -481,7 +406,6 @@ </td> <td colspan="2"> <a id="page_external_hgvs" - onclick="swapActive('external_hgvs');" href="http://www.hgvs.org/mutnomen/" class="vertnavsub">HGVS variation nomenclature</a> </td> @@ -494,7 +418,6 @@ </td> <td colspan="2"> <a id="page_external_hgvsext" - onclick="swapActive('external_hgvsext');" href="downloads/HGVS_nomenclature_extension_proposal.pdf" class="vertnavsub">HGVS nomenclature extension proposal</a> </td> @@ -559,7 +482,10 @@ <center> - <h2 tal:content = "structure string:Mutalyzer ${version}"></h2> + <h2 tal:content = "structure string:Mutalyzer ${version}<br> + <small><small><small><small> + released on ${releaseDate} + </small></small></small></small>"></h2> HGVS nomenclature version <span tal:content = "nomenclatureVersion"></span> </center> @@ -590,7 +516,7 @@ </tr> <tr> <td align="left"> - <a href="javascript:history.back(-1);" + <a href="javascript:history.back(-1);" class="hornav">previous page</a> </td> <td align="middle"> @@ -599,7 +525,9 @@ </td> - <td align="right"><a href="#top" class="hornav">go to top</a></td> + <td align="right"> + <a href="#top" class="hornav">go to top</a> + </td> </tr> <tr> <!-- @@ -620,6 +548,6 @@ </td> </tr> </table> - <a id="bottom"></a> + <a id = "bottom" name = "bottom"></a> </body> </html>