@@ -14,20 +14,40 @@ use std::io::Write;
1414/// print the FlatGFA table of contents
1515#[ derive( FromArgs , PartialEq , Debug ) ]
1616#[ argh( subcommand, name = "toc" ) ]
17- pub struct Toc { }
18-
19- pub fn toc ( gfa : & flatgfa:: FlatGFA ) {
20- eprintln ! ( "header: {}" , gfa. header. len( ) ) ;
21- eprintln ! ( "segs: {}" , gfa. segs. len( ) ) ;
22- eprintln ! ( "paths: {}" , gfa. paths. len( ) ) ;
23- eprintln ! ( "links: {}" , gfa. links. len( ) ) ;
24- eprintln ! ( "steps: {}" , gfa. steps. len( ) ) ;
25- eprintln ! ( "seq_data: {}" , gfa. seq_data. len( ) ) ;
26- eprintln ! ( "overlaps: {}" , gfa. overlaps. len( ) ) ;
27- eprintln ! ( "alignment: {}" , gfa. alignment. len( ) ) ;
28- eprintln ! ( "name_data: {}" , gfa. name_data. len( ) ) ;
29- eprintln ! ( "optional_data: {}" , gfa. optional_data. len( ) ) ;
30- eprintln ! ( "line_order: {}" , gfa. line_order. len( ) ) ;
17+ pub struct Toc {
18+ /// show sizes in bytes instead of element counts
19+ #[ argh( switch, short = 'b' ) ]
20+ bytes : bool ,
21+ }
22+
23+ pub fn toc ( gfa : & flatgfa:: FlatGFA , args : Toc ) {
24+ if args. bytes {
25+ // Show sizes in bytes.
26+ println ! ( "header: {}" , gfa. header. size( ) ) ;
27+ println ! ( "segs: {}" , gfa. segs. size( ) ) ;
28+ println ! ( "paths: {}" , gfa. paths. size( ) ) ;
29+ println ! ( "links: {}" , gfa. links. size( ) ) ;
30+ println ! ( "steps: {}" , gfa. steps. size( ) ) ;
31+ println ! ( "seq_data: {}" , gfa. seq_data. size( ) ) ;
32+ println ! ( "overlaps: {}" , gfa. overlaps. size( ) ) ;
33+ println ! ( "alignment: {}" , gfa. alignment. size( ) ) ;
34+ println ! ( "name_data: {}" , gfa. name_data. size( ) ) ;
35+ println ! ( "optional_data: {}" , gfa. optional_data. size( ) ) ;
36+ println ! ( "line_order: {}" , gfa. line_order. size( ) ) ;
37+ } else {
38+ // Show element counts (which is what we record physically in the TOC).
39+ println ! ( "header: {}" , gfa. header. len( ) ) ;
40+ println ! ( "segs: {}" , gfa. segs. len( ) ) ;
41+ println ! ( "paths: {}" , gfa. paths. len( ) ) ;
42+ println ! ( "links: {}" , gfa. links. len( ) ) ;
43+ println ! ( "steps: {}" , gfa. steps. len( ) ) ;
44+ println ! ( "seq_data: {}" , gfa. seq_data. len( ) ) ;
45+ println ! ( "overlaps: {}" , gfa. overlaps. len( ) ) ;
46+ println ! ( "alignment: {}" , gfa. alignment. len( ) ) ;
47+ println ! ( "name_data: {}" , gfa. name_data. len( ) ) ;
48+ println ! ( "optional_data: {}" , gfa. optional_data. len( ) ) ;
49+ println ! ( "line_order: {}" , gfa. line_order. len( ) ) ;
50+ }
3151}
3252
3353/// list the paths
@@ -379,22 +399,3 @@ pub fn seq_export(args: SeqExport) {
379399 let view = store. as_ref ( ) ;
380400 packedseq:: export ( view, & args. output ) ;
381401}
382-
383- /// get the sizes of GFA components, in bytes
384- #[ derive( FromArgs , PartialEq , Debug ) ]
385- #[ argh( subcommand, name = "size" ) ]
386- pub struct SizeStats { }
387-
388- pub fn size_stats ( gfa : & flatgfa:: FlatGFA ) {
389- println ! ( "header: {}" , gfa. header. size( ) ) ;
390- println ! ( "segs: {}" , gfa. segs. size( ) ) ;
391- println ! ( "paths: {}" , gfa. paths. size( ) ) ;
392- println ! ( "links: {}" , gfa. links. size( ) ) ;
393- println ! ( "steps: {}" , gfa. steps. size( ) ) ;
394- println ! ( "seq_data: {}" , gfa. seq_data. size( ) ) ;
395- println ! ( "overlaps: {}" , gfa. overlaps. size( ) ) ;
396- println ! ( "alignment: {}" , gfa. alignment. size( ) ) ;
397- println ! ( "name_data: {}" , gfa. name_data. size( ) ) ;
398- println ! ( "optional_data: {}" , gfa. optional_data. size( ) ) ;
399- println ! ( "line_order: {}" , gfa. line_order. size( ) ) ;
400- }
0 commit comments