How many parameters on a Bayesian network I'm taking Coursera's course on probabilistic graphical models, and I'm stuck on a question. The discussion forums there are dead, and I can't find any resource to help me, so I hope someone could enlighten me here.
We have a model of cystic fibrosis described with the following bayesian network:

We need to count how many parameters are needed to specify all the probability distributions. The genotypes are represented by the alleles $\{F, f, n\}$ and could be either one of the genotypes $\{FF, Ff, ff, Fn, fn, nn\}$. For the phenotype, a person could either have cystic fibrosis or not have it.
My first thought
I thought, for Ira's and Robin's genotype, there are 5 parameters each since we have 6 different genotypes. For each genotype, there are 2 possibilities for the phenotype, so, there are 6 parameters for each phenotype. Now, for James's genotype, there are 6 genotypes for Robin, 6 genotypes for Ira, and 6 genotypes for James, so, considering the degrees of freedom, we have $6*6*5=180$ parameters. So we would have $5+5+6+6+6+180=208$ parameters. But this answer is incorrect.
My seconthoughtgh was
Ok, not all $6*6*6$ combinations of Ira's, Robin,'s and James's genotypes are possible, for example, if Ira and Robin, have $FF$ genotypes, then James will only have a $FF$ genotype, so I wrote the following code to count how many parameters I would have:
import itertools
import pandas as pd


alleles = ['F', 'f', 'n']


def get_available_genotypes(alleles):
    combinations = map(sorted, itertools.product(alleles, alleles))
    combinations_hashable = map(lambda x: x[0] + x[1], combinations)
    unique_combinations = set(combinations_hashable)
    return unique_combinations
    
    
def insert_available_children(df, parent_1, parent_2):
    for child in itertools.product(parent_1, parent_2):
        
        child = sorted(child)
        child = child[0] + child[1]
        
        df['parent_1'].append(parent_1)
        df['parent_2'].append(parent_2)
        df['child'].append(child)
        
    return df

parent_1 = get_available_genotypes(alleles)
parent_2 = get_available_genotypes(alleles)

df = {
    'parent_1': [],
    'parent_2': [],
    'child': []
}

for p1, p2 in itertools.product(parent_1, parent_2):
    df = insert_available_children(df, p1, p2)
    
df = pd.DataFrame(df)
print((df.drop_duplicates().groupby(['parent_1', 'parent_2']).count() - 1).sum())

This gave me 42 parameters for James's genotype, which gives me $5+5+6+6+6+42=70$ parameters. But this answer is also wrong.
Now, since this is a MOOC and I do want to learn, I don't want the answer to how many parameters the model have, but, if someone could clarify what I'm doing wrong, or point me in the right direction, I would greatly appreciate.
Edit 1:
Maybe I'm missing something on the question itself, here is what the question is asking:

You will now gain some intuition for why decoupling a Bayesian network can be worthwhile.  Consider a non-decoupled Bayesian network for cystic fibrosis with 3 alleles over the pedigree that was used in section 2.4 and 3.3.  How many parameters are needed to specify all probability distributions across the entire network?

And you can find the course material here. As bdeonovic pointed out, you would only need the parameters for $P(phenotype | genotype)$ so that removes $12$ parameters. I tried his answer of $16$ as well as $5+5+6+180 = 196$ and $5+5+6+42 = 58$ and all of them are wrong. I wonder if it's not also a matter of estimating parameters for $P(\text{parent's genotype})$ instead of $P(\text{Ira's genotype})$ and $P(\text{Robin's genotype})$, which would also remove 5 parameters. It does seems that we need to model allels with different frequencies, as this is described in the apendix
 A: There are 6 genotypes possible so for P(Robin genotype) and P(Ira genotype) we have 5 parameters (6th is constrained since probability of all 6 has to sum to 1) each, as you have pointed out
Phenotype is directly determined by genotype so there are not separate parameters for the conditional distribution of Robin/Ira/James phenotype given their genotype. So we have an additional 6 parameters for P(phenotype | Genotype)
last we have the conditional distribution of James' genotype given the genotype of the parents P(James Genotype | Robin Genotype , Ira Genotype ). If you assume either allele is passed on equally likely I don't think this will contribute any parameters (eg given Ff, and Fn James' genotype distribution is fixed to FF: 25%, Ff: 25%, Fn: 25%, fn: 25% all others 0%). I think it becomes much more complicated if you want to somehow model unequal allele passing.
So in total I would say there should be 5 + 5 + 6 parameters.
A: bdeonovic's answer set me on the right track but the answer still wasn't quite correct, if you are taking the course later on, here a few things to consider for that particular question:

*

*The parameters for $P(\text{Ira's genotype})$ and $P(\text{Robin's genotype})$ are the same so you only need the parameters for $P(\text{parent's genotype})$

*Similarly, you don't need different parameters for $P(\text{Ira's phenotype } | \text{ Ira's genotype})$, $P(\text{Robin's phenotype } | \text{ Robin's genotype})$ and $P(\text{James's phenotype } | \text{ James's genotype})$, only the parameters for $P(\text{phenotype }|\text{ genotype})$ will sufice

*You do need to consider that the alleles have different frequencies, and you must assume all allele combinations are possible, meaning that there will be a parameter to model $P(nn| FF, Ff)$ for example

A: I am thinking about 6 * 6 * 5 = 180. 6 genotypes from mother or father and of course, there would be 6 potential genotypes for the kid (but -1 for "degree of freedom" thing here for the kid as we are talking about "kid's genotype given parents' genotypes).
