cannin/biostars_qa huggingface dataset:
Question: Hello all,

I understand the differences between RPKM, which normalizes for read depth and then gene length; FPKM, the same thing as RPKM but does not count reads twice if both came from the same fragment; and TPM which normalizes for gene length, then read length - allowing comparison of read count proportion between samples.

However, I have not come across any literature on whether the same principle of not counting reads twice from the same fragment (FPKM) has been applied to the TPM method. I don't doubt that this is done, I would just like to know how.

Thanks

Answer: Yes, the TPM measure accounts for fragments. In a single-end library, each fragment is represented by a sequencing read, while in a paired-end library, each fragment is represented by a read pair. If `r_i` is the number of fragments mapping to transcript `t_i` then we can define

`TPM_i = 1,000,000 * [(r_i / l_i) / (Σ_j (r_j / l_j))]`

where `l_i` is the *effective length* of transcript `i`. The denominator normalizes for the length scaled abundance of all transcripts in this sample. In a single-end library `r_i` represents the number of reads mapping to transcript `t_i`, while in a paired-end library, it represents the number of read pairs (ignoring, for simplicity, that an orphaned read is representative of the entire pair for this purpose).
Question: Hi,

I'm fairly new to snakemake - I've designed my RNAseq pipeline as a Snakefile. It runs STAR and RSEM and a few shell commands.

One of the steps I wish to implement is to upload a generated BAM file to cloud storage once the pipeline is done computing downstream results. I wish to use `rclone` for this, which is very much like rsync for cloud storage locations. However, rsync/rclone do not produce output files. They simply copy/move a file from source to destination. How can I add a snakemake rule that runs rsync/rclone when there is no "output" that rsync/rclone generate? I don't want to use the random content that a redirection would produce as the "output" parameter - it is too unreliable. This should be a simple solution but maybe I am too close to the problem.

Is there a way I can do this:

rule rsync_copy
input:
"{sample}.bam"
output:
??
shell:
"""
rsync -avPe ssh "{input}" "user@remote:/bam_files/{wildcards.sample}/"
"""

Answer: probably bad hack would be to touch a file after "rsync_copy.ok", but i think you could end up with a situation where something goes bad and file still gets touched.

have the server confirm completion and send something back?
Question: I have downloaded a number of Plink SNP data sets from a region of the world I am interested in. These datasets were created by different means that my own, and thus contain different SNPs

For each of these, I have generated lists of RSids in common between my data and one of the individual datasets (i.e., intersection of my dataset and one other dataset); thus, I have about five or six lists of RSids.

I need a quick and easy way to get the RSids that appear in last five or six lists in R or shell or Python.

Any suggestions on how to do this?

Answer: You can ignore this, I figured it out

```r
a <- read.table("Ethiopia.snps", header=F)
b <- read.table("GIH.snps", header=F)
c <- read.table("LWK.snps", header=F)
d <- read.table("MKK.snps", header=F)
e <- read.table("NAfrica.snps", header=F)

intersect(intersect(a$V1,b$V1),intersect(intersect(c$V1,d$V1),e$V1)) -> consensus
write.table(consensus, quote=F, file="consensus.txt")
```
Question: Hi,

I have a fasta file **input.fa** which has duplicate fasta headers.

>UID584_Org_name_strain
JGTTQEWEILYNMCCDASSHHGTQEFGRKKQLAADBNGTAVQEGFN
>JGH1236_Org_name
HFHGTSNNIGLTTREKKQLAADBNGTAVQEGFNMENDLALFVTYGAHLVDGNVLTDRLSIGGKTALTGVDP
>JGH1236_Org_name
FHGTSNNIGLTTREKKQLAADBNGTAVQEGFNMENDLALFVTYGAHLVDGNVLTDRLSIGGKTALTGV
>KIL563.2_Org_name
TTFWLMAFDSCVIIPPTREWWQQLGTGTSNNIGLTTREKKQLAADBN
>KIL563.2_Org_name
TTFWLMAFDSCVIIPPTREWWQQLGTGTSEKKQLAADBNGTAVQEGFNMENDLALFVTYGAHLV
>KIL563.2_Org_name
TTFWLMAFDSCVIIPPTREWWQQLGTGTSEKKQLAADBNGTAVQEGFNMENDLALFVTY
>GTK584_Org_name_str
KKQLAADBNGTAVQEGFNMENDLALFVTYGHFHGTSNNIGLTTREKKQLAAWLMAFDSCVIIPPTRE
>GTK584_Org_name_str
DBNGTAVQEGFNMENDLALFVTYGHFHGTSNNIGLTTREKKQLAAWLMAFDSCVIIPPTREADBNGTAVQEGFNME
>EAD5624_Org_nam
LTTREKKQLAADBNGTAVQEGFNMENDLALFVTYBNGTAVQEGFNMENDLALFVTYGAAWLMAFDSCVIIPPT
>EAD5624_Org_nam
LTTREKKQLAADBNGTAVQEGFNMENDLALFVTYBNGTAVQVIIPPTREWWQQLGTGTSEKKQLAADBNGTAVQEGF

