Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 20 additions & 1 deletion src/embkit/encoding/genome.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@

import pandas as pd

# chromosome lengths (GRCh38)
chromosome_length={'chr1':248956422,
Expand Down Expand Up @@ -27,6 +28,24 @@
'chrY':57227415}


def row_format(row):
return {
"chr" : row.CHROM,
"pos" : row.POS,
"ref" : row.REF,
"alt" : ",".join( str(i) for i in row.ALT)
}

def vcf_to_dataframe(vcf_reader, row_filter=None):
"""
vcf_to_dataframe take a PyVCF reader and create a pandas DataFrame
"""
vals = []
for record in vcf_reader:
if row_filter is None or row_filter(record):
vals.append( row_format(record) )
return pd.DataFrame(vals)

def vectorize_variant_count( variant_df, bin_size=1000000, seq_col="chr", pos_col="pos"):
"""
Vectorize the variant count in bins of specified size across the genome.
Expand All @@ -41,7 +60,7 @@ def vectorize_variant_count( variant_df, bin_size=1000000, seq_col="chr", pos_co
counter=0
for chrom, length in chromosome_length.items():
for i in range(1, length, bin_size): # last bin for each chromosome might not equal 1MB depending on the chr length
bin_label = f'{chrom}_{counter}'
bin_label = f'{chrom}_{counter:04d}'
bins.append((chrom, i, min(i + bin_size, length), bin_label))
bin_labels.append(bin_label)
counter+=1
Expand Down
5 changes: 2 additions & 3 deletions src/embkit/optimize/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@
from torch.optim import Adam
from torch.utils.data import DataLoader, TensorDataset, Dataset
from tqdm.autonotebook import tqdm
import numpy as np
from ..losses import net_vae_loss

from .. import get_device, dataframe_loader

Expand Down Expand Up @@ -360,9 +362,6 @@ def fit_net_vae(
unify this implementation with ``fit_vae`` to avoid long-term duplication.
"""

import numpy as np
from ..losses import net_vae_loss

if isinstance(X, torch.Tensor):
if not getattr(model, "features", None):
raise ValueError("Tensor input requires model.features to be defined.")
Expand Down
Loading