473,432 Members | 1,390 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,432 software developers and data experts.

Parse script skipping certain data

I have one question regarding a code I wrote to parse a data file

My code looks like this

Expand|Select|Wrap|Line Numbers
  1. open($FILE, "C:\\data\\NCI sample.txt") or die "oh oh can't open";
  2.  
  3. open(OUT, ">C:\\data\\parsedNCI.txt");
  4.  
  5. while ($line = <$FILE>) {
  6.     if ($line =~ /ROtclserve/) {
  7.         print OUT "0";
  8.     }
  9.     if ($line =~ /ROtclserve|DTP_NAMES|E_CAS|E_STEREO_SPECIFIED|E_FORMULA|E_SMILES/) {
  10.         $line= trimwhitespace(getData($FILE));
  11.         print OUT "@@@@[$line]";
  12.     }
  13.     if ($line =~ /\$\$\$\$/) {
  14.         print OUT "@@@@@@";
  15.     }
  16. }
  17.  
  18. sub getData() {
  19.     my $FH = shift;
  20.     my $line ="";
  21.     my $record = "";
  22.  
  23.     while( ($line = <$FH>) && $line !~ /\>/ ) {
  24.         $record .= $line;
  25.     }
  26.  
  27.     return $record;
  28. }
  29.  
  30.  
  31. sub trimwhitespace($) {
  32.     my $string = shift;
  33.     $string =~ s/^\s+//;
  34.     $string =~ s/\s+$//;
  35.     $string =~ s/\.$//;
  36.     $string =~ s/,$//g;
  37.     return $string;
  38. }
  39.  
An entry of my data looks like:

Expand|Select|Wrap|Line Numbers
  1. NSC 1
  2. ROtclserve09080314563D 0 0.00000 0.00000 1
  3.  
  4. 15 15 0 0 0 0 0 0 0 0999 V2000
  5. -2.2423 1.0418 0.0018 O 0 0 0 0 0 0 0 0 0 0 0 0
  6. 2.7534 -0.5594 0.0011 O 0 0 0 0 0 0 0 0 0 0 0 0
  7. -1.0858 0.6711 0.0019 C 0 0 0 0 0 0 0 0 0 0 0 0
  8. -0.7730 -0.7725 -0.0002 C 0 0 0 0 0 0 0 0 0 0 0 0
  9. 0.0079 1.6639 -0.0018 C 0 0 0 0 0 0 0 0 0 0 0 0
  10. 0.5032 -1.1815 -0.0005 C 0 0 0 0 0 0 0 0 0 0 0 0
  11. 1.2841 1.2548 -0.0021 C 0 0 0 0 0 0 0 0 0 0 0 0
  12. 1.5970 -0.1888 0.0014 C 0 0 0 0 0 0 0 0 0 0 0 0
  13. -1.8888 -1.7853 -0.0016 C 0 0 0 0 0 0 0 0 0 0 0 0
  14. -0.2208 2.7193 -0.0047 H 0 0 0 0 0 0 0 0 0 0 0 0
  15. 0.7319 -2.2370 0.0020 H 0 0 0 0 0 0 0 0 0 0 0 0
  16. 2.0838 1.9807 -0.0008 H 0 0 0 0 0 0 0 0 0 0 0 0
  17. -2.1581 -2.0307 1.0257 H 0 0 0 0 0 0 0 0 0 0 0 0
  18. -2.7559 -1.3699 -0.5151 H 0 0 0 0 0 0 0 0 0 0 0 0
  19. -1.5597 -2.6879 -0.5165 H 0 0 0 0 0 0 0 0 0 0 0 0
  20. 1 3 2 0 0 0 0
  21. 2 8 2 0 0 0 0
  22. 3 5 1 0 0 0 0
  23. 6 8 1 0 0 0 0
  24. 7 8 1 0 0 0 0
  25. 4 6 2 0 0 0 0
  26. 3 4 1 0 0 0 0
  27. 4 9 1 0 0 0 0
  28. 5 7 2 0 0 0 0
  29. 5 10 1 0 0 0 0
  30. 6 11 1 0 0 0 0
  31. 7 12 1 0 0 0 0
  32. 9 13 1 0 0 0 0
  33. 9 14 1 0 0 0 0
  34. 9 15 1 0 0 0 0
  35. M END
  36. > <NSC>
  37. 1
  38.  
  39. > <DTP_NAMES>
  40. p-Benzoquinone, 2-methyl- (8CI)
  41. p-Toluquinone
  42. Methyl-p-benzoquinone
  43. Methyl-1,4-benzoquinone
  44. Methylbenzoquinone
  45. Methylquinone
  46. Toluquinone (VAN)
  47. Tolylquinone
  48. WLN: L6V DVJ B1
  49. 1,4-Toluquinone
  50. 2-Methyl-p-benzoquinone
  51. 2-Methyl-1,4-benzoquinone
  52. 2-Methyl-1, 4-quinone
  53. 2-Methylbenzoquinone
  54. 2-Methylbenzoquinone-1,4
  55. 2-Methylquinone
  56. 2,5-Cyclohexadiene-1,4-dione, 2-methyl- (9CI)
  57.  
  58. > <CAS_RN>
  59. 553-97-9
  60.  
  61. > <ORIGIN>
  62. DTP FEB 2003
  63.  
  64. > <E_UNIQUE_ID>
  65. NCI-Open_09-03_NSC_1
  66.  
  67. > <E_NSC>
  68. 1
  69.  
  70. > <E_CAS>
  71. 553-97-9
  72.  
  73. > <E_NAME>
  74. NSC 1
  75.  
  76. > <E_STEREO_SPECIFIED>
  77. no_stereocenter
  78.  
  79. > <E_COMPOUND_TYPE>
  80. normal
  81.  
  82. > <E_THREED_SOURCE>
  83. CORINA 2.6
  84.  
  85. > <E_SMILES>
  86. O=C1C=CC(=O)C=C1C
  87.  
  88. > <E_FORMULA>
  89. C7H6O2
  90.  
  91. > <E_HASHY>
  92. 6CAA42E0D61B68CC
  93.  
  94. $$$$
  95.  
