Skip to content
Merged
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
26 changes: 21 additions & 5 deletions alphabase/psm_reader/psm_reader.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"""The base class for all PSM readers and the provider for all readers."""

import copy
import io
import warnings
from abc import ABC
from pathlib import Path
Expand Down Expand Up @@ -253,14 +254,29 @@ def import_file(self, _file: str) -> pd.DataFrame:
self._post_process(origin_df) # here, libraryreader, diann, msfragger
return self._psm_df

def _load_file(self, filename: str) -> pd.DataFrame:
def _load_file(self, filename: Union[str, Path, io.StringIO]) -> pd.DataFrame:
"""Load PSM file into a dataframe.

Different search engines may store PSMs in different ways: tsv, csv, HDF, XML, ...
This default implementation works for tsv and csv files and thus covers many readers.
Different search engines may store PSMs in different ways: tsv, csv, HDF, XML, parquet ...
This default implementation works for tsv, csv and parquet files and thus covers many readers.

Parameters
----------
filename : str | pathlib.Path | io.StringIO
The file path to the PSM file or the file in the io.StringIO.

"""
sep = _get_delimiter(filename)
return pd.read_csv(filename, sep=sep, keep_default_na=False)
if isinstance(filename, io.StringIO):
sep = _get_delimiter(filename)
return pd.read_csv(filename, sep=sep, keep_default_na=False)

file_path = Path(filename)

if file_path.suffix == ".parquet":
return pd.read_parquet(file_path)

sep = _get_delimiter(str(file_path))
return pd.read_csv(file_path, sep=sep, keep_default_na=False)

def _get_actual_column(
self,
Expand Down
Loading