Exemplo n.º 1
0
Arquivo: List.hpp Projeto: c3c/quazaa
typename RangeT::size_type List< RangeT, TraitsT, ContainerT >::insert(const RangeT& value)
{
	if ( value.end() > Traits::limit() )
	{
		qDebug( qPrintable(QString("ListError - insert - size: %1 - limit: %2 - sum: %3 - Range - begin: %4 - end: %5")
								   .arg(size()).arg(Traits::limit()).arg(Traits::length_sum()).arg(value.begin()).arg(value.end())) );
		return 0;
	}
	if ( value.size() == 0 ) return 0;
	iterator_pair sequence( merge_range( value ) );
	return sequence.first != sequence.second
		? Traits::merge_and_replace( m_set, sequence, value )
		: Traits::simple_merge( m_set, sequence.first, value );
}
Exemplo n.º 2
0
typename RangeT::size_type List< RangeT, TraitsT, ContainerT >::insert(const RangeT& value)
{
	if ( value.end() > limit() )
	{
//		throw ListException( value, limit() );
		CString msg;
		msg.Format( _T( "ListError - insert - size: %u - limit: %I64u - sum: %I64u - " )
			_T( "Range - begin: %I64u - end: %I64u" ),
			size(), limit(), Traits::length_sum(), value.begin(), value.end() );
		theApp.Message( MSG_ERROR, msg );
		return 0;
	}
	if ( value.size() == 0 ) return 0;
	iterator_pair sequence( merge_range( value ) );
	return sequence.first != sequence.second
		? Traits::merge_and_replace( m_set, sequence, value )
		: Traits::simple_merge( m_set, sequence.first, value );
}
Exemplo n.º 3
0
bool cluster::searchANDmodify(paired_end* currentPE, long *overlap_start, long *overlap_end)
{
	bool overlap = false;
	bool overlap_tag_start, overlap_tag_end;

	long tmp1, tmp2, tmp3, tmp4;
	tmp1 = end1_range_low;
	tmp2 = end1_range_high;
	tmp3 = end2_range_low;
	tmp4 = end2_range_high;

	*overlap_start = 0;
	*overlap_end = 0;

	range *nextrange, *nextPErange;

	if (strcmp(currentPE->chromosome_start, chromosome_1) == 0 && strcmp(currentPE->strand_start, strand_start) == 0)
	{
		if (strcmp(currentPE->chromosome_end, chromosome_2) == 0 && strcmp(currentPE->strand_end, strand_end) == 0)
		{
			//check start point 
			nextrange = endpoint1;

			overlap_tag_start = false;
			overlap_tag_end = false;


			while (nextrange != NULL)
			{
				nextPErange = currentPE->start;

				while (nextPErange != NULL)
				{
					if (nextPErange->start <= nextrange->end + deviation_end && nextPErange->end >= nextrange->start - deviation_end)
					{
						overlap_tag_start = true;

						if (nextPErange->start >= nextrange->start)
						{
							if (nextPErange->end >= nextrange->end)
							{
								*overlap_start += nextrange->end - nextPErange->start + 1;
							} 
							else
							{
								*overlap_start += nextPErange->end - nextPErange->start + 1;
							}
						} 
						else if (nextPErange->end >= nextrange->end)
						{
							*overlap_start += nextrange->end - nextrange->start + 1;
						}
						else
						{
							*overlap_start += nextPErange->end - nextrange->start + 1; 
						}

						if (nextPErange->start < tmp1)
						{
							tmp1 = nextPErange->start;
						}

						if (nextPErange->end > tmp2)
						{
							tmp2 = nextPErange->end;
						}
					}

					nextPErange = nextPErange->next;
				}

				nextrange = nextrange->next;
			}

			//check end point
			nextrange = endpoint2;

			while (nextrange != NULL)
			{
				nextPErange = currentPE->end;

				while (nextPErange != NULL)
				{
					if (nextPErange->start <= nextrange->end + deviation_end && nextPErange->end >= nextrange->start - deviation_end)
					{
						overlap_tag_end = true;
						
						if (nextPErange->start >= nextrange->start)
						{
							if (nextPErange->end >= nextrange->end)
							{
								*overlap_end += nextrange->end - nextPErange->start + 1;
							} 
							else
							{
								*overlap_end += nextPErange->end - nextPErange->start + 1;
							}
						} 
						else if (nextPErange->end >= nextrange->end)
						{
							*overlap_end += nextrange->end - nextrange->start + 1;
						}
						else
						{
							*overlap_end += nextPErange->end - nextrange->start + 1; 
						}

						if (nextPErange->start < tmp3)
						{
							tmp3 = nextPErange->start;
						}

						if (nextPErange->end > tmp4)
						{
							tmp4 = nextPErange->end;
						}
					}

					nextPErange = nextPErange->next;
				}

				nextrange = nextrange->next;
			}

			//check whether overlap or not
			if (overlap_tag_start == true && overlap_tag_end == true)
			{
				overlap = true;

				end1_range_low = tmp1;
				end1_range_high = tmp2;
				end2_range_low = tmp3;
				end2_range_high = tmp4;

				merge_range(currentPE);
			}
		}
	} 
	else if (strcmp(currentPE->chromosome_start, chromosome_2) == 0 && strcmp(currentPE->strand_start, strand_end) == 0)
	{
		if (strcmp(currentPE->chromosome_end, chromosome_1) == 0 && strcmp(currentPE->strand_end, strand_start) == 0)
		{
			//check start point 
			nextrange = endpoint2;

			overlap_tag_start = false;
			overlap_tag_end = false;

			while (nextrange != NULL)
			{
				nextPErange = currentPE->start;

				while (nextPErange != NULL)
				{
					if (nextPErange->start <= nextrange->end + deviation_end && nextPErange->end >= nextrange->start - deviation_end)
					{
						overlap_tag_start = true;
						
						if (nextPErange->start >= nextrange->start)
						{
							if (nextPErange->end >= nextrange->end)
							{
								*overlap_start += nextrange->end - nextPErange->start + 1;
							} 
							else
							{
								*overlap_start += nextPErange->end - nextPErange->start + 1;
							}
						} 
						else if (nextPErange->end >= nextrange->end)
						{
							*overlap_start += nextrange->end - nextrange->start + 1;
						}
						else
						{
							*overlap_start += nextPErange->end - nextrange->start + 1; 
						}

						if (nextPErange->start < tmp3)
						{
							tmp3 = nextPErange->start;
						}

						if (nextPErange->end > tmp4)
						{
							tmp4 = nextPErange->end;
						}
					}

					nextPErange = nextPErange->next;
				}

				nextrange = nextrange->next;
			}

			//check end point
			nextrange = endpoint1;

			while (nextrange != NULL)
			{
				nextPErange = currentPE->end;

				while (nextPErange != NULL)
				{
					if (nextPErange->start <= nextrange->end + deviation_end && nextPErange->end >= nextrange->start - deviation_end)
					{
						overlap_tag_end = true;
						
						if (nextPErange->start >= nextrange->start)
						{
							if (nextPErange->end >= nextrange->end)
							{
								*overlap_end += nextrange->end - nextPErange->start + 1;
							} 
							else
							{
								*overlap_end += nextPErange->end - nextPErange->start + 1;
							}
						} 
						else if (nextPErange->end >= nextrange->end)
						{
							*overlap_end += nextrange->end - nextrange->start + 1;
						}
						else
						{
							*overlap_end += nextPErange->end - nextrange->start + 1; 
						}

						if (nextPErange->start < tmp1)
						{
							tmp1 = nextPErange->start;
						}

						if (nextPErange->end > tmp2)
						{
							tmp2 = nextPErange->end;
						}
					}

					nextPErange = nextPErange->next;
				}

				nextrange = nextrange->next;
			}

			//check whether overlap or not
			if (overlap_tag_start = true && overlap_tag_end == true)
			{
				overlap = true;

				end1_range_low = tmp1;
				end1_range_high = tmp2;
				end2_range_low = tmp3;
				end2_range_high = tmp4;

				merge_range(currentPE);
			}
		}
	}


	return overlap;
}
Exemplo n.º 4
0
int pdfmerge_main(int argc, char **argv)
{
	pdf_write_options opts = { 0 };
	char *output = "out.pdf";
	char *infile_src;
	int c;

	while ((c = fz_getopt(argc, argv, "adlszo:")) != -1)
	{
		switch (c)
		{
		case 'o': output = fz_optarg; break;
		case 'a': opts.do_ascii ++; break;
		case 'd': opts.do_expand ^= PDF_EXPAND_ALL; break;
		case 'l': opts.do_linear ++; break;
		case 's': opts.do_clean ++; break;
		case 'z': opts.do_deflate ++; break;
		default: usage(); break;
		}
	}

	if (fz_optind == argc)
		usage();

	ctx = fz_new_context(NULL, NULL, FZ_STORE_UNLIMITED);
	if (!ctx)
	{
		fprintf(stderr, "Cannot initialise context\n");
		exit(1);
	}

	fz_try(ctx)
	{
		doc_des = pdf_create_document(ctx);
	}
	fz_catch(ctx)
	{
		fprintf(stderr, "Failed to allocate destination document file %s\n", output);
		exit(1);
	}

	/* Step through the source files */
	while (fz_optind < argc)
	{
		fz_try(ctx)
		{
			infile_src = argv[fz_optind++];
			pdf_drop_document(ctx, doc_src);
			doc_src = pdf_open_document(ctx, infile_src);

			if (fz_optind == argc || !isrange(argv[fz_optind]))
				merge_range("1-");
			else
				merge_range(argv[fz_optind++]);
		}
		fz_catch(ctx)
		{
			fprintf(stderr, "Failed merging document %s\n", infile_src);
			exit(1);
		}
	}

	fz_try(ctx)
	{
		pdf_save_document(ctx, doc_des, output, &opts);
	}
	fz_always(ctx)
	{
		pdf_drop_document(ctx, doc_des);
		pdf_drop_document(ctx, doc_src);
	}
	fz_catch(ctx)
	{
		fprintf(stderr, "Error encountered during file save.\n");
		exit(1);
	}
	fz_flush_warnings(ctx);
	fz_drop_context(ctx);

	return 0;
}
Exemplo n.º 5
0
int pdfmerge_main(int argc, char **argv)
{
	pdf_write_options opts = { 0 };
	char *output = "out.pdf";
	char *flags = "";
	char *input;
	int c;

	while ((c = fz_getopt(argc, argv, "o:O:")) != -1)
	{
		switch (c)
		{
		case 'o': output = fz_optarg; break;
		case 'O': flags = fz_optarg; break;
		default: usage(); break;
		}
	}

	if (fz_optind == argc)
		usage();

	ctx = fz_new_context(NULL, NULL, FZ_STORE_UNLIMITED);
	if (!ctx)
	{
		fprintf(stderr, "error: Cannot initialize MuPDF context.\n");
		exit(1);
	}

	pdf_parse_write_options(ctx, &opts, flags);

	fz_try(ctx)
	{
		doc_des = pdf_create_document(ctx);
	}
	fz_catch(ctx)
	{
		fprintf(stderr, "error: Cannot create destination document.\n");
		exit(1);
	}

	/* Step through the source files */
	while (fz_optind < argc)
	{
		input = argv[fz_optind++];
		fz_try(ctx)
		{
			pdf_drop_document(ctx, doc_src);
			doc_src = pdf_open_document(ctx, input);
			if (fz_optind == argc || !fz_is_page_range(ctx, argv[fz_optind]))
				merge_range("1-N");
			else
				merge_range(argv[fz_optind++]);
		}
		fz_catch(ctx)
		{
			fprintf(stderr, "error: Cannot merge document '%s'.\n", input);
			exit(1);
		}
	}

	fz_try(ctx)
	{
		pdf_save_document(ctx, doc_des, output, &opts);
	}
	fz_always(ctx)
	{
		pdf_drop_document(ctx, doc_des);
		pdf_drop_document(ctx, doc_src);
	}
	fz_catch(ctx)
	{
		fprintf(stderr, "error: Cannot save output file: '%s'.\n", output);
		exit(1);
	}

	fz_flush_warnings(ctx);
	fz_drop_context(ctx);
	return 0;
}