Download model/data/select_msa.py from OneScience-Group/VenusREM: direct link, hf CLI and curl.
- Browser
- Download file 2.74 kB
-
https://huggingface.co/OneScience-Group/VenusREM/resolve/main/model/data/select_msa.py
- Command line
-
hf download hf://OneScience-Group/VenusREM/model/data/select_msa.py
-
curl -L -o select_msa.py https://huggingface.co/OneScience-Group/VenusREM/resolve/main/model/data/select_msa.py
2.74 kB
| import os | |
| import argparse | |
| import shutil | |
| import pandas as pd | |
| from tqdm import tqdm | |
| if __name__ == '__main__': | |
| parser = argparse.ArgumentParser() | |
| parser.add_argument('-i', '--input_dir', type=str, default='data/MSA') | |
| parser.add_argument('--is_multi', action='store_true') | |
| parser.add_argument('-o', '--output_dir', type=str, default='data/MSA_selected') | |
| args = parser.parse_args() | |
| os.makedirs(args.output_dir + '/aa_seq_aln_a2m_raw', exist_ok=True) | |
| os.makedirs(args.output_dir + '/aa_seq_aln_a2m', exist_ok=True) | |
| if args.is_multi: | |
| failed_jobs = [] | |
| protein_names = os.listdir(args.input_dir) | |
| for protein_name in tqdm(protein_names): | |
| job_summary = pd.read_csv(f'{args.input_dir}/{protein_name}/{protein_name}_job_statistics_summary.csv') | |
| if len(job_summary) != 9: | |
| print(f'>>> No enough MSA for {protein_name}') | |
| files = os.listdir(f'{args.input_dir}/{protein_name}') | |
| failed_files = [f for f in files if f.endswith('failed')] | |
| if len(failed_files) + len(job_summary) != 9: | |
| print(f'>>> Not all jobs are finished for {protein_name}, skippping...') | |
| failed_jobs.append(protein_name) | |
| continue | |
| # select the `prefix` according to the max `num_significant` | |
| prefix = job_summary.loc[job_summary['num_significant'].idxmax()]['prefix'] | |
| prefix_name = prefix.split('/')[-1] | |
| shutil.copyfile(f'{args.input_dir}/{protein_name}/{prefix_name}/align/{prefix_name}_raw_focus.fasta', f'{args.output_dir}/aa_seq_aln_a2m_raw/{protein_name}.fasta') | |
| shutil.copyfile(f'{args.input_dir}/{protein_name}/{prefix_name}/align/{prefix_name}.a2m', f'{args.output_dir}/aa_seq_aln_a2m/{protein_name}.a2m') | |
| print(f'>>> {protein_name} selected, prefix: {prefix_name}') | |
| else: | |
| protein_name = args.input_dir.split('/')[-1] | |
| job_summary = pd.read_csv(f'{args.input_dir}/{protein_name}_job_statistics_summary.csv') | |
| if len(job_summary) != 9: | |
| print(f'>>> No enough MSA for {protein_name}') | |
| # select the `prefix` according to the max `num_significant` | |
| prefix = job_summary.loc[job_summary['num_significant'].idxmax()]['prefix'] | |
| prefix_name = prefix.split('/')[-1] | |
| shutil.copyfile(f'{args.input_dir}/{prefix_name}/align/{prefix_name}_raw_focus.fasta', f'{args.output_dir}/aa_seq_aln_a2m_raw/{protein_name}.fasta') | |
| shutil.copyfile(f'{args.input_dir}/{prefix_name}/align/{prefix_name}.a2m', f'{args.output_dir}/aa_seq_aln_a2m/{protein_name}.a2m') | |
| print(f'>>> {protein_name} selected, prefix: {prefix_name}') |