Verfasst am: 14.11.2012, 16:35
Titel: Problem mit fprintf
Hallo zusammen,
ich habe ein Problem mit einem Programm.
Es ist ein bioinformatisches Programm, was zur Analyse von SNP Daten verwendet werden soll und nennt sich MAGENTA (falls es vielleicht der ein oder andere kennt).
Nun versuche ich seit Tagen dieses Programm ans Laufen zu kriegen und habe wieder Erwarten keinerlei Fehlermeldungen bei meinen Inputdateien, jedoch stoppt das Programm immer an der selben Stelle, an der es darum geht ein Log-File zu schreiben.
Dort bekomme ich immer die Fehlermeldung
Error using fprintf
Invalid file identifier. Use fopen to generate a valid file identifier.
Error in Run_MAGENTA_vs2_July_2011 (line 269)
fprintf(FID_log, ['MAGENTA written by Ayellet Segre, Altshuler and Daly Labs, Date: ',num2str(todays_date), '\n\n']);
fprintf(FID_log, ['MAGENTA written by Ayellet Segre, Altshuler and Daly Labs, Date: ', num2str(todays_date), '\n\n']);
fprintf(FID_log, ['Summary file for running MAGENTA (Gene Set Enrichment Analysis (GSEA) on Genome-wide association study (GWAS) variant results).\n']);
fprintf(FID_log, ['Program run: ', num2str(code_name), '\n']);
fprintf(FID_log, ['GWAS used: ', num2str(exp_label), '\n']);
fprintf(FID_log, ['Number of randomly sampled gene sets for GSEA-GWAS p-value estimation is: ', num2str(num_gs_simul), '.\n']);
fprintf(FID_log, ['Gene boundaries used for mapping SNPs onto genes are: ', num2str(Gene_boundr_upstr/1000), 'kb upstream to most extreme gene transcript start position, and ', num2str(Gene_boundr_downstr/1000) 'kb downstream to most extreme gene transcript end position, taking gene orientation into account.\n']);
Den selben Matlab Release zu benutzen, in der das Programm auch pogrammiert wurde habe ich schon versucht, was leider nichts geholfen hat.
Ich hoffe, dass mir irgendjemand mit irgendeinem Tipp weiterhelfen kann.
Da ich das erste Mal in einem Forum poste, hoffe ich, dass ich alle nötigen Informationen zur Verfügung gestellt habe.
das Stück Buchstabensalat das Du gepostet hast, versucht zuerst ein
Ausgabeverzeichnis zu erzeugen und scheitert wahrscheinlich kläglich daran.
Auf jeden Fall die ersten drei Zeilen durch
ersetzen, dann hast Du auch die Chance eine sinnvolle Fehlermeldung zu
erhalten, falls das Erstellen des Verzeichnisses nicht klappt.
Hast Du Schreibrechte im aktuellen Verzeichnis?
Grüße
Sirius
M@r!na
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 15.11.2012, 09:40
Titel:
Hallo Sirius,
danke für deine schnelle Antwort.
Das Verzeichnis wird erstellt und auch alle Variablen werden erzeugt, Matlab kann dann wohl aber nicht darauf zu greifen und den Text in die Variable schreiben, Zugriffsrechte habe ich alle...
Den Code in deine Version zu ändern, ändert leider nichts an der Fehlermeldung, nur dass sie ein paar Codezeilen später kommt.
Was aber sehr wohl anders läuft ist, dass nun ein txt-file als log-File erstellt wird und auch der zugehörige Text eingefügt wird....
Naja, ich bastel vielleicht doch noch ein bisschen am Code rum, obwohl ich das eigentlich nicht wollte, weil es ja ein publiziertes Programm ist, was eigenlich so wie ich es bekommen habe, funktionieren sollte...
Nun denn, vielleicht kommen ja noch weitere Ideen auf.
Hallo Marina,
wenn jetzt die log-Datei geschrieben wird, muss es sich bei der neuen Fehlermeldung
ja um eine andere Datei handeln, die das Programm wieder nicht schreiben kann.
Wenn fopen fehlschlägt, wird eben nicht sofort ein Fehler gemeldet, sondern
FID_log=-1 gesetzt, was dann erst beim ersten fprintf fehlschlägt.
Schöner wäre es um jedes fopen:
Code:
[FID_log, msg] = fopen(GSEA_log_file_name,'w');
if FID_log<0 error(msg);
end
hab das Problem gelöst.
Ich vermute, dass die Programmiererin das Programm unter Windows XP geschrieben hat. Es lag nun daran, dass die Dateipfade und damit verbunden die Dateinamen zu lang werden und Windows 7 dadurch eine Fehlermeldung ausgibt. Habe also alle Dateinamen deutlich kürzer gemacht.
Dir vielen Dank für deine Hilfe
Alles Gute
M@r!na
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.