LoMA: localized assembly tool for long reads

LoMA is localized assembly method that constructs highly accurate consensus sequences (CSs) from long reads. LoMA's algorithm employs minimap2 and MAFFT and classifies diploid haplotypes based on structural variants and CSs. It allows analyzing human samples sequenced with the Oxford Nanopore sequencer.

References:

Documentation
Important Notes

Interactive job
Interactive jobs should be used for debugging, graphics, or applications that cannot be run as batch jobs.

Allocate an interactive session and run the program. Sample session:

[user@biowulf]$ sinteractive --mem=96g --gres=gpu:v100x,lscratch:10 --cpus-per-task=14
[user@cn4327 ~]$ module load loma 
[+] Loading singularity  4.1.5  on cn4327
[+] Loading loma 1.1.3  ...
[user@cn4327 ~]$ wget https://github.com/kolikem/loma/archive/refs/tags/v1.1.3.tar.gz
[user@cn4327 ~]$ tar -zxf v1.1.3.tar.gz && rm -f v1.1.3.tar.gz && cd loma-1.1.3
[user@cn4327 ~]$ loma -I $PWD/sample -O $PWD 
...
/bin/bash: /opt/conda/envs/loma/lib/libtinfo.so.6: no version information available (required by /bin/bash)
-H not defined
-K not defined
-I defined:  /data/denisovga/loma/loma-1.1.3/sample
-O defined:  /data/denisovga/loma/loma-1.1.3
-b not defined. default value is used:  3000
-s not defined. default value is used:  2000
-h not defined. default value is used:  10
-d not defined. default value is used:  3
-l not defined. default value is used:  ont
-c not defined. default value is used:  0.7
-r not defined. default value is used:  0.5
-m not defined. default value is used:  1000
code directory /usr/local/bin/loma_src
[M::mm_idx_gen::0.101*0.90] collected minimizers
[M::mm_idx_gen::0.157*1.26] sorted minimizers
[M::main::0.157*1.26] loaded/built the index for 435 target sequence(s)
[M::mm_mapopt_update::0.165*1.25] mid_occ = 89
[M::mm_idx_stat] kmer size: 15; skip: 5; is_hpc: 0; #seq: 435
[M::mm_idx_stat::0.170*1.24] distinct minimizers: 432938 (78.83% are singletons); average occurrences: 2.651; average spacing: 2.920; total length: 3352243
[M::worker_pipeline::1.772*2.76] mapped 435 sequences
[M::main] Version: 2.22-r1101
[M::main] CMD: minimap2 -x ava-ont /data/denisovga/loma/loma-1.1.3/sample/NA18943_chr1_198831500-198856000.fastq /data/denisovga/loma/loma-1.1.3/sample/NA18943_chr1_198831500-198856000.fastq
[M::main] Real time: 1.792 sec; CPU: 4.913 sec; Peak RSS: 0.110 GB
fastq file : NA18943_chr1_198831500-198856000.fastq
region name : NA18943_chr1_198831500-198856000.fastq
Runnig command: python3 /usr/local/bin/loma_src/EsS.py /data/denisovga/loma/loma-1.1.3/sample/NA18943_chr1_198831500-198856000.fastq /data/denisovga/loma/loma-1.1.3/dir1/NA18943_chr1_198831500-198856000.fastq.out1 0.04 3000 2000 0.7 0.5 /data/denisovga/loma/loma-1.1.3/dir1 1000
---EsS.py---
#Reads in fastq: 435
discard lower 50.0 % of the alignemts (4254, 2862)
indexes_order [12, 125, 6, 300, 366, 364, 1, 2, 0, 24, 152, 360, 187, 5, 349, 3, 231, 232, 4, 417, 268, 7, 8, 14, 9, 21, 58, 13, 228, 327, 131, 189, 190, 15, 159, 205, 81, 291, 10, 143, 129, 222, 31, 410, 306, 230, 193, 263, 39, 82, 344, 335, 221, 11, 426, 188, 250, 432, 23, 433, 37, 83, 108, 304, 27, 305, 395, 403, 219, 35, 106, 176, 315, 110, 140, 413, 254, 255, 36, 184, 404, 262, 26, 336, 16, 33, 49, 61, 198, 139, 220, 105, 135, 47, 34, 196, 339, 381, 134, 407, 337, 172, 420, 18, 421, 345, 17, 64, 428, 199, 22, 20, 164, 19, 422, 86, 251, 423, 195, 151, 332, 425, 277, 182, 30, 111, 350, 368, 78, 44, 38, 117, 29, 65, 322, 25, 236, 271, 378, 365, 79, 28, 166, 183, 310, 309, 191, 43, 142, 130, 32, 42, 334, 75, 158, 72, 51, 261, 234, 266, 133, 275, 248, 207, 379, 285, 40, 287, 319, 414, 353, 412, 52, 406, 209, 116, 244, 282, 192, 373, 356, 98, 227, 95, 374, 148, 274, 85, 45, 48, 89, 50, 289, 396, 398, 41, 401, 331, 328, 372, 273, 170, 253, 317, 377, 316, 53, 405, 224, 60, 197, 208, 212, 136, 114, 431, 312, 62, 257, 369, 211, 387, 104, 59, 324, 137, 128, 299, 55, 321, 318, 70, 361, 341, 144, 278, 367, 260, 132, 392, 394, 307, 210, 270, 46, 74, 76, 226, 124, 296, 96, 146, 56, 267, 303, 57, 298, 391, 418, 326, 325, 348, 311, 168, 279, 276, 155, 71, 206, 330, 383, 119, 171, 382, 333, 342, 94, 241, 245, 73, 120, 93, 384, 107, 430, 293, 281, 419, 354, 370, 357, 338, 174, 363, 223, 390, 389, 122, 301, 233, 103, 69, 424, 308, 179, 399, 118, 214, 54, 358, 286, 173, 161, 434, 362, 385, 429, 320, 380, 400, 346, 329, 204, 162, 88, 180, 185, 402, 283, 77, 84, 217, 200, 240, 121, 157, 340, 177, 123, 359, 259, 154, 80, 295, 288, 292, 323, 258, 145, 411, 113, 149, 99, 213, 247, 102, 138, 415, 352, 284, 343, 388, 127, 427, 126, 302, 269, 409, 371, 256, 203, 252, 163, 235, 272, 218, 90, 175, 239, 150, 215, 347, 63, 67, 87, 375, 351, 393, 229, 243, 314, 201, 216, 265, 169, 167, 109, 115, 186, 100, 313, 66, 264, 386, 416, 97, 160, 397, 153, 246, 165, 194, 408, 92, 112, 237, 242, 91, 141, 178, 376, 101, 181, 202, 238, 68, 297, 225, 290, 355, 280, 249, 294, 156, 147]
base+- 12
plusMinus
 [1, -1, -1, 1, 1, -1, 1, -1, 1, -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -1, 1, 1, -1, 1, 1, -1, 1, 1, -1, 1, 1, -1, -1, -1, 1, -1, 1, -1, 0, 1, -1, 1, 0, 0, -1, -1, 0, -1, 0, -1, 0, -1, 0, 1, 1, 0, -1, -1, 0, 0, 1, -1, 0, 0, 0, 0, -1, 1, -1, 1, 1, -1, 1, 0, 1, 1, 0, 1, -1, 1, 0, -1, -1, 0, 0, -1, 0, 0, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 1, -1, 1, 0, 1, -1, 0, 0, -1, 0, -1, 1, 0, 1, -1, 0, 0, 0, 1, -1, 0, 0, 0, -1, 0, 1, 1, -1, -1, 0, 0, 0, 0, 1, -1, 0, 0, 1, -1, 0, -1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, -1, -1, 0, 0, 0, 0, 1, 0, -1, 0, 1, 0, -1, -1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, -1, -1, -1, 1, -1, -1, 0, 0, 1, 1, 1, -1, -1, 0, 0, 0, 0, 0, -1, -1, 1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, 1, 0, 0, 0, -1, -1, 1, 0, 0, 1, -1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 1, -1, 0, 1, 0, 0, -1, -1, 1, 1, 0, 0, -1, -1, 1, 0, 1, -1, 0, -1, 1, 1, 0, -1, 1, 0, 0, 1, 1, 0, 0, -1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, -1, -1, 1, 0, 0, 0, 1, 1, 0, 0, -1, -1, -1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, -1, 0, 1, -1, 0, 1, 0, 1, -1, 0, 0, 1, 0, 0, -1, 1, -1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, -1, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, -1, 0, 0, 1, 0, 1, 0, 0, -1, 1, 1, 0, 0, -1, 0, 0, 0, 1, 1, 0, -1, 1, -1, 0, 1, 0, 0, -1, 0, -1, 1, 1, 1, -1, 0, 0, -1, 0, -1, 1, -1, 0, 0, -1, 0, 1, 1, -1, -1, 0, 0, 0, -1, 0, 1, 0, 0, 0, -1, 1, 0]