I want to rename all the headers with numbers before the first underscore '_' like this:

>UID584.1_Org_name_strain
JGTTQEWEILYNMCCDASSHHGTQEFGRKKQLAADBNGTAVQEGFN
>JGH1236.1_Org_name
HFHGTSNNIGLTTREKKQLAADBNGTAVQEGFNMENDLALFVTYGAHLVDGNVLTDRLSIGGKTALTGVDP
>JGH1236.2_Org_name
FHGTSNNIGLTTREKKQLAADBNGTAVQEGFNMENDLALFVTYGAHLVDGNVLTDRLSIGGKTALTGV
>KIL563.2.1_Org_name
TTFWLMAFDSCVIIPPTREWWQQLGTGTSNNIGLTTREKKQLAADBN
>KIL563.2.2_Org_name
TTFWLMAFDSCVIIPPTREWWQQLGTGTSEKKQLAADBNGTAVQEGFNMENDLALFVTYGAHLV
>KIL563.2.3_Org_name
TTFWLMAFDSCVIIPPTREWWQQLGTGTSEKKQLAADBNGTAVQEGFNMENDLALFVTY
>GTK584.1_Org_name_str
KKQLAADBNGTAVQEGFNMENDLALFVTYGHFHGTSNNIGLTTREKKQLAAWLMAFDSCVIIPPTRE
>GTK584.2_Org_name_str
DBNGTAVQEGFNMENDLALFVTYGHFHGTSNNIGLTTREKKQLAAWLMAFDSCVIIPPTREADBNGTAVQEGFNME
>EAD5624.1_Org_nam
LTTREKKQLAADBNGTAVQEGFNMENDLALFVTYBNGTAVQEGFNMENDLALFVTYGAAWLMAFDSCVIIPPT
>EAD5624.2_Org_nam
LTTREKKQLAADBNGTAVQEGFNMENDLALFVTYBNGTAVQVIIPPTREWWQQLGTGTSEKKQLAADBNGTAVQEGF
It would be convenient if anybody could suggest me `sed/awk/grep` command for this.
Any help would be appreciated. Thanks!

Answer: This work, too. No order on sequences required. perl, though...

perl -ne 'if (/^>/){@a=split /_/; $h{$a[0]}++; $a[0].= ".".$h{$a[0]}; $s=join "_", @a; print $s;}else{print $_;}' out
Question: I want to create bigwigs in Python. Is there a library that can do this?

Two ways of doing it that I'd rather avoid:

Currently I use rpy2 with rtracklayer and genomicranges through bioconda. This works, but is a bit heavy on the dependencies. Example code:
https://github.com/endrebak/epic/blob/256ce4974a4ca6a10a0a5cca041c12a4e7ee9eb9/epic/bigwig/create_bigwigs.py

Another option is to use the UCSC binary tools: create a bedGraph and then convert it to bigwig by bedgraphtobigwig, but this is rather slow due to IO as you need to write files twice.

