Skip to content

Commit

Permalink
Merge pull request #113 from SPAAM-community/convert-consistent-behav…
Browse files Browse the repository at this point in the history
…iour

Improve convert consistency
  • Loading branch information
maxibor committed Apr 25, 2023
2 parents ddb3fd3 + ed3266c commit bcedf21
Show file tree
Hide file tree
Showing 4 changed files with 112 additions and 40 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -128,3 +128,6 @@ dmypy.json

# Pyre type checker
.pyre/

# VSCode
settings.json
22 changes: 21 additions & 1 deletion AMDirT/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,26 @@ def viewer(ctx, no_args_is_help=True, **kwargs):
show_default=True,
help="conversion output directory",
)
@click.option(
"--bibliography",
is_flag=True,
help="Generate BibTeX file of all publications in input table",
)
@click.option(
"--librarymetadata",
is_flag=True,
help="Generate AncientMetagenomeDir libraries table of all samples in input table",
)
@click.option(
"--curl",
is_flag=True,
help="Generate bash script with curl-based download commands for all libraries of samples in input table",
)
@click.option(
"--aspera",
is_flag=True,
help="Generate bash script with Aspera-based download commands for all libraries of samples in input table",
)
@click.option(
"--eager",
is_flag=True,
Expand All @@ -126,7 +146,7 @@ def viewer(ctx, no_args_is_help=True, **kwargs):
@click.option(
"--fetchngs",
is_flag=True,
help="Convert filtered samples and libraries tables to fetchNGS input tables",
help="Convert filtered samples and libraries tables to nf-core/fetchngs input tables",
)
@click.option(
"--ameta",
Expand Down
109 changes: 79 additions & 30 deletions AMDirT/convert/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
prepare_aMeta_table,
is_merge_size_zero,
prepare_taxprofiler_table,
get_libraries
get_libraries,
)
from AMDirT.core import get_json_path
from json import load
Expand All @@ -22,6 +22,10 @@ def run_convert(
table_name,
tables=None,
output=".",
bibliography=False,
librarymetadata=False,
curl=False,
aspera=False,
eager=False,
fetchngs=False,
ameta=False,
Expand Down Expand Up @@ -54,15 +58,53 @@ def run_convert(
samples = pd.read_csv(samples, sep="\t")
libraries = pd.read_csv(tables["libraries"][table_name], sep="\t")

if eager == True:
logger.info("Preparing nf-core/eager table")
eager_table = prepare_eager_table(
logger.warning("We provide no warranty to the accuracy of the generated input sheets.")

if bibliography == True:
logger.info("Preparing Bibtex citation file")
with open(f"{output}/AncientMetagenomeDir_bibliography.bib", "w") as fw:
fw.write(prepare_bibtex_file(samples))

if librarymetadata == True:
logger.info("Writing filtered libraries table")
librarymetadata = get_libraries(
samples=samples,
libraries=libraries,
table_name=table_name,
supported_archives=supported_archives,
)
eager_table.to_csv(f"{output}/nf_core_eager_input_table.tsv", sep="\t", index=False)
librarymetadata.to_csv(
f"{output}/AncientMetagenomeDir_filtered_libraries.tsv",
sep="\t",
index=False,
)

if curl == True:
logger.info("Writing curl download script")
accession_table = prepare_accession_table(
samples=samples,
libraries=libraries,
table_name=table_name,
supported_archives=supported_archives,
)
with open(f"{output}/AncientMetagenomeDir_curl_download_script.sh", "w") as fw:
fw.write(accession_table["curl_script"])

if aspera == True:
logger.info("Writing Aspera download script")
logger.warning(
"You will need to set the ${ASPERA_PATH} environment variable. See https://amdirt.readthedocs.io for more information."
)
accession_table = prepare_accession_table(
samples=samples,
libraries=libraries,
table_name=table_name,
supported_archives=supported_archives,
)
with open(
f"{output}/AncientMetagenomeDir_aspera_download_script.sh", "w"
) as fw:
fw.write(accession_table["aspera_script"])

if fetchngs == True:
logger.info("Preparing nf-core/fetchngs table")
Expand All @@ -73,7 +115,24 @@ def run_convert(
supported_archives=supported_archives,
)
accession_table["df"].to_csv(
f"{output}/nf_core_fetchngs_input_table.tsv", sep="\t", header=False, index=False
f"{output}/AncientMetagenomeDir_nf_core_fetchngs_input_table.tsv",
sep="\t",
header=False,
index=False,
)

if eager == True:
logger.info("Preparing nf-core/eager table")
eager_table = prepare_eager_table(
samples=samples,
libraries=libraries,
table_name=table_name,
supported_archives=supported_archives,
)
eager_table.to_csv(
f"{output}/AncientMetagenomeDir_nf_core_eager_input_table.tsv",
sep="\t",
index=False,
)

if taxprofiler == True:
Expand All @@ -85,19 +144,26 @@ def run_convert(
supported_archives=supported_archives,
)
accession_table["df"].to_csv(
f"{output}/nf_core_taxprofiler_input_table.csv", header=False, index=False
f"{output}/AncientMetagenomeDir_nf_core_taxprofiler_input_table.csv",
header=False,
index=False,
)

if ameta == True:
logger.info("Preparing aMeta table")
logger.warning("aMeta does not support pairs. You must manually merge pair-end data before using samplesheet.")
aMeta_table = prepare_aMeta_table(
samples=samples,
libraries=libraries,
table_name=table_name,
supported_archives=supported_archives,
)
aMeta_table.to_csv(f"{output}/aMeta_input_table.tsv", sep="\t", index=False)

aMeta_table.to_csv(
f"{output}/AncientMetagenomeDir_aMeta_input_table.tsv",
sep="\t",
index=False,
)

if mag == True:
logger.info("Preparing nf-core/mag table")
mag_table_single, mag_table_paired = prepare_mag_table(
Expand All @@ -108,28 +174,11 @@ def run_convert(
)
if not mag_table_single.empty:
mag_table_single.to_csv(
f"{output}/nf_core_mag_input_single_table.csv", index=False
f"{output}/AncientMetagenomeDir_nf_core_mag_input_single_table.csv",
index=False,
)
if not mag_table_paired.empty:
mag_table_paired.to_csv(
f"{output}/nf_core_mag_input_paired_table.csv", index=False
f"{output}/AncientMetagenomeDir_nf_core_mag_input_paired_table.csv",
index=False,
)

logger.info("Preparing Bibtex citation file")
with open("AncientMetagenomeDir_citations.bib", "w") as fw:
fw.write(prepare_bibtex_file(samples))

logger.info("Writing filtered libraries table")
(get_libraries(
samples=samples,
libraries=libraries,
table_name=table_name,
supported_archives=supported_archives
)
.to_csv(f"{output}/AncientMetagenomeDir_filtered_libraries.tsv", sep="\t", index=False))

with open(f"{output}/ancientMetagenomeDir_curl_download_script.sh", "w") as fw:
fw.write(accession_table["curl_script"])

with open(f"{output}/ancientMetagenomeDir_aspera_download_script.sh", "w") as fw:
fw.write(accession_table["aspera_script"])
18 changes: 9 additions & 9 deletions AMDirT/viewer/streamlit.py
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ def parse_args():
)
.to_csv(sep="\t", index=False)
.encode("utf-8"),
file_name="ancientMetagenomeDir_library_table.csv",
file_name="AncientMetagenomeDir_filtered_libraries.csv",
)

############################
Expand All @@ -224,7 +224,7 @@ def parse_args():
)["df"]
.to_csv(sep="\t", header=False, index=False)
.encode("utf-8"),
file_name="ancientMetagenomeDir_accession_table.csv",
file_name="AncientMetagenomeDir_nf_core_fetchngs_input_table.tsv",
)
elif st.session_state.dl_method == "aspera":
st.download_button(
Expand All @@ -236,7 +236,7 @@ def parse_args():
st.session_state.table_name,
supported_archives,
)["aspera_script"],
file_name="ancientMetagenomeDir_aspera_download_script.sh",
file_name="AncientMetagenomeDir_aspera_download_script.sh",
)
else:
st.download_button(
Expand All @@ -248,7 +248,7 @@ def parse_args():
st.session_state.table_name,
supported_archives,
)["curl_script"],
file_name="ancientMetagenomeDir_curl_download_script.sh",
file_name="AncientMetagenomeDir_curl_download_script.sh",
)

