BACKGROUND
the nucleotide composition of genomic dna is very variable.
this variation is not limited to non-coding dna or influencing codon-usage, it also results in changes to the amino acid composition of proteins.
for example, the redundancy of the genetic code does not completely buffer the amino acid composition of orthologous proteins from vaccinia virus  and molluscum contagiosum virus .
the amino acid composition of the dna polymerases of vacv and mocv illustrate that the propensity for certain amino acids to be more common in proteins encoded by a+t or g+c rich genes; the vacv and mocv proteins contain the following percentages of lysine , arginine , alanine , leucine  and isoleucine , respectively.
there is also considerable variation in dna composition within a genome.
regions rich in repeated dna often have a nucleotide composition quite different to the genome average.
similarly, all poxvirus promoters are very a+t rich regardless of the average genome nucleotide composition.
however, it is less well appreciated that there is also a wide variation in the dna composition of individual genes, the a+t% range for individual genes in vacv and mocv is  <dig>  –  <dig>  and  <dig>  –  <dig> , respectively.
the driving force for divergence in dna composition among evolutionary related poxviruses is unknown, as is the ancestral composition, but range of dna composition among genes is determined by at least  <dig> components: 1) the natural resistance of some genes to change because of restrictive amino acid requirements, and 2) the acquisition of novel genes after speciation of the viruses.
other processes related to dna replication, repair and transcription may also influence nucleotide biases of the two dna strands  <cit> .
for example, since the coding strand of bacterial genomic dna tends to be purine rich  <cit>  and majority of genes are transcribed in the same direction as the movement of the replication fork there is asymmetric nucleotide composition along the genome such that the dna composition may be used to predict the origin and termini of replication  <cit> .
genomic variations in nucleotide composition have been successfully studied using several graph-based methods.
one such technique is to draw a cumulative skew diagram, which plots the relative amounts of two nucleotides in a given dna sequence  <cit> .
a gc skew, for example, is calculated across a genome as the sum of a series of sliding windows of specified length; the window size can be  <dig> or much larger for a complete genome.
the shape of the resulting cumulative dinucleotide curves have been correlated with important sequence features including viral origins of replication  <cit>  and genome rearrangements in bacteria  <cit> .
the "dna walk" is another method used to study nucleotide distribution, first described by lobry  <cit>  and used to detect origins of dna replication in bacteria genomes.
to graph a dna walk, a direction  is assigned to each of the four nucleotides and the sequence is then plotted on a graph, beginning at  and moving one step in the direction specified by each successive nucleotide.
this paper describes graphdna, a new java software application, that was developed as a platform-independent application to present dna skews and walks of multiple sequences in a single graph and thus assist in the comparative analysis of nucleotide composition asymmetry.
implementation
to support cross-platform utility, graphdna was developed as a java application.
users initially access and launch the application from a web page using java web start, which also automatically downloads updated versions of the program as they become available.
this ensures users are taking advantage of improvements or added features in the latest software versions.
graphdna can read dna sequences from several sources.
first, this input can consist of a single file containing one or more dna sequences or a series of separate sequence files can be loaded; the nucleotide sequence data may be in fasta, embl or genbank formats.
second, the application can connect to our vocs database at the viral bioinformatics resource centre   <cit>  that stores the complete genomes from more than  <dig> families of viruses; in this case, graphdna also receives the gene annotations for the genomes.
graphdna has been successfully tested with a  <dig> mb dna sequence and can therefore handle all currently sequenced viral and bacterial genomes.
the time required by graphdna to load dna sequences and display plots is dependent upon the size and number of sequences as well as the nucleotide window size used for calculating skews and walks.
the time to load and display a gc skew for  <dig> poxvirus genomes  was approximately  <dig> s with a default window size of  <dig> nucleotide; however, replotting the same data with a window size of  <dig> nucleotides took < <dig> s .
when large  dna sequences are loaded, the program automatically selects a window size of  <dig> nucleotides and permits the user to change that window size, this reduces the processing and display times; for example, the time required for loading and plotting the gc skews of two  <dig> mb dna sequences was approximately  <dig> minutes on a dual  <dig> ghz desktop computer; replotting this data with another nucleotide skew took < <dig> s.
additional features include: 1) the application can accept gapped multiple alignment files in fasta format; this permits homologous regions of genomes to be kept in register and allows easier comparison of skews among several sequences.
horizontal lines are drawn at gapped positions; this reflects no change in nucleotide skew, but an increase in nucleotide count; 2) gene annotations are displayed underneath the main window if they have been loaded with the dna sequences , if multiple sequences have annotations, a menu allows the user to choose which annotations to display; 3) it is possible to zoom into regions of the plots , both the plot and the genome annotation displays are affected by this procedure and clicking the "recenter button" switches back to the full genome view.
graphdna allows plots to be saved as png formatted files , the best resolution is obtained if the application window is stretched to its maximum size before saving; alternatively, screen images can be captured.
algorithms
in a "dna walk" graph, sequences are plotted starting at x =  <dig>  y =  <dig>  for each nucleotide , the position of the next point in the plot is calculated relative to the current position: for nucleotide c, g, t or a, the position moves north, south, east or west, respectively.
if the current symbol is degenerate or a gap symbol, the position is unchanged.
for a window size of k, every k'th point is actually drawn on the graph .
a slider bar moves markers along the plots to locate specific regions of the sequences since the position of a particular nucleotide is solely dependent on the composition of the preceding nucleotide sequence, not on the position in the sequence.
purine skews are calculated from the first position in the sequence to the last: for each nucleotide, increment a counter if this nucleotide is a purine; decrement it if it is a pyrimidine.
the effect is to compute the number of purines minus the number of pyrimidines from the first position to the current one.
the x-axis of the skew graph is the position in the sequence; the y-axis is the value of the counter at this position.
keto and dinucleotide skews are calculated analogously, with the obvious differences.
for a window size of k, every k'th position is drawn.
comparison to other programs
several other programs have been written to display dna strand composition asymmetries.
dnaskew  <cit>  is a perl script limited to a command line interface; genskew  <cit>  and artemis  <cit>  are java applications, but are limited to certain nucleotide skews and cannot plot multiple sequences; genometrician's scooter™  <cit>  is able to perform dna walks and skews, but is not open source or platform independent.
graphdna was written to overcome these limitations and also to be compatible with the vocs database  <cit>  for access to viral genomes.
RESULTS
the graphdna application has three basic graphing functions: dna walks, cumulative dinucleotide skews and cumulative purine/keto skews.
the dna walk analysis is most effective when nucleotide composition trends extend over a considerable length.
for example, dna walks have been successful in finding the origins and termini of replication in bacterial genomes  <cit> .
an example of cumulative purine/keto skews is shown in figure  <dig>  which demonstrates that different regions of the ectromelia virus, an orthopoxvirus, genome have considerably different purine content.
it was observed that the "w" shape of the purine skew  was very similar to the pattern for transcriptional orientation of the viral genes along the linear genome .
examination of the genes from multiple orthopoxviruses confirmed that the coding strand of poxvirus genes tends to be slightly purine rich  <cit> .
this information can be used to help annotate novel genes in poxvirus genomes in that if there are small orfs on both dna strands, then the strand with the highest purine content is most likely to be the coding strand; however, purine content is only one of a variety of information sources used in the annotation process  <cit> .
cumulative skew analysis may also be pertinent to some eukaryotic dna sequences; for example, the coding strand of leishmania major strain friedlin chromosome  <dig>  <cit>  is associated with an excess of pyrimidines.
the cumulative dinucleotide skews display the abundance of one nucleotide relative to another across the length of a dna sequence that may represent a single gene or a complete genome.
the program plots the cumulative dinucleotide counts calculated in a series of "windows", which may be as small as  <dig> nt, along the dna sequences; graphdna offers all six possible cumulative skews .
gc and at skews have been widely used to predict termini and origins of replication in bacterial  <cit>  and mammalian genomes  <cit> , transcription start sites in plants and fungi  <cit> , as well as transcription regions in the human genome  <cit> .
in poxviruses, some skews, for example the ga skew, appear to be independent of the orientation of transcription, and instead reflect the overall nucleotide composition of the genome .
however, when genomes are examined in more detail, heterogeneities can be observed.
the ga skew of the  <dig> –  <dig> kb region of the crocodilepox virus genome from figure  <dig> is displayed in figure  <dig>  genes  <dig>   <dig>   <dig>   <dig>   <dig>   <dig> and  <dig> appear to make up an island of unusual skew.
this is interesting because genes  <dig>   <dig>   <dig> and  <dig> are distantly related and probably arose from ancient duplication events.
of all the genes in the region  <dig> –  <dig>  only gene  <dig> has any similarity to other known proteins; it is similar to dnaj-like molecular chaperones and has an ortholog in mocv, another gc rich poxvirus.
the unusual overall base composition of this region may be the result of incorporation of foreign dna into an ancestral crocodilepox virus genome.
it is likely that this was through multiple events and an early smaller dna island may have served as an integration site for subsequent insertions.
since the above analysis of crocodilepox genes indicated that dna composition signature can reflect evolutionary history even when protein sequences have diverged so far that reliable alignments are very difficult to generate and are limited to a very few essential amino acids , we looked at the relationship of sars-coronavirus to other coronaviruses using nucleotide skews.
when the sars-coronavirus was first sequenced, it was reported that this novel virus was similarly and very distantly related to the three previously known groups of coronaviruses  <cit> .
subsequently, it was reported that sars-coronavirus is slightly closer to the group  <dig> coronaviruses  <cit>  and that it probably arose through a series of recombination events  <cit> .
however, an examination of composition skews revealed that for most skews sars-coronavirus and mouse hepatitis virus , a group  <dig> coronavirus are the most different; for example, see the keto, ga and at skews in figure 4a, 4b and 4c, respectively.
only the ac skews are most similar for sars-coronavirus and the group  <dig> mhv .
several skews, and especially the purine skew  indicate that the sars-coronavirus genome is the most variable with regard to consistency of nucleotide composition across the genome.
this is consistent with the ancient recombination events among ancestral coronaviruses proposed by zhang et al.
<cit>  after employing a battery of blast searches and  <dig> recombination detection techniques.
others have also examined nucleotide skews of coronaviruses, but this has been limited to gc skews  <cit>  that show a depletion of cytosine relative to guanosine in the  <dig> kb at the 3' end of the sars-coronavirus genome.
both grigoriev  <cit>  and pyrc et al.
<cit>  suggested that this resulted from the unusual transcription process of the coronaviruses, but differed in their detailed models.
CONCLUSIONS
graphdna is an easy to use java web start application designed to display and compare dna sequences graphically using three available methods – dna walks, cumulative purine/keto skews and cumulative dinucleotide skews.
although others have used nucleotide skews to analyze genomes and have predicted coding strand selection, replication origin and termini sites  <cit> , the tools to perform these analyses have not been readily accessible by the general research community.
in contrast, graphdna is freely accessible via the internet and runs on most computer platforms; in addition the source code is available through an open source license.
graphdna offers a quick and easy method to compare the nucleotide skews of genomes and provides an additional analysis tool that is especially useful for characterization of distantly related nucleotide sequences.
availability and requirements
project name: graphdna
project home page: graphdna may be accessed from the workbench at
operating systems: all platforms supporting sun's jre version  <dig> .
<dig> or compatible
programming languages: java, sql
other requirements: java  <dig>  or higher
license: open software license
authors' contributions
jmt designed the interface and coded the prototype; dh and gb coded the final application; vt and cu described and specified the features of graphdna, tested the application, provided usage examples and wrote the manuscript.
all authors read and approved the final manuscript.

 the nucleotide composition of genomic dna is very variable. this variation is not limited to non-coding dna or influencing codon-usage, it also results in changes to the amino acid composition of proteins. for example, the redundancy of the genetic code does not completely buffer the amino acid composition of orthologous proteins from vaccinia virus and molluscum contagiosum virus. the amino acid composition of the dna polymerases of vacv and mocv illustrate that the propensity for certain amino acids to be more common in proteins encoded by a+t or g+c rich genes; the vacv and mocv proteins contain the following percentages of lysine, arginine, alanine, leucine and isoleucine, respectively. there is also considerable variation in dna composition within a genome. regions rich in repeated dna often have a nucleotide composition quite different to the genome average. similarly, all poxvirus promoters are very a+t rich regardless of the average genome nucleotide composition. however, it is less well appreciated that there is also a wide variation in the dna composition of individual genes, the a+t% range for individual genes in vacv and mocv is – and –, respectively. the driving force for divergence in dna composition among evolutionary related poxviruses is unknown, as is the ancestral composition, but range of dna composition among genes is determined by at least components: 1) the natural resistance of some genes to change because of restrictive amino acid requirements, and 2) the acquisition of novel genes after speciation of the viruses. other processes related to dna replication, repair and transcription may also influence nucleotide biases of the two dna strands. for example, since the coding strand of bacterial genomic dna tends to be purine rich and majority of genes are transcribed in the same direction as the movement of the replication fork there is asymmetric nucleotide composition along the genome such that the dna composition may be used to predict the origin and termini of replication. genomic variations in nucleotide composition have been successfully studied using several graph-based methods. one such technique is to draw a cumulative skew diagram, which plots the relative amounts of two nucleotides in a given dna sequence. a gc skew, for example, is calculated across a genome as the sum of a series of sliding windows of specified length; the window size can be or much larger for a complete genome. the shape of the resulting cumulative dinucleotide curves have been correlated with important sequence features including viral origins of replication and genome rearrangements in bacteria. the "dna walk" is another method used to study nucleotide distribution, first described by lobry and used to detect origins of dna replication in bacteria genomes. to graph a dna walk, a direction is assigned to each of the four nucleotides and the sequence is then plotted on a graph, beginning at and moving one step in the direction specified by each successive nucleotide. this paper describes graphdna, a new java software application, that was developed as a platform-independent application to present dna skews and walks of multiple sequences in a single graph and thus assist in the comparative analysis of nucleotide composition asymmetry. implementation to support cross-platform utility, graphdna was developed as a java application. users initially access and launch the application from a web page using java web start, which also automatically downloads updated versions of the program as they become available. this ensures users are taking advantage of improvements or added features in the latest software versions. graphdna can read dna sequences from several sources. first, this input can consist of a single file containing one or more dna sequences or a series of separate sequence files can be loaded; the nucleotide sequence data may be in fasta, embl or genbank formats. second, the application can connect to our vocs database at the viral bioinformatics resource centre that stores the complete genomes from more than families of viruses; in this case, graphdna also receives the gene annotations for the genomes. graphdna has been successfully tested with a mb dna sequence and can therefore handle all currently sequenced viral and bacterial genomes. the time required by graphdna to load dna sequences and display plots is dependent upon the size and number of sequences as well as the nucleotide window size used for calculating skews and walks. the time to load and display a gc skew for poxvirus genomes was approximately s with a default window size of nucleotide; however, replotting the same data with a window size of nucleotides took < s. when large dna sequences are loaded, the program automatically selects a window size of nucleotides and permits the user to change that window size, this reduces the processing and display times; for example, the time required for loading and plotting the gc skews of two mb dna sequences was approximately minutes on a dual ghz desktop computer; replotting this data with another nucleotide skew took < s. additional features include: 1) the application can accept gapped multiple alignment files in fasta format; this permits homologous regions of genomes to be kept in register and allows easier comparison of skews among several sequences. horizontal lines are drawn at gapped positions; this reflects no change in nucleotide skew, but an increase in nucleotide count; 2) gene annotations are displayed underneath the main window if they have been loaded with the dna sequences, if multiple sequences have annotations, a menu allows the user to choose which annotations to display; 3) it is possible to zoom into regions of the plots, both the plot and the genome annotation displays are affected by this procedure and clicking the "recenter button" switches back to the full genome view. graphdna allows plots to be saved as png formatted files, the best resolution is obtained if the application window is stretched to its maximum size before saving; alternatively, screen images can be captured. algorithms in a "dna walk" graph, sequences are plotted starting at x = y = for each nucleotide, the position of the next point in the plot is calculated relative to the current position: for nucleotide c, g, t or a, the position moves north, south, east or west, respectively. if the current symbol is degenerate or a gap symbol, the position is unchanged. for a window size of k, every k'th point is actually drawn on the graph. a slider bar moves markers along the plots to locate specific regions of the sequences since the position of a particular nucleotide is solely dependent on the composition of the preceding nucleotide sequence, not on the position in the sequence. purine skews are calculated from the first position in the sequence to the last: for each nucleotide, increment a counter if this nucleotide is a purine; decrement it if it is a pyrimidine. the effect is to compute the number of purines minus the number of pyrimidines from the first position to the current one. the x-axis of the skew graph is the position in the sequence; the y-axis is the value of the counter at this position. keto and dinucleotide skews are calculated analogously, with the obvious differences. for a window size of k, every k'th position is drawn. comparison to other programs several other programs have been written to display dna strand composition asymmetries. dnaskew is a perl script limited to a command line interface; genskew and artemis are java applications, but are limited to certain nucleotide skews and cannot plot multiple sequences; genometrician's scooter™ is able to perform dna walks and skews, but is not open source or platform independent. graphdna was written to overcome these limitations and also to be compatible with the vocs database for access to viral genomes.  the graphdna application has three basic graphing functions: dna walks, cumulative dinucleotide skews and cumulative purine/keto skews. the dna walk analysis is most effective when nucleotide composition trends extend over a considerable length. for example, dna walks have been successful in finding the origins and termini of replication in bacterial genomes. an example of cumulative purine/keto skews is shown in figure which demonstrates that different regions of the ectromelia virus, an orthopoxvirus, genome have considerably different purine content. it was observed that the "w" shape of the purine skew was very similar to the pattern for transcriptional orientation of the viral genes along the linear genome. examination of the genes from multiple orthopoxviruses confirmed that the coding strand of poxvirus genes tends to be slightly purine rich. this information can be used to help annotate novel genes in poxvirus genomes in that if there are small orfs on both dna strands, then the strand with the highest purine content is most likely to be the coding strand; however, purine content is only one of a variety of information sources used in the annotation process. cumulative skew analysis may also be pertinent to some eukaryotic dna sequences; for example, the coding strand of leishmania major strain friedlin chromosome is associated with an excess of pyrimidines. the cumulative dinucleotide skews display the abundance of one nucleotide relative to another across the length of a dna sequence that may represent a single gene or a complete genome. the program plots the cumulative dinucleotide counts calculated in a series of "windows", which may be as small as nt, along the dna sequences; graphdna offers all six possible cumulative skews. gc and at skews have been widely used to predict termini and origins of replication in bacterial and mammalian genomes, transcription start sites in plants and fungi, as well as transcription regions in the human genome. in poxviruses, some skews, for example the ga skew, appear to be independent of the orientation of transcription, and instead reflect the overall nucleotide composition of the genome. however, when genomes are examined in more detail, heterogeneities can be observed. the ga skew of the – kb region of the crocodilepox virus genome from figure is displayed in figure genes and appear to make up an island of unusual skew. this is interesting because genes and are distantly related and probably arose from ancient duplication events. of all the genes in the region – only gene has any similarity to other known proteins; it is similar to dnaj-like molecular chaperones and has an ortholog in mocv, another gc rich poxvirus. the unusual overall base composition of this region may be the result of incorporation of foreign dna into an ancestral crocodilepox virus genome. it is likely that this was through multiple events and an early smaller dna island may have served as an integration site for subsequent insertions. since the above analysis of crocodilepox genes indicated that dna composition signature can reflect evolutionary history even when protein sequences have diverged so far that reliable alignments are very difficult to generate and are limited to a very few essential amino acids, we looked at the relationship of sars-coronavirus to other coronaviruses using nucleotide skews. when the sars-coronavirus was first sequenced, it was reported that this novel virus was similarly and very distantly related to the three previously known groups of coronaviruses. subsequently, it was reported that sars-coronavirus is slightly closer to the group coronaviruses and that it probably arose through a series of recombination events. however, an examination of composition skews revealed that for most skews sars-coronavirus and mouse hepatitis virus, a group coronavirus are the most different; for example, see the keto, ga and at skews in figure 4a, 4b and 4c, respectively. only the ac skews are most similar for sars-coronavirus and the group mhv. several skews, and especially the purine skew indicate that the sars-coronavirus genome is the most variable with regard to consistency of nucleotide composition across the genome. this is consistent with the ancient recombination events among ancestral coronaviruses proposed by zhang et al. after employing a battery of blast searches and recombination detection techniques. others have also examined nucleotide skews of coronaviruses, but this has been limited to gc skews that show a depletion of cytosine relative to guanosine in the kb at the 3' end of the sars-coronavirus genome. both grigoriev and pyrc et al. suggested that this resulted from the unusual transcription process of the coronaviruses, but differed in their detailed models.  graphdna is an easy to use java web start application designed to display and compare dna sequences graphically using three available methods – dna walks, cumulative purine/keto skews and cumulative dinucleotide skews. although others have used nucleotide skews to analyze genomes and have predicted coding strand selection, replication origin and termini sites, the tools to perform these analyses have not been readily accessible by the general research community. in contrast, graphdna is freely accessible via the internet and runs on most computer platforms; in addition the source code is available through an open source license. graphdna offers a quick and easy method to compare the nucleotide skews of genomes and provides an additional analysis tool that is especially useful for characterization of distantly related nucleotide sequences. availability and requirements project name: graphdna project home page: graphdna may be accessed from the workbench at operating systems: all platforms supporting sun's jre version. or compatible programming languages: java, sql other requirements: java or higher license: open software license authors' contributions jmt designed the interface and coded the prototype; dh and gb coded the final application; vt and cu described and specified the features of graphdna, tested the application, provided usage examples and wrote the manuscript. all authors read and approved the final manuscript. 