However the parsed out entry looks like :

Expand|Select|Wrap|Line Numbers
  1. 0@@@@[15 15 0 0 0 0 0 0 0 0999 V2000
  2. -2.2423 1.0418 0.0018 O 0 0 0 0 0 0 0 0 0 0 0 0
  3. 2.7534 -0.5594 0.0011 O 0 0 0 0 0 0 0 0 0 0 0 0
  4. -1.0858 0.6711 0.0019 C 0 0 0 0 0 0 0 0 0 0 0 0
  5. -0.7730 -0.7725 -0.0002 C 0 0 0 0 0 0 0 0 0 0 0 0
  6. 0.0079 1.6639 -0.0018 C 0 0 0 0 0 0 0 0 0 0 0 0
  7. 0.5032 -1.1815 -0.0005 C 0 0 0 0 0 0 0 0 0 0 0 0
  8. 1.2841 1.2548 -0.0021 C 0 0 0 0 0 0 0 0 0 0 0 0
  9. 1.5970 -0.1888 0.0014 C 0 0 0 0 0 0 0 0 0 0 0 0
  10. -1.8888 -1.7853 -0.0016 C 0 0 0 0 0 0 0 0 0 0 0 0
  11. -0.2208 2.7193 -0.0047 H 0 0 0 0 0 0 0 0 0 0 0 0
  12. 0.7319 -2.2370 0.0020 H 0 0 0 0 0 0 0 0 0 0 0 0
  13. 2.0838 1.9807 -0.0008 H 0 0 0 0 0 0 0 0 0 0 0 0
  14. -2.1581 -2.0307 1.0257 H 0 0 0 0 0 0 0 0 0 0 0 0
  15. -2.7559 -1.3699 -0.5151 H 0 0 0 0 0 0 0 0 0 0 0 0
  16. -1.5597 -2.6879 -0.5165 H 0 0 0 0 0 0 0 0 0 0 0 0
  17. 1 3 2 0 0 0 0
  18. 2 8 2 0 0 0 0
  19. 3 5 1 0 0 0 0
  20. 6 8 1 0 0 0 0
  21. 7 8 1 0 0 0 0
  22. 4 6 2 0 0 0 0
  23. 3 4 1 0 0 0 0
  24. 4 9 1 0 0 0 0
  25. 5 7 2 0 0 0 0
  26. 5 10 1 0 0 0 0
  27. 6 11 1 0 0 0 0
  28. 7 12 1 0 0 0 0
  29. 9 13 1 0 0 0 0
  30. 9 14 1 0 0 0 0
  31. 9 15 1 0 0 0 0
  32. M END]@@@@[p-Benzoquinone, 2-methyl- (8CI)
  33. p-Toluquinone
  34. Methyl-p-benzoquinone
  35. Methyl-1,4-benzoquinone
  36. Methylbenzoquinone
  37. Methylquinone
  38. Toluquinone (VAN)
  39. Tolylquinone
  40. WLN: L6V DVJ B1
  41. 1,4-Toluquinone
  42. 2-Methyl-p-benzoquinone
  43. 2-Methyl-1,4-benzoquinone
  44. 2-Methyl-1, 4-quinone
  45. 2-Methylbenzoquinone
  46. 2-Methylbenzoquinone-1,4
  47. 2-Methylquinone
  48. 2,5-Cyclohexadiene-1,4-dione, 2-methyl- (9CI)]@@@@[553-97-9]@@@@[no_stereocenter]@@@@[O=C1C=CC(=O)C=C1C]@@@@@@
  49.  
