Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[MRG] add citation output #617

Merged
merged 8 commits into from Jan 11, 2019
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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
13 changes: 13 additions & 0 deletions CITATION.cff
@@ -0,0 +1,13 @@
cff-version: 1.0.3
message: If you use this software, please cite it as below.
title: sourmash: a library for MinHash sketching of DNA
version: 2.0.0
doi: 10.21105/joss.00027
date-released: 2019-01-10
ctb marked this conversation as resolved.
Show resolved Hide resolved
authors:
- family-names: Brown
given-names: C. Titus
orcid: https://orcid.org/0000-0001-6001-2677
- family-names: Irber Junior
given-names: Luiz Carlos
orcid: https://orcid.org/0000-0003-4371-9659
6 changes: 6 additions & 0 deletions doc/index.rst
Expand Up @@ -33,6 +33,12 @@ We have two tutorials available: one on `genome and metagenome searching <tutori
To use sourmash, you must be comfortable with the UNIX command line;
programmers may find the Python library and API useful as well.

If you use sourmash, please cite us!

Brown and Irber (2016),
**sourmash: a library for MinHash sketching of DNA**
Journal of Open Source Software, 1(5), 27, `doi:10.21105/joss.00027 <https://joss.theoj.org/papers/3d793c6e7db683bee7c03377a4a7f3c9>`__

sourmash in brief
-----------------