multiple sequence formats can be read and multiple sequences may be plotted in a single results window. graphdna is a platform-independent, open source, tool for the analysis of nucleotide trends in dna sequences. these asymmetries in nucleotide composition have been extensively analyzed in prokaryotic and eukaryotic genomes and related to chromosome organization, transcription orientation and other processes in certain organisms. graphdna is a new java application that provides a simple, user-friendly interface for the visualization of dna nucleotide composition. the program accepts genbank, embl and fasta files as an input, and it displays multiple dna nucleotide composition graphs in a single window to allow direct comparisons between the sequences.
 under conditions of no strand bias the number of gs is equal to that of cs for each dna strand; similarly, the total number of ts is equal to that of as. however, within each strand there are considerable local deviations from the a = t and g = c equality. these asymmetries in nucleotide composition have been extensively analyzed in prokaryotic and eukaryotic genomes and related to chromosome organization, transcription orientation and other processes in certain organisms. to carry out analysis of intra-strand nucleotide distribution several graphical methods have been developed.  graphdna is a new java application that provides a simple, user-friendly interface for the visualization of dna nucleotide composition. the program accepts genbank, embl and fasta files as an input, and it displays multiple dna nucleotide composition graphs in a single window to allow direct comparisons between the sequences. we illustrate the use of dna skews for characterization of poxvirus and coronavirus genomes.  graphdna is a platform-independent, open source, tool for the analysis of nucleotide trends in dna sequences. multiple sequence formats can be read and multiple sequences may be plotted in a single results window. 