Everything is good, BUT the "E_FORMULA" C7H6O2 is no printed out.

I really hope someone could advise me, I have been trying for an agonizingly long time.
Jul 9 '07 #1
11 1761
KevinADC
4,059 Expert 2GB
might be a copy and paste problem, but in the regexp there is a space between O and R:

|E_FO RMULA|


if the space is really there, remove it.
Jul 9 '07 #2
it isn't a copy and paste problem, there is no space in between the letters.

I tried replacing E_FORMULA with E_HASHY, it doesnt print out the contents after E_HASHY too.

If I remove E_SMILES, I cant print out E_FORMULA, but somehow when I add E_SMILES back in, it doesnt print out E_FORMULA.
Jul 9 '07 #3
KevinADC
4,059 Expert 2GB
If I get a chance later I will look over your code.
Jul 9 '07 #4
miller
1,089 Expert 1GB
New question split from previous thread: Getting Started

- MODERATOR
Jul 9 '07 #5
KevinADC
4,059 Expert 2GB
ahh.... thought I was losing it there for a minute. You split the thread while I was reading it Miller.

Anyways.... the biggest problem appeared to be in the getData() sub. Here is the modified code (change the file paths back to yours):

Expand|Select|Wrap|Line Numbers
  1. use strict;
  2. use warnings;
  3.  
  4. open(my $FILE, "C:/NCIsample.txt") or die "oh oh can't open";
  5. open(OUT, ">C:/parsedNCI.txt");
  6.  
  7. while (my $line = <$FILE>) {
  8.    if ($line =~ /ROtclserve/){
  9.       print OUT "0";
  10.    }
  11.    elsif ($line =~ /DTP_NAMES|E_CAS|E_STEREO_SPECIFIED|E_FORMULA|E_SMILES/){
  12.       $line = trimwhitespace(getData($FILE));
  13.       print OUT "@@@@[$line]";
  14.    }
  15.    elsif ($line =~ /\$\$\$\$/) {
  16.       print OUT "@@@@@@";
  17.    }
  18. }
  19. close($FILE);
  20. close(OUT);
  21.  
  22. sub getData {
  23.    my $FH = shift;
  24.    my $record = "";
  25.    while ( my $line = <$FH> ){
  26.       next if $line =~ /\>/o; 
  27.       return ($record) if  $line =~ /^\s*$/o or (eof);
  28.       $record .= $line;
  29.    }
  30. }
  31.  
  32. sub trimwhitespace {
  33.    my $string = shift;
  34.    $string =~ s/^\s+//mo;
  35.    $string =~ s/\s+$//mo;
  36.    $string =~ s/\.$//mo;
  37.    $string =~ s/,$//mo;
  38.    return $string;
  39. }
  40.  
  41.  