Answer: You want [pyBigWig](https://github.com/dpryan79/pyBigWig). I wrote that for bigWig IO in deepTools, since we needed faster read access than bx-python provided and wanted to get rid of UCSC tools for bigWig creation.
Question: Do you know any public access database specialized in data from Assisted Human Reproduction?

I am studying Bioinformatics and would like to use that kind of data for some exercises. It is a topic that interests me, but I have been googling around and I haven't found any relevant dataset.

Answer: You can access publicly available data (for the United States) at the CDC site https://www.cdc.gov/art/artdata/index.html
Question: Hi,

I have 16 samples and multiple conditions (treatment and sex): (4 Untreated_male, 4 Untreated_female, 4 Treated_male, 4 Treated_female)

I want to do 3 types of DEG analysis using DESeq2.

1. Treated_female VS Untreated Female
2. Treated_male VS Untreated male
3. Treated VS Untreated controlled by sex

I am very new to DESeq2. I read in some posts that for the #1 and #2 analysis, it is better to combine all the 16 samples in dds and then set a design just specifically for Treated_female VS Untreated Female.

I know that:

`design= ~ treatment` ( will result in untreated VS treated (both sexes))

`design= ~ sex+treatment+sex:treatment` ( will result in Treated VS Untreated controlled by sex)

but how about the #1 and #2 analysis? how can I specify the design for just one sex?

Answer: I think that the first 2 analyses, the 8 samples of the other sex are not relevant and so need not be combined. Also, I think you mean you have 16 samples, not 12.

You can create 3 DESeq datasets, one with all male samples and `design = ~ treatment`, one with all female samples and same design, and the third with all 16 samples and a combined formula. I don't understand why the design formula has the `sex:treatment` term though - how does that change a design of just `sex + treatment`?
Question: How can i use BALIBASE to make comparison between (t-coffee,clustal,muscle)?step by step plz

Answer: HI
1-i used the data set

>seq0
FQTWEEFSRAAEKLYLADPMKVRVVLKYRHVDGNLCIKVTDDLVCLVYRTDQAQDVKKIEKF
>seq1
KYRTWEEFTRAAEKLYQADPMKVRVVLKYRHCDGNLCIKVTDDVVCLLYRTDQAQDVKKIEKFHSQLMRLME LKVTDNKECLKFKTDQAQEAKKMEKLNNIFFTLM
>seq2
EEYQTWEEFARAAEKLYLTDPMKVRVVLKYRHCDGNLCMKVTDDAVCLQYKTDQAQDVKKVEKLHGK
>seq3
MYQVWEEFSRAVEKLYLTDPMKVRVVLKYRHCDGNLCIKVTDNSVCLQYKTDQAQDVK
>seq4
EEFSRAVEKLYLTDPMKVRVVLKYRHCDGNLCIKVTDNSVVSYEMRLFGVQKDNFALEHSLL
>seq5
SWEEFAKAAEVLYLEDPMKCRMCTKYRHVDHKLVVKLTDNHTVLKYVTDMAQDVKKIEKLTTLLMR
>seq6
FTNWEEFAKAAERLHSANPEKCRFVTKYNHTKGELVLKLTDDVVCLQYSTNQLQDVKKLEKLSSTLLRSI
>seq7
SWEEFVERSVQLFRGDPNATRYVMKYRHCEGKLVLKVTDDRECLKFKTDQAQDAKKMEKLNNIFF
>seq8
SWDEFVDRSVQLFRADPESTRYVMKYRHCDGKLVLKVTDNKECLKFKTDQAQEAKKMEKLNNIFFTLM
>seq9
KNWEDFEIAAENMYMANPQNCRYTMKYVHSKGHILLKMSDNVKCVQYRAENMPDLKK
>seq10
FDSWDEFVSKSVELFRNHPDTTRYVVKYRHCEGKLVLKVTDNHECLKFKTDQAQDAKKMEK

2-used the online page of (clustal/t-coffee/muscle) to make MSA
3-get the output
4-then i used these outputs as an input in scorecones server
i want to know the next step exactly how can i use BALIBASE to compare between (clustal/t-coffee/muscle) as i will draw a curve between the output of (clustal/t-coffee/muscle/balibase) the nearest one to balibase will be the best and where can i put the input (i want to work online)in balibase how can i align with BALIBASE
![Scorecons results for output of(clustal/t-coffee/muscle) , compared against BALiBASE scores.][1]
[1]: https://ibb.co/iKp0o7
Question: I have a wrapper python script that used RPy2 and I am calling native R functions and script, but I want to run R in a multithreaded environment. At the moment I am able to run R in multi process mode. Any ideas how this can be done?

Answer: See here, question I asked on stackOverflow a while ago.
Question: Hello everyone, I'm handling self-made VCF files and I need to bgzip and tabix -p them ibn order to use some vcf-tools perl scripts. When I apply the tabiz command:
Tabix -p vcf file1.vcf.gz
the following error appears:

[ti_index_core] the file out of order at line 8

I had previous errors because I had an extra withespace at the end of each line which I removed using:

sed -e 's/ $//' file1.vcf

I have to say that the VCF file is all tab separated.

So, there are the first 20 lines of my vcf file:

##fileformat=VCFv4.1
##source=pseq
##FILTER=<ID=PASS,Description="Passed variant FILTERs">
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT 45125
1 109440678 1KG_1_109440678 I D . PASS . GT 1/1
1 110655430 1KG_1_110655430 I D . PASS . GT 1/1
1 113933669 1KG_1_113933669 I D . PASS . GT 1/1
1 1158675 1KG_1_1158675 I D . PASS . GT 1/1
1 12343587 1KG_1_12343587 I D . PASS . GT 1/1
1 12632789 1KG_1_12632789 I D . PASS . GT 1/1
1 1323216 1KG_1_1323216 I D . PASS . GT 1/1
1 14106394 1KG_1_14106394 D I . PASS . GT 1/1
1 150201529 1KG_1_150201529 I D . PASS . GT 1/1
1 150938672 1KG_1_150938672 I D . PASS . GT 1/1
1 152085296 1KG_1_152085296 I D . PASS . GT 1/1
1 153641026 1KG_1_153641026 I D . PASS . GT 1/1
1 167097500 1KG_1_167097500 I D . PASS . GT 1/1
1 169512078 1KG_1_169512078 I D . PASS . GT 1/1
1 170967308 1KG_1_170967308 I D . PASS . GT 1/1
1 171079942 1KG_1_171079942 I D . PASS . GT 1/1

Hope you can help me

Answer: your VCF must be sorted on CHROM/POS . It is not.

http://samtools.sourceforge.net/tabix.shtml

" The input data file must be position sorted and compressed by
bgzip..."
Question: Hii,

I have to call genotype for multiple samples using joint genotyping methedology of GATK best practices, So I made a shell script which take list of samples in a text file as an input, and script through all commands on each sample one by one up to GVCF step. After generating GVCF for each sample, I want to call joint genotype using following command:

java -jar GenomeAnalysisTK.jar -T GenotypeGVCFs -R hg19.fa -V sample1.g.vcf -V sample2.g.vcf [.. -V sampleN.g.vcf] -o rawVariants.vcf

So I pass "-V sample1.g.vcf -V sample2.g.vcf -V sampleN.g.vcf" as a variable like below:

V="-V sample1.g.vcf -V sample2.g.vcf .. -V sampleN.g.vcf"

java -jar GenomeAnalysisTK.jar -T GenotypeGVCFs -R hg19.fa `echo $V` -o rawVariants.vcf

OR

java -jar GenomeAnalysisTK.jar -T GenotypeGVCFs -R hg19.fa $V -o rawVariants.vcf

I got "**ERROR MESSAGE:** Invalid argument value '-V sample1.g.vcf -V sample2.g.vcf .. -V sampleN.g.vcf'.
As the command is considering $V variable as a single argument.

Please provide me some way to pass '-V sample1.g.vcf -V sample2.g.vcf .. -V sampleN.g.vcf' to the GATK command in shell script.

Thanks in advance!

Answer: Use a list with the '.list' suffix

echo "sample1.g.vcf" > my.list
echo "sample2.g.vcf" >> my.list
echo "sample3.g.vcf" >> my.list
echo "sampleN.g.vcf" >> my.list

and then

java -jar GenomeAnalysisTK.jar -T GenotypeGVCFs -R hg19.fa -V my.list -o rawVariants.vcf
Question: Is there any resource of standardized and uniformly stylized (and potentially, but not necessarily, even free) icons of popular model organisms (including E. coli and other popular unicellular organisms)?

I wish to use it for making a small tabular-like panel with ~10 organisms, next to the main figure panel, which would show the detailed data for one organism.

Some model organisms are not yet included in unicode.

Answer: We use the EMBL-[EBI Framework][1] font icons for representing the species in our gene trees. To see the ones we have used, go to our page showing a profile of the [PTEN][2] drug target and expand the 'Gene tree' tab (second from the bottom).

[1]: http://www.ebi.ac.uk/web_guidelines/EBI-Icon-fonts/v1.1/
[2]: http://targetvalidation.org/target/ENSG00000171862
Question: According to plink documentation, a hardcall is saved when the distance from the nearest hardcall, defined as **0.5 * sum_i |x_i - round(x_i)|** (where the x_i's are 0..2 allele dosages), is not greater than 0.1.

Truthfully, this doesn't make sense to me (especially why x_i is being summed) and was hoping if someone could help break down math.

Many thanks!

Answer: Suppose there are three alleles, with dosages 1.01, 0.92, and 0.07. Then the formula yields:

0.5 * (|1.01 - 1| + |0.92 - 1| + |0.07 - 0|)
= 0.5 * (0.01 + 0.08 + 0.07)
= 0.5 * 0.16
= 0.08

which is not greater than 0.1, so the nearest hardcall (one copy of the first allele and one copy of the second allele) is saved.

The formula is a little bit complicated because it has to generalize to multiallelic variants. It does exactly what you’d expect when there are only two alleles, though.
Question: Hi All,

Anyone knows is there any paper provided the Heritability (h2) to large number of human phenotypes with twin's data?

or any database to show the h2 for different phenotypes/traits?

Thanks.

Update: done!

@Fabio Marroni give me exactly what I want. Thanks.

Heritability of >2,000 traits & disorders in UK Biobank
https://nealelab.github.io/UKBB_ldsc/

---------------------
If heritability provides such limited information, why do researchers study it? Heritability is of particular interest in understanding traits that are very complex with many contributing factors. Heritability can give initial clues as to the relative influences of “nature” (genetics) and “nurture” (environment) on complex traits, and it can give researchers a place to start teasing apart the factors that influence these traits.

Answer: They have a population-based sample, so I think they do not have twin-based heritability. If you need twin data you might look for twin-based registries such as [this one][1].

[1]: http://www.twinsuk.ac.uk/
Question: Hello to everybody.

As I start studying bioinformatics recently, I need from an expert to validate if my "pipeline" is correct.

Let's say we have two genomes, A &B and from each genome, a group of encoded genes, Ax=20 & Bx 15, respectively.

To find the non shared genes between those two genomes:

I. **created a DB** of the genes of the genome A (Ax database), and I blast the Bx against Ax.
I used this command to count the numbers of shared genes.

**for the genome A**

> awn '{print $1}' blast_result.txt |sort -u|wc -l --> 10 genes

**and for the genome B**

> awk '{print $2}' blast_blast.txt |sort -u|wc -l -->8 genes

After I did **tblastn** of Ax genes against B genome in which I have --> 1 hit

and Bx genes against A genome which results in ---> 2 hits

So the actual number of NON shared genes between genomes A&B is :

For genome A 20 -(10 +1) =9 non-shared genes with genome B

For genome B 15 - (8 +2) = 5 non shared genes with genome A

Is this pipeline correct? Thanks in advance!!!

Answer: Yep, that seems OK to me. Nice to see btw you considered doing a tblastn search on top of the blastp (:thumbs_up:)

the only thing you might need to check is to see if the tblastn hit is not already present in the result of your blastp, or do you only tblastn the proteins not present in the blastp output? if so, then it's ok

though correct this is a very basic (but correct) approach. As a more advanced approach you could consider running a protein clsutering (gene families) tool on the reciprocal blastp output, something like inparanoid, orthofinder, ... parsing those outputs will also show you the non-shared, or species specific, genes. Downside here is that including the genes missed in annotations (== the ones you picked up with tblastn) will be a bit harder.
Question: I want draw circular dendrogram with R.
I used dendextend package and followed example instructions.

However there is no description for annotatining height(distance) information.
How to visualize height information?

# Distance matrix
mat=matrix(abs(rnorm(100)),10,10);dimnames(mat)=list(letters[1:10],letters[1:10])
ma2=as.dist(mat)

# dendrogram with distance info
hc=hclust(ma2)

dend=as.dendrogram(hc)

plot(dend)

# Circular dendrogram without distance info (How to add height info for circular dendrogram?
library(dendextend)

circlize_dendrogram(dend = dend)

Answer: The function does not appear to draw the height axis for some reason. I have neither seen much examples of it online - all circular dendrograms appear to omit it. So, I embarked on a task to add it myself.

The following code appears to do it:

mat <- matrix(abs(rnorm(100)),10,10)
dimnames(mat) <- list(letters[1:10],letters[1:10])
ma2 <- as.dist(mat)
hc <- hclust(ma2)
dend <- as.dendrogram(hc)

par(mfrow=c(1,2))

plot(dend)

require(circlize)
require(dendextend)

#Get the heights for each branch
heights <- round(get_branches_heights(dend, sort=FALSE), 1)

#Get max height
maxHeight= max(heights)

#Set label and dendrogram height for circular dendrogram
labelHeight=0.1
dendHeight=0.8

#Draw the circular dendrogram
circlize_dendrogram(dend,
facing = "outside",
labels = TRUE,
labels_track_height = labelHeight,
dend_track_height = dendHeight)

# Create tick co-ordinates and values for the new axis
# We have to ensure that we don't overlap the label plot region
# (height specified by labelHeight), nor the central region of the
# plot (1-(dendHeight+labelHeight))
ticks <- seq(from = (1-(dendHeight+labelHeight)),
to = (1-labelHeight), length.out=5)
values <- round(rev(seq(from=0, to=maxHeight, length.out=5)), 1)

#Add the new axis
require(plotrix)
ablineclip(h=0, v=ticks, col="black",
x1=1-(dendHeight+labelHeight),
x2=1-labelHeight,
y1=0,
y2=0.04,
lwd=1.5)
text(ticks, 0+0.08, values, cex=0.8)
text(
(1-labelHeight)-(((1-labelHeight)-(1-(dendHeight+labelHeight)))/2),
0+0.14,
"Height", cex=0.8)
Question: I am using NGSPLOT to generate heatmaps of a couple of TF's, but the output only gives me the same color for each heatmap. I was wondering if it was possible to generate the heatmaps with different colors for each heatmap to differentiate between them easier.

I've looked everywhere in the documentation, and it appears it should be possible (based on some images in the ngsplot paper) but I can't seem to figure out how. Does anyone have any idea?

Answer: You can generate something like this figure 2b in http://www.ncbi.nlm.nih.gov/pmc/articles/PMC4220495/figure/f2/ using [deepTools][1]. You simply specify the colorMap that you want.

[1]: http://deeptools.readthedocs.org/en/latest/content/tools/plotHeatmap.html
Question: I have assembled four bacterial genomes derived from MiSeq pair-ended sequencing data using the following steps:

1. Assembly using CLC Workbench;
2. Assembly using SPADES;
3. Assembly using A5 pipeline;
4. Merging of the three assembles using CISA;
5. Quality check of the assemblies using QUAST.

For checking the misassemblies, QUAST relies on a reference genome. However, for most of my draft genomes, I do not have a proper reference genome (too much genome differences in relation to those deposited in Genbank).

So, I ask you. How could I validate the genome assembly using intrinsic data? For example, using read mapping, what are the criteria to correct some regions? What is the best software for this purpose?

Thanks

Answer: I don't know any ad hoc solution. But you can try looking at:

- fraction of reads that aligned - if many reads didn't aligned you probably miss some regions in your assembly
- fraction of reads with concordant pairing (ie `samtools flagstat`) - if this is low, you have likely rearrangements or high genome fragmentation
- pairwise genome alignments (ie. nucmer or lastal) of your assemblies to check for large inconsistencies between them

It's always good to compare vs chromosomes of some relative species to check whether your assembly make sense.
Question: Hi I'm new to bioinformatics and have just completed my first run on the MinION (long read sequencing Oxford Nanopore Technologies).
I was hoping someone could direct me towards R packages, workflow, tutorials or guides that will help me identify species that are present in my sample mainly for fungi as my amplicons had ITS1 and ITS2 regions.

I have been watching Youtube tutorials on RStudio for over a week and I feel like I'm no closer than I was when I started. I have both fastq and fast5 files and I tried to run the fastq files using EPI2ME, however, the database is lacking in fungi. I have tried using NCBI's BLAST but I can only run <5kb reads and most of my sequencing reads are >6kb. Also, I've tried using Galaxy to convert my fastq files to fasta but I'm not sure how to run my long reads for species identification using Galaxy or if that is even possible.

Any help would be greatly appreciated. Thanks.

Answer: Hi, this is an easy to use web platform:

https://bioinformatics.uni-muenster.de/tools/metag/usage/index.hbi?lang=en

Tools called centrifuge and kraken2 might help you out too (at least for first pass analyses).

In general, fungi are more neglected than bacteria and archaea in microbiome amplicon studies.