Q:

awk field separator to split specific column does not work as expected, $0 returns unsplit record? 

I'm trying to split a record by underscore.  Originally it was about _ and .  as FS and only for the first column.  But right now it appears that no splitting works at all? 
cat test_file.tsv

mg.reads.per.gene_bcsZ_A1.tsv   contig_21128    476
mg.reads.per.gene_bcsZ_A1.tsv   contig_3712     1774
mg.reads.per.gene_bcsZ_A2.tsv   contig_38480    184
mg.reads.per.gene_bcsZ_A2.tsv   contig_62779    1154
mg.reads.per.gene_bcsZ_A4.tsv   contig_115486   113
mg.reads.per.gene_bcsZ_A4.tsv   contig_14345    937
mg.reads.per.gene_bcsZ_A5.tsv   contig_19362    426
mg.reads.per.gene_bcsZ_A5.tsv   contig_53656    31
mg.reads.per.gene_bcsZ_A6.tsv   contig_100190   26
mg.reads.per.gene_bcsZ_A6.tsv   contig_23343    164

and I've tried numerous variants such as
awk 'BEGIN { FS = _ } ; {print $0}' test_file.tsv
awk 'BEGIN { FS = '_' } ; {print $0}' test_file.tsv
awk 'BEGIN { FS = "_" } ; {print $0}' test_file.tsv
awk 'BEGIN { FS ="_" } ; {print $0}' test_file.tsv
awk  -F'_' '{print $0}' test_file.tsv
awk -F"gene" '{print $0}' test_file.tsv

and it gives the unchanged output.  I was expecting:
mg.reads.per.gene   bcsZ    A1.tsv   contig 21128    476
mg.reads.per.gene   bcsZ    A1.tsv   contig 3712     1774
mg.reads.per.gene   bcsZ    A2.tsv   contig 38480    184
mg.reads.per.gene   bcsZ    A2.tsv   contig 62779    1154
mg.reads.per.gene   bcsZ    A4.tsv   contig 115486   113
mg.reads.per.gene   bcsZ    A4.tsv   contig 14345    937
mg.reads.per.gene   bcsZ    A5.tsv   contig 19362    426
mg.reads.per.gene   bcsZ    A5.tsv   contig 53656    31
mg.reads.per.gene   bcsZ    A6.tsv   contig 100190   26
mg.reads.per.gene   bcsZ    A6.tsv   contig 23343    164

Am I missing something obvious here? 
EDIT: yes I did: "It is a common error to try to change the field separators in a record simply by setting FS and OFS, and then expecting a plain ‘print’ or ‘print $0’ to print the modified record." ( awk manual, "understanding $0")
EDIT: and to reach the final goal (splitting by _ and .  only in the first column, this one works (at least in one line separated by ";"):
    awk 'BEGIN { OFS = "\t" }
  {
  split ($1, a, "_") 
  split (a[3], b, "\\.") 
  print $2, a[2], b[1]
  }' test_file.tsv

output:
contig_21128    bcsZ    A1
contig_3712     bcsZ    A1
contig_38480    bcsZ    A2
contig_62779    bcsZ    A2
contig_115486   bcsZ    A4
contig_14345    bcsZ    A4
contig_19362    bcsZ    A5
contig_53656    bcsZ    A5
contig_100190   bcsZ    A6
contig_23343    bcsZ    A6

A:

$0 is the whole line in awk. 
 awk -F_ '{$1=$1;print}' sample.csv

Input field separator is _ and default output field separator is space.  
{$1=$1;print} rebuilds fields based on the output separator and print them all. 
output:
mg.reads.per.gene bcsZ A1.tsv   contig 21128    476
mg.reads.per.gene bcsZ A1.tsv   contig 3712     1774
mg.reads.per.gene bcsZ A2.tsv   contig 38480    184
mg.reads.per.gene bcsZ A2.tsv   contig 62779    1154
mg.reads.per.gene bcsZ A4.tsv   contig 115486   113
mg.reads.per.gene bcsZ A4.tsv   contig 14345    937
mg.reads.per.gene bcsZ A5.tsv   contig 19362    426
mg.reads.per.gene bcsZ A5.tsv   contig 53656    31
mg.reads.per.gene bcsZ A6.tsv   contig 100190   26
mg.reads.per.gene bcsZ A6.tsv   contig 23343    164