output:

Expand|Select|Wrap|Line Numbers
  1. 0@@@@[p-Benzoquinone, 2-methyl- (8CI)
  2. p-Toluquinone
  3. Methyl-p-benzoquinone
  4. Methyl-1,4-benzoquinone
  5. Methylbenzoquinone
  6. Methylquinone
  7. Toluquinone (VAN)
  8. Tolylquinone
  9. WLN: L6V DVJ B1
  10. 1,4-Toluquinone
  11. 2-Methyl-p-benzoquinone
  12. 2-Methyl-1,4-benzoquinone
  13. 2-Methyl-1, 4-quinone
  14. 2-Methylbenzoquinone
  15. 2-Methylbenzoquinone-1,4
  16. 2-Methylquinone
  17. 2,5-Cyclohexadiene-1,4-dione, 2-methyl- (9CI)]@@@@[553-97-9]@@@@[no_stereocenter]@@@@[O=C1C=CC(=O)C=C1C]@@@@[C7H6O2]@@@@@@
The trimwhitespace() sub appears to not really be doing anything, but maybe with other input it does.
Jul 9 '07 #6
WOW

Thanks!.. It worked. Really happy. =)

The trimwhitespace helps me get rid of \n

Thanks again
Jul 10 '07 #7
ooops.. but i realise sth..

The first part of the data scanning for what comes after ROtclserve is excluded.
Jul 10 '07 #8
KevinADC
4,059 Expert 2GB
ooops.. but i realise sth..

The first part of the data scanning for what comes after ROtclserve is excluded.
oops, you're right, see if this works better:

Expand|Select|Wrap|Line Numbers
  1. use strict;
  2. use warnings;
  3.  
  4. open(my $FILE, "C:/NCIsample.txt") or die "oh oh can't open";
  5. open(OUT, ">C:/parsedNCI.txt");
  6. while (my $line = <$FILE>) {
  7.    if ($line =~ /ROtclserve/){
  8.       my $undef = <$FILE>; # gets rid of blank line after "ROtclserve"
  9.       print OUT "0";
  10.    }
  11.    if ($line =~ /ROtclserve|DTP_NAMES|E_CAS|E_STEREO_SPECIFIED|E_FORMULA|E_SMILES/){
  12.       $line = trimwhitespace(getData($FILE));
  13.       print OUT "@@@@[$line]";
  14.    }
  15.    elsif ($line =~ /\$\$\$\$/) {
  16.       print OUT "@@@@@@";
  17.    }
  18. }
  19. close($FILE);
  20. close(OUT);
  21.  
  22. sub getData {
  23.    my $FH = shift;
  24.    my $record = "";
  25.    while ( my $line = <$FH> ){
  26.       return ($record) if  $line =~ /^>/o or (eof);
  27.       $record .= $line;
  28.    }
  29. }
  30.  
  31. sub trimwhitespace {
  32.    my $string = shift;
  33.    $string =~ s/^\s+//mo;
  34.    $string =~ s/\s+$//mo;
  35.    $string =~ s/\.$//mo;
  36.    $string =~ s/,$//mo;
  37.    return $string;
  38. }
Jul 10 '07 #9
But now, the E_FORMULA doesnt print
Jul 10 '07 #10
KevinADC
4,059 Expert 2GB
hehehe... tricky little file to parse. I was trying to avoid this, but I made a seperate fuction to get the data for the "ROtclserve". Not knowing your input very well I do not know how well this will work with different data. But it does now appear to return all the data:

