This is the repository for Lab of Geometry at Michigan (LoG(M): MATH 440) for the project Statistics of Character Tables of Symmetric Groups mentored by Prof. Sarah Peluse and Graduate Instructor Karthik Ganapathy. Our group members are Arnav Shah, Atharva Kulkarni, and Tony Zhang.
Clone the repository on your laptop using the following command:
git clone https://github.com/TonyZhang2004/Character_Table_of_Symmetric_Groups.git
Change your working directory to the folder with our code as follows:
cd Character_Table_of_Symmetric_Groups
Install all pip requirements by running the following command:
pip install -r requirements.txt
Download all necessary files from the link below and save it to the working directory. Each function's description has the list of necessary files. Please read the heatmaps and graphs section for more information.
Gdrive link: Click Here
The following examples demonstrate running some of our functions to copmute the character tables.
Frobenius Formula (frobenius.py)
Import the function to compute the character table using the frobenius formula as follows:
import frobenius as fb
Note: The above command will only work if your file is in the same working directory as this repository. Please modify the above import statement according to your directory.
To compute the character table and print it, use the following code:
N = 6 # Size of Character Table
char_table = fb.get_character_table(N)
print(char_table)
Murnghan-Nakayama Rule (murnaghan_nakayama.py)
Import the function to compute the character table using the frobenius formula as follows:
import murnaghan_nakayama as mn
Note: The above command will only work if your file is in the same working directory as this repository. Please modify the above import statement according to your directory.
To compute the character table and print it, you can use the following code:
N = 6 # Size of Character Table
char_table = mn.get_character_table(N)
print(char_table)
To compute the character values of, for instance, the column corresponding to the staircase partition of 6, you can use the following code:
N = 6 # Size of Character Table
col_bit_string = "010101" # Abaci bit string representation of the column
char_table = mn.get_character_value_of_column(N, col_bit_string)
print(char_table)
You can also save the character table in a file as follows:
N = 6 # Size of Character Table
character_table = mn.get_character_table(N, output_file_name="S6.csv")
Moreover, you can speed things up for calculating character values of large n if you have already calculated for smaller n by saving it in a memo. As an illustration, suppose you run the followinf code:
N = 6 # Size of Character Table
character_table = mn.get_character_table(N, output_file_name="S6.csv", memo_file_name="memo.txt")
Now, if we want to calculate
N = 7 # Size of Character Table
character_table = mn.get_character_table(N, output_file_name="S7.csv", memo_file_name="memo.txt")
Heatmaps and Graphs (char_table.py)
Please read the instructions given at the begining of each code block in our Jupyter notebook file named char_table.py.
Download all required files that are mentioned right before the code block from the gdrive link provided above.
You may also change some parameters as you require. The parameters which you may change are given at the begining of each code block. If you feel comfortable coding and want to modify our code to fit your requirements, you may change other parts of the code as well.
Given an integer partition
Then we have the following Frobenius's Formula:
, where
Let
Then
Above,