void AceImportWidget::initSaveController(const GUrl& url) { SaveDocumentControllerConfig config; config.defaultFileName = url.getURLString() + EXTENSION; config.defaultFormatId = BaseDocumentFormats::UGENEDB; config.fileDialogButton = browseButton; config.fileNameEdit = fileNameEdit; config.parentWidget = this; config.saveTitle = tr("Destination UGENEDB file"); const QList<DocumentFormatId> formats = QList<DocumentFormatId>() << BaseDocumentFormats::UGENEDB; saveController = new SaveDocumentController(config, formats, this); }
bool VFSAdapter::open(const GUrl& _url, IOAdapterMode m) { SAFE_POINT(!isOpen(), "Adapter is already opened!", false); SAFE_POINT(buffer == NULL, "Buffers is not null!", false); QString vfsPrefix = U2_VFS_URL_PREFIX; // assume that all membuf adapters work with files in some vfs if( !_url.getURLString().startsWith(vfsPrefix) ) { return false; // not a file in vfs } VirtualFileSystemRegistry * vfsReg = AppContext::getVirtualFileSystemRegistry(); SAFE_POINT(vfsReg != NULL, "VirtualFileSystemRegistry not found!", false); QStringList urlArgs = _url.getURLString().mid(vfsPrefix.size()).split(U2_VFS_FILE_SEPARATOR, QString::SkipEmptyParts); if ( 2 != urlArgs.size() ) { // urlArgs - vfsname and filename return false; } VirtualFileSystem * vfs = vfsReg->getFileSystemById( urlArgs[0] ); if( NULL == vfs ) { return false; // no such vfs registered } if( !vfs->fileExists( urlArgs[1] ) ) { if( IOAdapterMode_Read == m ) { return false; } else { vfs->createFile( urlArgs[1], QByteArray() ); } } buffer = new QBuffer( &vfs->getFileByName( urlArgs[1] ) ); QIODevice::OpenMode iomode = m == IOAdapterMode_Read ? QIODevice::ReadOnly : QIODevice::WriteOnly | QIODevice::Truncate; if (!buffer->open(iomode)) { return false; } url = _url; return true; }
QString MultipleDocumentsReadingModeDialog::setupNewUrl() { QString urlStr = newDocUrl->text(); if (urlStr.isEmpty()) { GUrl url = urls.at(0); urlStr = url.getURLString(); } QFileInfo fi(urlStr); urlStr = fi.dir().path(); QString extension4MergedDocument; if (mergeMode->isChecked()) { extension4MergedDocument = AppContext::getDocumentFormatRegistry()->getFormatById(BaseDocumentFormats::PLAIN_GENBANK)->getSupportedDocumentFileExtensions().first(); } else if (join2alignmentMode->isChecked()) { extension4MergedDocument = AppContext::getDocumentFormatRegistry()->getFormatById(BaseDocumentFormats::CLUSTAL_ALN)->getSupportedDocumentFileExtensions().first(); } return urlStr + "/merged_document." + extension4MergedDocument; }
bool LocalFileAdapter::open(const GUrl& url, IOAdapterMode m) { SAFE_POINT(!isOpen(), "Adapter is already opened!", false); SAFE_POINT(f == NULL, "QFile is not null!", false); if (url.isEmpty()) { return false; } f = new QFile(url.getURLString()); QIODevice::OpenMode iomode; switch (m) { case IOAdapterMode_Read: iomode = QIODevice::ReadOnly; break; case IOAdapterMode_Write: iomode = QIODevice::WriteOnly | QIODevice::Truncate; break; case IOAdapterMode_Append: iomode = QIODevice::WriteOnly | QIODevice::Append; break; } bool res = f->open(iomode); if (!res) { delete f; f = NULL; return false; } fileSize = f->size(); return true; }
bool BgzipTask::checkBgzf(const GUrl &fileUrl) { return bgzf_check_bgzf(fileUrl.getURLString().toLatin1().constData()); }
void ConvertAssemblyToSamDialog::buildSamUrl(const GUrl &dbUrl) { GUrl url = GUrlUtils::rollFileName(dbUrl.dirPath() + "/" + dbUrl.baseFileName() + ".sam", DocumentUtils::getNewDocFileNameExcludesHint()); ui->samPathEdit->setText(url.getURLString()); }
/** * FASTQ format specification: http://maq.sourceforge.net/fastq.shtml */ static void load(IOAdapter* io, const U2DbiRef& dbiRef, const QVariantMap& hints, const GUrl& docUrl, QList<GObject*>& objects, U2OpStatus& os, int gapSize, int predictedSize, QString& writeLockReason) { DbiOperationsBlock opBlock(dbiRef, os); CHECK_OP(os, ); Q_UNUSED(opBlock); writeLockReason.clear(); bool merge = gapSize!=-1; QByteArray sequence; QByteArray qualityScores; QStringList headers; QSet<QString> uniqueNames; QVector<U2Region> mergedMapping; QByteArray gapSequence((merge ? gapSize : 0), 0); sequence.reserve(predictedSize); qualityScores.reserve(predictedSize); // for lower case annotations GObjectReference sequenceRef; qint64 sequenceStart = 0; U2SequenceImporter seqImporter(hints, true); const QString folder = hints.value(DocumentFormat::DBI_FOLDER_HINT, U2ObjectDbi::ROOT_FOLDER).toString(); int seqNumber = 0; int progressUpNum = 0; const int objectsCountLimit = hints.contains(DocumentReadingMode_MaxObjectsInDoc) ? hints[DocumentReadingMode_MaxObjectsInDoc].toInt() : -1; const bool settingsMakeUniqueName = !hints.value(DocumentReadingMode_DontMakeUniqueNames, false).toBool(); while (!os.isCoR()) { //read header QString sequenceName = readSequenceName(os, io, '@'); // check for eof while trying to read another FASTQ block if (io->isEof()) { break; } CHECK_OP_BREAK(os); if(sequenceName.isEmpty()){ sequenceName = "Sequence"; } if ((merge == false) || (seqNumber == 0)) { QString objName = sequenceName; if (settingsMakeUniqueName) { objName = (merge) ? "Sequence" : TextUtils::variate(sequenceName, "_", uniqueNames); objName.squeeze(); uniqueNames.insert(objName); } seqImporter.startSequence(dbiRef, folder, objName, false, os); CHECK_OP_BREAK(os); } //read sequence if (merge && sequence.length() > 0) { seqImporter.addDefaultSymbolsBlock(gapSize,os); sequenceStart += sequence.length(); sequenceStart+=gapSize; CHECK_OP_BREAK(os); } sequence.clear(); readSequence(os, io, sequence); MemoryLocker lSequence(os, qCeil(sequence.size()/(1000*1000))); CHECK_OP_BREAK(os); Q_UNUSED(lSequence); seqImporter.addBlock(sequence.data(),sequence.length(),os); CHECK_OP_BREAK(os); QString qualSequenceName = readSequenceName(os, io, '+'); if (!qualSequenceName.isEmpty()) { static const QString err = U2::FastqFormat::tr("Not a valid FASTQ file: %1, sequence name differs from quality scores name: %2 and %3"); CHECK_EXT_BREAK(sequenceName == qualSequenceName, os.setError(err.arg(docUrl.getURLString()).arg(sequenceName).arg(qualSequenceName))); } // read qualities qualityScores.clear(); readQuality(os, io, qualityScores, sequence.size()); CHECK_OP_BREAK(os); static const QString err = U2::FastqFormat::tr("Not a valid FASTQ file: %1. Bad quality scores: inconsistent size.").arg(docUrl.getURLString()); CHECK_EXT_BREAK(sequence.length() == qualityScores.length(), os.setError(err)); seqNumber++; progressUpNum++; if (merge) { headers.append(sequenceName); mergedMapping.append(U2Region(sequenceStart, sequence.length() )); } else { if (objectsCountLimit > 0 && objects.size() >= objectsCountLimit) { os.setError(FastqFormat::tr("File \"%1\" contains too many sequences to be displayed. " "However, you can process these data using instruments from the menu <i>Tools -> NGS data analysis</i> " "or pipelines built with Workflow Designer.") .arg(io->getURL().getURLString())); break; } U2Sequence u2seq = seqImporter.finalizeSequenceAndValidate(os); CHECK_OP_BREAK(os); sequenceRef = GObjectReference(io->getURL().getURLString(), u2seq.visualName, GObjectTypes::SEQUENCE, U2EntityRef(dbiRef, u2seq.id)); U2SequenceObject* seqObj = new U2SequenceObject(u2seq.visualName, U2EntityRef(dbiRef, u2seq.id)); CHECK_EXT_BREAK(seqObj != NULL, os.setError("U2SequenceObject is NULL")); seqObj->setQuality(DNAQuality(qualityScores)); objects << seqObj; U1AnnotationUtils::addAnnotations(objects, seqImporter.getCaseAnnotations(), sequenceRef, NULL, hints); } if (PROGRESS_UPDATE_STEP == progressUpNum) { progressUpNum = 0; os.setProgress(io->getProgress()); } } CHECK_OP_EXT(os, qDeleteAll(objects); objects.clear(), ); bool emptyObjects = objects.isEmpty(); CHECK_EXT(!emptyObjects || merge, os.setError(Document::tr("Document is empty.")), ); SAFE_POINT(headers.size() == mergedMapping.size(), "headers <-> regions mapping failed!", ); if (!merge) { return; } U2Sequence u2seq = seqImporter.finalizeSequenceAndValidate(os); CHECK_OP(os,); sequenceRef = GObjectReference(io->getURL().getURLString(), u2seq.visualName, GObjectTypes::SEQUENCE, U2EntityRef(dbiRef, u2seq.id)); U1AnnotationUtils::addAnnotations(objects, seqImporter.getCaseAnnotations(), sequenceRef, NULL, hints); objects << new U2SequenceObject(u2seq.visualName, U2EntityRef(dbiRef, u2seq.id)); objects << DocumentFormatUtils::addAnnotationsForMergedU2Sequence(sequenceRef, dbiRef, headers, mergedMapping, hints); if (headers.size() > 1) { writeLockReason = DocumentFormat::MERGED_SEQ_LOCK; } }
void GTUtilsProject::openFiles(HI::GUITestOpStatus &os, const GUrl &path, const OpenFileSettings& s) { openFiles(os, QList<QUrl>() << path.getURLString(), s); GTUtilsTaskTreeView::waitTaskFinished(os); }