Expand Down
3 changes: 2 additions & 1 deletion sourmash/__main__.py
Expand Up @@ -48,6 +48,7 @@
** Documentation is available at https://sourmash.readthedocs.io/
'''


def main():
set_quiet(False)

Expand All @@ -65,7 +66,7 @@ def main():
'sig': sig_main,
'signature': sig_main}
parser = argparse.ArgumentParser(
description='work with compressed sequence representations')
description='work with compressed biological sequence representations')
parser.add_argument('command', nargs='?')
args = parser.parse_args(sys.argv[1:2])

Expand Down
33 changes: 16 additions & 17 deletions sourmash/commands.py
Expand Up @@ -10,6 +10,7 @@
import random

import screed
from .sourmash_args import SourmashArgumentParser
from . import DEFAULT_SEED, MinHash, load_sbt_index, create_sbt_index
from . import signature as sig
from . import sourmash_args
Expand All @@ -23,11 +24,9 @@
WATERMARK_SIZE = 10000




def info(args):
"Report sourmash version + version of installed dependencies."
parser = argparse.ArgumentParser()
parser = SourmashArgumentParser(no_citation=True)
parser.add_argument('-v', '--verbose', action='store_true',
help='report versions of khmer and screed')
args = parser.parse_args(args)
Expand Down Expand Up @@ -60,7 +59,7 @@ def compute(args):
=> creates one output file file.sig, with all sequences from
file1.fa and file2.fa combined into one signature.
"""
parser = argparse.ArgumentParser()
parser = SourmashArgumentParser()
parser.add_argument('filenames', nargs='+',
help='file(s) of sequences')

Expand Down Expand Up @@ -356,7 +355,7 @@ def compare(args):
"Compare multiple signature files and create a distance matrix."
import numpy

parser = argparse.ArgumentParser()
parser = SourmashArgumentParser()
parser.add_argument('signatures', nargs='+', help='list of signatures')
parser.add_argument('-o', '--output')
parser.add_argument('--ignore-abundance', action='store_true',
Expand Down Expand Up @@ -499,7 +498,7 @@ def plot(args):
from . import fig as sourmash_fig

# set up cmd line arguments
parser = argparse.ArgumentParser()
parser = SourmashArgumentParser()
parser.add_argument('distances', help="output from 'sourmash compare'")
parser.add_argument('--pdf', action='store_true',
help='output PDF, not PNG.')
Expand Down Expand Up @@ -601,7 +600,7 @@ def plot(args):

def import_csv(args):
"Import a CSV file full of signatures/hashes."
p = argparse.ArgumentParser()
p = SourmashArgumentParser()
p.add_argument('mash_csvfile')
p.add_argument('-o', '--output', type=argparse.FileType('wt'),
default=sys.stdout, help='(default: stdout)')
Expand Down Expand Up @@ -635,7 +634,7 @@ def import_csv(args):


def dump(args):
parser = argparse.ArgumentParser()
parser = SourmashArgumentParser()
parser.add_argument('filenames', nargs='+')
parser.add_argument('-k', '--ksize', type=int, default=DEFAULT_LOAD_K, help='k-mer size (default: %(default)i)')
args = parser.parse_args(args)
Expand All @@ -654,7 +653,7 @@ def dump(args):


def sbt_combine(args):
parser = argparse.ArgumentParser()
parser = SourmashArgumentParser()
parser.add_argument('sbt_name', help='name to save SBT into')
parser.add_argument('sbts', nargs='+',
help='SBTs to combine to a new SBT')
Expand Down Expand Up @@ -683,7 +682,7 @@ def index(args):
"""
Build an Sequence Bloom Tree index of the given signatures.
"""
parser = argparse.ArgumentParser()
parser = SourmashArgumentParser()
parser.add_argument('sbt_name', help='name to save SBT into')
parser.add_argument('signatures', nargs='+',
help='signatures to load into SBT')
Expand Down Expand Up @@ -791,7 +790,7 @@ def index(args):
def search(args):
from .search import search_databases

parser = argparse.ArgumentParser()
parser = SourmashArgumentParser()
parser.add_argument('query', help='query signature')
parser.add_argument('databases', help='signatures/SBTs to search',
nargs='+')
Expand Down Expand Up @@ -898,7 +897,7 @@ def search(args):


def categorize(args):
parser = argparse.ArgumentParser()
parser = SourmashArgumentParser()
parser.add_argument('sbt_name', help='name of SBT to load')
parser.add_argument('queries', nargs='+',
help='list of signatures to categorize')
Expand Down Expand Up @@ -980,7 +979,7 @@ def categorize(args):
def gather(args):
from .search import gather_databases, format_bp

parser = argparse.ArgumentParser()
parser = SourmashArgumentParser()
parser.add_argument('query', help='query signature')
parser.add_argument('databases', help='signatures/SBTs to search',
nargs='+')
Expand Down Expand Up @@ -1120,7 +1119,7 @@ def gather(args):
def multigather(args):
from .search import gather_databases, format_bp

parser = argparse.ArgumentParser()
parser = SourmashArgumentParser()
parser.add_argument('--db', nargs='+', action='append')
parser.add_argument('--query', nargs='+', action='append')
parser.add_argument('--traverse-directory', action='store_true',
Expand Down Expand Up @@ -1279,7 +1278,7 @@ def multigather(args):
def watch(args):
"Build a signature from raw FASTA/FASTQ coming in on stdin, search."

parser = argparse.ArgumentParser()
parser = SourmashArgumentParser()
parser.add_argument('sbt_name', help='name of SBT to search')
parser.add_argument('inp_file', nargs='?', default='/dev/stdin')
parser.add_argument('-q', '--quiet', action='store_true',
Expand Down Expand Up @@ -1376,7 +1375,7 @@ def do_search():
def storage(args):
from .sbt import convert_cmd

parser = argparse.ArgumentParser()
parser = SourmashArgumentParser()
parser.add_argument('-q', '--quiet', action='store_true',
help='suppress non-error output')

Expand All @@ -1394,7 +1393,7 @@ def storage(args):


def migrate(args):
parser = argparse.ArgumentParser()
parser = SourmashArgumentParser()
parser.add_argument('sbt_name', help='name to save SBT into')

args = parser.parse_args(args)
Expand Down
3 changes: 2 additions & 1 deletion sourmash/lca/command_classify.py
Expand Up @@ -12,6 +12,7 @@
from ..logging import notify, error, debug, set_quiet
from . import lca_utils
from .lca_utils import check_files_exist
from ..sourmash_args import SourmashArgumentParser

DEFAULT_THRESHOLD=5 # how many counts of a taxid at min

Expand Down Expand Up @@ -79,7 +80,7 @@ def classify(args):
"""
main single-genome classification function.
"""
p = argparse.ArgumentParser(prog="sourmash lca classify")
p = SourmashArgumentParser(prog="sourmash lca classify")
p.add_argument('--db', nargs='+', action='append')
p.add_argument('--query', nargs='+', action='append')
p.add_argument('--threshold', type=int, default=DEFAULT_THRESHOLD)
Expand Down
3 changes: 2 additions & 1 deletion sourmash/lca/command_compare_csv.py
Expand Up @@ -12,10 +12,11 @@
from . import lca_utils
from .lca_utils import zip_lineage
from .command_index import load_taxonomy_assignments
from ..sourmash_args import SourmashArgumentParser


def compare_csv(args):
p = argparse.ArgumentParser(prog="sourmash lca compare_csv")
p = SourmashArgumentParser(prog="sourmash lca compare_csv")
p.add_argument('csv1', help='taxonomy spreadsheet output by classify')
p.add_argument('csv2', help='custom taxonomy spreadsheet')
p.add_argument('-q', '--quiet', action='store_true',
Expand Down
4 changes: 3 additions & 1 deletion sourmash/lca/command_gather.py
Expand Up @@ -15,6 +15,8 @@
from . import lca_utils
from .lca_utils import check_files_exist
from ..search import format_bp
from ..sourmash_args import SourmashArgumentParser


LCAGatherResult = namedtuple('LCAGatherResult',
'intersect_bp, f_unique_to_query, f_unique_weighted, average_abund, lineage, f_match, name, n_equal_matches')
Expand Down Expand Up @@ -183,7 +185,7 @@ def gather_main(args):
full lineage information for each known hash, as opposed to storing only
the least-common-ancestor information for it.
"""
p = argparse.ArgumentParser(prog="sourmash lca gather")
p = SourmashArgumentParser(prog="sourmash lca gather")
p.add_argument('query')
p.add_argument('db', nargs='+')
p.add_argument('-o', '--output', type=argparse.FileType('wt'),
Expand Down
3 changes: 2 additions & 1 deletion sourmash/lca/command_index.py
Expand Up @@ -12,6 +12,7 @@
from ..logging import notify, error, debug, set_quiet
from . import lca_utils
from .lca_utils import LineagePair
from ..sourmash_args import SourmashArgumentParser


def load_taxonomy_assignments(filename, delimiter=',', start_column=2,
Expand Down Expand Up @@ -111,7 +112,7 @@ def index(args):
"""
main function for building an LCA database.
"""
p = argparse.ArgumentParser(prog="sourmash lca index")
p = SourmashArgumentParser(prog="sourmash lca index")
p.add_argument('csv', help='taxonomy spreadsheet')
p.add_argument('lca_db_out', help='name to save database to')
p.add_argument('signatures', nargs='+',
Expand Down
3 changes: 2 additions & 1 deletion sourmash/lca/command_rankinfo.py
Expand Up @@ -9,6 +9,7 @@

from ..logging import error, debug, set_quiet
from . import lca_utils
from ..sourmash_args import SourmashArgumentParser


def make_lca_counts(dblist):
Expand Down Expand Up @@ -48,7 +49,7 @@ def rankinfo_main(args):
"""
rankinfo!
"""
p = argparse.ArgumentParser(prog="sourmash lca rankinfo")
p = SourmashArgumentParser(prog="sourmash lca rankinfo")
p.add_argument('db', nargs='+')
p.add_argument('--scaled', type=float)
p.add_argument('-q', '--quiet', action='store_true',
Expand Down
4 changes: 3 additions & 1 deletion sourmash/lca/command_summarize.py
Expand Up @@ -12,6 +12,8 @@
from ..logging import notify, error, print_results, set_quiet, debug
from . import lca_utils
from .lca_utils import check_files_exist
from ..sourmash_args import SourmashArgumentParser


DEFAULT_THRESHOLD=5

Expand Down Expand Up @@ -58,7 +60,7 @@ def summarize_main(args):
"""
main summarization function.
"""
p = argparse.ArgumentParser(prog="sourmash lca summarize")
p = SourmashArgumentParser(prog="sourmash lca summarize")
p.add_argument('--db', nargs='+', action='append')
p.add_argument('--query', nargs='+', action='append')
p.add_argument('--threshold', type=int, default=DEFAULT_THRESHOLD)
Expand Down
24 changes: 12 additions & 12 deletions sourmash/sig/__main__.py
Expand Up @@ -12,7 +12,7 @@

from ..logging import set_quiet, error, notify, set_quiet, print_results
from .. import sourmash_args
from ..sourmash_args import DEFAULT_LOAD_K
from ..sourmash_args import DEFAULT_LOAD_K, SourmashArgumentParser
from .._minhash import get_max_hash_for_scaled

usage='''
Expand Down Expand Up @@ -68,7 +68,7 @@ def describe(args):
"""
provide basic info on signatures
"""
p = argparse.ArgumentParser(prog='sourmash signature describe')
p = SourmashArgumentParser(prog='sourmash signature describe')
p.add_argument('signatures', nargs='+')
p.add_argument('-q', '--quiet', action='store_true',
help='suppress non-error output')
Expand Down Expand Up @@ -143,7 +143,7 @@ def overlap(args):
"""
provide detailed comparison of two signatures
"""
p = argparse.ArgumentParser(prog='sourmash signature overlap')
p = SourmashArgumentParser(prog='sourmash signature overlap')
p.add_argument('signature1')
p.add_argument('signature2')
p.add_argument('-q', '--quiet', action='store_true',
Expand Down Expand Up @@ -231,7 +231,7 @@ def merge(args):
"""
merge one or more signatures.
"""
p = argparse.ArgumentParser(prog='sourmash signature merge')
p = SourmashArgumentParser(prog='sourmash signature merge')
p.add_argument('signatures', nargs='+')
p.add_argument('-q', '--quiet', action='store_true',
help='suppress non-error output')
Expand Down Expand Up @@ -299,7 +299,7 @@ def intersect(args):

This function always removes abundances.
"""
p = argparse.ArgumentParser(prog='sourmash signature intersect')
p = SourmashArgumentParser(prog='sourmash signature intersect')
p.add_argument('signatures', nargs='+')
p.add_argument('-q', '--quiet', action='store_true',
help='suppress non-error output')
Expand Down Expand Up @@ -347,7 +347,7 @@ def subtract(args):
"""
subtract one or more signatures from another
"""
p = argparse.ArgumentParser(prog='sourmash signature subtract')
p = SourmashArgumentParser(prog='sourmash signature subtract')
p.add_argument('signature_from')
p.add_argument('subtraction_sigs', nargs='+')
p.add_argument('-q', '--quiet', action='store_true',
Expand Down Expand Up @@ -409,7 +409,7 @@ def rename(args):
"""
rename a signature.
"""
p = argparse.ArgumentParser(prog='sourmash signature rename')
p = SourmashArgumentParser(prog='sourmash signature rename')
p.add_argument('signature')
p.add_argument('name')
p.add_argument('-q', '--quiet', action='store_true',
Expand All @@ -434,7 +434,7 @@ def extract(args):
"""
extract signatures.
"""
p = argparse.ArgumentParser(prog='sourmash signature extract')
p = SourmashArgumentParser(prog='sourmash signature extract')
p.add_argument('signatures', nargs='+')
p.add_argument('-q', '--quiet', action='store_true',
help='suppress non-error output')
Expand Down Expand Up @@ -486,7 +486,7 @@ def flatten(args):
"""
flatten a signature, removing abundances.
"""
p = argparse.ArgumentParser(prog='sourmash signature flatten')
p = SourmashArgumentParser(prog='sourmash signature flatten')
p.add_argument('signatures', nargs='+')
p.add_argument('-q', '--quiet', action='store_true',
help='suppress non-error output')
Expand Down Expand Up @@ -541,7 +541,7 @@ def downsample(args):
"""
downsample a scaled signature.
"""
p = argparse.ArgumentParser(prog='sourmash signature downsample')
p = SourmashArgumentParser(prog='sourmash signature downsample')
p.add_argument('signatures', nargs="+")
p.add_argument('--scaled', type=int, default=0,
help='scaled value to downsample to')
Expand Down Expand Up @@ -612,7 +612,7 @@ def sig_import(args):
"""
import a signature into sourmash format.
"""
p = argparse.ArgumentParser(prog='sourmash signature import')
p = SourmashArgumentParser(prog='sourmash signature import')
p.add_argument('filenames', nargs='+')
p.add_argument('-q', '--quiet', action='store_true',
help='suppress non-error output')
Expand Down Expand Up @@ -650,7 +650,7 @@ def export(args):
"""
export a signature to mash format
"""
p = argparse.ArgumentParser(prog='sourmash signature export')
p = SourmashArgumentParser(prog='sourmash signature export')
p.add_argument('filename')
p.add_argument('-q', '--quiet', action='store_true',
help='suppress non-error output')
Expand Down