Expand|Select|Wrap|Line Numbers
  1. use strict;
  2. use warnings;
  3.  
  4. open(my $FILE, "C:/NCIsample.txt") or die "oh oh can't open";
  5. open(OUT, ">C:/parsedNCI.txt");
  6. LOOP: while (my $line = <$FILE>) {
  7.    if ($line =~ /ROtclserve/){
  8.       my $undef = <$FILE>;
  9.       print OUT "0";
  10.       $line = trimwhitespace(getDataROt($FILE));
  11.       print OUT "@@@@[$line]";
  12.    }
  13.    if ($line =~ /DTP_NAMES|E_CAS|E_STEREO_SPECIFIED|E_FORMULA|E_SMILES/){
  14.       $line = trimwhitespace(getData($FILE));
  15.       print OUT "@@@@[$line]";
  16.    }
  17.    elsif ($line =~ /\$\$\$\$/) {
  18.       print OUT "@@@@@@";
  19.    }
  20. }
  21. close($FILE);
  22. close(OUT);
  23.  
  24. sub getData {
  25.    my $FH = shift;
  26.    my $record = "";
  27.    while ( my $line = <$FH> ){
  28.       return ($record) if  $line =~ /^\s*$/o or (eof);
  29.       $record .= $line;
  30.    }
  31. }
  32.  
  33. sub getDataROt {
  34.    my $FH = shift;
  35.    my $record = "";
  36.    while ( my $line = <$FH> ){
  37.       return ($record) if  $line =~ /^>/o;
  38.       $record .= $line;
  39.    }
  40. }
  41.  
  42. sub trimwhitespace {
  43.    my $string = shift;
  44.    $string =~ s/^\s+//mo;
  45.    $string =~ s/\s+$//mo;
  46.    $string =~ s/\.$//mo;
  47.    $string =~ s/,$//mo;
  48.    return $string;
  49. }
output:

Expand|Select|Wrap|Line Numbers
  1. 0@@@@[15 15 0 0 0 0 0 0 0 0999 V2000
  2. -2.2423 1.0418 0.0018 O 0 0 0 0 0 0 0 0 0 0 0 0
  3. 2.7534 -0.5594 0.0011 O 0 0 0 0 0 0 0 0 0 0 0 0
  4. -1.0858 0.6711 0.0019 C 0 0 0 0 0 0 0 0 0 0 0 0
  5. -0.7730 -0.7725 -0.0002 C 0 0 0 0 0 0 0 0 0 0 0 0
  6. 0.0079 1.6639 -0.0018 C 0 0 0 0 0 0 0 0 0 0 0 0
  7. 0.5032 -1.1815 -0.0005 C 0 0 0 0 0 0 0 0 0 0 0 0
  8. 1.2841 1.2548 -0.0021 C 0 0 0 0 0 0 0 0 0 0 0 0
  9. 1.5970 -0.1888 0.0014 C 0 0 0 0 0 0 0 0 0 0 0 0
  10. -1.8888 -1.7853 -0.0016 C 0 0 0 0 0 0 0 0 0 0 0 0
  11. -0.2208 2.7193 -0.0047 H 0 0 0 0 0 0 0 0 0 0 0 0
  12. 0.7319 -2.2370 0.0020 H 0 0 0 0 0 0 0 0 0 0 0 0
  13. 2.0838 1.9807 -0.0008 H 0 0 0 0 0 0 0 0 0 0 0 0
  14. -2.1581 -2.0307 1.0257 H 0 0 0 0 0 0 0 0 0 0 0 0
  15. -2.7559 -1.3699 -0.5151 H 0 0 0 0 0 0 0 0 0 0 0 0
  16. -1.5597 -2.6879 -0.5165 H 0 0 0 0 0 0 0 0 0 0 0 0
  17. 1 3 2 0 0 0 0
  18. 2 8 2 0 0 0 0
  19. 3 5 1 0 0 0 0
  20. 6 8 1 0 0 0 0
  21. 7 8 1 0 0 0 0
  22. 4 6 2 0 0 0 0
  23. 3 4 1 0 0 0 0
  24. 4 9 1 0 0 0 0
  25. 5 7 2 0 0 0 0
  26. 5 10 1 0 0 0 0
  27. 6 11 1 0 0 0 0
  28. 7 12 1 0 0 0 0
  29. 9 13 1 0 0 0 0
  30. 9 14 1 0 0 0 0
  31. 9 15 1 0 0 0 0
  32. M END]@@@@[p-Benzoquinone, 2-methyl- (8CI)
  33. p-Toluquinone
  34. Methyl-p-benzoquinone
  35. Methyl-1,4-benzoquinone
  36. Methylbenzoquinone
  37. Methylquinone
  38. Toluquinone (VAN)
  39. Tolylquinone
  40. WLN: L6V DVJ B1
  41. 1,4-Toluquinone
  42. 2-Methyl-p-benzoquinone
  43. 2-Methyl-1,4-benzoquinone
  44. 2-Methyl-1, 4-quinone
  45. 2-Methylbenzoquinone
  46. 2-Methylbenzoquinone-1,4
  47. 2-Methylquinone
  48. 2,5-Cyclohexadiene-1,4-dione, 2-methyl- (9CI)]@@@@[553-97-9]@@@@[no_stereocenter]@@@@[O=C1C=CC(=O)C=C1C]@@@@[C7H6O2]@@@@@@