#################
Expand All @@ -265,7 +265,7 @@ def parse_args():
)
.to_csv(sep="\t", index=False)
.encode("utf-8"),
file_name="ancientMetagenomeDir_nf_core_eager_input.tsv",
file_name="AncientMetagenomeDir_nf_core_eager_input_table.tsv",
)

#######################
Expand Down Expand Up @@ -299,7 +299,7 @@ def parse_args():
st.download_button(
label="Download nf-core/mag input CSV",
data=zip_file,
file_name="ancientMetagenomeDir_nf_core_mag_input.zip",
file_name="AncientMetagenomeDir_nf_core_mag_input.zip",
mime="application/zip",
)

Expand All @@ -317,7 +317,7 @@ def parse_args():
)
.to_csv(index=False)
.encode("utf-8"),
file_name="ancientMetagenomeDir_nf_core_taxprofiler_input.csv",
file_name="AncientMetagenomeDir_nf_core_taxprofiler_input_table.csv",
)

#################
Expand All @@ -334,7 +334,7 @@ def parse_args():
)
.to_csv(sep="\t", index=False)
.encode("utf-8"),
file_name="ancientMetagenomeDir_aMeta_input.csv",
file_name="AncientMetagenomeDir_aMeta_input_table.tsv",
)

#################
Expand All @@ -344,7 +344,7 @@ def parse_args():
st.download_button(
label="Download Citations as BibTex",
data=prepare_bibtex_file(pd.DataFrame(df_mod["selected_rows"])),
file_name="ancientMetagenomeDir_citations.bib",
file_name="AncientMetagenomeDir_bibliography.bib",
)

st.markdown("ℹ️ _By default all download scripts/inputs include ALL libraries of the selected samples. \n Review the AncientMetagenomeDir library table prior using any other table, to ensure usage of relevant libraries!_")
Expand Down

0 comments on commit bcedf21

Please sign in to comment.