#plusMinus-nonZero: 244
ind1 12 ind2 125
Replaced times to define the base read:  0
placement
 [(np.int64(-19452), np.int64(21058)), (np.int64(-18527), np.int64(27711)), (np.int64(-16006), np.int64(26254)), (np.int64(-14938), np.int64(17349)), (np.int64(-13422), np.int64(17365)), (np.int64(-13954), np.int64(20296)), (np.int64(-13693), np.int64(38953)), (np.int64(-6350), np.int64(23681)), (np.int64(-4496), np.int64(25330)), (np.int64(-3991), np.int64(23884)), (np.int64(-324), np.int64(19609)), (np.int64(39), np.int64(16562)), (0, 64954), (np.int64(2143), np.int64(28314)), (np.int64(2323), np.int64(30215)), (np.int64(3720), np.int64(26591)), (np.int64(4670), np.int64(16093)), (np.int64(6306), np.int64(15512)), (np.int64(6682), np.int64(16116)), (np.int64(6752), np.int64(15287)), (np.int64(7148), np.int64(15740)), (np.int64(7836), np.int64(34751)), (np.int64(7996), np.int64(16810)), (np.int64(8213), np.int64(23525)), (np.int64(8330), np.int64(46057)), (np.int64(8617), np.int64(15789)), (np.int64(8766), np.int64(20257)), (np.int64(9215), np.int64(23077)), (np.int64(9230), np.int64(16097)), (np.int64(9315), np.int64(16603)), (np.int64(9449), ...
...
min: -19452 max: 81715
nthread = 8
nthreadpair = 8
nthreadtb = 8
ppenalty_ex = 0
stacksize: -1 kb
generating a scoring matrix for nucleotide (dist=200) ... done
Gap Penalty = +0.00, +0.00, -1.00

Making a distance matrix ..
    1 / 11 (thread    0)
done.

Constructing a UPGMA tree (efffree=0) ...
    0 / 11
done.

Progressive alignment 1/2...
STEP     1 / 10 (thread    0) f
Reallocating..done. *alloclen = 7078
STEP    10 / 10 (thread    3) f
done.

Making a distance matrix from msa..
    0 / 11 (thread    0)
done.

Constructing a UPGMA tree (efffree=1) ...
    0 / 11
done.

Progressive alignment 2/2...
STEP     1 / 10 (thread    0) f
Reallocating..done. *alloclen = 7072
STEP    10 / 10 (thread    4) f
done.
...
[user@cn4327 ~]$ exit
salloc.exe: Relinquishing job allocation 46116226