snps icon indicating copy to clipboard operation
snps copied to clipboard

Consider refactoring `genotype` column

Open apriha opened this issue 4 years ago • 6 comments

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.

apriha avatar Nov 28 '19 06:11 apriha

Hi @willgdjones, what are your thoughts on this?

apriha avatar Nov 28 '19 06:11 apriha

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.

willgdjones avatar Dec 01 '19 11:12 willgdjones

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.

willgdjones avatar Dec 06 '19 15:12 willgdjones

In fact - it is more #43 that is directly relevant for us so I will look to fix that first.

willgdjones avatar Dec 06 '19 15:12 willgdjones

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.

apriha avatar Dec 06 '19 19:12 apriha

I like that suggestion about keeping the genotype column for backward compatibility.

willgdjones avatar Dec 06 '19 19:12 willgdjones