mutcleaner.cleaners.human_domainome_custom_cleaners#

Functions

extract_domain_sequences(dataset[, ...])

Extract domain sequences from full sequences using position information

generate_mutation_strings(dataset[, ...])

Generate per-row mutation notations from wild-type amino acids, positions, and a domain identifier that encodes a sequence offset.

process_domain_positions(dataset)

Process domain position information from PFAM entries

mutcleaner.cleaners.human_domainome_custom_cleaners.extract_domain_sequences(dataset, sequence_column='sequence', start_pos_column='start_pos', end_pos_column='end_pos', num_workers=4)[source]#

Extract domain sequences from full sequences using position information

This function extracts domain subsequences based on start and end positions. Records with invalid positions or missing sequences are separated into the failed dataset.

Parameters:
  • dataset (DataFrame) – Dataset with full sequences and position information

  • sequence_column (str) – Column containing full wild-type sequences

  • start_pos_column (str) – Column containing domain start positions (0-based)

  • end_pos_column (str) – Column containing domain end positions

  • num_workers (int) – Number of parallel workers for processing, set to -1 for all available CPUs

Return type:

Tuple[DataFrame, DataFrame]

Returns:

(successful_dataset, failed_dataset) - datasets with and without extraction errors

Examples

>>> import pandas as pd
>>> df = pd.DataFrame({
...     'name': ['prot1', 'prot2', 'prot3'],
...     'sequence': ['ABCDEFGHIJ', 'KLMNOPQRST', None],
...     'start_pos': [2, 0, 5],
...     'end_pos': [7, 4, 10]
... })
>>> successful, failed = extract_domain_sequences(df)
>>> print(successful['sequence'].tolist())
['CDEFG', 'KLMN']
>>> print(len(failed))  # Should be 1 (the None sequence)
1
mutcleaner.cleaners.human_domainome_custom_cleaners.generate_mutation_strings(dataset, name_column='domain_ID', wt_aa_column='wt_aa', mut_aa_column='mut_aa', aa_pos_column='pos')[source]#

Generate per-row mutation notations from wild-type amino acids, positions, and a domain identifier that encodes a sequence offset.

This step expects the identifier column (name_column) to be formatted as "<Uniprot_ID>_<Pfam_ID>_<sequence_offset>". It splits that column, computes a relative residue position as pos - sequence_offset, builds a simple mutation string <wt_aa><relative_pos><mut_aa> (e.g., A15K), stores it in mut_info. Helper columns introduced during the transformation are dropped before returning.

Parameters:
  • dataset (DataFrame) – Input table containing at least the identifier, wild-type AA, mutant AA, and absolute position columns.

  • name_column (str) – Column holding the domain identifier in the form Uniprot_ID_Pfam_ID_sequence_offset.

  • wt_aa_column (str) – Column with the wild-type amino acid (single-letter code).

  • mut_aa_column (str) – Column with the mutant amino acid (single-letter code).

  • aa_pos_column (str) – Column with the absolute residue position (integer).

Return type:

DataFrame

Returns:

The input dataframe with: * A new column mut_info containing strings like A15K; * All other columns are preserved.

Raises:
  • KeyError – If any of the required columns are missing.

  • ValueError – If position or offset values cannot be interpreted as integers.

Notes

  • The relative position is computed as pos - sequence_offset; interpret it

as 0-based or 1-based according to how sequence_offset is defined in your data. - The function relies on utility helpers split_columns and merge_columns. It also treats sequence_offset and pos as integers.

Examples

>>> import pandas as pd
>>> df = pd.DataFrame({
...     "domain_ID": ["P12345_PF00001_10"],
...     "wt_aa": ["A"],
...     "mut_aa": ["K"],
...     "pos": [25],
... })
>>> generate_mutation_strings(df)[["domain_ID", "mut_info"]]
Splitting column 'domain_ID' into ['Uniprot_ID', 'Pfam_ID', 'sequence_offset']...
Splitting using separator: '_'
Successfully created split columns: ['Uniprot_ID', 'Pfam_ID', 'sequence_offset']
Merging columns ['wt_aa', 'aa_pos', 'mut_aa'] into 'mut_info'...
Successfully created merged column 'mut_info'
Merging columns ['Uniprot_ID', 'Pfam_ID', 'aa_pos'] into 'domain_ID'...
Successfully created merged column 'domain_ID'
           domain_ID mut_info
0  P12345_PF00001_10     A15K
mutcleaner.cleaners.human_domainome_custom_cleaners.process_domain_positions(dataset)[source]#

Process domain position information from PFAM entries

This function extracts position information from PFAM entries and calculates relative mutation positions. It handles parsing errors by separating failed records.

Parameters:

dataset (DataFrame) – Dataset with PFAM_entry column containing position information

Return type:

Tuple[DataFrame, DataFrame]

Returns:

(successful_dataset, failed_dataset) - datasets with and without parsing errors

Examples

>>> import pandas as pd
>>> df = pd.DataFrame({
...     'PFAM_entry': ['PF00001/10-100', 'PF00002/20-200', 'invalid_entry'],
...     'pos': [15, 25, 30],
...     'wt_aa': ['A', 'C', 'D'],
...     'mut_aa': ['K', 'Y', 'E']
... })
>>> successful, failed = process_domain_positions(df)
>>> print(len(successful))  # Should be 2
2
>>> print(len(failed))  # Should be 1
1