The problem with the code is that it is very contrived to parse the input data you posted. It may not work if some of the sections of data you are looking for change position in the file or if blank lines are missing. I am sure a more robust script could be written, but not without a complete rewrite of your code.
Jul 10 '07 #11
KevinADC
4,059 Expert 2GB
You may need to remove the space that this forum added to the code I posted:

E_SMI LES

there is a space between "I" and "L" in the above in line 13 of the code.
Jul 10 '07 #12

Sign in to post your reply or Sign up for a free account.

Similar topics

6
by: chuck amadi | last post by:
Hi , Im trying to parse a specific users mailbox (testwwws) and output the body of the messages to a file ,that file will then be loaded into a PostGresql DB at some point . I have read the...
22
by: Ram Laxman | last post by:
Hi all, I have a text file which have data in CSV format. "empno","phonenumber","wardnumber" 12345,2234353,1000202 12326,2243653,1000098 Iam a beginner of C/C++ programming. I don't know how to...
6
by: nate | last post by:
Hello, Does anyone know where I can find an ASP server side script written in JavaScript to parse text fields from a form method='POST' using enctype='multipart/form-data'? I'd also like it to...
1
by: mydejamail | last post by:
My PHP setup is not updating the error_log, I have checked all the error logging related settings and they have all been set. The script is also crashing inexplicably. Whenever I call a specific...
6
by: Richard | last post by:
Which way would you guys recommened to best parse a multiline file which contains two fields seperated by a tab. In this case its the linux/proc/filesystems file a sample of which I have included...
29
by: gs | last post by:
let say I have to deal with various date format and I am give format string from one of the following dd/mm/yyyy mm/dd/yyyy dd/mmm/yyyy mmm/dd/yyyy dd/mm/yy mm/dd/yy dd/mmm/yy mmm/dd/yy
7
by: Perks | last post by:
Hi. I am trying to find out if it is possible to open a pdf file from within PHP, and parse its contents in order to extract all form fieldnames that might have been previously setup within the...
1
by: digidave | last post by:
I am keenly aware that my coding skills are extremely noob but please indulge me a second.. Take a look at these queries.. $sql = "SELECT DISTINCT year FROM _current_floats_config WHERE active =...
4
by: Prodian | last post by:
Im trying to parse a recv from a telnet session then only grab certain data. Heres an example of the recv that Im storing into a string: Internet 204.189.124.205 0 001a.a01f.4e5a ...
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
1
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...
0
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and...
0
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.