snps
snps copied to clipboard
Consider refactoring `genotype` column
Currently, snps normalizes data into a dataframe with four columns named rsid, chrom, pos, and genotype.
genotype can either be np.nan or a string of length 1 or 2. For autosomal SNPs and the X chromosome, the genotype is always a length 2 string. See #43.
The Y chromosome and mtDNA alleles are often strings of length 1; however, SNPs in the pseudoautosomal region on the X and Y chromosomes often have two alleles reported.
So, to better handle various numbers of alleles reported for the X, Y, and mtDNA chromosomes, consider refactoring the genotype column into allele1 and allele2.
Note that this would also more naturally support phased genotypes (vs. indexing a length 2 string genotype), wherein allele1 could be alleles on one chromosome, and allele2 could be alleles on the other. See #44.
Hi @willgdjones, what are your thoughts on this?
This seems like a sensible approach 👍 . We have just encountered the issue you describe in #43 ourselves in fact with Sano genotype data files where the X chromosome is duplicated for male samples.
Hi @apriha - were you in the midst of tackling this? This is functionality that will be soon be important for us so I'm considering jumping in on this.
In fact - it is more #43 that is directly relevant for us so I will look to fix that first.
Hey @willgdjones , I started looking at this as part of #44 and plan to push some parsing updates related to this soon.
I was just thinking - perhaps for backwards compatibility, we can also on the fly optionally generate the current data frame structure (i.e., with the genotype column as described above) when requested, while using allele1 and allele2 in the underlying structure.
I like that suggestion about keeping the genotype column for backward compatibility.