WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Problem mit fprintf

 

M@r!na

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.11.2012, 16:35     Titel: Problem mit fprintf
  Antworten mit Zitat      
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']);

Der zugehörige Code sieht folgendermaßen aus:
Code:
Output_dir = ['Output_MAGENTA_',   num2str(exp_label) , '_',  num2str(num_gs_simul), 'perm_', num2str(todays_date)];
mkdir_com = ['system(''mkdir ', num2str(Output_dir), ''');'];
eval(mkdir_com);

disp(['All output data is saved in the following directory: ', num2str(Output_dir), '\n']);

GSEA_log_file_name = ([num2str(Output_dir), '/MAGENTA_run_', num2str(exp_label), '_', num2str(num_gs_simul), 'perm_', num2str(todays_date) , '.log']);
FID_log=fopen(GSEA_log_file_name,'w');

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.

Viele Grüße M@r!na


Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 12.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.11.2012, 17:04     Titel:
  Antworten mit Zitat      
Hallo Marina,

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
Code:
Output_dir = ['Output_MAGENTA_',   num2str(exp_label) , '_', num2str(num_gs_simul), 'perm_', num2str(todays_date)];
mkdir(Output_dir);

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
Private Nachricht senden Benutzer-Profile anzeigen
 
M@r!na

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.11.2012, 09:40     Titel:
  Antworten mit Zitat      
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.

Viele Dank und Grüße
M@r!na
 
Sirius3
Forum-Guru

Forum-Guru


Beiträge: 441
Anmeldedatum: 12.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.11.2012, 11:05     Titel:
  Antworten mit Zitat      
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

zu schreiben.

grüße
Sirius
Private Nachricht senden Benutzer-Profile anzeigen
 
M@r!na

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.11.2012, 15:53     Titel:
  Antworten mit Zitat      
Hallo Sirius,

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 Smile

Alles Gute
M@r!na
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2025 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.